From df27486e0046b44d82336c2a8897f538dd10a371 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Mon, 6 Jul 2015 10:49:39 -0600 Subject: [PATCH 01/24] Stable Version 3.0.0-beta.1. --- bower.json | 1 + build_examples/browserify/README.md | 3 + build_examples/browserify/app.js | 17 ++++ build_examples/browserify/index.html | 11 +++ build_examples/node/app.js | 15 ++++ build_examples/r.js/README.md | 3 + build_examples/r.js/app.js | 14 ++++ build_examples/r.js/index.html | 14 ++++ build_examples/r.js/main.js | 17 ++++ build_examples/r.js/require.config.js | 6 ++ build_examples/webpack/README.md | 3 + build_examples/webpack/app.js | 17 ++++ build_examples/webpack/index.html | 11 +++ build_examples/webpack/webpack.config.js | 11 +++ build_examples/webpack_es6/README.md | 3 + build_examples/webpack_es6/app.js | 17 ++++ build_examples/webpack_es6/index.html | 11 +++ build_examples/webpack_es6/webpack.config.js | 20 +++++ dist/js-data-http.js | 35 +++++++- karma.conf.js | 3 +- mocha.start.js | 84 ++++++++++++++++++++ src/index.js | 2 + test/{ => browser}/create.spec.js | 0 test/{ => browser}/destroy.spec.js | 0 test/{ => browser}/destroyAll.spec.js | 0 test/{ => browser}/find.spec.js | 0 test/{ => browser}/findAll.spec.js | 0 test/{ => browser}/update.spec.js | 0 test/{ => browser}/updateAll.spec.js | 0 test/node/create.spec.js | 16 ++++ 30 files changed, 332 insertions(+), 2 deletions(-) create mode 100644 build_examples/browserify/README.md create mode 100644 build_examples/browserify/app.js create mode 100644 build_examples/browserify/index.html create mode 100644 build_examples/node/app.js create mode 100644 build_examples/r.js/README.md create mode 100644 build_examples/r.js/app.js create mode 100644 build_examples/r.js/index.html create mode 100644 build_examples/r.js/main.js create mode 100644 build_examples/r.js/require.config.js create mode 100644 build_examples/webpack/README.md create mode 100644 build_examples/webpack/app.js create mode 100644 build_examples/webpack/index.html create mode 100644 build_examples/webpack/webpack.config.js create mode 100644 build_examples/webpack_es6/README.md create mode 100644 build_examples/webpack_es6/app.js create mode 100644 build_examples/webpack_es6/index.html create mode 100644 build_examples/webpack_es6/webpack.config.js create mode 100644 mocha.start.js rename test/{ => browser}/create.spec.js (100%) rename test/{ => browser}/destroy.spec.js (100%) rename test/{ => browser}/destroyAll.spec.js (100%) rename test/{ => browser}/find.spec.js (100%) rename test/{ => browser}/findAll.spec.js (100%) rename test/{ => browser}/update.spec.js (100%) rename test/{ => browser}/updateAll.spec.js (100%) create mode 100644 test/node/create.spec.js diff --git a/bower.json b/bower.json index 312c532..9f52046 100644 --- a/bower.json +++ b/bower.json @@ -29,6 +29,7 @@ "karma.start.js" ], "dependencies": { + "axios": "0.5.x", "js-data": ">=2.0.0" } } diff --git a/build_examples/browserify/README.md b/build_examples/browserify/README.md new file mode 100644 index 0000000..bac593a --- /dev/null +++ b/build_examples/browserify/README.md @@ -0,0 +1,3 @@ +Running `browserify -x axios app.js > bundle.js` in this directory will produce `bundle.js` + +Note the external dependency "axios" that is excluded from the build (it's not needed when using js-data-angular). diff --git a/build_examples/browserify/app.js b/build_examples/browserify/app.js new file mode 100644 index 0000000..ec95c9d --- /dev/null +++ b/build_examples/browserify/app.js @@ -0,0 +1,17 @@ +var JSData = require('js-data'); +var axios = require('axios'); +// normally this would be var DSHttpAdapter = require('js-data-http'); +var DSHttpAdapter = require('../../'); + +document.getElementById('main').innerHTML = JSData.version.full; + +var adapter = new DSHttpAdapter({ + http: axios +}); +var store = new JSData.DS(); +store.registerAdapter('http', adapter, { default: true }); +var User = store.defineResource('user'); + +User.find(1).catch(function (err) { + console.log(err); +}); diff --git a/build_examples/browserify/index.html b/build_examples/browserify/index.html new file mode 100644 index 0000000..090fb5d --- /dev/null +++ b/build_examples/browserify/index.html @@ -0,0 +1,11 @@ + + + + My App + + +

+ + + + diff --git a/build_examples/node/app.js b/build_examples/node/app.js new file mode 100644 index 0000000..881ce98 --- /dev/null +++ b/build_examples/node/app.js @@ -0,0 +1,15 @@ +var Promise = require('es6-promise'); +var JSData = require('js-data'); +var axios = require('axios'); +var DSHttpAdapter = require('../../'); + +var adapter = new DSHttpAdapter({ + http: axios +}); +var store = new JSData.DS(); +store.registerAdapter('http', adapter, { default: true }); +var User = store.defineResource('user'); + +User.find(1).catch(function (err) { + console.log(err); +}); diff --git a/build_examples/r.js/README.md b/build_examples/r.js/README.md new file mode 100644 index 0000000..0632f37 --- /dev/null +++ b/build_examples/r.js/README.md @@ -0,0 +1,3 @@ +Running `r.js -o require.config.js` in this directory will produce `bundle.js` + +In `index.html` switch `script/main` between `main` (load scripts dynamically) and `bundle` (load bundled scripts) diff --git a/build_examples/r.js/app.js b/build_examples/r.js/app.js new file mode 100644 index 0000000..eb74599 --- /dev/null +++ b/build_examples/r.js/app.js @@ -0,0 +1,14 @@ +define('app', [ + 'js-data', + 'axios', + 'js-data-http' +], function (JSData, axios, DSHttpAdapter) { + document.getElementById('main').innerHTML = JSData.version.full; + + var adapter = new DSHttpAdapter({ + http: axios + }); + var store = new JSData.DS(); + store.registerAdapter('http', adapter, { default: true }); + return store.defineResource('user'); +}); diff --git a/build_examples/r.js/index.html b/build_examples/r.js/index.html new file mode 100644 index 0000000..ca909b0 --- /dev/null +++ b/build_examples/r.js/index.html @@ -0,0 +1,14 @@ + + + + My App + + +

+ + + + + + + diff --git a/build_examples/r.js/main.js b/build_examples/r.js/main.js new file mode 100644 index 0000000..dfc80ea --- /dev/null +++ b/build_examples/r.js/main.js @@ -0,0 +1,17 @@ +require.config({ + paths: { + 'js-data-http': '../../dist/js-data-http', + 'js-data': '../../bower_components/js-data/dist/js-data', + 'axios': '../../bower_components/axios/dist/axios' + } +}); + +require([ + 'app' + ], function (User) { + + User.find(1).catch(function (err) { + console.log(err); + }); + } +); diff --git a/build_examples/r.js/require.config.js b/build_examples/r.js/require.config.js new file mode 100644 index 0000000..a89ae0f --- /dev/null +++ b/build_examples/r.js/require.config.js @@ -0,0 +1,6 @@ +({ + name: 'main', + mainConfigFile: 'main.js', + out: 'bundle.js', + optimize: 'none' +}) diff --git a/build_examples/webpack/README.md b/build_examples/webpack/README.md new file mode 100644 index 0000000..14fa7b9 --- /dev/null +++ b/build_examples/webpack/README.md @@ -0,0 +1,3 @@ +Running `webpack` in this directory will produce `bundle.js` + +Note the external dependency "axios" that is excluded from the build (it's not needed when using js-data-angular). diff --git a/build_examples/webpack/app.js b/build_examples/webpack/app.js new file mode 100644 index 0000000..ec95c9d --- /dev/null +++ b/build_examples/webpack/app.js @@ -0,0 +1,17 @@ +var JSData = require('js-data'); +var axios = require('axios'); +// normally this would be var DSHttpAdapter = require('js-data-http'); +var DSHttpAdapter = require('../../'); + +document.getElementById('main').innerHTML = JSData.version.full; + +var adapter = new DSHttpAdapter({ + http: axios +}); +var store = new JSData.DS(); +store.registerAdapter('http', adapter, { default: true }); +var User = store.defineResource('user'); + +User.find(1).catch(function (err) { + console.log(err); +}); diff --git a/build_examples/webpack/index.html b/build_examples/webpack/index.html new file mode 100644 index 0000000..090fb5d --- /dev/null +++ b/build_examples/webpack/index.html @@ -0,0 +1,11 @@ + + + + My App + + +

+ + + + diff --git a/build_examples/webpack/webpack.config.js b/build_examples/webpack/webpack.config.js new file mode 100644 index 0000000..127b9b0 --- /dev/null +++ b/build_examples/webpack/webpack.config.js @@ -0,0 +1,11 @@ +module.exports = { + entry: './app.js', + output: { + filename: 'bundle.js' + }, + resolve: { + alias: { + 'js-data-http': '../../dist/js-data-http.js' + } + } +}; diff --git a/build_examples/webpack_es6/README.md b/build_examples/webpack_es6/README.md new file mode 100644 index 0000000..14fa7b9 --- /dev/null +++ b/build_examples/webpack_es6/README.md @@ -0,0 +1,3 @@ +Running `webpack` in this directory will produce `bundle.js` + +Note the external dependency "axios" that is excluded from the build (it's not needed when using js-data-angular). diff --git a/build_examples/webpack_es6/app.js b/build_examples/webpack_es6/app.js new file mode 100644 index 0000000..fee271a --- /dev/null +++ b/build_examples/webpack_es6/app.js @@ -0,0 +1,17 @@ +import JSData from 'js-data'; +import axios from 'axios'; +// normally this would be import DSHttpAdatper from 'js-data-http'; +import DSHttpAdapter from '../../'; + +document.getElementById('main').innerHTML = JSData.version.full; + +let adapter = new DSHttpAdapter({ + http: axios +}); +let store = new JSData.DS(); +store.registerAdapter('http', adapter, { default: true }); +let User = store.defineResource('user'); + +User.find(1).catch(err => { + console.log(err); +}); diff --git a/build_examples/webpack_es6/index.html b/build_examples/webpack_es6/index.html new file mode 100644 index 0000000..090fb5d --- /dev/null +++ b/build_examples/webpack_es6/index.html @@ -0,0 +1,11 @@ + + + + My App + + +

+ + + + diff --git a/build_examples/webpack_es6/webpack.config.js b/build_examples/webpack_es6/webpack.config.js new file mode 100644 index 0000000..418b866 --- /dev/null +++ b/build_examples/webpack_es6/webpack.config.js @@ -0,0 +1,20 @@ +var path = require('path'); +module.exports = { + entry: './app.js', + output: { + filename: 'bundle.js' + }, + resolve: { + alias: { + 'js-data-http': '../../dist/js-data-http.js' + } + }, + module: { + loaders: [ + {test: /(.+)\.js$/, loader: 'babel-loader?blacklist=useStrict'} + ] + }, + resolveLoader: { + root: path.join(__dirname, '../../node_modules') + } +}; diff --git a/dist/js-data-http.js b/dist/js-data-http.js index 959d21c..801efdf 100644 --- a/dist/js-data-http.js +++ b/dist/js-data-http.js @@ -135,6 +135,8 @@ return /******/ (function(modules) { // webpackBootstrap options = options || {}; this.defaults = new Defaults(); + this.http = options.http; + delete options.http; if (console) { this.defaults.log = function (a, b) { return console[typeof console.info === 'function' ? 'info' : 'log'](a, b); @@ -146,7 +148,38 @@ return /******/ (function(modules) { // webpackBootstrap }; } deepMixIn(this.defaults, options); - this.http = options.http || axios; + + if (this.defaults.useFetch && window.fetch) { + this.defaults.deserialize = function (resourceConfig, response) { + return response.json(); + }; + this.http = function (config) { + + var requestConfig = { + method: config.method, + // turn the plain headers object into the Fetch Headers object + headers: new window.Headers(config.headers) + }; + + if (config.data) { + requestConfig.body = DSUtils.toJson(config.data); + } + + return window.fetch(new window.Request(buildUrl(config.url, config.params), requestConfig)).then(function (response) { + response.config = { + method: config.method, + url: config.url + }; + return response; + }); + }; + } + + if (!this.http) { + try { + this.http = window[this.defaults.httpLibName]; + } catch (e) {} + } } _createClass(DSHttpAdapter, [{ diff --git a/karma.conf.js b/karma.conf.js index 5d944d6..d1607ff 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -38,11 +38,12 @@ module.exports = function (config) { // list of files / patterns to load in the browser files: [ + 'bower_components/axios/dist/axios.js', 'node_modules/es6-promise/dist/es6-promise.js', 'node_modules/js-data/dist/js-data.js', 'dist/js-data-http.js', 'karma.start.js', - 'test/**/*.js' + 'test/browser/**/*.js' ], reporters: ['dots', 'coverage'], diff --git a/mocha.start.js b/mocha.start.js new file mode 100644 index 0000000..80ecdfd --- /dev/null +++ b/mocha.start.js @@ -0,0 +1,84 @@ +/*global assert:true */ +'use strict'; + +require('es6-promise').polyfill(); + +var assert = require('chai').assert; +var mocha = require('mocha'); +var sinon = require('sinon'); +var JSData = require('js-data'); +var http = require('http'); +var DSHttpAdapter = require('./'); + +var dsHttpAdapter, User, Post, datastore, DSUtils, queryTransform, p1, p2, p3, p4, p5; + +var globals = module.exports = { + fail: function (msg) { + assert.equal('should not reach this!: ' + msg, 'failure'); + }, + TYPES_EXCEPT_STRING: [123, 123.123, null, undefined, {}, [], true, false, function () { + }], + TYPES_EXCEPT_STRING_OR_ARRAY: [123, 123.123, null, undefined, {}, true, false, function () { + }], + TYPES_EXCEPT_STRING_OR_NUMBER: [null, undefined, {}, [], true, false, function () { + }], + TYPES_EXCEPT_STRING_OR_OBJECT: [123, 123.123, null, undefined, [], true, false, function () { + }], + TYPES_EXCEPT_STRING_OR_NUMBER_OBJECT: [null, undefined, [], true, false, function () { + }], + TYPES_EXCEPT_ARRAY: ['string', 123, 123.123, null, undefined, {}, true, false, function () { + }], + TYPES_EXCEPT_STRING_OR_ARRAY_OR_NUMBER: [null, undefined, {}, true, false, function () { + }], + TYPES_EXCEPT_NUMBER: ['string', null, undefined, {}, [], true, false, function () { + }], + TYPES_EXCEPT_OBJECT: ['string', 123, 123.123, null, undefined, true, false, function () { + }], + TYPES_EXCEPT_BOOLEAN: ['string', 123, 123.123, null, undefined, {}, [], function () { + }], + TYPES_EXCEPT_FUNCTION: ['string', 123, 123.123, null, undefined, {}, [], true, false], + assert: assert, + sinon: sinon, + store: undefined, + http: http +}; + +var test = new mocha(); + +var testGlobals = []; + +beforeEach(function () { + globals.queryTransform = queryTransform = function (resourceName, query) { + queryTransform.callCount += 1; + return query; + }; + + globals.DSUtils = DSUtils = JSData.DSUtils; + datastore = new JSData.DS(); + + globals.User = User = datastore.defineResource('user'); + globals.Post = Post = datastore.defineResource({ + name: 'posts', + basePath: 'api' + }); + globals.dsHttpAdapter = dsHttpAdapter = new DSHttpAdapter({ + queryTransform: queryTransform, + http: require('axios'), + basePath: 'http://localhost:4444/' + }); + datastore.registerAdapter('http', dsHttpAdapter, { default: true }); + + queryTransform.callCount = 0; + + globals.p1 = p1 = { author: 'John', age: 30, id: 5 }; + globals.p2 = p2 = { author: 'Sally', age: 31, id: 6 }; + globals.p3 = p3 = { author: 'Mike', age: 32, id: 7 }; + globals.p4 = p4 = { author: 'Adam', age: 33, id: 8 }; + globals.p5 = p5 = { author: 'Adam', age: 33, id: 9 }; + + for (var key in globals) { + global[key] = globals[key]; + testGlobals.push(globals[key]); + } + test.globals(testGlobals); +}); diff --git a/src/index.js b/src/index.js index bacc63d..88c1181 100644 --- a/src/index.js +++ b/src/index.js @@ -36,6 +36,8 @@ defaultsPrototype.httpConfig = {} defaultsPrototype.verbsUseBasePath = false +defaultsPrototype.useFetch = false; + class DSHttpAdapter { constructor (options) { options = options || {} diff --git a/test/create.spec.js b/test/browser/create.spec.js similarity index 100% rename from test/create.spec.js rename to test/browser/create.spec.js diff --git a/test/destroy.spec.js b/test/browser/destroy.spec.js similarity index 100% rename from test/destroy.spec.js rename to test/browser/destroy.spec.js diff --git a/test/destroyAll.spec.js b/test/browser/destroyAll.spec.js similarity index 100% rename from test/destroyAll.spec.js rename to test/browser/destroyAll.spec.js diff --git a/test/find.spec.js b/test/browser/find.spec.js similarity index 100% rename from test/find.spec.js rename to test/browser/find.spec.js diff --git a/test/findAll.spec.js b/test/browser/findAll.spec.js similarity index 100% rename from test/findAll.spec.js rename to test/browser/findAll.spec.js diff --git a/test/update.spec.js b/test/browser/update.spec.js similarity index 100% rename from test/update.spec.js rename to test/browser/update.spec.js diff --git a/test/updateAll.spec.js b/test/browser/updateAll.spec.js similarity index 100% rename from test/updateAll.spec.js rename to test/browser/updateAll.spec.js diff --git a/test/node/create.spec.js b/test/node/create.spec.js new file mode 100644 index 0000000..bb71ad7 --- /dev/null +++ b/test/node/create.spec.js @@ -0,0 +1,16 @@ +describe('DSHttpAdapter.create(resourceConfig, attrs, options)', function () { + + it('should make a POST request', function (done) { + var server = http.createServer(function (req, res) { + res.setHeader('Content-Type', 'application/json;charset=utf-8'); + res.end(DSUtils.toJson(p1)); + }).listen(4444, function () { + dsHttpAdapter.create(Post, {author: 'John', age: 30}).then(function (data) { + assert.deepEqual(data, p1, 'post should have been created'); + assert.equal(queryTransform.callCount, 1, 'queryTransform should have been called'); + server.close(); + done(); + }).catch(done); + }); + }); +}); From 21ab073c2445138337716cc854f50a497a5e3cd4 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Thu, 10 Dec 2015 23:38:23 -0800 Subject: [PATCH 02/24] Upgrade to use js-data v3. --- README.md | 36 +- bower.json | 1 + build_examples/browserify/app.js | 23 +- build_examples/node/app.js | 21 +- build_examples/r.js/app.js | 21 +- build_examples/r.js/main.js | 6 +- build_examples/webpack/app.js | 23 +- build_examples/webpack/webpack.config.js | 1 + build_examples/webpack_es6/app.js | 23 +- build_examples/webpack_es6/webpack.config.js | 1 + circle.yml | 3 + dist/js-data-http.js | 1057 +++++++++++++++++- mocha.start.js | 292 +++-- node/.gitignore | 2 + node/.npmignore | 4 + node/LICENSE | 21 + node/dist/js-data-http-node.js | 577 ++++++++++ node/mocha.start.js | 238 ++++ node/package.json | 24 + node/test/unit/index.js | 36 + node/webpack.config.js | 33 + package.json | 4 +- test/unit/index.js | 36 + 23 files changed, 2317 insertions(+), 166 deletions(-) create mode 100644 node/.gitignore create mode 100644 node/.npmignore create mode 100644 node/LICENSE create mode 100644 node/dist/js-data-http-node.js create mode 100644 node/mocha.start.js create mode 100644 node/package.json create mode 100644 node/test/unit/index.js create mode 100644 node/webpack.config.js create mode 100644 test/unit/index.js diff --git a/README.md b/README.md index 5e061d0..b262478 100644 --- a/README.md +++ b/README.md @@ -26,15 +26,41 @@ To get started, visit __[http://js-data.io](http://www.js-data.io)__. ## Quick Start `npm install --save js-data js-data-http` or `bower install --save js-data js-data-http`. -Load `js-data-http.js` after `js-data.js`. +`npm install --save axios js-data js-data-http-node` + +__ES6__ ```js -var adapter = new DSHttpAdapter(); +import {Model} from 'js-data' +import DSHttpAdapter from 'js-data-http-node' + +const adapter = new DSHttpAdapter() + +class Base extends Model {} +Base.registerAdapter('http', adapter, { default: true }) + +class School extends Model {} +class Student extends Model {} + +// "School" and "Student" will now use the http adapter by default +``` + +__ES5__ + +```js +var JSData = require('js-data') +var Model = JSData.Model +var DSHttpAdapter = require('js-data-http-node') + +var adapter = new DSHttpAdapter() + +var Base = Model.extend({}, { name: 'Base' }) +Base.registerAdapter('http', adapter, { default: true }) -var store = new JSData.DS(); -store.registerAdapter('http', adapter, { default: true }); +var School = Base.extend({}, { name: 'School' }) +var Student = Base.extend({}, { name: 'Student' }) -// "store" will now use the http adapter for all async operations +// "School" and "Student" will now use the http adapter by default ``` ## Guides and Tutorials diff --git a/bower.json b/bower.json index 9f52046..7d3d194 100644 --- a/bower.json +++ b/bower.json @@ -23,6 +23,7 @@ "coverage/", "Gruntfile.js", "node_modules/", + "node/", "test/", "package.json", "karma.conf.js", diff --git a/build_examples/browserify/app.js b/build_examples/browserify/app.js index ec95c9d..fa97cd7 100644 --- a/build_examples/browserify/app.js +++ b/build_examples/browserify/app.js @@ -1,17 +1,14 @@ -var JSData = require('js-data'); -var axios = require('axios'); -// normally this would be var DSHttpAdapter = require('js-data-http'); -var DSHttpAdapter = require('../../'); +var JSData = require('js-data') +// normally this would be "var DSHttpAdapter = require('js-data-http')" +var DSHttpAdapter = require('../../') -document.getElementById('main').innerHTML = JSData.version.full; +document.getElementById('main').innerHTML = DSHttpAdapter.version.full -var adapter = new DSHttpAdapter({ - http: axios -}); -var store = new JSData.DS(); -store.registerAdapter('http', adapter, { default: true }); -var User = store.defineResource('user'); +var adapter = new DSHttpAdapter() +var Base = JSData.Model.extend({}, { name: 'Base' }) +Base.registerAdapter('http', adapter, { default: true }) +var User = Base.extend({}, { name: 'User' }) User.find(1).catch(function (err) { - console.log(err); -}); + console.log(err) +}) diff --git a/build_examples/node/app.js b/build_examples/node/app.js index 881ce98..c2a1790 100644 --- a/build_examples/node/app.js +++ b/build_examples/node/app.js @@ -1,15 +1,12 @@ -var Promise = require('es6-promise'); -var JSData = require('js-data'); -var axios = require('axios'); -var DSHttpAdapter = require('../../'); +var JSData = require('js-data') +// normally this would be "var DSHttpAdapter = require('js-data-http-node')" +var DSHttpAdapter = require('../../') -var adapter = new DSHttpAdapter({ - http: axios -}); -var store = new JSData.DS(); -store.registerAdapter('http', adapter, { default: true }); -var User = store.defineResource('user'); +var adapter = new DSHttpAdapter() +var Base = JSData.Model.extend({}, { name: 'Base' }) +Base.registerAdapter('http', adapter, { default: true }) +var User = Base.extend({}, { name: 'User' }) User.find(1).catch(function (err) { - console.log(err); -}); + console.log(err) +}) diff --git a/build_examples/r.js/app.js b/build_examples/r.js/app.js index eb74599..2cb1ba8 100644 --- a/build_examples/r.js/app.js +++ b/build_examples/r.js/app.js @@ -1,14 +1,15 @@ define('app', [ 'js-data', - 'axios', 'js-data-http' -], function (JSData, axios, DSHttpAdapter) { - document.getElementById('main').innerHTML = JSData.version.full; +], function (JSData, DSHttpAdapter) { + document.getElementById('main').innerHTML = DSHttpAdapter.version.full - var adapter = new DSHttpAdapter({ - http: axios - }); - var store = new JSData.DS(); - store.registerAdapter('http', adapter, { default: true }); - return store.defineResource('user'); -}); + var adapter = new DSHttpAdapter() + var Base = JSData.Model.extend({}, { name: 'Base' }) + Base.registerAdapter('http', adapter, { default: true }) + var User = Base.extend({}, { name: 'User' }) + + User.find(1).catch(function (err) { + console.log(err) + }) +}) diff --git a/build_examples/r.js/main.js b/build_examples/r.js/main.js index dfc80ea..3f20ec4 100644 --- a/build_examples/r.js/main.js +++ b/build_examples/r.js/main.js @@ -1,8 +1,8 @@ require.config({ paths: { - 'js-data-http': '../../dist/js-data-http', - 'js-data': '../../bower_components/js-data/dist/js-data', - 'axios': '../../bower_components/axios/dist/axios' + // customize these ass needed + 'js-data-http': '../../node/dist/js-data-http-node', + 'js-data': '../../node_modules/js-data/dist/js-data', } }); diff --git a/build_examples/webpack/app.js b/build_examples/webpack/app.js index ec95c9d..fa97cd7 100644 --- a/build_examples/webpack/app.js +++ b/build_examples/webpack/app.js @@ -1,17 +1,14 @@ -var JSData = require('js-data'); -var axios = require('axios'); -// normally this would be var DSHttpAdapter = require('js-data-http'); -var DSHttpAdapter = require('../../'); +var JSData = require('js-data') +// normally this would be "var DSHttpAdapter = require('js-data-http')" +var DSHttpAdapter = require('../../') -document.getElementById('main').innerHTML = JSData.version.full; +document.getElementById('main').innerHTML = DSHttpAdapter.version.full -var adapter = new DSHttpAdapter({ - http: axios -}); -var store = new JSData.DS(); -store.registerAdapter('http', adapter, { default: true }); -var User = store.defineResource('user'); +var adapter = new DSHttpAdapter() +var Base = JSData.Model.extend({}, { name: 'Base' }) +Base.registerAdapter('http', adapter, { default: true }) +var User = Base.extend({}, { name: 'User' }) User.find(1).catch(function (err) { - console.log(err); -}); + console.log(err) +}) diff --git a/build_examples/webpack/webpack.config.js b/build_examples/webpack/webpack.config.js index 127b9b0..8e3c289 100644 --- a/build_examples/webpack/webpack.config.js +++ b/build_examples/webpack/webpack.config.js @@ -3,6 +3,7 @@ module.exports = { output: { filename: 'bundle.js' }, + // only necessary for this demo resolve: { alias: { 'js-data-http': '../../dist/js-data-http.js' diff --git a/build_examples/webpack_es6/app.js b/build_examples/webpack_es6/app.js index fee271a..9848d04 100644 --- a/build_examples/webpack_es6/app.js +++ b/build_examples/webpack_es6/app.js @@ -1,17 +1,14 @@ -import JSData from 'js-data'; -import axios from 'axios'; -// normally this would be import DSHttpAdatper from 'js-data-http'; +import {model} from 'js-data-' +// normally this would be "import DSHttpAdatper from 'js-data-http'" import DSHttpAdapter from '../../'; -document.getElementById('main').innerHTML = JSData.version.full; +document.getElementById('main').innerHTML = DSHttpAdapter.version.full; -let adapter = new DSHttpAdapter({ - http: axios -}); -let store = new JSData.DS(); -store.registerAdapter('http', adapter, { default: true }); -let User = store.defineResource('user'); +const adapter = new DSHttpAdapter() +class Base extends JSData.Model {} +Base.registerAdapter('http', adapter, { default: true }) +class User extends Base {} -User.find(1).catch(err => { - console.log(err); -}); +User.find(1).catch(function (err) { + console.log(err) +}) \ No newline at end of file diff --git a/build_examples/webpack_es6/webpack.config.js b/build_examples/webpack_es6/webpack.config.js index 418b866..be68a98 100644 --- a/build_examples/webpack_es6/webpack.config.js +++ b/build_examples/webpack_es6/webpack.config.js @@ -4,6 +4,7 @@ module.exports = { output: { filename: 'bundle.js' }, + // only necessary for this demo resolve: { alias: { 'js-data-http': '../../dist/js-data-http.js' diff --git a/circle.yml b/circle.yml index 21adefe..f864220 100644 --- a/circle.yml +++ b/circle.yml @@ -1,3 +1,6 @@ +machine: + node: + version: 4.1.0 dependencies: pre: - bower install diff --git a/dist/js-data-http.js b/dist/js-data-http.js index 801efdf..782979c 100644 --- a/dist/js-data-http.js +++ b/dist/js-data-http.js @@ -15,8 +15,8 @@ else if(typeof exports === 'object') exports["DSHttpAdapter"] = factory(require("js-data")); else - root["DSHttpAdapter"] = factory(root["JSData"]); -})(this, function(__WEBPACK_EXTERNAL_MODULE_1__) { + root["DSHttpAdapter"] = factory(root["js-data"]); +})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; @@ -135,7 +135,7 @@ return /******/ (function(modules) { // webpackBootstrap options = options || {}; this.defaults = new Defaults(); - this.http = options.http; + this.http = options.http || axios; delete options.http; if (console) { this.defaults.log = function (a, b) { @@ -148,24 +148,23 @@ return /******/ (function(modules) { // webpackBootstrap }; } deepMixIn(this.defaults, options); - - if (this.defaults.useFetch && window.fetch) { + + if (this.defaults.useFetch && hasFetch) { this.defaults.deserialize = function (resourceConfig, response) { return response.json(); }; this.http = function (config) { - var requestConfig = { method: config.method, // turn the plain headers object into the Fetch Headers object - headers: new window.Headers(config.headers) + headers: new Headers(config.headers) }; - + if (config.data) { - requestConfig.body = DSUtils.toJson(config.data); + requestConfig.body = toJson(config.data); } - - return window.fetch(new window.Request(buildUrl(config.url, config.params), requestConfig)).then(function (response) { + + return fetch(new Request(buildUrl(config.url, config.params), requestConfig)).then(function (response) { response.config = { method: config.method, url: config.url @@ -174,12 +173,6 @@ return /******/ (function(modules) { // webpackBootstrap }); }; } - - if (!this.http) { - try { - this.http = window[this.defaults.httpLibName]; - } catch (e) {} - } } _createClass(DSHttpAdapter, [{ @@ -365,11 +358,11 @@ return /******/ (function(modules) { // webpackBootstrap var _this = this; options = options ? copy(options) : {}; options.suffix = options.suffix || resourceConfig.suffix; - options.params = options.params || {}; + options.params || (options.params = {}); options.params = _this.defaults.queryTransform(resourceConfig, options.params); return _this.GET(_this.getPath('find', resourceConfig, id, options), options).then(function (data) { var item = (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data); - return !item ? DSUtils.Promise.reject(new Error('Not Found!')) : item; + return !item ? reject(new Error('Not Found!')) : item; }); } }, { @@ -378,7 +371,7 @@ return /******/ (function(modules) { // webpackBootstrap var _this = this; options = options ? copy(options) : {}; options.suffix = options.suffix || resourceConfig.suffix; - options.params = options.params || {}; + options.params || (options.params = {}); if (params) { params = _this.defaults.queryTransform(resourceConfig, params); deepMixIn(options.params, params); @@ -393,7 +386,7 @@ return /******/ (function(modules) { // webpackBootstrap var _this = this; options = options ? copy(options) : {}; options.suffix = options.suffix || resourceConfig.suffix; - options.params = options.params || {}; + options.params || (options.params = {}); options.params = _this.defaults.queryTransform(resourceConfig, options.params); return _this.POST(_this.getPath('create', resourceConfig, attrs, options), options.serialize ? options.serialize(resourceConfig, attrs) : _this.defaults.serialize(resourceConfig, attrs), options).then(function (data) { return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data); @@ -405,7 +398,7 @@ return /******/ (function(modules) { // webpackBootstrap var _this = this; options = options ? copy(options) : {}; options.suffix = options.suffix || resourceConfig.suffix; - options.params = options.params || {}; + options.params || (options.params = {}); options.params = _this.defaults.queryTransform(resourceConfig, options.params); return _this.PUT(_this.getPath('update', resourceConfig, id, options), options.serialize ? options.serialize(resourceConfig, attrs) : _this.defaults.serialize(resourceConfig, attrs), options).then(function (data) { return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data); @@ -417,7 +410,7 @@ return /******/ (function(modules) { // webpackBootstrap var _this = this; options = options ? copy(options) : {}; options.suffix = options.suffix || resourceConfig.suffix; - options.params = options.params || {}; + options.params || (options.params = {}); if (params) { params = _this.defaults.queryTransform(resourceConfig, params); deepMixIn(options.params, params); @@ -432,7 +425,7 @@ return /******/ (function(modules) { // webpackBootstrap var _this = this; options = options ? copy(options) : {}; options.suffix = options.suffix || resourceConfig.suffix; - options.params = options.params || {}; + options.params || (options.params = {}); options.params = _this.defaults.queryTransform(resourceConfig, options.params); return _this.DEL(_this.getPath('destroy', resourceConfig, id, options), options).then(function (data) { return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data); @@ -444,7 +437,7 @@ return /******/ (function(modules) { // webpackBootstrap var _this = this; options = options ? copy(options) : {}; options.suffix = options.suffix || resourceConfig.suffix; - options.params = options.params || {}; + options.params || (options.params = {}); if (params) { params = _this.defaults.queryTransform(resourceConfig, params); deepMixIn(options.params, params); @@ -470,10 +463,1020 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = DSHttpAdapter; /***/ }, -/* 1 */ +/* 1 */, +/* 2 */ +/***/ function(module, exports) { + + module.exports = __WEBPACK_EXTERNAL_MODULE_2__; + +/***/ }, +/* 3 */ +/***/ function(module, exports, __webpack_require__) { + + module.exports = __webpack_require__(4); + +/***/ }, +/* 4 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var defaults = __webpack_require__(5); + var utils = __webpack_require__(6); + var dispatchRequest = __webpack_require__(7); + var InterceptorManager = __webpack_require__(15); + + var axios = module.exports = function (config) { + // Allow for axios('example/url'[, config]) a la fetch API + if (typeof config === 'string') { + config = utils.merge({ + url: arguments[0] + }, arguments[1]); + } + + config = utils.merge({ + method: 'get', + headers: {}, + timeout: defaults.timeout, + transformRequest: defaults.transformRequest, + transformResponse: defaults.transformResponse + }, config); + + // Don't allow overriding defaults.withCredentials + config.withCredentials = config.withCredentials || defaults.withCredentials; + + // Hook up interceptors middleware + var chain = [dispatchRequest, undefined]; + var promise = Promise.resolve(config); + + axios.interceptors.request.forEach(function (interceptor) { + chain.unshift(interceptor.fulfilled, interceptor.rejected); + }); + + axios.interceptors.response.forEach(function (interceptor) { + chain.push(interceptor.fulfilled, interceptor.rejected); + }); + + while (chain.length) { + promise = promise.then(chain.shift(), chain.shift()); + } + + return promise; + }; + + // Expose defaults + axios.defaults = defaults; + + // Expose all/spread + axios.all = function (promises) { + return Promise.all(promises); + }; + axios.spread = __webpack_require__(16); + + // Expose interceptors + axios.interceptors = { + request: new InterceptorManager(), + response: new InterceptorManager() + }; + + // Provide aliases for supported request methods + (function () { + function createShortMethods() { + utils.forEach(arguments, function (method) { + axios[method] = function (url, config) { + return axios(utils.merge(config || {}, { + method: method, + url: url + })); + }; + }); + } + + function createShortMethodsWithData() { + utils.forEach(arguments, function (method) { + axios[method] = function (url, data, config) { + return axios(utils.merge(config || {}, { + method: method, + url: url, + data: data + })); + }; + }); + } + + createShortMethods('delete', 'get', 'head'); + createShortMethodsWithData('post', 'put', 'patch'); + })(); + + +/***/ }, +/* 5 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var utils = __webpack_require__(6); + + var PROTECTION_PREFIX = /^\)\]\}',?\n/; + var DEFAULT_CONTENT_TYPE = { + 'Content-Type': 'application/x-www-form-urlencoded' + }; + + module.exports = { + transformRequest: [function (data, headers) { + if(utils.isFormData(data)) { + return data; + } + if (utils.isArrayBuffer(data)) { + return data; + } + if (utils.isArrayBufferView(data)) { + return data.buffer; + } + if (utils.isObject(data) && !utils.isFile(data) && !utils.isBlob(data)) { + // Set application/json if no Content-Type has been specified + if (!utils.isUndefined(headers)) { + utils.forEach(headers, function (val, key) { + if (key.toLowerCase() === 'content-type') { + headers['Content-Type'] = val; + } + }); + + if (utils.isUndefined(headers['Content-Type'])) { + headers['Content-Type'] = 'application/json;charset=utf-8'; + } + } + return JSON.stringify(data); + } + return data; + }], + + transformResponse: [function (data) { + if (typeof data === 'string') { + data = data.replace(PROTECTION_PREFIX, ''); + try { + data = JSON.parse(data); + } catch (e) { /* Ignore */ } + } + return data; + }], + + headers: { + common: { + 'Accept': 'application/json, text/plain, */*' + }, + patch: utils.merge(DEFAULT_CONTENT_TYPE), + post: utils.merge(DEFAULT_CONTENT_TYPE), + put: utils.merge(DEFAULT_CONTENT_TYPE) + }, + + timeout: 0, + + xsrfCookieName: 'XSRF-TOKEN', + xsrfHeaderName: 'X-XSRF-TOKEN' + }; + + +/***/ }, +/* 6 */ /***/ function(module, exports) { - module.exports = __WEBPACK_EXTERNAL_MODULE_1__; + 'use strict'; + + /*global toString:true*/ + + // utils is a library of generic helper functions non-specific to axios + + var toString = Object.prototype.toString; + + /** + * Determine if a value is an Array + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an Array, otherwise false + */ + function isArray(val) { + return toString.call(val) === '[object Array]'; + } + + /** + * Determine if a value is an ArrayBuffer + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an ArrayBuffer, otherwise false + */ + function isArrayBuffer(val) { + return toString.call(val) === '[object ArrayBuffer]'; + } + + /** + * Determine if a value is a FormData + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an FormData, otherwise false + */ + function isFormData(val) { + return toString.call(val) === '[object FormData]'; + } + + /** + * Determine if a value is a view on an ArrayBuffer + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false + */ + function isArrayBufferView(val) { + if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { + return ArrayBuffer.isView(val); + } else { + return (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer); + } + } + + /** + * Determine if a value is a String + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a String, otherwise false + */ + function isString(val) { + return typeof val === 'string'; + } + + /** + * Determine if a value is a Number + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Number, otherwise false + */ + function isNumber(val) { + return typeof val === 'number'; + } + + /** + * Determine if a value is undefined + * + * @param {Object} val The value to test + * @returns {boolean} True if the value is undefined, otherwise false + */ + function isUndefined(val) { + return typeof val === 'undefined'; + } + + /** + * Determine if a value is an Object + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an Object, otherwise false + */ + function isObject(val) { + return val !== null && typeof val === 'object'; + } + + /** + * Determine if a value is a Date + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Date, otherwise false + */ + function isDate(val) { + return toString.call(val) === '[object Date]'; + } + + /** + * Determine if a value is a File + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a File, otherwise false + */ + function isFile(val) { + return toString.call(val) === '[object File]'; + } + + /** + * Determine if a value is a Blob + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Blob, otherwise false + */ + function isBlob(val) { + return toString.call(val) === '[object Blob]'; + } + + /** + * Trim excess whitespace off the beginning and end of a string + * + * @param {String} str The String to trim + * @returns {String} The String freed of excess whitespace + */ + function trim(str) { + return str.replace(/^\s*/, '').replace(/\s*$/, ''); + } + + /** + * Determine if a value is an Arguments object + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an Arguments object, otherwise false + */ + function isArguments(val) { + return toString.call(val) === '[object Arguments]'; + } + + /** + * Determine if we're running in a standard browser environment + * + * This allows axios to run in a web worker, and react-native. + * Both environments support XMLHttpRequest, but not fully standard globals. + * + * web workers: + * typeof window -> undefined + * typeof document -> undefined + * + * react-native: + * typeof document.createelement -> undefined + */ + function isStandardBrowserEnv() { + return ( + typeof window !== 'undefined' && + typeof document !== 'undefined' && + typeof document.createElement === 'function' + ); + } + + /** + * Iterate over an Array or an Object invoking a function for each item. + * + * If `obj` is an Array or arguments callback will be called passing + * the value, index, and complete array for each item. + * + * If 'obj' is an Object callback will be called passing + * the value, key, and complete object for each property. + * + * @param {Object|Array} obj The object to iterate + * @param {Function} fn The callback to invoke for each item + */ + function forEach(obj, fn) { + // Don't bother if no value provided + if (obj === null || typeof obj === 'undefined') { + return; + } + + // Check if obj is array-like + var isArrayLike = isArray(obj) || isArguments(obj); + + // Force an array if not already something iterable + if (typeof obj !== 'object' && !isArrayLike) { + obj = [obj]; + } + + // Iterate over array values + if (isArrayLike) { + for (var i = 0, l = obj.length; i < l; i++) { + fn.call(null, obj[i], i, obj); + } + } + // Iterate over object keys + else { + for (var key in obj) { + if (obj.hasOwnProperty(key)) { + fn.call(null, obj[key], key, obj); + } + } + } + } + + /** + * Accepts varargs expecting each argument to be an object, then + * immutably merges the properties of each object and returns result. + * + * When multiple objects contain the same key the later object in + * the arguments list will take precedence. + * + * Example: + * + * ```js + * var result = merge({foo: 123}, {foo: 456}); + * console.log(result.foo); // outputs 456 + * ``` + * + * @param {Object} obj1 Object to merge + * @returns {Object} Result of all merge properties + */ + function merge(/*obj1, obj2, obj3, ...*/) { + var result = {}; + forEach(arguments, function (obj) { + forEach(obj, function (val, key) { + result[key] = val; + }); + }); + return result; + } + + module.exports = { + isArray: isArray, + isArrayBuffer: isArrayBuffer, + isFormData: isFormData, + isArrayBufferView: isArrayBufferView, + isString: isString, + isNumber: isNumber, + isObject: isObject, + isUndefined: isUndefined, + isDate: isDate, + isFile: isFile, + isBlob: isBlob, + isStandardBrowserEnv: isStandardBrowserEnv, + forEach: forEach, + merge: merge, + trim: trim + }; + + +/***/ }, +/* 7 */ +/***/ function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(process) {'use strict'; + + /** + * Dispatch a request to the server using whichever adapter + * is supported by the current environment. + * + * @param {object} config The config that is to be used for the request + * @returns {Promise} The Promise to be fulfilled + */ + module.exports = function dispatchRequest(config) { + return new Promise(function (resolve, reject) { + try { + // For browsers use XHR adapter + if ((typeof XMLHttpRequest !== 'undefined') || (typeof ActiveXObject !== 'undefined')) { + __webpack_require__(9)(resolve, reject, config); + } + // For node use HTTP adapter + else if (typeof process !== 'undefined') { + __webpack_require__(9)(resolve, reject, config); + } + } catch (e) { + reject(e); + } + }); + }; + + + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8))) + +/***/ }, +/* 8 */ +/***/ function(module, exports) { + + // shim for using process in browser + + var process = module.exports = {}; + var queue = []; + var draining = false; + var currentQueue; + var queueIndex = -1; + + function cleanUpNextTick() { + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } + } + + function drainQueue() { + if (draining) { + return; + } + var timeout = setTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + clearTimeout(timeout); + } + + process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + setTimeout(drainQueue, 0); + } + }; + + // v8 likes predictible objects + function Item(fun, array) { + this.fun = fun; + this.array = array; + } + Item.prototype.run = function () { + this.fun.apply(null, this.array); + }; + process.title = 'browser'; + process.browser = true; + process.env = {}; + process.argv = []; + process.version = ''; // empty string to avoid regexp issues + process.versions = {}; + + function noop() {} + + process.on = noop; + process.addListener = noop; + process.once = noop; + process.off = noop; + process.removeListener = noop; + process.removeAllListeners = noop; + process.emit = noop; + + process.binding = function (name) { + throw new Error('process.binding is not supported'); + }; + + process.cwd = function () { return '/' }; + process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); + }; + process.umask = function() { return 0; }; + + +/***/ }, +/* 9 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + /*global ActiveXObject:true*/ + + var defaults = __webpack_require__(5); + var utils = __webpack_require__(6); + var buildUrl = __webpack_require__(10); + var parseHeaders = __webpack_require__(11); + var transformData = __webpack_require__(12); + + module.exports = function xhrAdapter(resolve, reject, config) { + // Transform request data + var data = transformData( + config.data, + config.headers, + config.transformRequest + ); + + // Merge headers + var requestHeaders = utils.merge( + defaults.headers.common, + defaults.headers[config.method] || {}, + config.headers || {} + ); + + if (utils.isFormData(data)) { + delete requestHeaders['Content-Type']; // Let the browser set it + } + + // Create the request + var request = new (XMLHttpRequest || ActiveXObject)('Microsoft.XMLHTTP'); + request.open(config.method.toUpperCase(), buildUrl(config.url, config.params), true); + + // Set the request timeout in MS + request.timeout = config.timeout; + + // Listen for ready state + request.onreadystatechange = function () { + if (request && request.readyState === 4) { + // Prepare the response + var responseHeaders = parseHeaders(request.getAllResponseHeaders()); + var responseData = ['text', ''].indexOf(config.responseType || '') !== -1 ? request.responseText : request.response; + var response = { + data: transformData( + responseData, + responseHeaders, + config.transformResponse + ), + status: request.status, + statusText: request.statusText, + headers: responseHeaders, + config: config + }; + + // Resolve or reject the Promise based on the status + (request.status >= 200 && request.status < 300 ? + resolve : + reject)(response); + + // Clean up request + request = null; + } + }; + + // Add xsrf header + // This is only done if running in a standard browser environment. + // Specifically not if we're in a web worker, or react-native. + if (utils.isStandardBrowserEnv()) { + var cookies = __webpack_require__(13); + var urlIsSameOrigin = __webpack_require__(14); + + // Add xsrf header + var xsrfValue = urlIsSameOrigin(config.url) ? + cookies.read(config.xsrfCookieName || defaults.xsrfCookieName) : + undefined; + + if (xsrfValue) { + requestHeaders[config.xsrfHeaderName || defaults.xsrfHeaderName] = xsrfValue; + } + } + + // Add headers to the request + utils.forEach(requestHeaders, function (val, key) { + // Remove Content-Type if data is undefined + if (!data && key.toLowerCase() === 'content-type') { + delete requestHeaders[key]; + } + // Otherwise add header to the request + else { + request.setRequestHeader(key, val); + } + }); + + // Add withCredentials to request if needed + if (config.withCredentials) { + request.withCredentials = true; + } + + // Add responseType to request if needed + if (config.responseType) { + try { + request.responseType = config.responseType; + } catch (e) { + if (request.responseType !== 'json') { + throw e; + } + } + } + + if (utils.isArrayBuffer(data)) { + data = new DataView(data); + } + + // Send the request + request.send(data); + }; + + +/***/ }, +/* 10 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var utils = __webpack_require__(6); + + function encode(val) { + return encodeURIComponent(val). + replace(/%40/gi, '@'). + replace(/%3A/gi, ':'). + replace(/%24/g, '$'). + replace(/%2C/gi, ','). + replace(/%20/g, '+'). + replace(/%5B/gi, '['). + replace(/%5D/gi, ']'); + } + + /** + * Build a URL by appending params to the end + * + * @param {string} url The base of the url (e.g., http://www.google.com) + * @param {object} [params] The params to be appended + * @returns {string} The formatted url + */ + module.exports = function buildUrl(url, params) { + if (!params) { + return url; + } + + var parts = []; + + utils.forEach(params, function (val, key) { + if (val === null || typeof val === 'undefined') { + return; + } + + if (utils.isArray(val)) { + key = key + '[]'; + } + + if (!utils.isArray(val)) { + val = [val]; + } + + utils.forEach(val, function (v) { + if (utils.isDate(v)) { + v = v.toISOString(); + } + else if (utils.isObject(v)) { + v = JSON.stringify(v); + } + parts.push(encode(key) + '=' + encode(v)); + }); + }); + + if (parts.length > 0) { + url += (url.indexOf('?') === -1 ? '?' : '&') + parts.join('&'); + } + + return url; + }; + + +/***/ }, +/* 11 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var utils = __webpack_require__(6); + + /** + * Parse headers into an object + * + * ``` + * Date: Wed, 27 Aug 2014 08:58:49 GMT + * Content-Type: application/json + * Connection: keep-alive + * Transfer-Encoding: chunked + * ``` + * + * @param {String} headers Headers needing to be parsed + * @returns {Object} Headers parsed into an object + */ + module.exports = function parseHeaders(headers) { + var parsed = {}, key, val, i; + + if (!headers) { return parsed; } + + utils.forEach(headers.split('\n'), function(line) { + i = line.indexOf(':'); + key = utils.trim(line.substr(0, i)).toLowerCase(); + val = utils.trim(line.substr(i + 1)); + + if (key) { + parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; + } + }); + + return parsed; + }; + + +/***/ }, +/* 12 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var utils = __webpack_require__(6); + + /** + * Transform the data for a request or a response + * + * @param {Object|String} data The data to be transformed + * @param {Array} headers The headers for the request or response + * @param {Array|Function} fns A single function or Array of functions + * @returns {*} The resulting transformed data + */ + module.exports = function transformData(data, headers, fns) { + utils.forEach(fns, function (fn) { + data = fn(data, headers); + }); + + return data; + }; + + +/***/ }, +/* 13 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + /** + * WARNING: + * This file makes references to objects that aren't safe in all environments. + * Please see lib/utils.isStandardBrowserEnv before including this file. + */ + + var utils = __webpack_require__(6); + + module.exports = { + write: function write(name, value, expires, path, domain, secure) { + var cookie = []; + cookie.push(name + '=' + encodeURIComponent(value)); + + if (utils.isNumber(expires)) { + cookie.push('expires=' + new Date(expires).toGMTString()); + } + + if (utils.isString(path)) { + cookie.push('path=' + path); + } + + if (utils.isString(domain)) { + cookie.push('domain=' + domain); + } + + if (secure === true) { + cookie.push('secure'); + } + + document.cookie = cookie.join('; '); + }, + + read: function read(name) { + var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); + return (match ? decodeURIComponent(match[3]) : null); + }, + + remove: function remove(name) { + this.write(name, '', Date.now() - 86400000); + } + }; + + +/***/ }, +/* 14 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + /** + * WARNING: + * This file makes references to objects that aren't safe in all environments. + * Please see lib/utils.isStandardBrowserEnv before including this file. + */ + + var utils = __webpack_require__(6); + var msie = /(msie|trident)/i.test(navigator.userAgent); + var urlParsingNode = document.createElement('a'); + var originUrl; + + /** + * Parse a URL to discover it's components + * + * @param {String} url The URL to be parsed + * @returns {Object} + */ + function urlResolve(url) { + var href = url; + + if (msie) { + // IE needs attribute set twice to normalize properties + urlParsingNode.setAttribute('href', href); + href = urlParsingNode.href; + } + + urlParsingNode.setAttribute('href', href); + + // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils + return { + href: urlParsingNode.href, + protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', + host: urlParsingNode.host, + search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', + hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', + hostname: urlParsingNode.hostname, + port: urlParsingNode.port, + pathname: (urlParsingNode.pathname.charAt(0) === '/') ? + urlParsingNode.pathname : + '/' + urlParsingNode.pathname + }; + } + + originUrl = urlResolve(window.location.href); + + /** + * Determine if a URL shares the same origin as the current location + * + * @param {String} requestUrl The URL to test + * @returns {boolean} True if URL shares the same origin, otherwise false + */ + module.exports = function urlIsSameOrigin(requestUrl) { + var parsed = (utils.isString(requestUrl)) ? urlResolve(requestUrl) : requestUrl; + return (parsed.protocol === originUrl.protocol && + parsed.host === originUrl.host); + }; + + +/***/ }, +/* 15 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var utils = __webpack_require__(6); + + function InterceptorManager() { + this.handlers = []; + } + + /** + * Add a new interceptor to the stack + * + * @param {Function} fulfilled The function to handle `then` for a `Promise` + * @param {Function} rejected The function to handle `reject` for a `Promise` + * + * @return {Number} An ID used to remove interceptor later + */ + InterceptorManager.prototype.use = function (fulfilled, rejected) { + this.handlers.push({ + fulfilled: fulfilled, + rejected: rejected + }); + return this.handlers.length - 1; + }; + + /** + * Remove an interceptor from the stack + * + * @param {Number} id The ID that was returned by `use` + */ + InterceptorManager.prototype.eject = function (id) { + if (this.handlers[id]) { + this.handlers[id] = null; + } + }; + + /** + * Iterate over all the registered interceptors + * + * This method is particularly useful for skipping over any + * interceptors that may have become `null` calling `remove`. + * + * @param {Function} fn The function to call for each interceptor + */ + InterceptorManager.prototype.forEach = function (fn) { + utils.forEach(this.handlers, function (h) { + if (h !== null) { + fn(h); + } + }); + }; + + module.exports = InterceptorManager; + + +/***/ }, +/* 16 */ +/***/ function(module, exports) { + + 'use strict'; + + /** + * Syntactic sugar for invoking a function and expanding an array for arguments. + * + * Common use case would be to use `Function.prototype.apply`. + * + * ```js + * function f(x, y, z) {} + * var args = [1, 2, 3]; + * f.apply(null, args); + * ``` + * + * With `spread` this example can be re-written. + * + * ```js + * spread(function(x, y, z) {})([1, 2, 3]); + * ``` + * + * @param {Function} callback + * @returns {Function} + */ + module.exports = function spread(callback) { + return function (arr) { + return callback.apply(null, arr); + }; + }; + /***/ }, /* 2 */ diff --git a/mocha.start.js b/mocha.start.js index 80ecdfd..82fe6b6 100644 --- a/mocha.start.js +++ b/mocha.start.js @@ -1,84 +1,238 @@ -/*global assert:true */ -'use strict'; - -require('es6-promise').polyfill(); +'use strict' +require('babel-polyfill'); var assert = require('chai').assert; -var mocha = require('mocha'); -var sinon = require('sinon'); -var JSData = require('js-data'); -var http = require('http'); -var DSHttpAdapter = require('./'); +var sinon = require('sinon') +var mocha = require('mocha') +var JSData = require('js-data') +var DSHttpAdapter = require('./dist/js-data-http') +var DSHttpAdapterTests = require('./dist/js-data-http-tests') + +var store -var dsHttpAdapter, User, Post, datastore, DSUtils, queryTransform, p1, p2, p3, p4, p5; +var lifecycle = {} var globals = module.exports = { - fail: function (msg) { - assert.equal('should not reach this!: ' + msg, 'failure'); - }, - TYPES_EXCEPT_STRING: [123, 123.123, null, undefined, {}, [], true, false, function () { - }], - TYPES_EXCEPT_STRING_OR_ARRAY: [123, 123.123, null, undefined, {}, true, false, function () { - }], - TYPES_EXCEPT_STRING_OR_NUMBER: [null, undefined, {}, [], true, false, function () { - }], - TYPES_EXCEPT_STRING_OR_OBJECT: [123, 123.123, null, undefined, [], true, false, function () { - }], - TYPES_EXCEPT_STRING_OR_NUMBER_OBJECT: [null, undefined, [], true, false, function () { - }], - TYPES_EXCEPT_ARRAY: ['string', 123, 123.123, null, undefined, {}, true, false, function () { - }], - TYPES_EXCEPT_STRING_OR_ARRAY_OR_NUMBER: [null, undefined, {}, true, false, function () { - }], - TYPES_EXCEPT_NUMBER: ['string', null, undefined, {}, [], true, false, function () { - }], - TYPES_EXCEPT_OBJECT: ['string', 123, 123.123, null, undefined, true, false, function () { - }], - TYPES_EXCEPT_BOOLEAN: ['string', 123, 123.123, null, undefined, {}, [], function () { - }], - TYPES_EXCEPT_FUNCTION: ['string', 123, 123.123, null, undefined, {}, [], true, false], - assert: assert, - sinon: sinon, store: undefined, - http: http -}; + JSData: JSData, + DSHttpAdapter: DSHttpAdapter +} -var test = new mocha(); +for (var key in DSHttpAdapter) { + globals[key] = DSHttpAdapter[key] +} -var testGlobals = []; +for (var key in JSData) { + globals[key] = JSData[key] +} +for (var key in DSHttpAdapterTests) { + if (key !== 'init') { + globals[key] = DSHttpAdapterTests[key] + } +} -beforeEach(function () { - globals.queryTransform = queryTransform = function (resourceName, query) { - queryTransform.callCount += 1; - return query; - }; +var test = new mocha() - globals.DSUtils = DSUtils = JSData.DSUtils; - datastore = new JSData.DS(); +var testGlobals = [] - globals.User = User = datastore.defineResource('user'); - globals.Post = Post = datastore.defineResource({ - name: 'posts', - basePath: 'api' - }); - globals.dsHttpAdapter = dsHttpAdapter = new DSHttpAdapter({ - queryTransform: queryTransform, - http: require('axios'), - basePath: 'http://localhost:4444/' +for (var key in globals) { + global[key] = globals[key] + testGlobals.push(globals[key]) +} +test.globals(testGlobals) + +beforeEach(function () { + globals.sinon = global.sinon = sinon + this.data = {} + this.data.p1 = globals.p1 = global.p1 = { author: 'John', age: 30, id: 5 } + this.data.p2 = globals.p2 = global.p2 = { author: 'Sally', age: 31, id: 6 } + this.data.p3 = globals.p3 = global.p3 = { author: 'Mike', age: 32, id: 7 } + this.data.p4 = globals.p4 = global.p4 = { author: 'Adam', age: 33, id: 8 } + this.data.p5 = globals.p5 = global.p5 = { author: 'Adam', age: 33, id: 9 } + var Base = JSData.Model.extend({}, { + name: 'base', + linkRelations: true }); - datastore.registerAdapter('http', dsHttpAdapter, { default: true }); + this.Post = Base.extend({}, { + name: 'post', + endpoint: '/posts' + }) + this.User = Base.extend({}, { + name: 'user' + }) + this.Group = Base.extend({}, { + name: 'group' + }) + this.Organization = Base.extend({}, { + name: 'organization' + }) + this.Profile = Base.extend({}, { + name: 'profile' + }) + this.Comment = Base.extend({}, { + name: 'comment' + }) + this.User.belongsTo(this.Organization, { + localField: 'organization', + localKey: 'organizationId' + }) + this.User.hasMany(this.Comment, { + localField: 'comments', + foreignKey: 'userId' + }) + this.User.hasMany(this.Comment, { + localField: 'approvedComments', + foreignKey: 'approvedBy' + }) + this.User.hasMany(this.Group, { + localField: 'groups', + foreignKeys: 'userIds' + }) + this.User.hasOne(this.Profile, { + localField: 'profile', + foreignKey: 'userId' + }) + this.Group.hasMany(this.User, { + localField: 'users', + localKeys: 'userIds' + }) + this.Organization.hasMany(this.User, { + localField: 'users', + foreignKey: 'organizationId' + }) + this.Profile.belongsTo(this.User, { + localField: 'user', + localKey: 'userId' + }) + this.Comment.belongsTo(this.User, { + localField: 'user', + localKey: 'userId' + }) + this.Comment.belongsTo(this.User, { + localField: 'approvedByUser', + localKey: 'approvedBy' + }) + this.data.user1 = { + name: 'John Anderson', + id: 1, + organizationId: 2 + } + this.data.organization2 = { + name: 'Test Corp 2', + id: 2 + } + this.data.comment3 = { + content: 'test comment 3', + id: 3, + userId: 1 + } + this.data.profile4 = { + content: 'test profile 4', + id: 4, + userId: 1 + } - queryTransform.callCount = 0; + this.data.comment11 = { + id: 11, + userId: 10, + content: 'test comment 11' + } + this.data.comment12 = { + id: 12, + userId: 10, + content: 'test comment 12' + } + this.data.comment13 = { + id: 13, + userId: 10, + content: 'test comment 13' + } + this.data.organization14 = { + id: 14, + name: 'Test Corp' + } + this.data.profile15 = { + id: 15, + userId: 10, + email: 'john.anderson@test.com' + } + this.data.user10 = { + name: 'John Anderson', + id: 10, + organizationId: 14, + comments: [ + this.data.comment11, + this.data.comment12, + this.data.comment13 + ], + organization: this.data.organization14, + profile: this.data.profile15 + } + this.data.user16 = { + id: 16, + organizationId: 15, + name: 'test user 16' + } + this.data.user17 = { + id: 17, + organizationId: 15, + name: 'test user 17' + } + this.data.user18 = { + id: 18, + organizationId: 15, + name: 'test user 18' + } + this.data.group1 = { + name: 'group 1', + id: 1, + userIds: [10] + } + this.data.group2 = { + name: 'group 2', + id: 2, + userIds: [10] + } + this.data.organization15 = { + name: 'Another Test Corp', + id: 15, + users: [ + this.data.user16, + this.data.user17, + this.data.user18 + ] + } + this.data.user19 = { + id: 19, + name: 'test user 19' + } + this.data.user20 = { + id: 20, + name: 'test user 20' + } + this.data.comment19 = { + content: 'test comment 19', + id: 19, + approvedBy: 19, + approvedByUser: this.data.user19, + userId: 20, + user: this.data.user20 + } + this.data.user22 = { + id: 22, + name: 'test user 22' + } + this.data.profile21 = { + content: 'test profile 21', + id: 21, + userId: 22, + user: this.data.user22 + } +}) - globals.p1 = p1 = { author: 'John', age: 30, id: 5 }; - globals.p2 = p2 = { author: 'Sally', age: 31, id: 6 }; - globals.p3 = p3 = { author: 'Mike', age: 32, id: 7 }; - globals.p4 = p4 = { author: 'Adam', age: 33, id: 8 }; - globals.p5 = p5 = { author: 'Adam', age: 33, id: 9 }; +DSHttpAdapterTests.init() - for (var key in globals) { - global[key] = globals[key]; - testGlobals.push(globals[key]); - } - test.globals(testGlobals); -}); +afterEach(function () { + globals.store = null + global.store = null +}) diff --git a/node/.gitignore b/node/.gitignore new file mode 100644 index 0000000..19fd076 --- /dev/null +++ b/node/.gitignore @@ -0,0 +1,2 @@ +dist/js-data-http-node-tests.js +node_modules/ \ No newline at end of file diff --git a/node/.npmignore b/node/.npmignore new file mode 100644 index 0000000..39363cf --- /dev/null +++ b/node/.npmignore @@ -0,0 +1,4 @@ +test/ +mocha.start.js +dist/js-data-http-node-tests.js +webpack.config.js \ No newline at end of file diff --git a/node/LICENSE b/node/LICENSE new file mode 100644 index 0000000..d74449a --- /dev/null +++ b/node/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014-2015 Jason Dobry + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node/dist/js-data-http-node.js b/node/dist/js-data-http-node.js new file mode 100644 index 0000000..c6aabed --- /dev/null +++ b/node/dist/js-data-http-node.js @@ -0,0 +1,577 @@ +/*! +* js-data-http-node +* @version 3.0.0-alpha.1 - Homepage +* @author Jason Dobry +* @copyright (c) 2014-2015 Jason Dobry +* @license MIT +* +* @overview Node.js HTTP adapter for js-data. +*/ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(require("js-data"), require("axios")); + else if(typeof define === 'function' && define.amd) + define(["js-data", "axios"], factory); + else { + var a = typeof exports === 'object' ? factory(require("js-data"), require("axios")) : factory(root["js-data"], root["axios"]); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(this, function(__WEBPACK_EXTERNAL_MODULE_2__, __WEBPACK_EXTERNAL_MODULE_3__) { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; + +/******/ // The require function +/******/ function __webpack_require__(moduleId) { + +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) +/******/ return installedModules[moduleId].exports; + +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ exports: {}, +/******/ id: moduleId, +/******/ loaded: false +/******/ }; + +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); + +/******/ // Flag the module as loaded +/******/ module.loaded = true; + +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } + + +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; + +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; + +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; + +/******/ // Load entry module and return exports +/******/ return __webpack_require__(0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + var _jsData = __webpack_require__(2); + + function _typeof(obj) { return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + var axios = __webpack_require__(3); + var _ = _jsData.utils._; + var copy = _jsData.utils.copy; + var deepMixIn = _jsData.utils.deepMixIn; + var fillIn = _jsData.utils.fillIn; + var forOwn = _jsData.utils.forOwn; + var isArray = _jsData.utils.isArray; + var isNumber = _jsData.utils.isNumber; + var isObject = _jsData.utils.isObject; + var isSorN = _jsData.utils.isSorN; + var isString = _jsData.utils.isString; + var removeCircular = _jsData.utils.removeCircular; + var resolve = _jsData.utils.resolve; + var reject = _jsData.utils.reject; + var toJson = _jsData.utils.toJson; + + var hasFetch = false; + + try { + hasFetch = window && window.fetch; + } catch (e) {} + + function isValidString(value) { + return value != null && value !== ''; // jshint ignore:line + } + function join(items) { + var separator = arguments.length <= 1 || arguments[1] === undefined ? '' : arguments[1]; + + return items.filter(isValidString).join(separator); + } + function makePath() { + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + var result = join(args, '/'); + return result.replace(/([^:\/]|^)\/{2,}/g, '$1/'); + } + + function encode(val) { + return encodeURIComponent(val).replace(/%40/gi, '@').replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+'); + } + + function buildUrl(url, params) { + if (!params) { + return url; + } + + var parts = []; + + forOwn(params, function (val, key) { + if (val === null || typeof val === 'undefined') { + return; + } + if (!isArray(val)) { + val = [val]; + } + + val.forEach(function (v) { + if (window.toString.call(v) === '[object Date]') { + v = v.toISOString(); + } else if (isObject(v)) { + v = toJson(v); + } + parts.push(encode(key) + '=' + encode(v)); + }); + }); + + if (parts.length > 0) { + url += (url.indexOf('?') === -1 ? '?' : '&') + parts.join('&'); + } + + return url; + } + + var Defaults = (function () { + function Defaults() { + _classCallCheck(this, Defaults); + } + + _createClass(Defaults, [{ + key: 'queryTransform', + value: function queryTransform(resourceConfig, params) { + return params; + } + }, { + key: 'deserialize', + value: function deserialize(resourceConfig, data) { + return data ? 'data' in data ? data.data : data : data; + } + }, { + key: 'serialize', + value: function serialize(resourceConfig, data) { + return data; + } + }, { + key: 'log', + value: function log() {} + }, { + key: 'error', + value: function error() {} + }]); + + return Defaults; + })(); + + var defaultsPrototype = Defaults.prototype; + + defaultsPrototype.basePath = ''; + + defaultsPrototype.forceTrailingSlash = ''; + + defaultsPrototype.httpConfig = {}; + + defaultsPrototype.useFetch = false; + + var DSHttpAdapter = (function () { + function DSHttpAdapter(options) { + _classCallCheck(this, DSHttpAdapter); + + options = options || {}; + this.defaults = new Defaults(); + this.http = options.http || axios; + delete options.http; + if (console) { + this.defaults.log = function (a, b) { + return console[typeof console.info === 'function' ? 'info' : 'log'](a, b); + }; + } + if (console) { + this.defaults.error = function (a, b) { + return console[typeof console.error === 'function' ? 'error' : 'log'](a, b); + }; + } + deepMixIn(this.defaults, options); + + if (this.defaults.useFetch && hasFetch) { + this.defaults.deserialize = function (resourceConfig, response) { + return response.json(); + }; + this.http = function (config) { + var requestConfig = { + method: config.method, + // turn the plain headers object into the Fetch Headers object + headers: new Headers(config.headers) + }; + + if (config.data) { + requestConfig.body = toJson(config.data); + } + + return fetch(new Request(buildUrl(config.url, config.params), requestConfig)).then(function (response) { + response.config = { + method: config.method, + url: config.url + }; + return response; + }); + }; + } + } + + _createClass(DSHttpAdapter, [{ + key: 'getEndpoint', + value: function getEndpoint(resourceConfig, id, options) { + var _this2 = this; + + options || (options = {}); + options.params || (options.params = {}); + + var item = undefined; + var parentKey = resourceConfig.parentKey; + var endpoint = options.hasOwnProperty('endpoint') ? options.endpoint : resourceConfig.endpoint; + var parentField = resourceConfig.parentField; + var parentDef = resourceConfig.getResource(resourceConfig.parent); + var parentId = options.params[parentKey]; + + if (parentId === false || !parentKey || !parentDef) { + if (parentId === false) { + delete options.params[parentKey]; + } + return endpoint; + } else { + delete options.params[parentKey]; + + if (isString(id) || isNumber(id)) { + item = resourceConfig.get(id); + } else if (isObject(id)) { + item = id; + } + + if (item) { + parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null); + } + + if (parentId) { + var _ret = (function () { + delete options.endpoint; + var _options = {}; + forOwn(options, function (value, key) { + _options[key] = value; + }); + _(_options, parentDef); + return { + v: makePath(_this2.getEndpoint(parentDef, parentId, _options, parentId, endpoint)) + }; + })(); + + if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v; + } else { + return endpoint; + } + } + } + }, { + key: 'getPath', + value: function getPath(method, resourceConfig, id, options) { + var _this = this; + options || (options = {}); + var args = [options.basePath || _this.defaults.basePath || resourceConfig.basePath, this.getEndpoint(resourceConfig, isString(id) || isNumber(id) || method === 'create' ? id : null, options)]; + if (method === 'find' || method === 'update' || method === 'destroy') { + args.push(id); + } + return makePath.apply(_jsData.utils, args); + } + }, { + key: 'HTTP', + value: function HTTP(config) { + var _this = this; + var start = new Date(); + config = copy(config); + config = deepMixIn(config, _this.defaults.httpConfig); + if (_this.defaults.forceTrailingSlash && config.url[config.url.length - 1] !== '/') { + config.url += '/'; + } + if (_typeof(config.data) === 'object') { + config.data = removeCircular(config.data); + } + config.method = config.method.toUpperCase(); + var suffix = config.suffix || _this.defaults.suffix; + if (suffix && config.url.substr(config.url.length - suffix.length) !== suffix) { + config.url += suffix; + } + + function logResponse(data) { + var str = start.toUTCString() + ' - ' + config.method.toUpperCase() + ' ' + config.url + ' - ' + data.status + ' ' + (new Date().getTime() - start.getTime()) + 'ms'; + if (data.status >= 200 && data.status < 300) { + if (_this.defaults.log) { + _this.defaults.log(str, data); + } + return data; + } else { + if (_this.defaults.error) { + _this.defaults.error('\'FAILED: ' + str, data); + } + return reject(data); + } + } + + if (!this.http) { + throw new Error('You have not configured this adapter with an http library!'); + } + + return this.http(config).then(logResponse, logResponse); + } + }, { + key: 'GET', + value: function GET(url, config) { + config || (config = {}); + if (!('method' in config)) { + config.method = 'get'; + } + return this.HTTP(deepMixIn(config, { + url: url + })); + } + }, { + key: 'POST', + value: function POST(url, attrs, config) { + config || (config = {}); + if (!('method' in config)) { + config.method = 'post'; + } + return this.HTTP(deepMixIn(config, { + url: url, + data: attrs + })); + } + }, { + key: 'PUT', + value: function PUT(url, attrs, config) { + config || (config = {}); + if (!('method' in config)) { + config.method = 'put'; + } + return this.HTTP(deepMixIn(config, { + url: url, + data: attrs || {} + })); + } + }, { + key: 'DEL', + value: function DEL(url, config) { + config || (config = {}); + if (!('method' in config)) { + config.method = 'delete'; + } + return this.HTTP(deepMixIn(config, { + url: url + })); + } + }, { + key: 'find', + value: function find(resourceConfig, id, options) { + var _this = this; + options = options ? copy(options) : {}; + options.suffix = options.suffix || resourceConfig.suffix; + options.params || (options.params = {}); + options.params = _this.defaults.queryTransform(resourceConfig, options.params); + return _this.GET(_this.getPath('find', resourceConfig, id, options), options).then(function (data) { + var item = (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data); + return !item ? reject(new Error('Not Found!')) : item; + }); + } + }, { + key: 'findAll', + value: function findAll(resourceConfig, params, options) { + var _this = this; + options = options ? copy(options) : {}; + options.suffix = options.suffix || resourceConfig.suffix; + options.params || (options.params = {}); + if (params) { + params = _this.defaults.queryTransform(resourceConfig, params); + deepMixIn(options.params, params); + } + return _this.GET(_this.getPath('findAll', resourceConfig, params, options), options).then(function (data) { + return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data); + }); + } + }, { + key: 'create', + value: function create(resourceConfig, attrs, options) { + var _this = this; + options = options ? copy(options) : {}; + options.suffix = options.suffix || resourceConfig.suffix; + options.params || (options.params = {}); + options.params = _this.defaults.queryTransform(resourceConfig, options.params); + return _this.POST(_this.getPath('create', resourceConfig, attrs, options), options.serialize ? options.serialize(resourceConfig, attrs) : _this.defaults.serialize(resourceConfig, attrs), options).then(function (data) { + return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data); + }); + } + }, { + key: 'update', + value: function update(resourceConfig, id, attrs, options) { + var _this = this; + options = options ? copy(options) : {}; + options.suffix = options.suffix || resourceConfig.suffix; + options.params || (options.params = {}); + options.params = _this.defaults.queryTransform(resourceConfig, options.params); + return _this.PUT(_this.getPath('update', resourceConfig, id, options), options.serialize ? options.serialize(resourceConfig, attrs) : _this.defaults.serialize(resourceConfig, attrs), options).then(function (data) { + return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data); + }); + } + }, { + key: 'updateAll', + value: function updateAll(resourceConfig, attrs, params, options) { + var _this = this; + options = options ? copy(options) : {}; + options.suffix = options.suffix || resourceConfig.suffix; + options.params || (options.params = {}); + if (params) { + params = _this.defaults.queryTransform(resourceConfig, params); + deepMixIn(options.params, params); + } + return this.PUT(_this.getPath('updateAll', resourceConfig, attrs, options), options.serialize ? options.serialize(resourceConfig, attrs) : _this.defaults.serialize(resourceConfig, attrs), options).then(function (data) { + return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data); + }); + } + }, { + key: 'destroy', + value: function destroy(resourceConfig, id, options) { + var _this = this; + options = options ? copy(options) : {}; + options.suffix = options.suffix || resourceConfig.suffix; + options.params || (options.params = {}); + options.params = _this.defaults.queryTransform(resourceConfig, options.params); + return _this.DEL(_this.getPath('destroy', resourceConfig, id, options), options).then(function (data) { + return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data); + }); + } + }, { + key: 'destroyAll', + value: function destroyAll(resourceConfig, params, options) { + var _this = this; + options = options ? copy(options) : {}; + options.suffix = options.suffix || resourceConfig.suffix; + options.params || (options.params = {}); + if (params) { + params = _this.defaults.queryTransform(resourceConfig, params); + deepMixIn(options.params, params); + } + return this.DEL(_this.getPath('destroyAll', resourceConfig, params, options), options).then(function (data) { + return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data); + }); + } + }]); + + return DSHttpAdapter; + })(); + + DSHttpAdapter.addAction = function (name, opts) { + if (!name || !isString(name)) { + throw new TypeError('action(name[, opts]): Expected: string, Found: ' + (typeof name === 'undefined' ? 'undefined' : _typeof(name))); + } + return function (target) { + if (target[name]) { + throw new Error('action(name[, opts]): ' + name + ' already exists on target!'); + } + opts.request = opts.request || function (config) { + return config; + }; + opts.response = opts.response || function (response) { + return response; + }; + opts.responseError = opts.responseError || function (err) { + return reject(err); + }; + target[name] = function (id, _opts) { + if (isObject(id)) { + _opts = id; + } + _opts = _opts || {}; + var adapter = this.getAdapter(opts.adapter || this.defaultAdapter || 'http'); + var config = {}; + fillIn(config, opts); + if (!_opts.hasOwnProperty('endpoint') && config.endpoint) { + _opts.endpoint = config.endpoint; + } + if (typeof _opts.getEndpoint === 'function') { + config.url = _opts.getEndpoint(this, _opts); + } else { + var args = [_opts.basePath || this.basePath || adapter.defaults.basePath, adapter.getEndpoint(this, isSorN(id) ? id : null, _opts)]; + if (isSorN(id)) { + args.push(id); + } + args.push(opts.pathname || name); + config.url = makePath.apply(null, args); + } + config.method = config.method || 'GET'; + config.modelName = this.name; + deepMixIn(config)(_opts); + return resolve(config).then(_opts.request || opts.request).then(function (config) { + return adapter.HTTP(config); + }).then(function (data) { + if (data && data.config) { + data.config.modelName = this.name; + } + return data; + }).then(_opts.response || opts.response, _opts.responseError || opts.responseError); + }; + return target; + }; + }; + + DSHttpAdapter.addActions = function (opts) { + opts || (opts = {}); + return function (target) { + forOwn(target, function (value, key) { + DSHttpAdapter.addAction(key, value)(target); + }); + return target; + }; + }; + + DSHttpAdapter.version = { + full: '3.0.0-alpha.1', + major: parseInt('3', 10), + minor: parseInt('0', 10), + patch: parseInt('0', 10), + alpha: true ? '1' : false, + beta: true ? 'false' : false + }; + + module.exports = DSHttpAdapter; + +/***/ }, +/* 1 */, +/* 2 */ +/***/ function(module, exports) { + + module.exports = __WEBPACK_EXTERNAL_MODULE_2__; + +/***/ }, +/* 3 */ +/***/ function(module, exports) { + + module.exports = __WEBPACK_EXTERNAL_MODULE_3__; + +/***/ } +/******/ ]) +}); +; \ No newline at end of file diff --git a/node/mocha.start.js b/node/mocha.start.js new file mode 100644 index 0000000..ab07f45 --- /dev/null +++ b/node/mocha.start.js @@ -0,0 +1,238 @@ +'use strict' + +require('babel-polyfill'); +var assert = require('chai').assert; +var sinon = require('sinon') +var mocha = require('mocha') +var JSData = require('js-data') +var DSHttpAdapter = require('./dist/js-data-http-node') +var DSHttpAdapterTests = require('./dist/js-data-http-node-tests') + +var store + +var lifecycle = {} + +var globals = module.exports = { + store: undefined, + JSData: JSData, + DSHttpAdapter: DSHttpAdapter +} + +for (var key in DSHttpAdapter) { + globals[key] = DSHttpAdapter[key] +} + +for (var key in JSData) { + globals[key] = JSData[key] +} +for (var key in DSHttpAdapterTests) { + if (key !== 'init') { + globals[key] = DSHttpAdapterTests[key] + } +} + +var test = new mocha() + +var testGlobals = [] + +for (var key in globals) { + global[key] = globals[key] + testGlobals.push(globals[key]) +} +test.globals(testGlobals) + +beforeEach(function () { + globals.sinon = global.sinon = sinon + this.data = {} + this.data.p1 = globals.p1 = global.p1 = { author: 'John', age: 30, id: 5 } + this.data.p2 = globals.p2 = global.p2 = { author: 'Sally', age: 31, id: 6 } + this.data.p3 = globals.p3 = global.p3 = { author: 'Mike', age: 32, id: 7 } + this.data.p4 = globals.p4 = global.p4 = { author: 'Adam', age: 33, id: 8 } + this.data.p5 = globals.p5 = global.p5 = { author: 'Adam', age: 33, id: 9 } + var Base = JSData.Model.extend({}, { + name: 'base', + linkRelations: true + }); + this.Post = Base.extend({}, { + name: 'post', + endpoint: '/posts' + }) + this.User = Base.extend({}, { + name: 'user' + }) + this.Group = Base.extend({}, { + name: 'group' + }) + this.Organization = Base.extend({}, { + name: 'organization' + }) + this.Profile = Base.extend({}, { + name: 'profile' + }) + this.Comment = Base.extend({}, { + name: 'comment' + }) + this.User.belongsTo(this.Organization, { + localField: 'organization', + localKey: 'organizationId' + }) + this.User.hasMany(this.Comment, { + localField: 'comments', + foreignKey: 'userId' + }) + this.User.hasMany(this.Comment, { + localField: 'approvedComments', + foreignKey: 'approvedBy' + }) + this.User.hasMany(this.Group, { + localField: 'groups', + foreignKeys: 'userIds' + }) + this.User.hasOne(this.Profile, { + localField: 'profile', + foreignKey: 'userId' + }) + this.Group.hasMany(this.User, { + localField: 'users', + localKeys: 'userIds' + }) + this.Organization.hasMany(this.User, { + localField: 'users', + foreignKey: 'organizationId' + }) + this.Profile.belongsTo(this.User, { + localField: 'user', + localKey: 'userId' + }) + this.Comment.belongsTo(this.User, { + localField: 'user', + localKey: 'userId' + }) + this.Comment.belongsTo(this.User, { + localField: 'approvedByUser', + localKey: 'approvedBy' + }) + this.data.user1 = { + name: 'John Anderson', + id: 1, + organizationId: 2 + } + this.data.organization2 = { + name: 'Test Corp 2', + id: 2 + } + this.data.comment3 = { + content: 'test comment 3', + id: 3, + userId: 1 + } + this.data.profile4 = { + content: 'test profile 4', + id: 4, + userId: 1 + } + + this.data.comment11 = { + id: 11, + userId: 10, + content: 'test comment 11' + } + this.data.comment12 = { + id: 12, + userId: 10, + content: 'test comment 12' + } + this.data.comment13 = { + id: 13, + userId: 10, + content: 'test comment 13' + } + this.data.organization14 = { + id: 14, + name: 'Test Corp' + } + this.data.profile15 = { + id: 15, + userId: 10, + email: 'john.anderson@test.com' + } + this.data.user10 = { + name: 'John Anderson', + id: 10, + organizationId: 14, + comments: [ + this.data.comment11, + this.data.comment12, + this.data.comment13 + ], + organization: this.data.organization14, + profile: this.data.profile15 + } + this.data.user16 = { + id: 16, + organizationId: 15, + name: 'test user 16' + } + this.data.user17 = { + id: 17, + organizationId: 15, + name: 'test user 17' + } + this.data.user18 = { + id: 18, + organizationId: 15, + name: 'test user 18' + } + this.data.group1 = { + name: 'group 1', + id: 1, + userIds: [10] + } + this.data.group2 = { + name: 'group 2', + id: 2, + userIds: [10] + } + this.data.organization15 = { + name: 'Another Test Corp', + id: 15, + users: [ + this.data.user16, + this.data.user17, + this.data.user18 + ] + } + this.data.user19 = { + id: 19, + name: 'test user 19' + } + this.data.user20 = { + id: 20, + name: 'test user 20' + } + this.data.comment19 = { + content: 'test comment 19', + id: 19, + approvedBy: 19, + approvedByUser: this.data.user19, + userId: 20, + user: this.data.user20 + } + this.data.user22 = { + id: 22, + name: 'test user 22' + } + this.data.profile21 = { + content: 'test profile 21', + id: 21, + userId: 22, + user: this.data.user22 + } +}) + +DSHttpAdapterTests.init() + +afterEach(function () { + globals.store = null + global.store = null +}) diff --git a/node/package.json b/node/package.json new file mode 100644 index 0000000..a7f55eb --- /dev/null +++ b/node/package.json @@ -0,0 +1,24 @@ +{ + "name": "js-data-http-node", + "description": "Node.js HTTP adapter for js-data.", + "version": "3.0.0-alpha.1", + "homepage": "http://www.js-data.io/docs/dshttpadapter", + "repository": { + "type": "git", + "url": "https://github.com/js-data/js-data-http.git" + }, + "author": "Jason Dobry (http://www.pseudobry.com)", + "license": "MIT", + "main": "./dist/js-data-http-node.js", + "keywords": [ + "ajax", + "axios", + "rest", + "adapter", + "http", + "node.js" + ], + "dependencies": { + "axios": "0.7.0" + } +} diff --git a/node/test/unit/index.js b/node/test/unit/index.js new file mode 100644 index 0000000..626efdc --- /dev/null +++ b/node/test/unit/index.js @@ -0,0 +1,36 @@ +/* global JSData:true */ +import {assert} from 'chai' + +assert.objectsEqual = function (a, b, msg) { + assert.deepEqual( + JSON.parse(JSON.stringify(a)), + JSON.parse(JSON.stringify(b)), + msg || 'Expected objects or arrays to be equal' + ) +} + +assert.fail = function (msg) { + assert.equal(`should not reach this!: ${msg}`, 'failure') +} + +export function init () { + describe('DSHttpAdapter (Node.js)', function () { + it('has all the right exports', function () { + assert.isFunction(DSHttpAdapter.addAction, 'has the addAction decorator') + assert.isFunction(DSHttpAdapter.addActions, 'has the addActions decorator') + assert.isObject(DSHttpAdapter.version, 'has a version') + }) + }) +} + +export const TYPES_EXCEPT_STRING = [123, 123.123, null, undefined, {}, [], true, false, function () {}] +export const TYPES_EXCEPT_STRING_OR_ARRAY = [123, 123.123, null, undefined, {}, true, false, function () {}] +export const TYPES_EXCEPT_STRING_OR_NUMBER = [null, undefined, {}, [], true, false, function () {}] +export const TYPES_EXCEPT_STRING_OR_OBJECT = [123, 123.123, null, undefined, [], true, false, function () {}] +export const TYPES_EXCEPT_STRING_OR_NUMBER_OBJECT = [null, undefined, [], true, false, function () {}] +export const TYPES_EXCEPT_ARRAY = ['string', 123, 123.123, null, undefined, {}, true, false, function () {}] +export const TYPES_EXCEPT_STRING_OR_ARRAY_OR_NUMBER = [null, undefined, {}, true, false, function () {}] +export const TYPES_EXCEPT_NUMBER = ['string', null, undefined, {}, [], true, false, function () {}] +export const TYPES_EXCEPT_OBJECT = ['string', 123, 123.123, null, undefined, true, false, function () {}] +export const TYPES_EXCEPT_BOOLEAN = ['string', 123, 123.123, null, undefined, {}, [], function () {}] +export const TYPES_EXCEPT_FUNCTION = ['string', 123, 123.123, null, undefined, {}, [], true, false] diff --git a/node/webpack.config.js b/node/webpack.config.js new file mode 100644 index 0000000..e78d72a --- /dev/null +++ b/node/webpack.config.js @@ -0,0 +1,33 @@ +var path= require('path') + +module.exports = { + entry: { + './node/dist/js-data-http-node.js': './src/index.js', + './node/dist/js-data-http-node-tests.js': './node/test/unit/index.js' + }, + output: { + filename: '[name]', + libraryTarget: 'umd' + }, + externals: [ + 'js-data', + 'axios', + 'chai' + ], + module: { + loaders: [ + { + loader: 'babel-loader', + include: [ + path.resolve(__dirname, '../src'), + path.resolve(__dirname, 'test') + ], + test: /\.jsx?$/, + query: { + presets: ['es2015', 'stage-0'], + plugins: ['syntax-async-functions', 'transform-regenerator'] + } + } + ] + } +} diff --git a/package.json b/package.json index ef6d050..7a7bdb3 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,9 @@ "axios", "rest", "adapter", - "http" + "http", + "browser", + "xhr" ], "standard": { "parser": "babel-eslint" diff --git a/test/unit/index.js b/test/unit/index.js new file mode 100644 index 0000000..6d73c9c --- /dev/null +++ b/test/unit/index.js @@ -0,0 +1,36 @@ +/* global JSData:true */ +import {assert} from 'chai' + +assert.objectsEqual = function (a, b, msg) { + assert.deepEqual( + JSON.parse(JSON.stringify(a)), + JSON.parse(JSON.stringify(b)), + msg || 'Expected objects or arrays to be equal' + ) +} + +assert.fail = function (msg) { + assert.equal(`should not reach this!: ${msg}`, 'failure') +} + +export function init () { + describe('DSHttpAdapter', function () { + it('has all the right exports', function () { + assert.isFunction(DSHttpAdapter.addAction, 'has the addAction decorator') + assert.isFunction(DSHttpAdapter.addActions, 'has the addActions decorator') + assert.isObject(DSHttpAdapter.version, 'has a version') + }) + }) +} + +export const TYPES_EXCEPT_STRING = [123, 123.123, null, undefined, {}, [], true, false, function () {}] +export const TYPES_EXCEPT_STRING_OR_ARRAY = [123, 123.123, null, undefined, {}, true, false, function () {}] +export const TYPES_EXCEPT_STRING_OR_NUMBER = [null, undefined, {}, [], true, false, function () {}] +export const TYPES_EXCEPT_STRING_OR_OBJECT = [123, 123.123, null, undefined, [], true, false, function () {}] +export const TYPES_EXCEPT_STRING_OR_NUMBER_OBJECT = [null, undefined, [], true, false, function () {}] +export const TYPES_EXCEPT_ARRAY = ['string', 123, 123.123, null, undefined, {}, true, false, function () {}] +export const TYPES_EXCEPT_STRING_OR_ARRAY_OR_NUMBER = [null, undefined, {}, true, false, function () {}] +export const TYPES_EXCEPT_NUMBER = ['string', null, undefined, {}, [], true, false, function () {}] +export const TYPES_EXCEPT_OBJECT = ['string', 123, 123.123, null, undefined, true, false, function () {}] +export const TYPES_EXCEPT_BOOLEAN = ['string', 123, 123.123, null, undefined, {}, [], function () {}] +export const TYPES_EXCEPT_FUNCTION = ['string', 123, 123.123, null, undefined, {}, [], true, false] From 4c2759c49ce4ef44e15c04400816d67844c8a760 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Fri, 11 Dec 2015 00:14:44 -0800 Subject: [PATCH 03/24] Fix build. --- dist/js-data-http.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dist/js-data-http.js b/dist/js-data-http.js index 782979c..bad8841 100644 --- a/dist/js-data-http.js +++ b/dist/js-data-http.js @@ -15,7 +15,7 @@ else if(typeof exports === 'object') exports["DSHttpAdapter"] = factory(require("js-data")); else - root["DSHttpAdapter"] = factory(root["js-data"]); + root["DSHttpAdapter"] = factory(root["JSData"]); })(this, function(__WEBPACK_EXTERNAL_MODULE_2__) { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache From ed6a62e5603685575804455f3f277e1e81f54760 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Fri, 11 Dec 2015 00:25:50 -0800 Subject: [PATCH 04/24] s --- dist/js-data-http.js | 6 +++--- node/dist/js-data-http-node.js | 11 ++++++----- src/index.js | 6 +++--- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/dist/js-data-http.js b/dist/js-data-http.js index bad8841..7fcf6e0 100644 --- a/dist/js-data-http.js +++ b/dist/js-data-http.js @@ -268,9 +268,9 @@ return /******/ (function(modules) { // webpackBootstrap if (_this.defaults.forceTrailingSlash && config.url[config.url.length - 1] !== '/' && !config.urlOverride) { config.url += '/'; } - if (_typeof(config.data) === 'object') { - config.data = removeCircular(config.data); - } + // if (typeof config.data === 'object') { + // config.data = removeCircular(config.data) + // } config.method = config.method.toUpperCase(); var suffix = config.suffix || _this.defaults.suffix; if (suffix && config.url.substr(config.url.length - suffix.length) !== suffix && !config.urlOverride) { diff --git a/node/dist/js-data-http-node.js b/node/dist/js-data-http-node.js index c6aabed..4385163 100644 --- a/node/dist/js-data-http-node.js +++ b/node/dist/js-data-http-node.js @@ -84,8 +84,9 @@ return /******/ (function(modules) { // webpackBootstrap var isObject = _jsData.utils.isObject; var isSorN = _jsData.utils.isSorN; var isString = _jsData.utils.isString; - var removeCircular = _jsData.utils.removeCircular; - var resolve = _jsData.utils.resolve; + var + // removeCircular, + resolve = _jsData.utils.resolve; var reject = _jsData.utils.reject; var toJson = _jsData.utils.toJson; @@ -308,9 +309,9 @@ return /******/ (function(modules) { // webpackBootstrap if (_this.defaults.forceTrailingSlash && config.url[config.url.length - 1] !== '/') { config.url += '/'; } - if (_typeof(config.data) === 'object') { - config.data = removeCircular(config.data); - } + // if (typeof config.data === 'object') { + // config.data = removeCircular(config.data) + // } config.method = config.method.toUpperCase(); var suffix = config.suffix || _this.defaults.suffix; if (suffix && config.url.substr(config.url.length - suffix.length) !== suffix) { diff --git a/src/index.js b/src/index.js index 88c1181..a75e280 100644 --- a/src/index.js +++ b/src/index.js @@ -142,9 +142,9 @@ class DSHttpAdapter { if (_this.defaults.forceTrailingSlash && config.url[config.url.length - 1] !== '/' && !config.urlOverride) { config.url += '/' } - if (typeof config.data === 'object') { - config.data = removeCircular(config.data) - } + // if (typeof config.data === 'object') { + // config.data = removeCircular(config.data) + // } config.method = config.method.toUpperCase() let suffix = config.suffix || _this.defaults.suffix if (suffix && config.url.substr(config.url.length - suffix.length) !== suffix && !config.urlOverride) { From cf9c6edaece58678c2831f44d1e37740fe69f8ee Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Sat, 12 Dec 2015 22:44:25 +0000 Subject: [PATCH 05/24] Stable Version 3.0.0-alpha.1 --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index db442b3..bea2d6c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,10 @@ ##### 2.1.2 - 28 October 2015 +###### Backwards compatible API changes +- Added option to support use of `window.fetch` +- Added option to supply custom http implementation + ###### Other - Dropped Grunt - Now reporting code coverage properly From 4a83a1908dcb4dc2df83afe0d025e1f4224da800 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Sat, 9 Jan 2016 21:05:00 +0000 Subject: [PATCH 06/24] Updates. --- dist/js-data-fetch.min.map | 1 + dist/js-data-http.js | 969 ++++++++++++++++++++------------ dist/js-data-http.min.js | 2 +- fetch/.gitignore | 2 + fetch/.npmignore | 4 + fetch/LICENSE | 21 + fetch/dist/js-data-fetch.js | 666 ++++++++++++++++++++++ fetch/dist/js-data-fetch.min.js | 11 + fetch/package.json | 21 + fetch/webpack.config.js | 35 ++ karma.conf.js | 1 - node/dist/js-data-fetch.js | 644 +++++++++++++++++++++ node/dist/js-data-http-node.js | 728 +++++++++++++----------- node/package.json | 6 +- package.json | 1 + src/index.js | 74 ++- test/browser/create.spec.js | 2 +- 17 files changed, 2486 insertions(+), 702 deletions(-) create mode 100644 dist/js-data-fetch.min.map create mode 100644 fetch/.gitignore create mode 100644 fetch/.npmignore create mode 100644 fetch/LICENSE create mode 100644 fetch/dist/js-data-fetch.js create mode 100644 fetch/dist/js-data-fetch.min.js create mode 100644 fetch/package.json create mode 100644 fetch/webpack.config.js create mode 100644 node/dist/js-data-fetch.js diff --git a/dist/js-data-fetch.min.map b/dist/js-data-fetch.min.map new file mode 100644 index 0000000..6e73dfd --- /dev/null +++ b/dist/js-data-fetch.min.map @@ -0,0 +1 @@ +{"version":3,"sources":["fetch/dist/js-data-fetch.js"],"names":["root","factory","exports","module","require","define","amd","a","i","this","__WEBPACK_EXTERNAL_MODULE_2__","__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","forOwn","key","isArray","forEach","v","window","toString","toISOString","isObject","toJson","push","indexOf","DSHttpAdapter","opts","self","basePath","undefined","debug","forceTrailingSlash","http","axios","httpConfig","suffix","useFetch","hasFetch","_typeof","Symbol","iterator","obj","constructor","_jsData","_","utils","copy","deepMixIn","fillIn","isFunction","isNumber","isSorN","isString","resolve","reject","fetch","e","beforeCreate","create","Model","props","queryTransform","op","dbg","then","POST","getPath","serialize","response","deserialize","data","afterCreate","_data","_len2","_key2","log","apply","concat","beforeDEL","DEL","config","method","_config","HTTP","afterDEL","_response","raw","beforeDestroy","destroy","afterDestroy","beforeDestroyAll","destroyAll","query","afterDestroyAll","error","console","_console","_fetch","_x","_x2","requestConfig","headers","Headers","body","Request","json","beforeFind","find","GET","afterFind","findAll","beforeFindAll","afterFindAll","beforeGET","afterGET","getEndpoint","_this","item","parentKey","endpoint","hasOwnProperty","parentField","parentDef","getResource","parent","parentId","get","idAttribute","_ret","_opts","beforeHTTP","logResponse","str","start","toUTCString","toUpperCase","status","Date","getTime","substr","Error","afterHTTP","level","_len3","_key3","prefix","name","_console2","_console3","beforePOST","afterPOST","beforePUT","PUT","afterPUT","update","beforeUpdate","afterUpdate","updateAll","beforeUpdateAll","afterUpdateAll","addAction","TypeError","target","request","responseError","err","adapter","getAdapter","defaultAdapter","_args","defaults","pathname","modelName","addActions","version","full","major","parseInt","minor","patch","alpha","beta"],"mappings":"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","file":"fetch/dist/js-data-fetch.min.js"} \ No newline at end of file diff --git a/dist/js-data-http.js b/dist/js-data-http.js index 7fcf6e0..43bc72a 100644 --- a/dist/js-data-http.js +++ b/dist/js-data-http.js @@ -2,7 +2,7 @@ * js-data-http * @version 2.2.1 - Homepage * @author Jason Dobry -* @copyright (c) 2014-2015 Jason Dobry +* @copyright (c) 2014-2016 Jason Dobry * @license MIT * * @overview HTTP adapter for js-data. @@ -93,19 +93,71 @@ return /******/ (function(modules) { // webpackBootstrap _classCallCheck(this, Defaults); } - _createClass(Defaults, [{ - key: 'queryTransform', - value: function queryTransform(resourceConfig, params) { - return params; + // Default values for arguments + opts || (opts = {}); + + // Default and user-defined settings + self.basePath = opts.basePath === undefined ? '' : opts.basePath; + self.debug = opts.debug === undefined ? false : opts.debug; + self.forceTrailingSlash = opts.forceTrailingSlash === undefined ? false : opts.forceTrailingSlash; + self.http = opts.http === undefined ? axios : opts.http; + self.httpConfig = opts.httpConfig === undefined ? {} : opts.httpConfig; + self.suffix = opts.suffix === undefined ? '' : opts.suffix; + self.useFetch = opts.useFetch === undefined ? false : opts.useFetch; + + // Use "window.fetch" if available and the user asks for it + if (hasFetch && (self.useFetch || self.http === undefined)) {} + } + + fillIn(DSHttpAdapter, { + beforeCreate: function beforeCreate() {}, + create: function create(Model, props, opts) { + var self = this; + opts = opts ? copy(opts) : {}; + opts.params || (opts.params = {}); + opts.params = self.queryTransform(Model, opts.params, opts); + opts.op = 'create'; + self.dbg(opts.op, Model, props, opts); + return resolve(self.beforeCreate(Model, props, opts)).then(function () { + return self.POST(self.getPath('create', Model, props, opts), self.serialize(Model, props, opts), opts); + }).then(function (response) { + return self.deserialize(Model, response, opts); + }).then(function (data) { + return resolve(self.afterCreate(Model, data, opts)).then(function (_data) { + return _data || data; + }); + }); + }, + afterCreate: function afterCreate() {}, + dbg: function dbg() { + for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; } - }, { - key: 'deserialize', - value: function deserialize(resourceConfig, data) { - return data ? 'data' in data ? data.data : data : data; + + this.log.apply(this, ['debug'].concat(args)); + }, + beforeDEL: function beforeDEL() {}, + DEL: function DEL(url, config, opts) { + var self = this; + config || (config = {}); + config.url = url || config.url; + config.method = config.method || 'delete'; + return resolve(self.beforeDEL(url, config, opts)).then(function (_config) { + config = _config || config; + return self.HTTP(config, opts); + }).then(function (response) { + return resolve(self.afterDEL(url, config, opts, response)).then(function (_response) { + return _response || response; + }); + }); + }, + afterDEL: function afterDEL() {}, + deserialize: function deserialize(Model, data, opts) { + opts || (opts = {}); + if (isFunction(opts.deserialize)) { + return opts.deserialize(Model, data, opts); } - }, { - key: 'serialize', - value: function serialize(resourceConfig, data) { + if (opts.raw) { return data; } }, { @@ -125,7 +177,13 @@ return /******/ (function(modules) { // webpackBootstrap defaultsPrototype.forceTrailingSlash = ''; - defaultsPrototype.httpConfig = {}; + (_console = console)[typeof console.error === 'function' ? 'error' : 'log'].apply(_console, arguments); + } + }, + fetch: function (_fetch) { + function fetch(_x, _x2) { + return _fetch.apply(this, arguments); + } defaultsPrototype.verbsUseBasePath = false; @@ -133,47 +191,95 @@ return /******/ (function(modules) { // webpackBootstrap function DSHttpAdapter(options) { _classCallCheck(this, DSHttpAdapter); - options = options || {}; - this.defaults = new Defaults(); - this.http = options.http || axios; - delete options.http; - if (console) { - this.defaults.log = function (a, b) { - return console[typeof console.info === 'function' ? 'info' : 'log'](a, b); - }; - } - if (console) { - this.defaults.error = function (a, b) { - return console[typeof console.error === 'function' ? 'error' : 'log'](a, b); - }; + if (config.data) { + requestConfig.body = toJson(config.data); } - deepMixIn(this.defaults, options); - if (this.defaults.useFetch && hasFetch) { - this.defaults.deserialize = function (resourceConfig, response) { - return response.json(); - }; - this.http = function (config) { - var requestConfig = { - method: config.method, - // turn the plain headers object into the Fetch Headers object - headers: new Headers(config.headers) - }; - - if (config.data) { - requestConfig.body = toJson(config.data); - } - - return fetch(new Request(buildUrl(config.url, config.params), requestConfig)).then(function (response) { - response.config = { - method: config.method, - url: config.url - }; - return response; - }); + return fetch(new Request(buildUrl(config.url, config.params), requestConfig)).then(function (response) { + response.config = { + method: config.method, + url: config.url }; - } - } + return response.json().then(function (data) { + response.data = data; + return response; + }); + }); + }), + beforeFind: function beforeFind() {}, + find: function find(Model, id, opts) { + var self = this; + opts = opts ? copy(opts) : {}; + opts.params || (opts.params = {}); + opts.params = self.queryTransform(Model, opts.params, opts); + opts.op = 'find'; + self.dbg(opts.op, Model, id, opts); + return resolve(self.beforeFind(Model, id, opts)).then(function () { + return self.GET(self.getPath('find', Model, id, opts), opts); + }).then(function (response) { + return self.deserialize(Model, response, opts); + }).then(function (data) { + return resolve(self.afterFind(Model, id, data, opts)).then(function (_data) { + return _data || data; + }); + }); + }, + afterFind: function afterFind() {}, + findAll: function findAll(Model, query, opts) { + var self = this; + query || (query = {}); + opts = opts ? copy(opts) : {}; + opts.params || (opts.params = {}); + opts.op = 'findAll'; + self.dbg(opts.op, Model, query, opts); + deepMixIn(opts.params, query); + opts.params = self.queryTransform(Model, opts.params, opts); + return resolve(self.beforeFindAll(Model, query, opts)).then(function () { + return self.GET(self.getPath('findAll', Model, query, opts), opts); + }).then(function (response) { + return self.deserialize(Model, response, opts); + }).then(function (data) { + return resolve(self.afterFindAll(Model, query, data, opts)).then(function (_data) { + return _data || data; + }); + }); + }, + beforeGET: function beforeGET() {}, + GET: function GET(url, config, opts) { + var self = this; + config || (config = {}); + config.url = url || config.url; + config.method = config.method || 'get'; + return resolve(self.beforeGET(url, config, opts)).then(function (_config) { + config = _config || config; + return self.HTTP(config, opts); + }).then(function (response) { + return resolve(self.afterGET(url, config, opts, response)).then(function (_response) { + return _response || response; + }); + }); + }, + afterGET: function afterGET() {}, + getEndpoint: function getEndpoint(Model, id, opts) { + var _this = this; + + opts || (opts = {}); + opts.params || (opts.params = {}); + + var item = undefined; + var parentKey = Model.parentKey; + var endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : Model.endpoint; + var parentField = Model.parentField; + var parentDef = Model.getResource(Model.parent); + var parentId = opts.params[parentKey]; + + if (parentId === false || !parentKey || !parentDef) { + if (parentId === false) { + delete opts.params[parentKey]; + } + return endpoint; + } else { + delete opts.params[parentKey]; _createClass(DSHttpAdapter, [{ key: 'getEndpoint', @@ -304,6 +410,12 @@ return /******/ (function(modules) { // webpackBootstrap _this.defaults.error('FAILED', data); return DSUtils.Promise.reject(data); } + return data; + } else { + if (self.error) { + self.error('\'FAILED: ' + str, data); + } + return reject(data); } if (!this.http) { @@ -352,98 +464,92 @@ return /******/ (function(modules) { // webpackBootstrap config.url = config.url || url; return this.HTTP(config); } - }, { - key: 'find', - value: function find(resourceConfig, id, options) { - var _this = this; - options = options ? copy(options) : {}; - options.suffix = options.suffix || resourceConfig.suffix; - options.params || (options.params = {}); - options.params = _this.defaults.queryTransform(resourceConfig, options.params); - return _this.GET(_this.getPath('find', resourceConfig, id, options), options).then(function (data) { - var item = (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data); - return !item ? reject(new Error('Not Found!')) : item; - }); + + if (level && !args.length) { + args.push(level); + level = 'debug'; } - }, { - key: 'findAll', - value: function findAll(resourceConfig, params, options) { - var _this = this; - options = options ? copy(options) : {}; - options.suffix = options.suffix || resourceConfig.suffix; - options.params || (options.params = {}); - if (params) { - params = _this.defaults.queryTransform(resourceConfig, params); - deepMixIn(options.params, params); - } - return _this.GET(_this.getPath('findAll', resourceConfig, params, options), options).then(function (data) { - return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data); - }); + if (level === 'debug' && !this.debug) { + return; } - }, { - key: 'create', - value: function create(resourceConfig, attrs, options) { - var _this = this; - options = options ? copy(options) : {}; - options.suffix = options.suffix || resourceConfig.suffix; - options.params || (options.params = {}); - options.params = _this.defaults.queryTransform(resourceConfig, options.params); - return _this.POST(_this.getPath('create', resourceConfig, attrs, options), options.serialize ? options.serialize(resourceConfig, attrs) : _this.defaults.serialize(resourceConfig, attrs), options).then(function (data) { - return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data); - }); + var prefix = level.toUpperCase() + ': (' + this.name + ')'; + if (console[level]) { + var _console2; + + (_console2 = console)[level].apply(_console2, [prefix].concat(args)); + } else { + var _console3; + + (_console3 = console).log.apply(_console3, [prefix].concat(args)); } - }, { - key: 'update', - value: function update(resourceConfig, id, attrs, options) { - var _this = this; - options = options ? copy(options) : {}; - options.suffix = options.suffix || resourceConfig.suffix; - options.params || (options.params = {}); - options.params = _this.defaults.queryTransform(resourceConfig, options.params); - return _this.PUT(_this.getPath('update', resourceConfig, id, options), options.serialize ? options.serialize(resourceConfig, attrs) : _this.defaults.serialize(resourceConfig, attrs), options).then(function (data) { - return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data); + }, + beforePOST: function beforePOST() {}, + POST: function POST(url, data, config, opts) { + var self = this; + config || (config = {}); + config.url = url || config.url; + config.data = data || config.data; + config.method = config.method || 'post'; + return resolve(self.beforePOST(url, data, config, opts)).then(function (_config) { + config = _config || config; + return self.HTTP(config, opts); + }).then(function (response) { + return resolve(self.afterPOST(url, data, config, opts, response)).then(function (_response) { + return _response || response; }); - } - }, { - key: 'updateAll', - value: function updateAll(resourceConfig, attrs, params, options) { - var _this = this; - options = options ? copy(options) : {}; - options.suffix = options.suffix || resourceConfig.suffix; - options.params || (options.params = {}); - if (params) { - params = _this.defaults.queryTransform(resourceConfig, params); - deepMixIn(options.params, params); - } - return this.PUT(_this.getPath('updateAll', resourceConfig, attrs, options), options.serialize ? options.serialize(resourceConfig, attrs) : _this.defaults.serialize(resourceConfig, attrs), options).then(function (data) { - return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data); + }); + }, + afterPOST: function afterPOST() {}, + beforePUT: function beforePUT() {}, + PUT: function PUT(url, data, config, opts) { + var self = this; + config || (config = {}); + config.url = url || config.url; + config.data = data || config.data; + config.method = config.method || 'put'; + return resolve(self.beforePUT(url, data, config, opts)).then(function (_config) { + config = _config || config; + return self.HTTP(config, opts); + }).then(function (response) { + return resolve(self.afterPUT(url, data, config, opts, response)).then(function (_response) { + return _response || response; }); - } - }, { - key: 'destroy', - value: function destroy(resourceConfig, id, options) { - var _this = this; - options = options ? copy(options) : {}; - options.suffix = options.suffix || resourceConfig.suffix; - options.params || (options.params = {}); - options.params = _this.defaults.queryTransform(resourceConfig, options.params); - return _this.DEL(_this.getPath('destroy', resourceConfig, id, options), options).then(function (data) { - return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data); + }); + }, + afterPUT: function afterPUT() {}, + update: function update(Model, id, props, opts) { + var self = this; + opts = opts ? copy(opts) : {}; + opts.params || (opts.params = {}); + opts.params = self.queryTransform(Model, opts.params, opts); + opts.op = 'update'; + self.dbg(opts.op, Model, id, props, opts); + return resolve(self.beforeUpdate(Model, id, props, opts)).then(function () { + return self.POST(self.getPath('update', Model, id, opts), self.serialize(Model, props, opts), opts); + }).then(function (response) { + return self.deserialize(Model, response, opts); + }).then(function (data) { + return resolve(self.afterUpdate(Model, id, props, opts, data)).then(function (_data) { + return _data || data; }); - } - }, { - key: 'destroyAll', - value: function destroyAll(resourceConfig, params, options) { - var _this = this; - options = options ? copy(options) : {}; - options.suffix = options.suffix || resourceConfig.suffix; - options.params || (options.params = {}); - if (params) { - params = _this.defaults.queryTransform(resourceConfig, params); - deepMixIn(options.params, params); - } - return this.DEL(_this.getPath('destroyAll', resourceConfig, params, options), options).then(function (data) { - return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data); + }); + }, + updateAll: function updateAll(Model, props, query, opts) { + var self = this; + query || (query = {}); + opts = opts ? copy(opts) : {}; + opts.params || (opts.params = {}); + opts.op = 'updateAll'; + self.dbg(opts.op, Model, props, query, opts); + deepMixIn(opts.params, query); + opts.params = self.queryTransform(Model, opts.params, opts); + return resolve(self.beforeUpdateAll(Model, props, query, opts)).then(function () { + return self.PUT(self.getPath('updateAll', Model, query, opts), opts); + }).then(function (response) { + return self.deserialize(Model, response, opts); + }).then(function (data) { + return resolve(self.afterUpdateAll(Model, props, query, opts, data)).then(function (_data) { + return _data || data; }); } }]); @@ -484,9 +590,27 @@ return /******/ (function(modules) { // webpackBootstrap var defaults = __webpack_require__(5); var utils = __webpack_require__(6); var dispatchRequest = __webpack_require__(7); - var InterceptorManager = __webpack_require__(15); + var InterceptorManager = __webpack_require__(16); + var isAbsoluteURL = __webpack_require__(17); + var combineURLs = __webpack_require__(18); + var bind = __webpack_require__(19); + + function Axios(defaultConfig) { + this.defaultConfig = utils.merge({ + headers: {}, + timeout: defaults.timeout, + transformRequest: defaults.transformRequest, + transformResponse: defaults.transformResponse + }, defaultConfig); - var axios = module.exports = function (config) { + this.interceptors = { + request: new InterceptorManager(), + response: new InterceptorManager() + }; + } + + Axios.prototype.request = function request(config) { + /*eslint no-param-reassign:0*/ // Allow for axios('example/url'[, config]) a la fetch API if (typeof config === 'string') { config = utils.merge({ @@ -494,13 +618,11 @@ return /******/ (function(modules) { // webpackBootstrap }, arguments[1]); } - config = utils.merge({ - method: 'get', - headers: {}, - timeout: defaults.timeout, - transformRequest: defaults.transformRequest, - transformResponse: defaults.transformResponse - }, config); + config = utils.merge(this.defaultConfig, { method: 'get' }, config); + + if (config.baseURL && !isAbsoluteURL(config.url)) { + config.url = combineURLs(config.baseURL, config.url); + } // Don't allow overriding defaults.withCredentials config.withCredentials = config.withCredentials || defaults.withCredentials; @@ -509,11 +631,11 @@ return /******/ (function(modules) { // webpackBootstrap var chain = [dispatchRequest, undefined]; var promise = Promise.resolve(config); - axios.interceptors.request.forEach(function (interceptor) { + this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { chain.unshift(interceptor.fulfilled, interceptor.rejected); }); - axios.interceptors.response.forEach(function (interceptor) { + this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { chain.push(interceptor.fulfilled, interceptor.rejected); }); @@ -524,49 +646,49 @@ return /******/ (function(modules) { // webpackBootstrap return promise; }; + var defaultInstance = new Axios(); + + var axios = module.exports = bind(Axios.prototype.request, defaultInstance); + + axios.create = function create(defaultConfig) { + return new Axios(defaultConfig); + }; + // Expose defaults axios.defaults = defaults; // Expose all/spread - axios.all = function (promises) { + axios.all = function all(promises) { return Promise.all(promises); }; - axios.spread = __webpack_require__(16); + axios.spread = __webpack_require__(20); // Expose interceptors - axios.interceptors = { - request: new InterceptorManager(), - response: new InterceptorManager() - }; + axios.interceptors = defaultInstance.interceptors; // Provide aliases for supported request methods - (function () { - function createShortMethods() { - utils.forEach(arguments, function (method) { - axios[method] = function (url, config) { - return axios(utils.merge(config || {}, { - method: method, - url: url - })); - }; - }); - } - - function createShortMethodsWithData() { - utils.forEach(arguments, function (method) { - axios[method] = function (url, data, config) { - return axios(utils.merge(config || {}, { - method: method, - url: url, - data: data - })); - }; - }); - } + utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) { + /*eslint func-names:0*/ + Axios.prototype[method] = function(url, config) { + return this.request(utils.merge(config || {}, { + method: method, + url: url + })); + }; + axios[method] = bind(Axios.prototype[method], defaultInstance); + }); - createShortMethods('delete', 'get', 'head'); - createShortMethodsWithData('post', 'put', 'patch'); - })(); + utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + /*eslint func-names:0*/ + Axios.prototype[method] = function(url, data, config) { + return this.request(utils.merge(config || {}, { + method: method, + url: url, + data: data + })); + }; + axios[method] = bind(Axios.prototype[method], defaultInstance); + }); /***/ }, @@ -583,8 +705,8 @@ return /******/ (function(modules) { // webpackBootstrap }; module.exports = { - transformRequest: [function (data, headers) { - if(utils.isFormData(data)) { + transformRequest: [function transformResponseJSON(data, headers) { + if (utils.isFormData(data)) { return data; } if (utils.isArrayBuffer(data)) { @@ -596,7 +718,7 @@ return /******/ (function(modules) { // webpackBootstrap if (utils.isObject(data) && !utils.isFile(data) && !utils.isBlob(data)) { // Set application/json if no Content-Type has been specified if (!utils.isUndefined(headers)) { - utils.forEach(headers, function (val, key) { + utils.forEach(headers, function processContentTypeHeader(val, key) { if (key.toLowerCase() === 'content-type') { headers['Content-Type'] = val; } @@ -611,7 +733,8 @@ return /******/ (function(modules) { // webpackBootstrap return data; }], - transformResponse: [function (data) { + transformResponse: [function transformResponseJSON(data) { + /*eslint no-param-reassign:0*/ if (typeof data === 'string') { data = data.replace(PROTECTION_PREFIX, ''); try { @@ -686,11 +809,13 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false */ function isArrayBufferView(val) { + var result; if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { - return ArrayBuffer.isView(val); + result = ArrayBuffer.isView(val); } else { - return (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer); + result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer); } + return result; } /** @@ -773,16 +898,6 @@ return /******/ (function(modules) { // webpackBootstrap return str.replace(/^\s*/, '').replace(/\s*$/, ''); } - /** - * Determine if a value is an Arguments object - * - * @param {Object} val The value to test - * @returns {boolean} True if value is an Arguments object, otherwise false - */ - function isArguments(val) { - return toString.call(val) === '[object Arguments]'; - } - /** * Determine if we're running in a standard browser environment * @@ -794,7 +909,7 @@ return /******/ (function(modules) { // webpackBootstrap * typeof document -> undefined * * react-native: - * typeof document.createelement -> undefined + * typeof document.createElement -> undefined */ function isStandardBrowserEnv() { return ( @@ -807,7 +922,7 @@ return /******/ (function(modules) { // webpackBootstrap /** * Iterate over an Array or an Object invoking a function for each item. * - * If `obj` is an Array or arguments callback will be called passing + * If `obj` is an Array callback will be called passing * the value, index, and complete array for each item. * * If 'obj' is an Object callback will be called passing @@ -822,22 +937,19 @@ return /******/ (function(modules) { // webpackBootstrap return; } - // Check if obj is array-like - var isArrayLike = isArray(obj) || isArguments(obj); - // Force an array if not already something iterable - if (typeof obj !== 'object' && !isArrayLike) { + if (typeof obj !== 'object' && !isArray(obj)) { + /*eslint no-param-reassign:0*/ obj = [obj]; } - // Iterate over array values - if (isArrayLike) { + if (isArray(obj)) { + // Iterate over array values for (var i = 0, l = obj.length; i < l; i++) { fn.call(null, obj[i], i, obj); } - } - // Iterate over object keys - else { + } else { + // Iterate over object keys for (var key in obj) { if (obj.hasOwnProperty(key)) { fn.call(null, obj[key], key, obj); @@ -863,13 +975,15 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Object} obj1 Object to merge * @returns {Object} Result of all merge properties */ - function merge(/*obj1, obj2, obj3, ...*/) { + function merge(/* obj1, obj2, obj3, ... */) { var result = {}; - forEach(arguments, function (obj) { - forEach(obj, function (val, key) { - result[key] = val; - }); - }); + function assignValue(val, key) { + result[key] = val; + } + + for (var i = 0, l = arguments.length; i < l; i++) { + forEach(arguments[i], assignValue); + } return result; } @@ -906,14 +1020,13 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {Promise} The Promise to be fulfilled */ module.exports = function dispatchRequest(config) { - return new Promise(function (resolve, reject) { + return new Promise(function executor(resolve, reject) { try { - // For browsers use XHR adapter if ((typeof XMLHttpRequest !== 'undefined') || (typeof ActiveXObject !== 'undefined')) { + // For browsers use XHR adapter __webpack_require__(9)(resolve, reject, config); - } - // For node use HTTP adapter - else if (typeof process !== 'undefined') { + } else if (typeof process !== 'undefined') { + // For node use HTTP adapter __webpack_require__(9)(resolve, reject, config); } } catch (e) { @@ -1032,9 +1145,11 @@ return /******/ (function(modules) { // webpackBootstrap var defaults = __webpack_require__(5); var utils = __webpack_require__(6); - var buildUrl = __webpack_require__(10); + var buildURL = __webpack_require__(10); var parseHeaders = __webpack_require__(11); var transformData = __webpack_require__(12); + var isURLSameOrigin = __webpack_require__(13); + var btoa = window.btoa || __webpack_require__(14); module.exports = function xhrAdapter(resolve, reject, config) { // Transform request data @@ -1055,18 +1170,36 @@ return /******/ (function(modules) { // webpackBootstrap delete requestHeaders['Content-Type']; // Let the browser set it } + var Adapter = (XMLHttpRequest || ActiveXObject); + var loadEvent = 'onreadystatechange'; + var xDomain = false; + + // For IE 8/9 CORS support + if (!isURLSameOrigin(config.url) && window.XDomainRequest) { + Adapter = window.XDomainRequest; + loadEvent = 'onload'; + xDomain = true; + } + + // HTTP basic authentication + if (config.auth) { + var username = config.auth.username || ''; + var password = config.auth.password || ''; + requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password); + } + // Create the request - var request = new (XMLHttpRequest || ActiveXObject)('Microsoft.XMLHTTP'); - request.open(config.method.toUpperCase(), buildUrl(config.url, config.params), true); + var request = new Adapter('Microsoft.XMLHTTP'); + request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true); // Set the request timeout in MS request.timeout = config.timeout; // Listen for ready state - request.onreadystatechange = function () { - if (request && request.readyState === 4) { + request[loadEvent] = function handleReadyState() { + if (request && (request.readyState === 4 || xDomain)) { // Prepare the response - var responseHeaders = parseHeaders(request.getAllResponseHeaders()); + var responseHeaders = xDomain ? null : parseHeaders(request.getAllResponseHeaders()); var responseData = ['text', ''].indexOf(config.responseType || '') !== -1 ? request.responseText : request.response; var response = { data: transformData( @@ -1079,9 +1212,8 @@ return /******/ (function(modules) { // webpackBootstrap headers: responseHeaders, config: config }; - // Resolve or reject the Promise based on the status - (request.status >= 200 && request.status < 300 ? + ((request.status >= 200 && request.status < 300) || (xDomain && request.responseText) ? resolve : reject)(response); @@ -1094,11 +1226,10 @@ return /******/ (function(modules) { // webpackBootstrap // This is only done if running in a standard browser environment. // Specifically not if we're in a web worker, or react-native. if (utils.isStandardBrowserEnv()) { - var cookies = __webpack_require__(13); - var urlIsSameOrigin = __webpack_require__(14); + var cookies = __webpack_require__(15); // Add xsrf header - var xsrfValue = urlIsSameOrigin(config.url) ? + var xsrfValue = config.withCredentials || isURLSameOrigin(config.url) ? cookies.read(config.xsrfCookieName || defaults.xsrfCookieName) : undefined; @@ -1108,16 +1239,17 @@ return /******/ (function(modules) { // webpackBootstrap } // Add headers to the request - utils.forEach(requestHeaders, function (val, key) { - // Remove Content-Type if data is undefined - if (!data && key.toLowerCase() === 'content-type') { - delete requestHeaders[key]; - } - // Otherwise add header to the request - else { - request.setRequestHeader(key, val); - } - }); + if (!xDomain) { + utils.forEach(requestHeaders, function setRequestHeader(val, key) { + if (!data && key.toLowerCase() === 'content-type') { + // Remove Content-Type if data is undefined + delete requestHeaders[key]; + } else { + // Otherwise add header to the request + request.setRequestHeader(key, val); + } + }); + } // Add withCredentials to request if needed if (config.withCredentials) { @@ -1170,43 +1302,51 @@ return /******/ (function(modules) { // webpackBootstrap * @param {object} [params] The params to be appended * @returns {string} The formatted url */ - module.exports = function buildUrl(url, params) { + module.exports = function buildURL(url, params, paramsSerializer) { + /*eslint no-param-reassign:0*/ if (!params) { return url; } - var parts = []; - - utils.forEach(params, function (val, key) { - if (val === null || typeof val === 'undefined') { - return; - } - - if (utils.isArray(val)) { - key = key + '[]'; - } + var serializedParams; + if (paramsSerializer) { + serializedParams = paramsSerializer(params); + } else { + var parts = []; - if (!utils.isArray(val)) { - val = [val]; - } + utils.forEach(params, function serialize(val, key) { + if (val === null || typeof val === 'undefined') { + return; + } - utils.forEach(val, function (v) { - if (utils.isDate(v)) { - v = v.toISOString(); + if (utils.isArray(val)) { + key = key + '[]'; } - else if (utils.isObject(v)) { - v = JSON.stringify(v); + + if (!utils.isArray(val)) { + val = [val]; } - parts.push(encode(key) + '=' + encode(v)); + + utils.forEach(val, function parseValue(v) { + if (utils.isDate(v)) { + v = v.toISOString(); + } else if (utils.isObject(v)) { + v = JSON.stringify(v); + } + parts.push(encode(key) + '=' + encode(v)); + }); }); - }); - if (parts.length > 0) { - url += (url.indexOf('?') === -1 ? '?' : '&') + parts.join('&'); + serializedParams = parts.join('&'); + } + + if (serializedParams) { + url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; } return url; }; + /***/ }, @@ -1231,11 +1371,14 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {Object} Headers parsed into an object */ module.exports = function parseHeaders(headers) { - var parsed = {}, key, val, i; + var parsed = {}; + var key; + var val; + var i; if (!headers) { return parsed; } - utils.forEach(headers.split('\n'), function(line) { + utils.forEach(headers.split('\n'), function parser(line) { i = line.indexOf(':'); key = utils.trim(line.substr(0, i)).toLowerCase(); val = utils.trim(line.substr(i + 1)); @@ -1266,7 +1409,8 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {*} The resulting transformed data */ module.exports = function transformData(data, headers, fns) { - utils.forEach(fns, function (fn) { + /*eslint no-param-reassign:0*/ + utils.forEach(fns, function transform(fn) { data = fn(data, headers); }); @@ -1280,111 +1424,114 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - /** - * WARNING: - * This file makes references to objects that aren't safe in all environments. - * Please see lib/utils.isStandardBrowserEnv before including this file. - */ - var utils = __webpack_require__(6); - module.exports = { - write: function write(name, value, expires, path, domain, secure) { - var cookie = []; - cookie.push(name + '=' + encodeURIComponent(value)); + module.exports = ( + utils.isStandardBrowserEnv() ? - if (utils.isNumber(expires)) { - cookie.push('expires=' + new Date(expires).toGMTString()); - } + // Standard browser envs have full support of the APIs needed to test + // whether the request URL is of the same origin as current location. + (function standardBrowserEnv() { + var msie = /(msie|trident)/i.test(navigator.userAgent); + var urlParsingNode = document.createElement('a'); + var originURL; - if (utils.isString(path)) { - cookie.push('path=' + path); - } + /** + * Parse a URL to discover it's components + * + * @param {String} url The URL to be parsed + * @returns {Object} + */ + function resolveURL(url) { + var href = url; - if (utils.isString(domain)) { - cookie.push('domain=' + domain); - } + if (msie) { + // IE needs attribute set twice to normalize properties + urlParsingNode.setAttribute('href', href); + href = urlParsingNode.href; + } - if (secure === true) { - cookie.push('secure'); + urlParsingNode.setAttribute('href', href); + + // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils + return { + href: urlParsingNode.href, + protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', + host: urlParsingNode.host, + search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', + hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', + hostname: urlParsingNode.hostname, + port: urlParsingNode.port, + pathname: (urlParsingNode.pathname.charAt(0) === '/') ? + urlParsingNode.pathname : + '/' + urlParsingNode.pathname + }; } - document.cookie = cookie.join('; '); - }, + originURL = resolveURL(window.location.href); - read: function read(name) { - var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); - return (match ? decodeURIComponent(match[3]) : null); - }, + /** + * Determine if a URL shares the same origin as the current location + * + * @param {String} requestURL The URL to test + * @returns {boolean} True if URL shares the same origin, otherwise false + */ + return function isURLSameOrigin(requestURL) { + var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL; + return (parsed.protocol === originURL.protocol && + parsed.host === originURL.host); + }; + })() : - remove: function remove(name) { - this.write(name, '', Date.now() - 86400000); - } - }; + // Non standard browser envs (web workers, react-native) lack needed support. + (function nonStandardBrowserEnv() { + return function isURLSameOrigin() { + return true; + }; + })() + ); /***/ }, /* 14 */ -/***/ function(module, exports, __webpack_require__) { +/***/ function(module, exports) { 'use strict'; - /** - * WARNING: - * This file makes references to objects that aren't safe in all environments. - * Please see lib/utils.isStandardBrowserEnv before including this file. - */ + // btoa polyfill for IE<10 courtesy https://github.com/davidchambers/Base64.js - var utils = __webpack_require__(6); - var msie = /(msie|trident)/i.test(navigator.userAgent); - var urlParsingNode = document.createElement('a'); - var originUrl; + var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; - /** - * Parse a URL to discover it's components - * - * @param {String} url The URL to be parsed - * @returns {Object} - */ - function urlResolve(url) { - var href = url; + function InvalidCharacterError(message) { + this.message = message; + } + InvalidCharacterError.prototype = new Error; + InvalidCharacterError.prototype.code = 5; + InvalidCharacterError.prototype.name = 'InvalidCharacterError'; - if (msie) { - // IE needs attribute set twice to normalize properties - urlParsingNode.setAttribute('href', href); - href = urlParsingNode.href; + function btoa(input) { + var str = String(input); + var output = ''; + for ( + // initialize result and counter + var block, charCode, idx = 0, map = chars; + // if the next str index does not exist: + // change the mapping table to "=" + // check if d has no fractional digits + str.charAt(idx | 0) || (map = '=', idx % 1); + // "8 - idx % 1 * 8" generates the sequence 2, 4, 6, 8 + output += map.charAt(63 & block >> 8 - idx % 1 * 8) + ) { + charCode = str.charCodeAt(idx += 3 / 4); + if (charCode > 0xFF) { + throw new InvalidCharacterError('INVALID_CHARACTER_ERR: DOM Exception 5'); + } + block = block << 8 | charCode; } - - urlParsingNode.setAttribute('href', href); - - // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils - return { - href: urlParsingNode.href, - protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', - host: urlParsingNode.host, - search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', - hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', - hostname: urlParsingNode.hostname, - port: urlParsingNode.port, - pathname: (urlParsingNode.pathname.charAt(0) === '/') ? - urlParsingNode.pathname : - '/' + urlParsingNode.pathname - }; + return output; } - originUrl = urlResolve(window.location.href); - - /** - * Determine if a URL shares the same origin as the current location - * - * @param {String} requestUrl The URL to test - * @returns {boolean} True if URL shares the same origin, otherwise false - */ - module.exports = function urlIsSameOrigin(requestUrl) { - var parsed = (utils.isString(requestUrl)) ? urlResolve(requestUrl) : requestUrl; - return (parsed.protocol === originUrl.protocol && - parsed.host === originUrl.host); - }; + module.exports = btoa; /***/ }, @@ -1395,6 +1542,65 @@ return /******/ (function(modules) { // webpackBootstrap var utils = __webpack_require__(6); + module.exports = ( + utils.isStandardBrowserEnv() ? + + // Standard browser envs support document.cookie + (function standardBrowserEnv() { + return { + write: function write(name, value, expires, path, domain, secure) { + var cookie = []; + cookie.push(name + '=' + encodeURIComponent(value)); + + if (utils.isNumber(expires)) { + cookie.push('expires=' + new Date(expires).toGMTString()); + } + + if (utils.isString(path)) { + cookie.push('path=' + path); + } + + if (utils.isString(domain)) { + cookie.push('domain=' + domain); + } + + if (secure === true) { + cookie.push('secure'); + } + + document.cookie = cookie.join('; '); + }, + + read: function read(name) { + var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); + return (match ? decodeURIComponent(match[3]) : null); + }, + + remove: function remove(name) { + this.write(name, '', Date.now() - 86400000); + } + }; + })() : + + // Non standard browser env (web workers, react-native) lack needed support. + (function nonStandardBrowserEnv() { + return { + write: function write() {}, + read: function read() { return null; }, + remove: function remove() {} + }; + })() + ); + + +/***/ }, +/* 16 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var utils = __webpack_require__(6); + function InterceptorManager() { this.handlers = []; } @@ -1407,7 +1613,7 @@ return /******/ (function(modules) { // webpackBootstrap * * @return {Number} An ID used to remove interceptor later */ - InterceptorManager.prototype.use = function (fulfilled, rejected) { + InterceptorManager.prototype.use = function use(fulfilled, rejected) { this.handlers.push({ fulfilled: fulfilled, rejected: rejected @@ -1420,7 +1626,7 @@ return /******/ (function(modules) { // webpackBootstrap * * @param {Number} id The ID that was returned by `use` */ - InterceptorManager.prototype.eject = function (id) { + InterceptorManager.prototype.eject = function eject(id) { if (this.handlers[id]) { this.handlers[id] = null; } @@ -1430,12 +1636,12 @@ return /******/ (function(modules) { // webpackBootstrap * Iterate over all the registered interceptors * * This method is particularly useful for skipping over any - * interceptors that may have become `null` calling `remove`. + * interceptors that may have become `null` calling `eject`. * * @param {Function} fn The function to call for each interceptor */ - InterceptorManager.prototype.forEach = function (fn) { - utils.forEach(this.handlers, function (h) { + InterceptorManager.prototype.forEach = function forEach(fn) { + utils.forEach(this.handlers, function forEachHandler(h) { if (h !== null) { fn(h); } @@ -1446,7 +1652,62 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 16 */ +/* 17 */ +/***/ function(module, exports) { + + 'use strict'; + + /** + * Determines whether the specified URL is absolute + * + * @param {string} url The URL to test + * @returns {boolean} True if the specified URL is absolute, otherwise false + */ + module.exports = function isAbsoluteURL(url) { + // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). + // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed + // by any combination of letters, digits, plus, period, or hyphen. + return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url); + }; + + +/***/ }, +/* 18 */ +/***/ function(module, exports) { + + 'use strict'; + + /** + * Creates a new URL by combining the specified URLs + * + * @param {string} baseURL The base URL + * @param {string} relativeURL The relative URL + * @returns {string} The combined URL + */ + module.exports = function combineURLs(baseURL, relativeURL) { + return baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, ''); + }; + + +/***/ }, +/* 19 */ +/***/ function(module, exports) { + + 'use strict'; + + module.exports = function bind(fn, thisArg) { + return function wrap() { + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + return fn.apply(thisArg, args); + }; + }; + + +/***/ }, +/* 20 */ /***/ function(module, exports) { 'use strict'; @@ -1472,7 +1733,7 @@ return /******/ (function(modules) { // webpackBootstrap * @returns {Function} */ module.exports = function spread(callback) { - return function (arr) { + return function wrap(arr) { return callback.apply(null, arr); }; }; diff --git a/dist/js-data-http.min.js b/dist/js-data-http.min.js index dd0f07b..cb408ba 100644 --- a/dist/js-data-http.min.js +++ b/dist/js-data-http.min.js @@ -2,7 +2,7 @@ * js-data-http * @version 2.2.1 - Homepage * @author Jason Dobry -* @copyright (c) 2014-2015 Jason Dobry +* @copyright (c) 2014-2016 Jason Dobry * @license MIT * * @overview HTTP adapter for js-data. diff --git a/fetch/.gitignore b/fetch/.gitignore new file mode 100644 index 0000000..7c57759 --- /dev/null +++ b/fetch/.gitignore @@ -0,0 +1,2 @@ +dist/js-data-fetch-tests.js +node_modules/ \ No newline at end of file diff --git a/fetch/.npmignore b/fetch/.npmignore new file mode 100644 index 0000000..8c7f131 --- /dev/null +++ b/fetch/.npmignore @@ -0,0 +1,4 @@ +test/ +mocha.start.js +dist/js-data-fetch-tests.js +webpack.config.js \ No newline at end of file diff --git a/fetch/LICENSE b/fetch/LICENSE new file mode 100644 index 0000000..73d2777 --- /dev/null +++ b/fetch/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014-2016 Jason Dobry + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/fetch/dist/js-data-fetch.js b/fetch/dist/js-data-fetch.js new file mode 100644 index 0000000..5a0a1df --- /dev/null +++ b/fetch/dist/js-data-fetch.js @@ -0,0 +1,666 @@ +/*! +* js-data-fetch +* @version 3.0.0-alpha.2 - Homepage +* @author Jason Dobry +* @copyright (c) 2014-2016 Jason Dobry +* @license MIT +* +* @overview Fetch HTTP (XHR) adapter for js-data in the browser. +*/ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(require("js-data"), require("undefined")); + else if(typeof define === 'function' && define.amd) + define(["js-data", "undefined"], factory); + else { + var a = typeof exports === 'object' ? factory(require("js-data"), require("undefined")) : factory(root["js-data"], root["undefined"]); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(this, function(__WEBPACK_EXTERNAL_MODULE_2__, __WEBPACK_EXTERNAL_MODULE_3__) { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; + +/******/ // The require function +/******/ function __webpack_require__(moduleId) { + +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) +/******/ return installedModules[moduleId].exports; + +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ exports: {}, +/******/ id: moduleId, +/******/ loaded: false +/******/ }; + +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); + +/******/ // Flag the module as loaded +/******/ module.loaded = true; + +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } + + +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; + +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; + +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; + +/******/ // Load entry module and return exports +/******/ return __webpack_require__(0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; + + var _jsData = __webpack_require__(2); + + /* global fetch:true Headers:true Request:true */ + var axios = __webpack_require__(3); + var _ = _jsData.utils._; + var copy = _jsData.utils.copy; + var deepMixIn = _jsData.utils.deepMixIn; + var fillIn = _jsData.utils.fillIn; + var forOwn = _jsData.utils.forOwn; + var isArray = _jsData.utils.isArray; + var isFunction = _jsData.utils.isFunction; + var isNumber = _jsData.utils.isNumber; + var isObject = _jsData.utils.isObject; + var isSorN = _jsData.utils.isSorN; + var isString = _jsData.utils.isString; + var resolve = _jsData.utils.resolve; + var reject = _jsData.utils.reject; + var toJson = _jsData.utils.toJson; + + var hasFetch = false; + + try { + hasFetch = window && window.fetch; + } catch (e) {} + + function isValidString(value) { + return value != null && value !== ''; + } + function join(items, separator) { + separator || (separator = ''); + return items.filter(isValidString).join(separator); + } + function makePath() { + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + var result = join(args, '/'); + return result.replace(/([^:\/]|^)\/{2,}/g, '$1/'); + } + + function encode(val) { + return encodeURIComponent(val).replace(/%40/gi, '@').replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+'); + } + + function buildUrl(url, params) { + if (!params) { + return url; + } + + var parts = []; + + forOwn(params, function (val, key) { + if (val === null || typeof val === 'undefined') { + return; + } + if (!isArray(val)) { + val = [val]; + } + + val.forEach(function (v) { + if (window.toString.call(v) === '[object Date]') { + v = v.toISOString(); + } else if (isObject(v)) { + v = toJson(v); + } + parts.push(encode(key) + '=' + encode(v)); + }); + }); + + if (parts.length > 0) { + url += (url.indexOf('?') === -1 ? '?' : '&') + parts.join('&'); + } + + return url; + } + + /** + * DSHttpAdapter class. + * @class DSHttpAdapter + * + * @param {Object} [opts] Configuration options. + * @param {string} [opts.basePath=''] + * @param {boolean} [opts.debug=false] + * @param {boolean} [opts.forceTrailingSlash=false] + * @param {Object} [opts.http=axios] + * @param {Object} [opts.httpConfig={}] + * @param {string} [opts.suffix=''] + * @param {boolean} [opts.useFetch=false] + */ + function DSHttpAdapter(opts) { + var self = this; + + // Default values for arguments + opts || (opts = {}); + + // Default and user-defined settings + self.basePath = opts.basePath === undefined ? '' : opts.basePath; + self.debug = opts.debug === undefined ? false : opts.debug; + self.forceTrailingSlash = opts.forceTrailingSlash === undefined ? false : opts.forceTrailingSlash; + self.http = opts.http === undefined ? axios : opts.http; + self.httpConfig = opts.httpConfig === undefined ? {} : opts.httpConfig; + self.suffix = opts.suffix === undefined ? '' : opts.suffix; + self.useFetch = opts.useFetch === undefined ? false : opts.useFetch; + + // Use "window.fetch" if available and the user asks for it + if (hasFetch && (self.useFetch || self.http === undefined)) {} + } + + fillIn(DSHttpAdapter, { + beforeCreate: function beforeCreate() {}, + create: function create(Model, props, opts) { + var self = this; + opts = opts ? copy(opts) : {}; + opts.params || (opts.params = {}); + opts.params = self.queryTransform(Model, opts.params, opts); + opts.op = 'create'; + self.dbg(opts.op, Model, props, opts); + return resolve(self.beforeCreate(Model, props, opts)).then(function () { + return self.POST(self.getPath('create', Model, props, opts), self.serialize(Model, props, opts), opts); + }).then(function (response) { + return self.deserialize(Model, response, opts); + }).then(function (data) { + return resolve(self.afterCreate(Model, data, opts)).then(function (_data) { + return _data || data; + }); + }); + }, + afterCreate: function afterCreate() {}, + dbg: function dbg() { + for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + + this.log.apply(this, ['debug'].concat(args)); + }, + beforeDEL: function beforeDEL() {}, + DEL: function DEL(url, config, opts) { + var self = this; + config || (config = {}); + config.url = url || config.url; + config.method = config.method || 'delete'; + return resolve(self.beforeDEL(url, config, opts)).then(function (_config) { + config = _config || config; + return self.HTTP(config, opts); + }).then(function (response) { + return resolve(self.afterDEL(url, config, opts, response)).then(function (_response) { + return _response || response; + }); + }); + }, + afterDEL: function afterDEL() {}, + deserialize: function deserialize(Model, data, opts) { + opts || (opts = {}); + if (isFunction(opts.deserialize)) { + return opts.deserialize(Model, data, opts); + } + if (opts.raw) { + return data; + } + return data ? 'data' in data ? data.data : data : data; + }, + beforeDestroy: function beforeDestroy() {}, + destroy: function destroy(Model, id, opts) { + var self = this; + opts = opts ? copy(opts) : {}; + opts.params || (opts.params = {}); + opts.params = self.queryTransform(Model, opts.params, opts); + opts.op = 'destroy'; + self.dbg(opts.op, Model, id, opts); + return resolve(self.beforeDestroy(Model, id, opts)).then(function () { + return self.DEL(self.getPath('destroy', Model, id, opts), opts); + }).then(function (response) { + return self.deserialize(Model, response, opts); + }).then(function (data) { + return resolve(self.afterDestroy(Model, id, data, opts)).then(function (_data) { + return _data || data; + }); + }); + }, + beforeDestroyAll: function beforeDestroyAll() {}, + destroyAll: function destroyAll(Model, query, opts) { + var self = this; + query || (query = {}); + opts = opts ? copy(opts) : {}; + opts.params || (opts.params = {}); + opts.op = 'destroy'; + self.dbg(opts.op, Model, query, opts); + deepMixIn(opts.params, query); + opts.params = self.queryTransform(Model, opts.params, opts); + return resolve(self.beforeDestroyAll(Model, query, opts)).then(function () { + return self.DEL(self.getPath('destroyAll', Model, query, opts), opts); + }).then(function (response) { + return self.deserialize(Model, response, opts); + }).then(function (data) { + return resolve(self.afterDestroyAll(Model, query, data, opts)).then(function (_data) { + return _data || data; + }); + }); + }, + error: function error() { + if (console) { + var _console; + + (_console = console)[typeof console.error === 'function' ? 'error' : 'log'].apply(_console, arguments); + } + }, + fetch: function (_fetch) { + function fetch(_x, _x2) { + return _fetch.apply(this, arguments); + } + + fetch.toString = function () { + return _fetch.toString(); + }; + + return fetch; + }(function (config, opts) { + var requestConfig = { + method: config.method, + // turn the plain headers object into the Fetch Headers object + headers: new Headers(config.headers) + }; + + if (config.data) { + requestConfig.body = toJson(config.data); + } + + return fetch(new Request(buildUrl(config.url, config.params), requestConfig)).then(function (response) { + response.config = { + method: config.method, + url: config.url + }; + return response.json().then(function (data) { + response.data = data; + return response; + }); + }); + }), + beforeFind: function beforeFind() {}, + find: function find(Model, id, opts) { + var self = this; + opts = opts ? copy(opts) : {}; + opts.params || (opts.params = {}); + opts.params = self.queryTransform(Model, opts.params, opts); + opts.op = 'find'; + self.dbg(opts.op, Model, id, opts); + return resolve(self.beforeFind(Model, id, opts)).then(function () { + return self.GET(self.getPath('find', Model, id, opts), opts); + }).then(function (response) { + return self.deserialize(Model, response, opts); + }).then(function (data) { + return resolve(self.afterFind(Model, id, data, opts)).then(function (_data) { + return _data || data; + }); + }); + }, + afterFind: function afterFind() {}, + findAll: function findAll(Model, query, opts) { + var self = this; + query || (query = {}); + opts = opts ? copy(opts) : {}; + opts.params || (opts.params = {}); + opts.op = 'findAll'; + self.dbg(opts.op, Model, query, opts); + deepMixIn(opts.params, query); + opts.params = self.queryTransform(Model, opts.params, opts); + return resolve(self.beforeFindAll(Model, query, opts)).then(function () { + return self.GET(self.getPath('findAll', Model, query, opts), opts); + }).then(function (response) { + return self.deserialize(Model, response, opts); + }).then(function (data) { + return resolve(self.afterFindAll(Model, query, data, opts)).then(function (_data) { + return _data || data; + }); + }); + }, + beforeGET: function beforeGET() {}, + GET: function GET(url, config, opts) { + var self = this; + config || (config = {}); + config.url = url || config.url; + config.method = config.method || 'get'; + return resolve(self.beforeGET(url, config, opts)).then(function (_config) { + config = _config || config; + return self.HTTP(config, opts); + }).then(function (response) { + return resolve(self.afterGET(url, config, opts, response)).then(function (_response) { + return _response || response; + }); + }); + }, + afterGET: function afterGET() {}, + getEndpoint: function getEndpoint(Model, id, opts) { + var _this = this; + + opts || (opts = {}); + opts.params || (opts.params = {}); + + var item = undefined; + var parentKey = Model.parentKey; + var endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : Model.endpoint; + var parentField = Model.parentField; + var parentDef = Model.getResource(Model.parent); + var parentId = opts.params[parentKey]; + + if (parentId === false || !parentKey || !parentDef) { + if (parentId === false) { + delete opts.params[parentKey]; + } + return endpoint; + } else { + delete opts.params[parentKey]; + + if (isString(id) || isNumber(id)) { + item = Model.get(id); + } else if (isObject(id)) { + item = id; + } + + if (item) { + parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null); + } + + if (parentId) { + var _ret = function () { + delete opts.endpoint; + var _opts = {}; + forOwn(opts, function (value, key) { + _opts[key] = value; + }); + _(_opts, parentDef); + return { + v: makePath(_this.getEndpoint(parentDef, parentId, _opts, parentId, endpoint)) + }; + }(); + + if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v; + } else { + return endpoint; + } + } + }, + getPath: function getPath(method, Model, id, opts) { + var self = this; + opts || (opts = {}); + var args = [opts.basePath === undefined ? self.basePath : opts.basePath, self.getEndpoint(Model, isString(id) || isNumber(id) || method === 'create' ? id : null, opts)]; + if (method === 'find' || method === 'update' || method === 'destroy') { + args.push(id); + } + return makePath.apply(_jsData.utils, args); + }, + beforeHTTP: function beforeHTTP() {}, + HTTP: function HTTP(config, opts) { + var self = this; + var start = new Date(); + opts || (opts = {}); + config = copy(config); + config = deepMixIn(config, self.httpConfig); + if (self.forceTrailingSlash && config.url[config.url.length - 1] !== '/') { + config.url += '/'; + } + config.method = config.method.toUpperCase(); + var suffix = config.suffix || opts.suffix || self.suffix; + if (suffix && config.url.substr(config.url.length - suffix.length) !== suffix) { + config.url += suffix; + } + + function logResponse(data) { + var str = start.toUTCString() + ' - ' + config.method.toUpperCase() + ' ' + config.url + ' - ' + data.status + ' ' + (new Date().getTime() - start.getTime()) + 'ms'; + if (data.status >= 200 && data.status < 300) { + if (self.log) { + self.dbg('debug', str, data); + } + return data; + } else { + if (self.error) { + self.error('\'FAILED: ' + str, data); + } + return reject(data); + } + } + + if (!self.http) { + throw new Error('You have not configured this adapter with an http library!'); + } + + return resolve(self.beforeHTTP(config)).then(function (_config) { + config = _config || config; + if (hasFetch && (self.useFetch || opts.useFetch || !self.http)) { + return self.fetch(config, opts).then(logResponse, logResponse); + } + return self.http(config).then(logResponse, logResponse); + }).then(function (response) { + return resolve(self.afterHTTP(config, response)).then(function (_response) { + return _response || response; + }); + }); + }, + afterHTTP: function afterHTTP() {}, + queryTransform: function queryTransform(Model, params, opts) { + return params; + }, + serialize: function serialize(Model, data, opts) { + opts || (opts = {}); + if (isFunction(opts.serialize)) { + return opts.serialize(Model, data, opts); + } + return data; + }, + log: function log(level) { + for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { + args[_key3 - 1] = arguments[_key3]; + } + + if (level && !args.length) { + args.push(level); + level = 'debug'; + } + if (level === 'debug' && !this.debug) { + return; + } + var prefix = level.toUpperCase() + ': (' + this.name + ')'; + if (console[level]) { + var _console2; + + (_console2 = console)[level].apply(_console2, [prefix].concat(args)); + } else { + var _console3; + + (_console3 = console).log.apply(_console3, [prefix].concat(args)); + } + }, + beforePOST: function beforePOST() {}, + POST: function POST(url, data, config, opts) { + var self = this; + config || (config = {}); + config.url = url || config.url; + config.data = data || config.data; + config.method = config.method || 'post'; + return resolve(self.beforePOST(url, data, config, opts)).then(function (_config) { + config = _config || config; + return self.HTTP(config, opts); + }).then(function (response) { + return resolve(self.afterPOST(url, data, config, opts, response)).then(function (_response) { + return _response || response; + }); + }); + }, + afterPOST: function afterPOST() {}, + beforePUT: function beforePUT() {}, + PUT: function PUT(url, data, config, opts) { + var self = this; + config || (config = {}); + config.url = url || config.url; + config.data = data || config.data; + config.method = config.method || 'put'; + return resolve(self.beforePUT(url, data, config, opts)).then(function (_config) { + config = _config || config; + return self.HTTP(config, opts); + }).then(function (response) { + return resolve(self.afterPUT(url, data, config, opts, response)).then(function (_response) { + return _response || response; + }); + }); + }, + afterPUT: function afterPUT() {}, + update: function update(Model, id, props, opts) { + var self = this; + opts = opts ? copy(opts) : {}; + opts.params || (opts.params = {}); + opts.params = self.queryTransform(Model, opts.params, opts); + opts.op = 'update'; + self.dbg(opts.op, Model, id, props, opts); + return resolve(self.beforeUpdate(Model, id, props, opts)).then(function () { + return self.POST(self.getPath('update', Model, id, opts), self.serialize(Model, props, opts), opts); + }).then(function (response) { + return self.deserialize(Model, response, opts); + }).then(function (data) { + return resolve(self.afterUpdate(Model, id, props, opts, data)).then(function (_data) { + return _data || data; + }); + }); + }, + updateAll: function updateAll(Model, props, query, opts) { + var self = this; + query || (query = {}); + opts = opts ? copy(opts) : {}; + opts.params || (opts.params = {}); + opts.op = 'updateAll'; + self.dbg(opts.op, Model, props, query, opts); + deepMixIn(opts.params, query); + opts.params = self.queryTransform(Model, opts.params, opts); + return resolve(self.beforeUpdateAll(Model, props, query, opts)).then(function () { + return self.PUT(self.getPath('updateAll', Model, query, opts), opts); + }).then(function (response) { + return self.deserialize(Model, response, opts); + }).then(function (data) { + return resolve(self.afterUpdateAll(Model, props, query, opts, data)).then(function (_data) { + return _data || data; + }); + }); + } + }); + + DSHttpAdapter.addAction = function (name, opts) { + if (!name || !isString(name)) { + throw new TypeError('action(name[, opts]): Expected: string, Found: ' + (typeof name === 'undefined' ? 'undefined' : _typeof(name))); + } + return function (target) { + if (target[name]) { + throw new Error('action(name[, opts]): ' + name + ' already exists on target!'); + } + opts.request = opts.request || function (config) { + return config; + }; + opts.response = opts.response || function (response) { + return response; + }; + opts.responseError = opts.responseError || function (err) { + return reject(err); + }; + target[name] = function (id, _opts) { + if (isObject(id)) { + _opts = id; + } + _opts = _opts || {}; + var adapter = this.getAdapter(opts.adapter || this.defaultAdapter || 'http'); + var config = {}; + fillIn(config, opts); + if (!_opts.hasOwnProperty('endpoint') && config.endpoint) { + _opts.endpoint = config.endpoint; + } + if (typeof _opts.getEndpoint === 'function') { + config.url = _opts.getEndpoint(this, _opts); + } else { + var _args = [_opts.basePath || this.basePath || adapter.defaults.basePath, adapter.getEndpoint(this, isSorN(id) ? id : null, _opts)]; + if (isSorN(id)) { + _args.push(id); + } + _args.push(opts.pathname || name); + config.url = makePath.apply(null, _args); + } + config.method = config.method || 'GET'; + config.modelName = this.name; + deepMixIn(config)(_opts); + return resolve(config).then(_opts.request || opts.request).then(function (config) { + return adapter.HTTP(config); + }).then(function (data) { + if (data && data.config) { + data.config.modelName = this.name; + } + return data; + }).then(_opts.response || opts.response, _opts.responseError || opts.responseError); + }; + return target; + }; + }; + + DSHttpAdapter.addActions = function (opts) { + opts || (opts = {}); + return function (target) { + forOwn(target, function (value, key) { + DSHttpAdapter.addAction(key, value)(target); + }); + return target; + }; + }; + + DSHttpAdapter.version = { + full: '3.0.0-alpha.2', + major: parseInt('3', 10), + minor: parseInt('0', 10), + patch: parseInt('0', 10), + alpha: true ? '2' : false, + beta: true ? 'false' : false + }; + + module.exports = DSHttpAdapter; + +/***/ }, +/* 1 */, +/* 2 */ +/***/ function(module, exports) { + + module.exports = __WEBPACK_EXTERNAL_MODULE_2__; + +/***/ }, +/* 3 */ +/***/ function(module, exports) { + + module.exports = undefined; + +/***/ } +/******/ ]) +}); +; \ No newline at end of file diff --git a/fetch/dist/js-data-fetch.min.js b/fetch/dist/js-data-fetch.min.js new file mode 100644 index 0000000..1e617e3 --- /dev/null +++ b/fetch/dist/js-data-fetch.min.js @@ -0,0 +1,11 @@ +/*! +* js-data-fetch +* @version 3.0.0-alpha.2 - Homepage +* @author Jason Dobry +* @copyright (c) 2014-2016 Jason Dobry +* @license MIT +* +* @overview Fetch HTTP (XHR) adapter for js-data in the browser. +*/ +!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e(require("js-data"),require("undefined"));else if("function"==typeof define&&define.amd)define(["js-data","undefined"],e);else{var n="object"==typeof exports?e(require("js-data"),require("undefined")):e(t["js-data"],t.undefined);for(var r in n)("object"==typeof exports?exports:t)[r]=n[r]}}(this,function(t,e){return function(t){function e(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return t[r].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){"use strict";function r(t){return null!=t&&""!==t}function o(t,e){return e||(e=""),t.filter(r).join(e)}function u(){for(var t=arguments.length,e=Array(t),n=0;t>n;n++)e[n]=arguments[n];var r=o(e,"/");return r.replace(/([^:\/]|^)\/{2,}/g,"$1/")}function i(t){return encodeURIComponent(t).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function a(t,e){if(!e)return t;var n=[];return g(e,function(t,e){null!==t&&"undefined"!=typeof t&&(b(t)||(t=[t]),t.forEach(function(t){"[object Date]"===window.toString.call(t)?t=t.toISOString():v(t)&&(t=S(t)),n.push(i(e)+"="+i(t))}))}),n.length>0&&(t+=(-1===t.indexOf("?")?"?":"&")+n.join("&")),t}function f(t){var e=this;t||(t={}),e.basePath=void 0===t.basePath?"":t.basePath,e.debug=void 0===t.debug?!1:t.debug,e.forceTrailingSlash=void 0===t.forceTrailingSlash?!1:t.forceTrailingSlash,e.http=void 0===t.http?p:t.http,e.httpConfig=void 0===t.httpConfig?{}:t.httpConfig,e.suffix=void 0===t.suffix?"":t.suffix,e.useFetch=void 0===t.useFetch?!1:t.useFetch,w&&(e.useFetch||void 0===e.http)}var s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},c=n(2),p=n(3),d=c.utils._,l=c.utils.copy,h=c.utils.deepMixIn,m=c.utils.fillIn,g=c.utils.forOwn,b=c.utils.isArray,y=c.utils.isFunction,T=c.utils.isNumber,v=c.utils.isObject,P=c.utils.isSorN,E=c.utils.isString,A=c.utils.resolve,x=c.utils.reject,S=c.utils.toJson,w=!1;try{w=window&&window.fetch}catch(t){}m(f,{beforeCreate:function(){},create:function(t,e,n){var r=this;return n=n?l(n):{},n.params||(n.params={}),n.params=r.queryTransform(t,n.params,n),n.op="create",r.dbg(n.op,t,e,n),A(r.beforeCreate(t,e,n)).then(function(){return r.POST(r.getPath("create",t,e,n),r.serialize(t,e,n),n)}).then(function(e){return r.deserialize(t,e,n)}).then(function(e){return A(r.afterCreate(t,e,n)).then(function(t){return t||e})})},afterCreate:function(){},dbg:function(){for(var t=arguments.length,e=Array(t),n=0;t>n;n++)e[n]=arguments[n];this.log.apply(this,["debug"].concat(e))},beforeDEL:function(){},DEL:function(t,e,n){var r=this;return e||(e={}),e.url=t||e.url,e.method=e.method||"delete",A(r.beforeDEL(t,e,n)).then(function(t){return e=t||e,r.HTTP(e,n)}).then(function(o){return A(r.afterDEL(t,e,n,o)).then(function(t){return t||o})})},afterDEL:function(){},deserialize:function(t,e,n){return n||(n={}),y(n.deserialize)?n.deserialize(t,e,n):n.raw?e:e&&"data"in e?e.data:e},beforeDestroy:function(){},destroy:function(t,e,n){var r=this;return n=n?l(n):{},n.params||(n.params={}),n.params=r.queryTransform(t,n.params,n),n.op="destroy",r.dbg(n.op,t,e,n),A(r.beforeDestroy(t,e,n)).then(function(){return r.DEL(r.getPath("destroy",t,e,n),n)}).then(function(e){return r.deserialize(t,e,n)}).then(function(o){return A(r.afterDestroy(t,e,o,n)).then(function(t){return t||o})})},beforeDestroyAll:function(){},destroyAll:function(t,e,n){var r=this;return e||(e={}),n=n?l(n):{},n.params||(n.params={}),n.op="destroy",r.dbg(n.op,t,e,n),h(n.params,e),n.params=r.queryTransform(t,n.params,n),A(r.beforeDestroyAll(t,e,n)).then(function(){return r.DEL(r.getPath("destroyAll",t,e,n),n)}).then(function(e){return r.deserialize(t,e,n)}).then(function(o){return A(r.afterDestroyAll(t,e,o,n)).then(function(t){return t||o})})},error:function(){if(console){var t;(t=console)["function"==typeof console.error?"error":"log"].apply(t,arguments)}},fetch:function(t){function e(e,n){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}(function(t,e){var n={method:t.method,headers:new Headers(t.headers)};return t.data&&(n.body=S(t.data)),fetch(new Request(a(t.url,t.params),n)).then(function(e){return e.config={method:t.method,url:t.url},e.json().then(function(t){return e.data=t,e})})}),beforeFind:function(){},find:function(t,e,n){var r=this;return n=n?l(n):{},n.params||(n.params={}),n.params=r.queryTransform(t,n.params,n),n.op="find",r.dbg(n.op,t,e,n),A(r.beforeFind(t,e,n)).then(function(){return r.GET(r.getPath("find",t,e,n),n)}).then(function(e){return r.deserialize(t,e,n)}).then(function(o){return A(r.afterFind(t,e,o,n)).then(function(t){return t||o})})},afterFind:function(){},findAll:function(t,e,n){var r=this;return e||(e={}),n=n?l(n):{},n.params||(n.params={}),n.op="findAll",r.dbg(n.op,t,e,n),h(n.params,e),n.params=r.queryTransform(t,n.params,n),A(r.beforeFindAll(t,e,n)).then(function(){return r.GET(r.getPath("findAll",t,e,n),n)}).then(function(e){return r.deserialize(t,e,n)}).then(function(o){return A(r.afterFindAll(t,e,o,n)).then(function(t){return t||o})})},beforeGET:function(){},GET:function(t,e,n){var r=this;return e||(e={}),e.url=t||e.url,e.method=e.method||"get",A(r.beforeGET(t,e,n)).then(function(t){return e=t||e,r.HTTP(e,n)}).then(function(o){return A(r.afterGET(t,e,n,o)).then(function(t){return t||o})})},afterGET:function(){},getEndpoint:function(t,e,n){var r=this;n||(n={}),n.params||(n.params={});var o=void 0,i=t.parentKey,a=n.hasOwnProperty("endpoint")?n.endpoint:t.endpoint,f=t.parentField,c=t.getResource(t.parent),p=n.params[i];if(p===!1||!i||!c)return p===!1&&delete n.params[i],a;if(delete n.params[i],E(e)||T(e)?o=t.get(e):v(e)&&(o=e),o&&(p=p||o[i]||(o[f]?o[f][c.idAttribute]:null)),!p)return a;var l=function(){delete n.endpoint;var t={};return g(n,function(e,n){t[n]=e}),d(t,c),{v:u(r.getEndpoint(c,p,t,p,a))}}();return"object"===("undefined"==typeof l?"undefined":s(l))?l.v:void 0},getPath:function(t,e,n,r){var o=this;r||(r={});var i=[void 0===r.basePath?o.basePath:r.basePath,o.getEndpoint(e,E(n)||T(n)||"create"===t?n:null,r)];return("find"===t||"update"===t||"destroy"===t)&&i.push(n),u.apply(c.utils,i)},beforeHTTP:function(){},HTTP:function(t,e){function n(e){var n=o.toUTCString()+" - "+t.method.toUpperCase()+" "+t.url+" - "+e.status+" "+((new Date).getTime()-o.getTime())+"ms";return e.status>=200&&e.status<300?(r.log&&r.dbg("debug",n,e),e):(r.error&&r.error("'FAILED: "+n,e),x(e))}var r=this,o=new Date;e||(e={}),t=l(t),t=h(t,r.httpConfig),r.forceTrailingSlash&&"/"!==t.url[t.url.length-1]&&(t.url+="/"),t.method=t.method.toUpperCase();var u=t.suffix||e.suffix||r.suffix;if(u&&t.url.substr(t.url.length-u.length)!==u&&(t.url+=u),!r.http)throw new Error("You have not configured this adapter with an http library!");return A(r.beforeHTTP(t)).then(function(o){return t=o||t,w&&(r.useFetch||e.useFetch||!r.http)?r.fetch(t,e).then(n,n):r.http(t).then(n,n)}).then(function(e){return A(r.afterHTTP(t,e)).then(function(t){return t||e})})},afterHTTP:function(){},queryTransform:function(t,e,n){return e},serialize:function(t,e,n){return n||(n={}),y(n.serialize)?n.serialize(t,e,n):e},log:function(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;e>r;r++)n[r-1]=arguments[r];if(t&&!n.length&&(n.push(t),t="debug"),"debug"!==t||this.debug){var o=t.toUpperCase()+": ("+this.name+")";if(console[t]){var u;(u=console)[t].apply(u,[o].concat(n))}else{var i;(i=console).log.apply(i,[o].concat(n))}}},beforePOST:function(){},POST:function(t,e,n,r){var o=this;return n||(n={}),n.url=t||n.url,n.data=e||n.data,n.method=n.method||"post",A(o.beforePOST(t,e,n,r)).then(function(t){return n=t||n,o.HTTP(n,r)}).then(function(u){return A(o.afterPOST(t,e,n,r,u)).then(function(t){return t||u})})},afterPOST:function(){},beforePUT:function(){},PUT:function(t,e,n,r){var o=this;return n||(n={}),n.url=t||n.url,n.data=e||n.data,n.method=n.method||"put",A(o.beforePUT(t,e,n,r)).then(function(t){return n=t||n,o.HTTP(n,r)}).then(function(u){return A(o.afterPUT(t,e,n,r,u)).then(function(t){return t||u})})},afterPUT:function(){},update:function(t,e,n,r){var o=this;return r=r?l(r):{},r.params||(r.params={}),r.params=o.queryTransform(t,r.params,r),r.op="update",o.dbg(r.op,t,e,n,r),A(o.beforeUpdate(t,e,n,r)).then(function(){return o.POST(o.getPath("update",t,e,r),o.serialize(t,n,r),r)}).then(function(e){return o.deserialize(t,e,r)}).then(function(u){return A(o.afterUpdate(t,e,n,r,u)).then(function(t){return t||u})})},updateAll:function(t,e,n,r){var o=this;return n||(n={}),r=r?l(r):{},r.params||(r.params={}),r.op="updateAll",o.dbg(r.op,t,e,n,r),h(r.params,n),r.params=o.queryTransform(t,r.params,r),A(o.beforeUpdateAll(t,e,n,r)).then(function(){return o.PUT(o.getPath("updateAll",t,n,r),r)}).then(function(e){return o.deserialize(t,e,r)}).then(function(u){return A(o.afterUpdateAll(t,e,n,r,u)).then(function(t){return t||u})})}}),f.addAction=function(t,e){if(!t||!E(t))throw new TypeError("action(name[, opts]): Expected: string, Found: "+("undefined"==typeof t?"undefined":s(t)));return function(n){if(n[t])throw new Error("action(name[, opts]): "+t+" already exists on target!");return e.request=e.request||function(t){return t},e.response=e.response||function(t){return t},e.responseError=e.responseError||function(t){return x(t)},n[t]=function(n,r){v(n)&&(r=n),r=r||{};var o=this.getAdapter(e.adapter||this.defaultAdapter||"http"),i={};if(m(i,e),!r.hasOwnProperty("endpoint")&&i.endpoint&&(r.endpoint=i.endpoint),"function"==typeof r.getEndpoint)i.url=r.getEndpoint(this,r);else{var a=[r.basePath||this.basePath||o.defaults.basePath,o.getEndpoint(this,P(n)?n:null,r)];P(n)&&a.push(n),a.push(e.pathname||t),i.url=u.apply(null,a)}return i.method=i.method||"GET",i.modelName=this.name,h(i)(r),A(i).then(r.request||e.request).then(function(t){return o.HTTP(t)}).then(function(t){return t&&t.config&&(t.config.modelName=this.name),t}).then(r.response||e.response,r.responseError||e.responseError)},n}},f.addActions=function(t){return t||(t={}),function(t){return g(t,function(e,n){f.addAction(n,e)(t)}),t}},f.version={full:"3.0.0-alpha.2",major:parseInt("3",10),minor:parseInt("0",10),patch:parseInt("0",10),alpha:"2",beta:"false"},t.exports=f},,function(e,n){e.exports=t},function(t,e){t.exports=void 0}])}); +//# sourceMappingURL=dist/js-data-fetch.min.map \ No newline at end of file diff --git a/fetch/package.json b/fetch/package.json new file mode 100644 index 0000000..20e92c1 --- /dev/null +++ b/fetch/package.json @@ -0,0 +1,21 @@ +{ + "name": "js-data-fetch", + "description": "HTTP adapter for js-data that uses fetch.", + "version": "3.0.0-alpha.1", + "homepage": "http://www.js-data.io/docs/dshttpadapter", + "repository": { + "type": "git", + "url": "https://github.com/js-data/js-data-http.git" + }, + "author": "Jason Dobry (http://www.pseudobry.com)", + "license": "MIT", + "main": "./dist/js-data-fetch.js", + "keywords": [ + "ajax", + "axios", + "rest", + "adapter", + "http", + "fetch" + ] +} diff --git a/fetch/webpack.config.js b/fetch/webpack.config.js new file mode 100644 index 0000000..7864e84 --- /dev/null +++ b/fetch/webpack.config.js @@ -0,0 +1,35 @@ +var path= require('path') + +module.exports = { + entry: { + './fetch/dist/js-data-fetch.js': './src/index.js', + './fetch/dist/js-data-fetch-tests.js': './fetch/test/unit/index.js' + }, + output: { + filename: '[name]', + libraryTarget: 'umd' + }, + externals: [ + 'js-data', + { + 'axios': 'var undefined' + }, + 'chai' + ], + module: { + loaders: [ + { + loader: 'babel-loader', + include: [ + path.resolve(__dirname, '../src'), + path.resolve(__dirname, 'test') + ], + test: /\.jsx?$/, + query: { + presets: ['es2015', 'stage-0'], + plugins: ['syntax-async-functions', 'transform-regenerator'] + } + } + ] + } +} diff --git a/karma.conf.js b/karma.conf.js index d1607ff..cf506ce 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -38,7 +38,6 @@ module.exports = function (config) { // list of files / patterns to load in the browser files: [ - 'bower_components/axios/dist/axios.js', 'node_modules/es6-promise/dist/es6-promise.js', 'node_modules/js-data/dist/js-data.js', 'dist/js-data-http.js', diff --git a/node/dist/js-data-fetch.js b/node/dist/js-data-fetch.js new file mode 100644 index 0000000..f33102f --- /dev/null +++ b/node/dist/js-data-fetch.js @@ -0,0 +1,644 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(require("js-data"), require("axios")); + else if(typeof define === 'function' && define.amd) + define(["js-data", "axios"], factory); + else { + var a = typeof exports === 'object' ? factory(require("js-data"), require("axios")) : factory(root["js-data"], root["axios"]); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_2__) { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; + +/******/ // The require function +/******/ function __webpack_require__(moduleId) { + +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) +/******/ return installedModules[moduleId].exports; + +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ exports: {}, +/******/ id: moduleId, +/******/ loaded: false +/******/ }; + +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); + +/******/ // Flag the module as loaded +/******/ module.loaded = true; + +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } + + +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; + +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; + +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; + +/******/ // Load entry module and return exports +/******/ return __webpack_require__(0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; + + var _jsData = __webpack_require__(1); + + /* global fetch:true Headers:true Request:true */ + var axios = __webpack_require__(2); + var _ = _jsData.utils._; + var copy = _jsData.utils.copy; + var deepMixIn = _jsData.utils.deepMixIn; + var fillIn = _jsData.utils.fillIn; + var forOwn = _jsData.utils.forOwn; + var isArray = _jsData.utils.isArray; + var isFunction = _jsData.utils.isFunction; + var isNumber = _jsData.utils.isNumber; + var isObject = _jsData.utils.isObject; + var isSorN = _jsData.utils.isSorN; + var isString = _jsData.utils.isString; + var resolve = _jsData.utils.resolve; + var reject = _jsData.utils.reject; + var toJson = _jsData.utils.toJson; + + var hasFetch = false; + + try { + hasFetch = window && window.fetch; + } catch (e) {} + + function isValidString(value) { + return value != null && value !== ''; + } + function join(items, separator) { + separator || (separator = ''); + return items.filter(isValidString).join(separator); + } + function makePath() { + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + var result = join(args, '/'); + return result.replace(/([^:\/]|^)\/{2,}/g, '$1/'); + } + + function encode(val) { + return encodeURIComponent(val).replace(/%40/gi, '@').replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+'); + } + + function buildUrl(url, params) { + if (!params) { + return url; + } + + var parts = []; + + forOwn(params, function (val, key) { + if (val === null || typeof val === 'undefined') { + return; + } + if (!isArray(val)) { + val = [val]; + } + + val.forEach(function (v) { + if (window.toString.call(v) === '[object Date]') { + v = v.toISOString(); + } else if (isObject(v)) { + v = toJson(v); + } + parts.push(encode(key) + '=' + encode(v)); + }); + }); + + if (parts.length > 0) { + url += (url.indexOf('?') === -1 ? '?' : '&') + parts.join('&'); + } + + return url; + } + + /** + * DSHttpAdapter class. + * @class DSHttpAdapter + * + * @param {Object} [opts] Configuration options. + * @param {string} [opts.basePath=''] + * @param {boolean} [opts.debug=false] + * @param {boolean} [opts.forceTrailingSlash=false] + * @param {Object} [opts.http=axios] + * @param {Object} [opts.httpConfig={}] + * @param {string} [opts.suffix=''] + * @param {boolean} [opts.useFetch=false] + */ + function DSHttpAdapter(opts) { + var self = this; + + // Default values for arguments + opts || (opts = {}); + + // Default and user-defined settings + self.basePath = opts.basePath === undefined ? '' : opts.basePath; + self.debug = opts.debug === undefined ? false : opts.debug; + self.forceTrailingSlash = opts.forceTrailingSlash === undefined ? false : opts.forceTrailingSlash; + self.http = opts.http === undefined ? axios : opts.http; + self.httpConfig = opts.httpConfig === undefined ? {} : opts.httpConfig; + self.suffix = opts.suffix === undefined ? '' : opts.suffix; + self.useFetch = opts.useFetch === undefined ? false : opts.useFetch; + + // Use "window.fetch" if available and the user asks for it + if (self.useFetch && hasFetch) { + self.deserialize = function (Model, response, opts) { + opts || (opts = {}); + return response.json(); + }; + self.http = function (config) { + var requestConfig = { + method: config.method, + // turn the plain headers object into the Fetch Headers object + headers: new Headers(config.headers) + }; + + if (config.data) { + requestConfig.body = toJson(config.data); + } + + return fetch(new Request(buildUrl(config.url, config.params), requestConfig)).then(function (response) { + response.config = { + method: config.method, + url: config.url + }; + return response; + }); + }; + } + } + + fillIn(DSHttpAdapter, { + beforeCreate: function beforeCreate() {}, + create: function create(Model, props, opts) { + var self = this; + opts = opts ? copy(opts) : {}; + opts.params || (opts.params = {}); + opts.params = self.queryTransform(Model, opts.params, opts); + opts.op = 'create'; + self.dbg(opts.op, Model, props, opts); + return resolve(self.beforeCreate(Model, props, opts)).then(function () { + return self.POST(self.getPath('create', Model, props, opts), self.serialize(Model, props, opts), opts); + }).then(function (response) { + return self.deserialize(Model, response, opts); + }).then(function (data) { + return resolve(self.afterCreate(Model, data, opts)).then(function (_data) { + return _data || data; + }); + }); + }, + afterCreate: function afterCreate() {}, + dbg: function dbg() { + for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + + this.log.apply(this, ['debug'].concat(args)); + }, + beforeDEL: function beforeDEL() {}, + DEL: function DEL(url, config, opts) { + var self = this; + config || (config = {}); + config.url = url || config.url; + config.method = config.method || 'delete'; + return resolve(self.beforeDEL(url, config, opts)).then(function (_config) { + config = _config || config; + return self.HTTP(config, opts); + }).then(function (response) { + return resolve(self.afterDEL(url, config, opts, response)).then(function (_response) { + return _response || response; + }); + }); + }, + afterDEL: function afterDEL() {}, + deserialize: function deserialize(Model, data, opts) { + opts || (opts = {}); + if (isFunction(opts.deserialize)) { + return opts.deserialize(Model, data, opts); + } + if (opts.raw) { + return data; + } + return data ? 'data' in data ? data.data : data : data; + }, + beforeDestroy: function beforeDestroy() {}, + destroy: function destroy(Model, id, opts) { + var self = this; + opts = opts ? copy(opts) : {}; + opts.params || (opts.params = {}); + opts.params = self.queryTransform(Model, opts.params, opts); + opts.op = 'destroy'; + self.dbg(opts.op, Model, id, opts); + return resolve(self.beforeDestroy(Model, id, opts)).then(function () { + return self.DEL(self.getPath('destroy', Model, id, opts), opts); + }).then(function (response) { + return self.deserialize(Model, response, opts); + }).then(function (data) { + return resolve(self.afterDestroy(Model, id, data, opts)).then(function (_data) { + return _data || data; + }); + }); + }, + beforeDestroyAll: function beforeDestroyAll() {}, + destroyAll: function destroyAll(Model, query, opts) { + var self = this; + query || (query = {}); + opts = opts ? copy(opts) : {}; + opts.params || (opts.params = {}); + opts.op = 'destroy'; + self.dbg(opts.op, Model, query, opts); + deepMixIn(opts.params, query); + opts.params = self.queryTransform(Model, opts.params, opts); + return resolve(self.beforeDestroyAll(Model, query, opts)).then(function () { + return self.DEL(self.getPath('destroyAll', Model, query, opts), opts); + }).then(function (response) { + return self.deserialize(Model, response, opts); + }).then(function (data) { + return resolve(self.afterDestroyAll(Model, query, data, opts)).then(function (_data) { + return _data || data; + }); + }); + }, + error: function error() { + if (console) { + var _console; + + (_console = console)[typeof console.error === 'function' ? 'error' : 'log'].apply(_console, arguments); + } + }, + beforeFind: function beforeFind() {}, + find: function find(Model, id, opts) { + var self = this; + opts = opts ? copy(opts) : {}; + opts.params || (opts.params = {}); + opts.params = self.queryTransform(Model, opts.params, opts); + opts.op = 'find'; + self.dbg(opts.op, Model, id, opts); + return resolve(self.beforeFind(Model, id, opts)).then(function () { + return self.GET(self.getPath('find', Model, id, opts), opts); + }).then(function (response) { + return self.deserialize(Model, response, opts); + }).then(function (data) { + return resolve(self.afterFind(Model, id, data, opts)).then(function (_data) { + return _data || data; + }); + }); + }, + afterFind: function afterFind() {}, + findAll: function findAll(Model, query, opts) { + var self = this; + query || (query = {}); + opts = opts ? copy(opts) : {}; + opts.params || (opts.params = {}); + opts.op = 'findAll'; + self.dbg(opts.op, Model, query, opts); + deepMixIn(opts.params, query); + opts.params = self.queryTransform(Model, opts.params, opts); + return resolve(self.beforeFindAll(Model, query, opts)).then(function () { + return self.GET(self.getPath('findAll', Model, query, opts), opts); + }).then(function (response) { + return self.deserialize(Model, response, opts); + }).then(function (data) { + return resolve(self.afterFindAll(Model, query, data, opts)).then(function (_data) { + return _data || data; + }); + }); + }, + beforeGET: function beforeGET() {}, + GET: function GET(url, config, opts) { + var self = this; + config || (config = {}); + config.url = url || config.url; + config.method = config.method || 'get'; + return resolve(self.beforeGET(url, config, opts)).then(function (_config) { + config = _config || config; + return self.HTTP(config, opts); + }).then(function (response) { + return resolve(self.afterGET(url, config, opts, response)).then(function (_response) { + return _response || response; + }); + }); + }, + afterGET: function afterGET() {}, + getEndpoint: function getEndpoint(Model, id, opts) { + var _this = this; + + opts || (opts = {}); + opts.params || (opts.params = {}); + + var item = undefined; + var parentKey = Model.parentKey; + var endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : Model.endpoint; + var parentField = Model.parentField; + var parentDef = Model.getResource(Model.parent); + var parentId = opts.params[parentKey]; + + if (parentId === false || !parentKey || !parentDef) { + if (parentId === false) { + delete opts.params[parentKey]; + } + return endpoint; + } else { + delete opts.params[parentKey]; + + if (isString(id) || isNumber(id)) { + item = Model.get(id); + } else if (isObject(id)) { + item = id; + } + + if (item) { + parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null); + } + + if (parentId) { + var _ret = function () { + delete opts.endpoint; + var _opts = {}; + forOwn(opts, function (value, key) { + _opts[key] = value; + }); + _(_opts, parentDef); + return { + v: makePath(_this.getEndpoint(parentDef, parentId, _opts, parentId, endpoint)) + }; + }(); + + if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v; + } else { + return endpoint; + } + } + }, + getPath: function getPath(method, Model, id, opts) { + var self = this; + opts || (opts = {}); + var args = [opts.basePath === undefined ? self.basePath : opts.basePath, self.getEndpoint(Model, isString(id) || isNumber(id) || method === 'create' ? id : null, opts)]; + if (method === 'find' || method === 'update' || method === 'destroy') { + args.push(id); + } + return makePath.apply(_jsData.utils, args); + }, + beforeHTTP: function beforeHTTP() {}, + HTTP: function HTTP(config, opts) { + var self = this; + var start = new Date(); + config = copy(config); + config = deepMixIn(config, self.httpConfig); + if (self.forceTrailingSlash && config.url[config.url.length - 1] !== '/') { + config.url += '/'; + } + config.method = config.method.toUpperCase(); + var suffix = config.suffix || opts.suffix || self.suffix; + if (suffix && config.url.substr(config.url.length - suffix.length) !== suffix) { + config.url += suffix; + } + + function logResponse(data) { + var str = start.toUTCString() + ' - ' + config.method.toUpperCase() + ' ' + config.url + ' - ' + data.status + ' ' + (new Date().getTime() - start.getTime()) + 'ms'; + if (data.status >= 200 && data.status < 300) { + if (self.log) { + self.dbg('debug', str, data); + } + return data; + } else { + if (self.error) { + self.error('\'FAILED: ' + str, data); + } + return reject(data); + } + } + + if (!self.http) { + throw new Error('You have not configured this adapter with an http library!'); + } + + return resolve(self.beforeHTTP(config)).then(function (_config) { + config = _config || config; + return self.http(config).then(logResponse, logResponse); + }).then(function (response) { + return resolve(self.afterHTTP(config, response)).then(function (_response) { + return _response || response; + }); + }); + }, + afterHTTP: function afterHTTP() {}, + queryTransform: function queryTransform(Model, params, opts) { + return params; + }, + serialize: function serialize(Model, data, opts) { + opts || (opts = {}); + if (isFunction(opts.serialize)) { + return opts.serialize(Model, data, opts); + } + return data; + }, + log: function log(level) { + for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { + args[_key3 - 1] = arguments[_key3]; + } + + if (level && !args.length) { + args.push(level); + level = 'debug'; + } + if (level === 'debug' && !this.debug) { + return; + } + var prefix = level.toUpperCase() + ': (' + this.name + ')'; + if (console[level]) { + var _console2; + + (_console2 = console)[level].apply(_console2, [prefix].concat(args)); + } else { + var _console3; + + (_console3 = console).log.apply(_console3, [prefix].concat(args)); + } + }, + beforePOST: function beforePOST() {}, + POST: function POST(url, data, config, opts) { + var self = this; + config || (config = {}); + config.url = url || config.url; + config.data = data || config.data; + config.method = config.method || 'post'; + return resolve(self.beforePOST(url, data, config, opts)).then(function (_config) { + config = _config || config; + return self.HTTP(config, opts); + }).then(function (response) { + return resolve(self.afterPOST(url, data, config, opts, response)).then(function (_response) { + return _response || response; + }); + }); + }, + afterPOST: function afterPOST() {}, + beforePUT: function beforePUT() {}, + PUT: function PUT(url, data, config, opts) { + var self = this; + config || (config = {}); + config.url = url || config.url; + config.data = data || config.data; + config.method = config.method || 'put'; + return resolve(self.beforePUT(url, data, config, opts)).then(function (_config) { + config = _config || config; + return self.HTTP(config, opts); + }).then(function (response) { + return resolve(self.afterPUT(url, data, config, opts, response)).then(function (_response) { + return _response || response; + }); + }); + }, + afterPUT: function afterPUT() {}, + update: function update(Model, id, props, opts) { + var self = this; + opts = opts ? copy(opts) : {}; + opts.params || (opts.params = {}); + opts.params = self.queryTransform(Model, opts.params, opts); + opts.op = 'update'; + self.dbg(opts.op, Model, id, props, opts); + return resolve(self.beforeUpdate(Model, id, props, opts)).then(function () { + return self.POST(self.getPath('update', Model, id, opts), self.serialize(Model, props, opts), opts); + }).then(function (response) { + return self.deserialize(Model, response, opts); + }).then(function (data) { + return resolve(self.afterUpdate(Model, id, props, opts, data)).then(function (_data) { + return _data || data; + }); + }); + }, + updateAll: function updateAll(Model, props, query, opts) { + var self = this; + query || (query = {}); + opts = opts ? copy(opts) : {}; + opts.params || (opts.params = {}); + opts.op = 'updateAll'; + self.dbg(opts.op, Model, props, query, opts); + deepMixIn(opts.params, query); + opts.params = self.queryTransform(Model, opts.params, opts); + return resolve(self.beforeUpdateAll(Model, props, query, opts)).then(function () { + return self.PUT(self.getPath('updateAll', Model, query, opts), opts); + }).then(function (response) { + return self.deserialize(Model, response, opts); + }).then(function (data) { + return resolve(self.afterUpdateAll(Model, props, query, opts, data)).then(function (_data) { + return _data || data; + }); + }); + } + }); + + DSHttpAdapter.addAction = function (name, opts) { + if (!name || !isString(name)) { + throw new TypeError('action(name[, opts]): Expected: string, Found: ' + (typeof name === 'undefined' ? 'undefined' : _typeof(name))); + } + return function (target) { + if (target[name]) { + throw new Error('action(name[, opts]): ' + name + ' already exists on target!'); + } + opts.request = opts.request || function (config) { + return config; + }; + opts.response = opts.response || function (response) { + return response; + }; + opts.responseError = opts.responseError || function (err) { + return reject(err); + }; + target[name] = function (id, _opts) { + if (isObject(id)) { + _opts = id; + } + _opts = _opts || {}; + var adapter = this.getAdapter(opts.adapter || this.defaultAdapter || 'http'); + var config = {}; + fillIn(config, opts); + if (!_opts.hasOwnProperty('endpoint') && config.endpoint) { + _opts.endpoint = config.endpoint; + } + if (typeof _opts.getEndpoint === 'function') { + config.url = _opts.getEndpoint(this, _opts); + } else { + var _args = [_opts.basePath || this.basePath || adapter.defaults.basePath, adapter.getEndpoint(this, isSorN(id) ? id : null, _opts)]; + if (isSorN(id)) { + _args.push(id); + } + _args.push(opts.pathname || name); + config.url = makePath.apply(null, _args); + } + config.method = config.method || 'GET'; + config.modelName = this.name; + deepMixIn(config)(_opts); + return resolve(config).then(_opts.request || opts.request).then(function (config) { + return adapter.HTTP(config); + }).then(function (data) { + if (data && data.config) { + data.config.modelName = this.name; + } + return data; + }).then(_opts.response || opts.response, _opts.responseError || opts.responseError); + }; + return target; + }; + }; + + DSHttpAdapter.addActions = function (opts) { + opts || (opts = {}); + return function (target) { + forOwn(target, function (value, key) { + DSHttpAdapter.addAction(key, value)(target); + }); + return target; + }; + }; + + DSHttpAdapter.version = { + full: '<%= pkg.version %>', + major: parseInt('<%= major %>', 10), + minor: parseInt('<%= minor %>', 10), + patch: parseInt('<%= patch %>', 10), + alpha: true ? '<%= alpha %>' : false, + beta: true ? '<%= beta %>' : false + }; + + module.exports = DSHttpAdapter; + +/***/ }, +/* 1 */ +/***/ function(module, exports) { + + module.exports = __WEBPACK_EXTERNAL_MODULE_1__; + +/***/ }, +/* 2 */ +/***/ function(module, exports) { + + module.exports = __WEBPACK_EXTERNAL_MODULE_2__; + +/***/ } +/******/ ]) +}); +; \ 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 4385163..056086a 100644 --- a/node/dist/js-data-http-node.js +++ b/node/dist/js-data-http-node.js @@ -1,8 +1,8 @@ /*! * js-data-http-node -* @version 3.0.0-alpha.1 - Homepage +* @version 3.0.0-alpha.2 - Homepage * @author Jason Dobry -* @copyright (c) 2014-2015 Jason Dobry +* @copyright (c) 2014-2016 Jason Dobry * @license MIT * * @overview Node.js HTTP adapter for js-data. @@ -65,14 +65,11 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; var _jsData = __webpack_require__(2); - function _typeof(obj) { return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj; } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - + /* global fetch:true Headers:true Request:true */ var axios = __webpack_require__(3); var _ = _jsData.utils._; var copy = _jsData.utils.copy; @@ -80,13 +77,12 @@ return /******/ (function(modules) { // webpackBootstrap var fillIn = _jsData.utils.fillIn; var forOwn = _jsData.utils.forOwn; var isArray = _jsData.utils.isArray; + var isFunction = _jsData.utils.isFunction; var isNumber = _jsData.utils.isNumber; var isObject = _jsData.utils.isObject; var isSorN = _jsData.utils.isSorN; var isString = _jsData.utils.isString; - var - // removeCircular, - resolve = _jsData.utils.resolve; + var resolve = _jsData.utils.resolve; var reject = _jsData.utils.reject; var toJson = _jsData.utils.toJson; @@ -97,11 +93,10 @@ return /******/ (function(modules) { // webpackBootstrap } catch (e) {} function isValidString(value) { - return value != null && value !== ''; // jshint ignore:line + return value != null && value !== ''; } - function join(items) { - var separator = arguments.length <= 1 || arguments[1] === undefined ? '' : arguments[1]; - + function join(items, separator) { + separator || (separator = ''); return items.filter(isValidString).join(separator); } function makePath() { @@ -149,340 +144,433 @@ return /******/ (function(modules) { // webpackBootstrap return url; } - var Defaults = (function () { - function Defaults() { - _classCallCheck(this, Defaults); - } + /** + * DSHttpAdapter class. + * @class DSHttpAdapter + * + * @param {Object} [opts] Configuration options. + * @param {string} [opts.basePath=''] + * @param {boolean} [opts.debug=false] + * @param {boolean} [opts.forceTrailingSlash=false] + * @param {Object} [opts.http=axios] + * @param {Object} [opts.httpConfig={}] + * @param {string} [opts.suffix=''] + * @param {boolean} [opts.useFetch=false] + */ + function DSHttpAdapter(opts) { + var self = this; + + // Default values for arguments + opts || (opts = {}); + + // Default and user-defined settings + self.basePath = opts.basePath === undefined ? '' : opts.basePath; + self.debug = opts.debug === undefined ? false : opts.debug; + self.forceTrailingSlash = opts.forceTrailingSlash === undefined ? false : opts.forceTrailingSlash; + self.http = opts.http === undefined ? axios : opts.http; + self.httpConfig = opts.httpConfig === undefined ? {} : opts.httpConfig; + self.suffix = opts.suffix === undefined ? '' : opts.suffix; + self.useFetch = opts.useFetch === undefined ? false : opts.useFetch; + + // Use "window.fetch" if available and the user asks for it + if (hasFetch && (self.useFetch || self.http === undefined)) {} + } - _createClass(Defaults, [{ - key: 'queryTransform', - value: function queryTransform(resourceConfig, params) { - return params; + fillIn(DSHttpAdapter, { + beforeCreate: function beforeCreate() {}, + create: function create(Model, props, opts) { + var self = this; + opts = opts ? copy(opts) : {}; + opts.params || (opts.params = {}); + opts.params = self.queryTransform(Model, opts.params, opts); + opts.op = 'create'; + self.dbg(opts.op, Model, props, opts); + return resolve(self.beforeCreate(Model, props, opts)).then(function () { + return self.POST(self.getPath('create', Model, props, opts), self.serialize(Model, props, opts), opts); + }).then(function (response) { + return self.deserialize(Model, response, opts); + }).then(function (data) { + return resolve(self.afterCreate(Model, data, opts)).then(function (_data) { + return _data || data; + }); + }); + }, + afterCreate: function afterCreate() {}, + dbg: function dbg() { + for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; } - }, { - key: 'deserialize', - value: function deserialize(resourceConfig, data) { - return data ? 'data' in data ? data.data : data : data; + + this.log.apply(this, ['debug'].concat(args)); + }, + beforeDEL: function beforeDEL() {}, + DEL: function DEL(url, config, opts) { + var self = this; + config || (config = {}); + config.url = url || config.url; + config.method = config.method || 'delete'; + return resolve(self.beforeDEL(url, config, opts)).then(function (_config) { + config = _config || config; + return self.HTTP(config, opts); + }).then(function (response) { + return resolve(self.afterDEL(url, config, opts, response)).then(function (_response) { + return _response || response; + }); + }); + }, + afterDEL: function afterDEL() {}, + deserialize: function deserialize(Model, data, opts) { + opts || (opts = {}); + if (isFunction(opts.deserialize)) { + return opts.deserialize(Model, data, opts); } - }, { - key: 'serialize', - value: function serialize(resourceConfig, data) { + if (opts.raw) { return data; } - }, { - key: 'log', - value: function log() {} - }, { - key: 'error', - value: function error() {} - }]); - - return Defaults; - })(); - - var defaultsPrototype = Defaults.prototype; - - defaultsPrototype.basePath = ''; - - defaultsPrototype.forceTrailingSlash = ''; - - defaultsPrototype.httpConfig = {}; - - defaultsPrototype.useFetch = false; - - var DSHttpAdapter = (function () { - function DSHttpAdapter(options) { - _classCallCheck(this, DSHttpAdapter); - - options = options || {}; - this.defaults = new Defaults(); - this.http = options.http || axios; - delete options.http; + return data ? 'data' in data ? data.data : data : data; + }, + beforeDestroy: function beforeDestroy() {}, + destroy: function destroy(Model, id, opts) { + var self = this; + opts = opts ? copy(opts) : {}; + opts.params || (opts.params = {}); + opts.params = self.queryTransform(Model, opts.params, opts); + opts.op = 'destroy'; + self.dbg(opts.op, Model, id, opts); + return resolve(self.beforeDestroy(Model, id, opts)).then(function () { + return self.DEL(self.getPath('destroy', Model, id, opts), opts); + }).then(function (response) { + return self.deserialize(Model, response, opts); + }).then(function (data) { + return resolve(self.afterDestroy(Model, id, data, opts)).then(function (_data) { + return _data || data; + }); + }); + }, + beforeDestroyAll: function beforeDestroyAll() {}, + destroyAll: function destroyAll(Model, query, opts) { + var self = this; + query || (query = {}); + opts = opts ? copy(opts) : {}; + opts.params || (opts.params = {}); + opts.op = 'destroy'; + self.dbg(opts.op, Model, query, opts); + deepMixIn(opts.params, query); + opts.params = self.queryTransform(Model, opts.params, opts); + return resolve(self.beforeDestroyAll(Model, query, opts)).then(function () { + return self.DEL(self.getPath('destroyAll', Model, query, opts), opts); + }).then(function (response) { + return self.deserialize(Model, response, opts); + }).then(function (data) { + return resolve(self.afterDestroyAll(Model, query, data, opts)).then(function (_data) { + return _data || data; + }); + }); + }, + error: function error() { if (console) { - this.defaults.log = function (a, b) { - return console[typeof console.info === 'function' ? 'info' : 'log'](a, b); - }; + var _console; + + (_console = console)[typeof console.error === 'function' ? 'error' : 'log'].apply(_console, arguments); } - if (console) { - this.defaults.error = function (a, b) { - return console[typeof console.error === 'function' ? 'error' : 'log'](a, b); - }; + }, + fetch: function (_fetch) { + function fetch(_x, _x2) { + return _fetch.apply(this, arguments); } - deepMixIn(this.defaults, options); - if (this.defaults.useFetch && hasFetch) { - this.defaults.deserialize = function (resourceConfig, response) { - return response.json(); - }; - this.http = function (config) { - var requestConfig = { - method: config.method, - // turn the plain headers object into the Fetch Headers object - headers: new Headers(config.headers) - }; - - if (config.data) { - requestConfig.body = toJson(config.data); - } + fetch.toString = function () { + return _fetch.toString(); + }; - return fetch(new Request(buildUrl(config.url, config.params), requestConfig)).then(function (response) { - response.config = { - method: config.method, - url: config.url - }; - return response; - }); - }; + return fetch; + }(function (config, opts) { + var requestConfig = { + method: config.method, + // turn the plain headers object into the Fetch Headers object + headers: new Headers(config.headers) + }; + + if (config.data) { + requestConfig.body = toJson(config.data); } - } - _createClass(DSHttpAdapter, [{ - key: 'getEndpoint', - value: function getEndpoint(resourceConfig, id, options) { - var _this2 = this; + return fetch(new Request(buildUrl(config.url, config.params), requestConfig)).then(function (response) { + response.config = { + method: config.method, + url: config.url + }; + return response.json().then(function (data) { + response.data = data; + return response; + }); + }); + }), + beforeFind: function beforeFind() {}, + find: function find(Model, id, opts) { + var self = this; + opts = opts ? copy(opts) : {}; + opts.params || (opts.params = {}); + opts.params = self.queryTransform(Model, opts.params, opts); + opts.op = 'find'; + self.dbg(opts.op, Model, id, opts); + return resolve(self.beforeFind(Model, id, opts)).then(function () { + return self.GET(self.getPath('find', Model, id, opts), opts); + }).then(function (response) { + return self.deserialize(Model, response, opts); + }).then(function (data) { + return resolve(self.afterFind(Model, id, data, opts)).then(function (_data) { + return _data || data; + }); + }); + }, + afterFind: function afterFind() {}, + findAll: function findAll(Model, query, opts) { + var self = this; + query || (query = {}); + opts = opts ? copy(opts) : {}; + opts.params || (opts.params = {}); + opts.op = 'findAll'; + self.dbg(opts.op, Model, query, opts); + deepMixIn(opts.params, query); + opts.params = self.queryTransform(Model, opts.params, opts); + return resolve(self.beforeFindAll(Model, query, opts)).then(function () { + return self.GET(self.getPath('findAll', Model, query, opts), opts); + }).then(function (response) { + return self.deserialize(Model, response, opts); + }).then(function (data) { + return resolve(self.afterFindAll(Model, query, data, opts)).then(function (_data) { + return _data || data; + }); + }); + }, + beforeGET: function beforeGET() {}, + GET: function GET(url, config, opts) { + var self = this; + config || (config = {}); + config.url = url || config.url; + config.method = config.method || 'get'; + return resolve(self.beforeGET(url, config, opts)).then(function (_config) { + config = _config || config; + return self.HTTP(config, opts); + }).then(function (response) { + return resolve(self.afterGET(url, config, opts, response)).then(function (_response) { + return _response || response; + }); + }); + }, + afterGET: function afterGET() {}, + getEndpoint: function getEndpoint(Model, id, opts) { + var _this = this; + + opts || (opts = {}); + opts.params || (opts.params = {}); + + var item = undefined; + var parentKey = Model.parentKey; + var endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : Model.endpoint; + var parentField = Model.parentField; + var parentDef = Model.getResource(Model.parent); + var parentId = opts.params[parentKey]; + + if (parentId === false || !parentKey || !parentDef) { + if (parentId === false) { + delete opts.params[parentKey]; + } + return endpoint; + } else { + delete opts.params[parentKey]; + + if (isString(id) || isNumber(id)) { + item = Model.get(id); + } else if (isObject(id)) { + item = id; + } - options || (options = {}); - options.params || (options.params = {}); + if (item) { + parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null); + } - var item = undefined; - var parentKey = resourceConfig.parentKey; - var endpoint = options.hasOwnProperty('endpoint') ? options.endpoint : resourceConfig.endpoint; - var parentField = resourceConfig.parentField; - var parentDef = resourceConfig.getResource(resourceConfig.parent); - var parentId = options.params[parentKey]; + if (parentId) { + var _ret = function () { + delete opts.endpoint; + var _opts = {}; + forOwn(opts, function (value, key) { + _opts[key] = value; + }); + _(_opts, parentDef); + return { + v: makePath(_this.getEndpoint(parentDef, parentId, _opts, parentId, endpoint)) + }; + }(); - if (parentId === false || !parentKey || !parentDef) { - if (parentId === false) { - delete options.params[parentKey]; - } - return endpoint; + if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v; } else { - delete options.params[parentKey]; - - if (isString(id) || isNumber(id)) { - item = resourceConfig.get(id); - } else if (isObject(id)) { - item = id; - } - - if (item) { - parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null); - } - - if (parentId) { - var _ret = (function () { - delete options.endpoint; - var _options = {}; - forOwn(options, function (value, key) { - _options[key] = value; - }); - _(_options, parentDef); - return { - v: makePath(_this2.getEndpoint(parentDef, parentId, _options, parentId, endpoint)) - }; - })(); - - if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v; - } else { - return endpoint; - } + return endpoint; } } - }, { - key: 'getPath', - value: function getPath(method, resourceConfig, id, options) { - var _this = this; - options || (options = {}); - var args = [options.basePath || _this.defaults.basePath || resourceConfig.basePath, this.getEndpoint(resourceConfig, isString(id) || isNumber(id) || method === 'create' ? id : null, options)]; - if (method === 'find' || method === 'update' || method === 'destroy') { - args.push(id); - } - return makePath.apply(_jsData.utils, args); + }, + getPath: function getPath(method, Model, id, opts) { + var self = this; + opts || (opts = {}); + var args = [opts.basePath === undefined ? self.basePath : opts.basePath, self.getEndpoint(Model, isString(id) || isNumber(id) || method === 'create' ? id : null, opts)]; + if (method === 'find' || method === 'update' || method === 'destroy') { + args.push(id); + } + return makePath.apply(_jsData.utils, args); + }, + beforeHTTP: function beforeHTTP() {}, + HTTP: function HTTP(config, opts) { + var self = this; + var start = new Date(); + opts || (opts = {}); + config = copy(config); + config = deepMixIn(config, self.httpConfig); + if (self.forceTrailingSlash && config.url[config.url.length - 1] !== '/') { + config.url += '/'; + } + config.method = config.method.toUpperCase(); + var suffix = config.suffix || opts.suffix || self.suffix; + if (suffix && config.url.substr(config.url.length - suffix.length) !== suffix) { + config.url += suffix; } - }, { - key: 'HTTP', - value: function HTTP(config) { - var _this = this; - var start = new Date(); - config = copy(config); - config = deepMixIn(config, _this.defaults.httpConfig); - if (_this.defaults.forceTrailingSlash && config.url[config.url.length - 1] !== '/') { - config.url += '/'; - } - // if (typeof config.data === 'object') { - // config.data = removeCircular(config.data) - // } - config.method = config.method.toUpperCase(); - var suffix = config.suffix || _this.defaults.suffix; - if (suffix && config.url.substr(config.url.length - suffix.length) !== suffix) { - config.url += suffix; - } - function logResponse(data) { - var str = start.toUTCString() + ' - ' + config.method.toUpperCase() + ' ' + config.url + ' - ' + data.status + ' ' + (new Date().getTime() - start.getTime()) + 'ms'; - if (data.status >= 200 && data.status < 300) { - if (_this.defaults.log) { - _this.defaults.log(str, data); - } - return data; - } else { - if (_this.defaults.error) { - _this.defaults.error('\'FAILED: ' + str, data); - } - return reject(data); + function logResponse(data) { + var str = start.toUTCString() + ' - ' + config.method.toUpperCase() + ' ' + config.url + ' - ' + data.status + ' ' + (new Date().getTime() - start.getTime()) + 'ms'; + if (data.status >= 200 && data.status < 300) { + if (self.log) { + self.dbg('debug', str, data); } + return data; + } else { + if (self.error) { + self.error('\'FAILED: ' + str, data); + } + return reject(data); } - - if (!this.http) { - throw new Error('You have not configured this adapter with an http library!'); - } - - return this.http(config).then(logResponse, logResponse); - } - }, { - key: 'GET', - value: function GET(url, config) { - config || (config = {}); - if (!('method' in config)) { - config.method = 'get'; - } - return this.HTTP(deepMixIn(config, { - url: url - })); } - }, { - key: 'POST', - value: function POST(url, attrs, config) { - config || (config = {}); - if (!('method' in config)) { - config.method = 'post'; - } - return this.HTTP(deepMixIn(config, { - url: url, - data: attrs - })); + + if (!self.http) { + throw new Error('You have not configured this adapter with an http library!'); } - }, { - key: 'PUT', - value: function PUT(url, attrs, config) { - config || (config = {}); - if (!('method' in config)) { - config.method = 'put'; + + return resolve(self.beforeHTTP(config)).then(function (_config) { + config = _config || config; + if (hasFetch && (self.useFetch || opts.useFetch || !self.http)) { + return self.fetch(config, opts).then(logResponse, logResponse); } - return this.HTTP(deepMixIn(config, { - url: url, - data: attrs || {} - })); + return self.http(config).then(logResponse, logResponse); + }).then(function (response) { + return resolve(self.afterHTTP(config, response)).then(function (_response) { + return _response || response; + }); + }); + }, + afterHTTP: function afterHTTP() {}, + queryTransform: function queryTransform(Model, params, opts) { + return params; + }, + serialize: function serialize(Model, data, opts) { + opts || (opts = {}); + if (isFunction(opts.serialize)) { + return opts.serialize(Model, data, opts); } - }, { - key: 'DEL', - value: function DEL(url, config) { - config || (config = {}); - if (!('method' in config)) { - config.method = 'delete'; - } - return this.HTTP(deepMixIn(config, { - url: url - })); + return data; + }, + log: function log(level) { + for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { + args[_key3 - 1] = arguments[_key3]; } - }, { - key: 'find', - value: function find(resourceConfig, id, options) { - var _this = this; - options = options ? copy(options) : {}; - options.suffix = options.suffix || resourceConfig.suffix; - options.params || (options.params = {}); - options.params = _this.defaults.queryTransform(resourceConfig, options.params); - return _this.GET(_this.getPath('find', resourceConfig, id, options), options).then(function (data) { - var item = (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data); - return !item ? reject(new Error('Not Found!')) : item; - }); + + if (level && !args.length) { + args.push(level); + level = 'debug'; } - }, { - key: 'findAll', - value: function findAll(resourceConfig, params, options) { - var _this = this; - options = options ? copy(options) : {}; - options.suffix = options.suffix || resourceConfig.suffix; - options.params || (options.params = {}); - if (params) { - params = _this.defaults.queryTransform(resourceConfig, params); - deepMixIn(options.params, params); - } - return _this.GET(_this.getPath('findAll', resourceConfig, params, options), options).then(function (data) { - return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data); - }); + if (level === 'debug' && !this.debug) { + return; } - }, { - key: 'create', - value: function create(resourceConfig, attrs, options) { - var _this = this; - options = options ? copy(options) : {}; - options.suffix = options.suffix || resourceConfig.suffix; - options.params || (options.params = {}); - options.params = _this.defaults.queryTransform(resourceConfig, options.params); - return _this.POST(_this.getPath('create', resourceConfig, attrs, options), options.serialize ? options.serialize(resourceConfig, attrs) : _this.defaults.serialize(resourceConfig, attrs), options).then(function (data) { - return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data); - }); + var prefix = level.toUpperCase() + ': (' + this.name + ')'; + if (console[level]) { + var _console2; + + (_console2 = console)[level].apply(_console2, [prefix].concat(args)); + } else { + var _console3; + + (_console3 = console).log.apply(_console3, [prefix].concat(args)); } - }, { - key: 'update', - value: function update(resourceConfig, id, attrs, options) { - var _this = this; - options = options ? copy(options) : {}; - options.suffix = options.suffix || resourceConfig.suffix; - options.params || (options.params = {}); - options.params = _this.defaults.queryTransform(resourceConfig, options.params); - return _this.PUT(_this.getPath('update', resourceConfig, id, options), options.serialize ? options.serialize(resourceConfig, attrs) : _this.defaults.serialize(resourceConfig, attrs), options).then(function (data) { - return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data); + }, + beforePOST: function beforePOST() {}, + POST: function POST(url, data, config, opts) { + var self = this; + config || (config = {}); + config.url = url || config.url; + config.data = data || config.data; + config.method = config.method || 'post'; + return resolve(self.beforePOST(url, data, config, opts)).then(function (_config) { + config = _config || config; + return self.HTTP(config, opts); + }).then(function (response) { + return resolve(self.afterPOST(url, data, config, opts, response)).then(function (_response) { + return _response || response; }); - } - }, { - key: 'updateAll', - value: function updateAll(resourceConfig, attrs, params, options) { - var _this = this; - options = options ? copy(options) : {}; - options.suffix = options.suffix || resourceConfig.suffix; - options.params || (options.params = {}); - if (params) { - params = _this.defaults.queryTransform(resourceConfig, params); - deepMixIn(options.params, params); - } - return this.PUT(_this.getPath('updateAll', resourceConfig, attrs, options), options.serialize ? options.serialize(resourceConfig, attrs) : _this.defaults.serialize(resourceConfig, attrs), options).then(function (data) { - return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data); + }); + }, + afterPOST: function afterPOST() {}, + beforePUT: function beforePUT() {}, + PUT: function PUT(url, data, config, opts) { + var self = this; + config || (config = {}); + config.url = url || config.url; + config.data = data || config.data; + config.method = config.method || 'put'; + return resolve(self.beforePUT(url, data, config, opts)).then(function (_config) { + config = _config || config; + return self.HTTP(config, opts); + }).then(function (response) { + return resolve(self.afterPUT(url, data, config, opts, response)).then(function (_response) { + return _response || response; }); - } - }, { - key: 'destroy', - value: function destroy(resourceConfig, id, options) { - var _this = this; - options = options ? copy(options) : {}; - options.suffix = options.suffix || resourceConfig.suffix; - options.params || (options.params = {}); - options.params = _this.defaults.queryTransform(resourceConfig, options.params); - return _this.DEL(_this.getPath('destroy', resourceConfig, id, options), options).then(function (data) { - return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data); + }); + }, + afterPUT: function afterPUT() {}, + update: function update(Model, id, props, opts) { + var self = this; + opts = opts ? copy(opts) : {}; + opts.params || (opts.params = {}); + opts.params = self.queryTransform(Model, opts.params, opts); + opts.op = 'update'; + self.dbg(opts.op, Model, id, props, opts); + return resolve(self.beforeUpdate(Model, id, props, opts)).then(function () { + return self.POST(self.getPath('update', Model, id, opts), self.serialize(Model, props, opts), opts); + }).then(function (response) { + return self.deserialize(Model, response, opts); + }).then(function (data) { + return resolve(self.afterUpdate(Model, id, props, opts, data)).then(function (_data) { + return _data || data; }); - } - }, { - key: 'destroyAll', - value: function destroyAll(resourceConfig, params, options) { - var _this = this; - options = options ? copy(options) : {}; - options.suffix = options.suffix || resourceConfig.suffix; - options.params || (options.params = {}); - if (params) { - params = _this.defaults.queryTransform(resourceConfig, params); - deepMixIn(options.params, params); - } - return this.DEL(_this.getPath('destroyAll', resourceConfig, params, options), options).then(function (data) { - return (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data); + }); + }, + updateAll: function updateAll(Model, props, query, opts) { + var self = this; + query || (query = {}); + opts = opts ? copy(opts) : {}; + opts.params || (opts.params = {}); + opts.op = 'updateAll'; + self.dbg(opts.op, Model, props, query, opts); + deepMixIn(opts.params, query); + opts.params = self.queryTransform(Model, opts.params, opts); + return resolve(self.beforeUpdateAll(Model, props, query, opts)).then(function () { + return self.PUT(self.getPath('updateAll', Model, query, opts), opts); + }).then(function (response) { + return self.deserialize(Model, response, opts); + }).then(function (data) { + return resolve(self.afterUpdateAll(Model, props, query, opts, data)).then(function (_data) { + return _data || data; }); - } - }]); - - return DSHttpAdapter; - })(); + }); + } + }); DSHttpAdapter.addAction = function (name, opts) { if (!name || !isString(name)) { @@ -515,12 +603,12 @@ return /******/ (function(modules) { // webpackBootstrap if (typeof _opts.getEndpoint === 'function') { config.url = _opts.getEndpoint(this, _opts); } else { - var args = [_opts.basePath || this.basePath || adapter.defaults.basePath, adapter.getEndpoint(this, isSorN(id) ? id : null, _opts)]; + var _args = [_opts.basePath || this.basePath || adapter.defaults.basePath, adapter.getEndpoint(this, isSorN(id) ? id : null, _opts)]; if (isSorN(id)) { - args.push(id); + _args.push(id); } - args.push(opts.pathname || name); - config.url = makePath.apply(null, args); + _args.push(opts.pathname || name); + config.url = makePath.apply(null, _args); } config.method = config.method || 'GET'; config.modelName = this.name; @@ -549,11 +637,11 @@ return /******/ (function(modules) { // webpackBootstrap }; DSHttpAdapter.version = { - full: '3.0.0-alpha.1', + full: '3.0.0-alpha.2', major: parseInt('3', 10), minor: parseInt('0', 10), patch: parseInt('0', 10), - alpha: true ? '1' : false, + alpha: true ? '2' : false, beta: true ? 'false' : false }; diff --git a/node/package.json b/node/package.json index a7f55eb..d0bcd9d 100644 --- a/node/package.json +++ b/node/package.json @@ -1,7 +1,7 @@ { "name": "js-data-http-node", "description": "Node.js HTTP adapter for js-data.", - "version": "3.0.0-alpha.1", + "version": "3.0.0-alpha.2", "homepage": "http://www.js-data.io/docs/dshttpadapter", "repository": { "type": "git", @@ -18,7 +18,7 @@ "http", "node.js" ], - "dependencies": { - "axios": "0.7.0" + "peerDependencies": { + "axios": "0.7.x" } } diff --git a/package.json b/package.json index 7a7bdb3..15114df 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "lint": "standard src/**/*.js", "bundle": "webpack --config webpack.config.js --colors", "min": "uglifyjs dist/js-data-http.js -o dist/js-data-http.min.js --source-map dist/js-data-http.min.map --source-map-url js-data-http.min.map -v -m -c --screw-ie8", + "min_fetch": "uglifyjs fetch/dist/js-data-fetch.js -o fetch/dist/js-data-fetch.min.js --source-map dist/js-data-fetch.min.map --source-map-url js-data-fetch.min.map -v -m -c --screw-ie8", "version": "node scripts/version.js", "banner": "node scripts/banner.js", "gzip": "echo gzipped size: $(cat dist/js-data-http.min.js | gzip -f9 | wc -c)kb", diff --git a/src/index.js b/src/index.js index a75e280..b0d6023 100644 --- a/src/index.js +++ b/src/index.js @@ -8,18 +8,33 @@ try { let { DSUtils } = JSData let { deepMixIn, removeCircular, copy, makePath, isString, isNumber } = DSUtils -class Defaults { - queryTransform (resourceConfig, params) { - return params - } - - deserialize (resourceConfig, data) { - return data ? ('data' in data ? data.data : data) : data - } - - serialize (resourceConfig, data) { - return data - } +/** + * DSHttpAdapter class. + * @class DSHttpAdapter + * + * @param {Object} [opts] Configuration options. + * @param {string} [opts.basePath=''] + * @param {boolean} [opts.debug=false] + * @param {boolean} [opts.forceTrailingSlash=false] + * @param {Object} [opts.http=axios] + * @param {Object} [opts.httpConfig={}] + * @param {string} [opts.suffix=''] + * @param {boolean} [opts.useFetch=false] + */ +function DSHttpAdapter (opts) { + const self = this + + // Default values for arguments + opts || (opts = {}) + + // Default and user-defined settings + self.basePath = opts.basePath === undefined ? '' : opts.basePath + self.debug = opts.debug === undefined ? false : opts.debug + self.forceTrailingSlash = opts.forceTrailingSlash === undefined ? false : opts.forceTrailingSlash + self.http = opts.http === undefined ? axios : opts.http + self.httpConfig = opts.httpConfig === undefined ? {} : opts.httpConfig + self.suffix = opts.suffix === undefined ? '' : opts.suffix + self.useFetch = opts.useFetch === undefined ? false : opts.useFetch log () {} @@ -28,11 +43,24 @@ class Defaults { let defaultsPrototype = Defaults.prototype -defaultsPrototype.basePath = '' + beforeDEL () {}, -defaultsPrototype.forceTrailingSlash = '' + DEL (url, config, opts) { + const self = this + config || (config = {}) + config.url = url || config.url + config.method = config.method || 'delete' + return resolve(self.beforeDEL(url, config, opts)).then(function (_config) { + config = _config || config + return self.HTTP(config, opts) + }).then(function (response) { + return resolve(self.afterDEL(url, config, opts, response)).then(function (_response) { + return _response || response + }) + }) + }, -defaultsPrototype.httpConfig = {} + afterDEL () {}, defaultsPrototype.verbsUseBasePath = false @@ -43,10 +71,15 @@ class DSHttpAdapter { options = options || {} this.defaults = new Defaults() if (console) { - this.defaults.log = (a, b) => console[typeof console.info === 'function' ? 'info' : 'log'](a, b) + console[typeof console.error === 'function' ? 'error' : 'log'](...args) } - if (console) { - this.defaults.error = (a, b) => console[typeof console.error === 'function' ? 'error' : 'log'](a, b) + }, + + fetch (config, opts) { + const requestConfig = { + method: config.method, + // turn the plain headers object into the Fetch Headers object + headers: new Headers(config.headers) } deepMixIn(this.defaults, options) this.http = options.http || axios @@ -142,9 +175,6 @@ class DSHttpAdapter { if (_this.defaults.forceTrailingSlash && config.url[config.url.length - 1] !== '/' && !config.urlOverride) { config.url += '/' } - // if (typeof config.data === 'object') { - // config.data = removeCircular(config.data) - // } config.method = config.method.toUpperCase() let suffix = config.suffix || _this.defaults.suffix if (suffix && config.url.substr(config.url.length - suffix.length) !== suffix && !config.urlOverride) { @@ -180,7 +210,7 @@ class DSHttpAdapter { } } - if (!this.http) { + if (!self.http) { throw new Error('You have not configured this adapter with an http library!') } diff --git a/test/browser/create.spec.js b/test/browser/create.spec.js index 992d09f..48f2dcb 100644 --- a/test/browser/create.spec.js +++ b/test/browser/create.spec.js @@ -1,4 +1,4 @@ -describe('DSHttpAdapter.create(resourceConfig, attrs, options)', function () { +describe.only('create', function () { it('should make a POST request', function () { var _this = this; From e5d7f4b2f8f73954fa81aae2c489204b30881f1e Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Sat, 9 Jan 2016 17:11:06 -0800 Subject: [PATCH 07/24] Stable Version 3.0.0-alpha.2 --- .bowerrc | 3 - .gitignore | 1 - README.md | 1 + bower.json | 10 +- circle.yml | 6 +- dist/js-data-fetch.min.map | 1 - dist/js-data-http.js | 135 +++--- fetch/.gitignore | 4 +- fetch/.npmignore | 8 +- fetch/dist/js-data-fetch.js | 188 +++++---- fetch/dist/js-data-fetch.js.map | 1 + fetch/dist/js-data-fetch.min.js | 4 +- fetch/dist/js-data-fetch.min.map | 1 + fetch/karma.conf.js | 81 ++++ fetch/karma.start.js | 77 ++++ fetch/package.json | 2 +- fetch/webpack.config.js | 36 +- karma.conf.js | 59 ++- karma.start.js | 117 ++---- mocha.start.js | 238 ----------- node/.gitignore | 2 - node/.npmignore | 2 - node/LICENSE | 2 +- node/dist/js-data-fetch.js | 644 ----------------------------- node/dist/js-data-http-node.js | 182 ++++---- node/dist/js-data-http-node.js.map | 1 + node/mocha.start.js | 292 +++---------- node/package.json | 2 +- node/test/unit/index.js | 36 -- node/webpack.config.js | 11 +- package.json | 2 +- src/index.js | 2 + test/DEL.test.js | 3 + test/GET.test.js | 3 + test/HTTP.test.js | 3 + test/POST.test.js | 3 + test/PUT.test.js | 3 + test/browser/create.spec.js | 31 -- test/browser/destroy.spec.js | 29 -- test/browser/destroyAll.spec.js | 35 -- test/browser/find.spec.js | 156 ------- test/browser/findAll.spec.js | 93 ----- test/browser/update.spec.js | 31 -- test/browser/updateAll.spec.js | 35 -- test/create.test.js | 34 ++ test/deserialize.test.js | 3 + test/destroy.test.js | 29 ++ test/destroyAll.test.js | 35 ++ test/fetch.test.js | 3 + test/find.test.js | 115 ++++++ test/findAll.test.js | 35 ++ test/getEndpoint.test.js | 3 + test/getPath.test.js | 3 + test/node/create.spec.js | 16 - test/queryTransform.test.js | 3 + test/serialize.test.js | 3 + test/static.addAction.test.js | 3 + test/static.addActions.test.js | 3 + test/unit/index.js | 36 -- test/update.test.js | 31 ++ test/updateAll.test.js | 35 ++ 61 files changed, 988 insertions(+), 1978 deletions(-) delete mode 100644 .bowerrc delete mode 100644 dist/js-data-fetch.min.map create mode 100644 fetch/dist/js-data-fetch.js.map create mode 100644 fetch/dist/js-data-fetch.min.map create mode 100644 fetch/karma.conf.js create mode 100644 fetch/karma.start.js delete mode 100644 mocha.start.js delete mode 100644 node/dist/js-data-fetch.js create mode 100644 node/dist/js-data-http-node.js.map delete mode 100644 node/test/unit/index.js create mode 100644 test/DEL.test.js create mode 100644 test/GET.test.js create mode 100644 test/HTTP.test.js create mode 100644 test/POST.test.js create mode 100644 test/PUT.test.js delete mode 100644 test/browser/create.spec.js delete mode 100644 test/browser/destroy.spec.js delete mode 100644 test/browser/destroyAll.spec.js delete mode 100644 test/browser/find.spec.js delete mode 100644 test/browser/findAll.spec.js delete mode 100644 test/browser/update.spec.js delete mode 100644 test/browser/updateAll.spec.js create mode 100644 test/create.test.js create mode 100644 test/deserialize.test.js create mode 100644 test/destroy.test.js create mode 100644 test/destroyAll.test.js create mode 100644 test/fetch.test.js create mode 100644 test/find.test.js create mode 100644 test/findAll.test.js create mode 100644 test/getEndpoint.test.js create mode 100644 test/getPath.test.js delete mode 100644 test/node/create.spec.js create mode 100644 test/queryTransform.test.js create mode 100644 test/serialize.test.js create mode 100644 test/static.addAction.test.js create mode 100644 test/static.addActions.test.js delete mode 100644 test/unit/index.js create mode 100644 test/update.test.js create mode 100644 test/updateAll.test.js diff --git a/.bowerrc b/.bowerrc deleted file mode 100644 index baa91a3..0000000 --- a/.bowerrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "directory": "bower_components" -} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 94442af..815fef0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ -node_modules/ bower_components/ .idea/ diff --git a/README.md b/README.md index b262478..9b9533d 100644 --- a/README.md +++ b/README.md @@ -95,6 +95,7 @@ Copyright (c) 2014-2016 js-data-http project authors [sl_b]: http://slack.js-data.io/badge.svg [sl_l]: http://slack.js-data.io +[so]: http://stackoverflow.com/questions/tagged/jsdata [npm_b]: https://img.shields.io/npm/v/js-data-http.svg?style=flat [npm_l]: https://www.npmjs.org/package/js-data-http [circle_b]: https://img.shields.io/circleci/project/js-data/js-data-http/master.svg?style=flat diff --git a/bower.json b/bower.json index 7d3d194..d6ec02a 100644 --- a/bower.json +++ b/bower.json @@ -17,12 +17,13 @@ ".*", "*.iml", "src/", - "lib/", "doc/", - "guide/", + "build_examples/", "coverage/", - "Gruntfile.js", + "scripts/", + "junit/", "node_modules/", + "fetch/", "node/", "test/", "package.json", @@ -30,7 +31,6 @@ "karma.start.js" ], "dependencies": { - "axios": "0.5.x", - "js-data": ">=2.0.0" + "js-data": ">=3.0.0-alpha.8" } } diff --git a/circle.yml b/circle.yml index f864220..f3696f9 100644 --- a/circle.yml +++ b/circle.yml @@ -1,15 +1,11 @@ machine: node: version: 4.1.0 -dependencies: - pre: - - bower install - cache_directories: - - "bower_components" test: override: - npm run ci general: artifacts: - "dist" + - "fetch/dist" - "coverage" diff --git a/dist/js-data-fetch.min.map b/dist/js-data-fetch.min.map deleted file mode 100644 index 6e73dfd..0000000 --- a/dist/js-data-fetch.min.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["fetch/dist/js-data-fetch.js"],"names":["root","factory","exports","module","require","define","amd","a","i","this","__WEBPACK_EXTERNAL_MODULE_2__","__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","forOwn","key","isArray","forEach","v","window","toString","toISOString","isObject","toJson","push","indexOf","DSHttpAdapter","opts","self","basePath","undefined","debug","forceTrailingSlash","http","axios","httpConfig","suffix","useFetch","hasFetch","_typeof","Symbol","iterator","obj","constructor","_jsData","_","utils","copy","deepMixIn","fillIn","isFunction","isNumber","isSorN","isString","resolve","reject","fetch","e","beforeCreate","create","Model","props","queryTransform","op","dbg","then","POST","getPath","serialize","response","deserialize","data","afterCreate","_data","_len2","_key2","log","apply","concat","beforeDEL","DEL","config","method","_config","HTTP","afterDEL","_response","raw","beforeDestroy","destroy","afterDestroy","beforeDestroyAll","destroyAll","query","afterDestroyAll","error","console","_console","_fetch","_x","_x2","requestConfig","headers","Headers","body","Request","json","beforeFind","find","GET","afterFind","findAll","beforeFindAll","afterFindAll","beforeGET","afterGET","getEndpoint","_this","item","parentKey","endpoint","hasOwnProperty","parentField","parentDef","getResource","parent","parentId","get","idAttribute","_ret","_opts","beforeHTTP","logResponse","str","start","toUTCString","toUpperCase","status","Date","getTime","substr","Error","afterHTTP","level","_len3","_key3","prefix","name","_console2","_console3","beforePOST","afterPOST","beforePUT","PUT","afterPUT","update","beforeUpdate","afterUpdate","updateAll","beforeUpdateAll","afterUpdateAll","addAction","TypeError","target","request","responseError","err","adapter","getAdapter","defaultAdapter","_args","defaults","pathname","modelName","addActions","version","full","major","parseInt","minor","patch","alpha","beta"],"mappings":"CASA,SAA2CA,EAAMC,GAChD,GAAsB,gBAAZC,UAA0C,gBAAXC,QACxCA,OAAOD,QAAUD,EAAQG,QAAQ,WAAYA,QAAQ,kBACjD,IAAqB,kBAAXC,SAAyBA,OAAOC,IAC9CD,QAAQ,UAAW,aAAcJ,OAC7B,CACJ,GAAIM,GAAuB,gBAAZL,SAAuBD,EAAQG,QAAQ,WAAYA,QAAQ,cAAgBH,EAAQD,EAAK,WAAYA,EAAgB,UACnI,KAAI,GAAIQ,KAAKD,IAAuB,gBAAZL,SAAuBA,QAAUF,GAAMQ,GAAKD,EAAEC,KAErEC,KAAM,SAASC,EAA+BC,GACjD,MAAgB,UAAUC,GAKhB,QAASC,GAAoBC,GAG5B,GAAGC,EAAiBD,GACnB,MAAOC,GAAiBD,GAAUZ,OAGnC,IAAIC,GAASY,EAAiBD,IAC7BZ,WACAc,GAAIF,EACJG,QAAQ,EAUT,OANAL,GAAQE,GAAUI,KAAKf,EAAOD,QAASC,EAAQA,EAAOD,QAASW,GAG/DV,EAAOc,QAAS,EAGTd,EAAOD,QAvBf,GAAIa,KAqCJ,OATAF,GAAoBM,EAAIP,EAGxBC,EAAoBO,EAAIL,EAGxBF,EAAoBQ,EAAI,GAGjBR,EAAoB,KAK/B,SAASV,EAAQD,EAASW,GAE/B,YA6BA,SAASS,GAAcC,GACrB,MAAgB,OAATA,GAA2B,KAAVA,EAE1B,QAASC,GAAKC,EAAOC,GAEnB,MADAA,KAAcA,EAAY,IACnBD,EAAME,OAAOL,GAAeE,KAAKE,GAE1C,QAASE,KACP,IAAK,GAAIC,GAAOC,UAAUC,OAAQC,EAAOC,MAAMJ,GAAOK,EAAO,EAAUL,EAAPK,EAAaA,IAC3EF,EAAKE,GAAQJ,UAAUI,EAGzB,IAAIC,GAASX,EAAKQ,EAAM,IACxB,OAAOG,GAAOC,QAAQ,oBAAqB,OAG7C,QAASC,GAAOC,GACd,MAAOC,oBAAmBD,GAAKF,QAAQ,QAAS,KAAKA,QAAQ,QAAS,KAAKA,QAAQ,OAAQ,KAAKA,QAAQ,QAAS,KAAKA,QAAQ,OAAQ,KAGxI,QAASI,GAASC,EAAKC,GACrB,IAAKA,EACH,MAAOD,EAGT,IAAIE,KAwBJ,OAtBAC,GAAOF,EAAQ,SAAUJ,EAAKO,GAChB,OAARP,GAA+B,mBAARA,KAGtBQ,EAAQR,KACXA,GAAOA,IAGTA,EAAIS,QAAQ,SAAUC,GACY,kBAA5BC,OAAOC,SAAShC,KAAK8B,GACvBA,EAAIA,EAAEG,cACGC,EAASJ,KAClBA,EAAIK,EAAOL,IAEbL,EAAMW,KAAKjB,EAAOQ,GAAO,IAAMR,EAAOW,SAItCL,EAAMZ,OAAS,IACjBU,IAA6B,KAArBA,EAAIc,QAAQ,KAAc,IAAM,KAAOZ,EAAMnB,KAAK,MAGrDiB,EAgBT,QAASe,GAAcC,GACrB,GAAIC,GAAOjD,IAGXgD,KAASA,MAGTC,EAAKC,SAA6BC,SAAlBH,EAAKE,SAAyB,GAAKF,EAAKE,SACxDD,EAAKG,MAAuBD,SAAfH,EAAKI,OAAsB,EAAQJ,EAAKI,MACrDH,EAAKI,mBAAiDF,SAA5BH,EAAKK,oBAAmC,EAAQL,EAAKK,mBAC/EJ,EAAKK,KAAqBH,SAAdH,EAAKM,KAAqBC,EAAQP,EAAKM,KACnDL,EAAKO,WAAiCL,SAApBH,EAAKQ,cAAgCR,EAAKQ,WAC5DP,EAAKQ,OAAyBN,SAAhBH,EAAKS,OAAuB,GAAKT,EAAKS,OACpDR,EAAKS,SAA6BP,SAAlBH,EAAKU,UAAyB,EAAQV,EAAKU,SAGvDC,IAAaV,EAAKS,UAA0BP,SAAdF,EAAKK,MA5GzC,GAAIM,GAA4B,kBAAXC,SAAoD,gBAApBA,QAAOC,SAAwB,SAAUC,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXF,SAAyBE,EAAIC,cAAgBH,OAAS,eAAkBE,IAEtOE,EAAU7D,EAAoB,GAG9BmD,EAAQnD,EAAoB,GAC5B8D,EAAID,EAAQE,MAAMD,EAClBE,EAAOH,EAAQE,MAAMC,KACrBC,EAAYJ,EAAQE,MAAME,UAC1BC,EAASL,EAAQE,MAAMG,OACvBnC,EAAS8B,EAAQE,MAAMhC,OACvBE,EAAU4B,EAAQE,MAAM9B,QACxBkC,EAAaN,EAAQE,MAAMI,WAC3BC,EAAWP,EAAQE,MAAMK,SACzB7B,EAAWsB,EAAQE,MAAMxB,SACzB8B,EAASR,EAAQE,MAAMM,OACvBC,EAAWT,EAAQE,MAAMO,SACzBC,EAAUV,EAAQE,MAAMQ,QACxBC,EAASX,EAAQE,MAAMS,OACvBhC,EAASqB,EAAQE,MAAMvB,OAEvBe,GAAW,CAEf,KACEA,EAAWnB,QAAUA,OAAOqC,MAC5B,MAAOC,IAsFTR,EAAOvB,GACLgC,aAAc,aACdC,OAAQ,SAAgBC,EAAOC,EAAOlC,GACpC,GAAIC,GAAOjD,IAMX,OALAgD,GAAOA,EAAOoB,EAAKpB,MACnBA,EAAKf,SAAWe,EAAKf,WACrBe,EAAKf,OAASgB,EAAKkC,eAAeF,EAAOjC,EAAKf,OAAQe,GACtDA,EAAKoC,GAAK,SACVnC,EAAKoC,IAAIrC,EAAKoC,GAAIH,EAAOC,EAAOlC,GACzB2B,EAAQ1B,EAAK8B,aAAaE,EAAOC,EAAOlC,IAAOsC,KAAK,WACzD,MAAOrC,GAAKsC,KAAKtC,EAAKuC,QAAQ,SAAUP,EAAOC,EAAOlC,GAAOC,EAAKwC,UAAUR,EAAOC,EAAOlC,GAAOA,KAChGsC,KAAK,SAAUI,GAChB,MAAOzC,GAAK0C,YAAYV,EAAOS,EAAU1C,KACxCsC,KAAK,SAAUM,GAChB,MAAOjB,GAAQ1B,EAAK4C,YAAYZ,EAAOW,EAAM5C,IAAOsC,KAAK,SAAUQ,GACjE,MAAOA,IAASF,OAItBC,YAAa,aACbR,IAAK,WACH,IAAK,GAAIU,GAAQ1E,UAAUC,OAAQC,EAAOC,MAAMuE,GAAQC,EAAQ,EAAWD,EAARC,EAAeA,IAChFzE,EAAKyE,GAAS3E,UAAU2E,EAG1BhG,MAAKiG,IAAIC,MAAMlG,MAAO,SAASmG,OAAO5E,KAExC6E,UAAW,aACXC,IAAK,SAAarE,EAAKsE,EAAQtD,GAC7B,GAAIC,GAAOjD,IAIX,OAHAsG,KAAWA,MACXA,EAAOtE,IAAMA,GAAOsE,EAAOtE,IAC3BsE,EAAOC,OAASD,EAAOC,QAAU,SAC1B5B,EAAQ1B,EAAKmD,UAAUpE,EAAKsE,EAAQtD,IAAOsC,KAAK,SAAUkB,GAE/D,MADAF,GAASE,GAAWF,EACbrD,EAAKwD,KAAKH,EAAQtD,KACxBsC,KAAK,SAAUI,GAChB,MAAOf,GAAQ1B,EAAKyD,SAAS1E,EAAKsE,EAAQtD,EAAM0C,IAAWJ,KAAK,SAAUqB,GACxE,MAAOA,IAAajB,OAI1BgB,SAAU,aACVf,YAAa,SAAqBV,EAAOW,EAAM5C,GAE7C,MADAA,KAASA,MACLuB,EAAWvB,EAAK2C,aACX3C,EAAK2C,YAAYV,EAAOW,EAAM5C,GAEnCA,EAAK4D,IACAhB,EAEFA,GAAO,QAAUA,GAAOA,EAAKA,KAAcA,GAEpDiB,cAAe,aACfC,QAAS,SAAiB7B,EAAO1E,EAAIyC,GACnC,GAAIC,GAAOjD,IAMX,OALAgD,GAAOA,EAAOoB,EAAKpB,MACnBA,EAAKf,SAAWe,EAAKf,WACrBe,EAAKf,OAASgB,EAAKkC,eAAeF,EAAOjC,EAAKf,OAAQe,GACtDA,EAAKoC,GAAK,UACVnC,EAAKoC,IAAIrC,EAAKoC,GAAIH,EAAO1E,EAAIyC,GACtB2B,EAAQ1B,EAAK4D,cAAc5B,EAAO1E,EAAIyC,IAAOsC,KAAK,WACvD,MAAOrC,GAAKoD,IAAIpD,EAAKuC,QAAQ,UAAWP,EAAO1E,EAAIyC,GAAOA,KACzDsC,KAAK,SAAUI,GAChB,MAAOzC,GAAK0C,YAAYV,EAAOS,EAAU1C,KACxCsC,KAAK,SAAUM,GAChB,MAAOjB,GAAQ1B,EAAK8D,aAAa9B,EAAO1E,EAAIqF,EAAM5C,IAAOsC,KAAK,SAAUQ,GACtE,MAAOA,IAASF,OAItBoB,iBAAkB,aAClBC,WAAY,SAAoBhC,EAAOiC,EAAOlE,GAC5C,GAAIC,GAAOjD,IAQX,OAPAkH,KAAUA,MACVlE,EAAOA,EAAOoB,EAAKpB,MACnBA,EAAKf,SAAWe,EAAKf,WACrBe,EAAKoC,GAAK,UACVnC,EAAKoC,IAAIrC,EAAKoC,GAAIH,EAAOiC,EAAOlE,GAChCqB,EAAUrB,EAAKf,OAAQiF,GACvBlE,EAAKf,OAASgB,EAAKkC,eAAeF,EAAOjC,EAAKf,OAAQe,GAC/C2B,EAAQ1B,EAAK+D,iBAAiB/B,EAAOiC,EAAOlE,IAAOsC,KAAK,WAC7D,MAAOrC,GAAKoD,IAAIpD,EAAKuC,QAAQ,aAAcP,EAAOiC,EAAOlE,GAAOA,KAC/DsC,KAAK,SAAUI,GAChB,MAAOzC,GAAK0C,YAAYV,EAAOS,EAAU1C,KACxCsC,KAAK,SAAUM,GAChB,MAAOjB,GAAQ1B,EAAKkE,gBAAgBlC,EAAOiC,EAAOtB,EAAM5C,IAAOsC,KAAK,SAAUQ,GAC5E,MAAOA,IAASF,OAItBwB,MAAO,WACL,GAAIC,QAAS,CACX,GAAIC,IAEHA,EAAWD,SAAkC,kBAAlBA,SAAQD,MAAuB,QAAU,OAAOlB,MAAMoB,EAAUjG,aAGhGwD,MAAO,SAAU0C,GACf,QAAS1C,GAAM2C,EAAIC,GACjB,MAAOF,GAAOrB,MAAMlG,KAAMqB,WAO5B,MAJAwD,GAAMpC,SAAW,WACf,MAAO8E,GAAO9E,YAGToC,GACP,SAAUyB,EAAQtD,GAClB,GAAI0E,IACFnB,OAAQD,EAAOC,OAEfoB,QAAS,GAAIC,SAAQtB,EAAOqB,SAO9B,OAJIrB,GAAOV,OACT8B,EAAcG,KAAOjF,EAAO0D,EAAOV,OAG9Bf,MAAM,GAAIiD,SAAQ/F,EAASuE,EAAOtE,IAAKsE,EAAOrE,QAASyF,IAAgBpC,KAAK,SAAUI,GAK3F,MAJAA,GAASY,QACPC,OAAQD,EAAOC,OACfvE,IAAKsE,EAAOtE,KAEP0D,EAASqC,OAAOzC,KAAK,SAAUM,GAEpC,MADAF,GAASE,KAAOA,EACTF,QAIbsC,WAAY,aACZC,KAAM,SAAchD,EAAO1E,EAAIyC,GAC7B,GAAIC,GAAOjD,IAMX,OALAgD,GAAOA,EAAOoB,EAAKpB,MACnBA,EAAKf,SAAWe,EAAKf,WACrBe,EAAKf,OAASgB,EAAKkC,eAAeF,EAAOjC,EAAKf,OAAQe,GACtDA,EAAKoC,GAAK,OACVnC,EAAKoC,IAAIrC,EAAKoC,GAAIH,EAAO1E,EAAIyC,GACtB2B,EAAQ1B,EAAK+E,WAAW/C,EAAO1E,EAAIyC,IAAOsC,KAAK,WACpD,MAAOrC,GAAKiF,IAAIjF,EAAKuC,QAAQ,OAAQP,EAAO1E,EAAIyC,GAAOA,KACtDsC,KAAK,SAAUI,GAChB,MAAOzC,GAAK0C,YAAYV,EAAOS,EAAU1C,KACxCsC,KAAK,SAAUM,GAChB,MAAOjB,GAAQ1B,EAAKkF,UAAUlD,EAAO1E,EAAIqF,EAAM5C,IAAOsC,KAAK,SAAUQ,GACnE,MAAOA,IAASF,OAItBuC,UAAW,aACXC,QAAS,SAAiBnD,EAAOiC,EAAOlE,GACtC,GAAIC,GAAOjD,IAQX,OAPAkH,KAAUA,MACVlE,EAAOA,EAAOoB,EAAKpB,MACnBA,EAAKf,SAAWe,EAAKf,WACrBe,EAAKoC,GAAK,UACVnC,EAAKoC,IAAIrC,EAAKoC,GAAIH,EAAOiC,EAAOlE,GAChCqB,EAAUrB,EAAKf,OAAQiF,GACvBlE,EAAKf,OAASgB,EAAKkC,eAAeF,EAAOjC,EAAKf,OAAQe,GAC/C2B,EAAQ1B,EAAKoF,cAAcpD,EAAOiC,EAAOlE,IAAOsC,KAAK,WAC1D,MAAOrC,GAAKiF,IAAIjF,EAAKuC,QAAQ,UAAWP,EAAOiC,EAAOlE,GAAOA,KAC5DsC,KAAK,SAAUI,GAChB,MAAOzC,GAAK0C,YAAYV,EAAOS,EAAU1C,KACxCsC,KAAK,SAAUM,GAChB,MAAOjB,GAAQ1B,EAAKqF,aAAarD,EAAOiC,EAAOtB,EAAM5C,IAAOsC,KAAK,SAAUQ,GACzE,MAAOA,IAASF,OAItB2C,UAAW,aACXL,IAAK,SAAalG,EAAKsE,EAAQtD,GAC7B,GAAIC,GAAOjD,IAIX,OAHAsG,KAAWA,MACXA,EAAOtE,IAAMA,GAAOsE,EAAOtE,IAC3BsE,EAAOC,OAASD,EAAOC,QAAU,MAC1B5B,EAAQ1B,EAAKsF,UAAUvG,EAAKsE,EAAQtD,IAAOsC,KAAK,SAAUkB,GAE/D,MADAF,GAASE,GAAWF,EACbrD,EAAKwD,KAAKH,EAAQtD,KACxBsC,KAAK,SAAUI,GAChB,MAAOf,GAAQ1B,EAAKuF,SAASxG,EAAKsE,EAAQtD,EAAM0C,IAAWJ,KAAK,SAAUqB,GACxE,MAAOA,IAAajB,OAI1B8C,SAAU,aACVC,YAAa,SAAqBxD,EAAO1E,EAAIyC,GAC3C,GAAI0F,GAAQ1I,IAEZgD,KAASA,MACTA,EAAKf,SAAWe,EAAKf,UAErB,IAAI0G,GAAOxF,OACPyF,EAAY3D,EAAM2D,UAClBC,EAAW7F,EAAK8F,eAAe,YAAc9F,EAAK6F,SAAW5D,EAAM4D,SACnEE,EAAc9D,EAAM8D,YACpBC,EAAY/D,EAAMgE,YAAYhE,EAAMiE,QACpCC,EAAWnG,EAAKf,OAAO2G,EAE3B,IAAIO,KAAa,IAAUP,IAAcI,EAIvC,MAHIG,MAAa,SACRnG,GAAKf,OAAO2G,GAEdC,CAcP,UAZO7F,GAAKf,OAAO2G,GAEflE,EAASnE,IAAOiE,EAASjE,GAC3BoI,EAAO1D,EAAMmE,IAAI7I,GACRoC,EAASpC,KAClBoI,EAAOpI,GAGLoI,IACFQ,EAAWA,GAAYR,EAAKC,KAAeD,EAAKI,GAAeJ,EAAKI,GAAaC,EAAUK,aAAe,QAGxGF,EAeF,MAAON,EAdP,IAAIS,GAAO,iBACFtG,GAAK6F,QACZ,IAAIU,KAKJ,OAJApH,GAAOa,EAAM,SAAUlC,EAAOsB,GAC5BmH,EAAMnH,GAAOtB,IAEfoD,EAAEqF,EAAOP,IAEPzG,EAAGpB,EAASuH,EAAMD,YAAYO,EAAWG,EAAUI,EAAOJ,EAAUN,OAIxE,OAAoE,YAA/C,mBAATS,GAAuB,YAAc1F,EAAQ0F,IAA4BA,EAAK/G,EAA1F,QAMNiD,QAAS,SAAiBe,EAAQtB,EAAO1E,EAAIyC,GAC3C,GAAIC,GAAOjD,IACXgD,KAASA,KACT,IAAIzB,IAA0B4B,SAAlBH,EAAKE,SAAyBD,EAAKC,SAAWF,EAAKE,SAAUD,EAAKwF,YAAYxD,EAAOP,EAASnE,IAAOiE,EAASjE,IAAkB,WAAXgG,EAAsBhG,EAAK,KAAMyC,GAIlK,QAHe,SAAXuD,GAAgC,WAAXA,GAAkC,YAAXA,IAC9ChF,EAAKsB,KAAKtC,GAELY,EAAS+E,MAAMjC,EAAQE,MAAO5C,IAEvCiI,WAAY,aACZ/C,KAAM,SAAcH,EAAQtD,GAe1B,QAASyG,GAAY7D,GACnB,GAAI8D,GAAMC,EAAMC,cAAgB,MAAQtD,EAAOC,OAAOsD,cAAgB,IAAMvD,EAAOtE,IAAM,MAAQ4D,EAAKkE,OAAS,MAAO,GAAIC,OAAOC,UAAYL,EAAMK,WAAa,IAChK,OAAIpE,GAAKkE,QAAU,KAAOlE,EAAKkE,OAAS,KAClC7G,EAAKgD,KACPhD,EAAKoC,IAAI,QAASqE,EAAK9D,GAElBA,IAEH3C,EAAKmE,OACPnE,EAAKmE,MAAM,YAAesC,EAAK9D,GAE1BhB,EAAOgB,IAzBlB,GAAI3C,GAAOjD,KACP2J,EAAQ,GAAII,KAChB/G,KAASA,MACTsD,EAASlC,EAAKkC,GACdA,EAASjC,EAAUiC,EAAQrD,EAAKO,YAC5BP,EAAKI,oBAA4D,MAAtCiD,EAAOtE,IAAIsE,EAAOtE,IAAIV,OAAS,KAC5DgF,EAAOtE,KAAO,KAEhBsE,EAAOC,OAASD,EAAOC,OAAOsD,aAC9B,IAAIpG,GAAS6C,EAAO7C,QAAUT,EAAKS,QAAUR,EAAKQ,MAoBlD,IAnBIA,GAAU6C,EAAOtE,IAAIiI,OAAO3D,EAAOtE,IAAIV,OAASmC,EAAOnC,UAAYmC,IACrE6C,EAAOtE,KAAOyB,IAkBXR,EAAKK,KACR,KAAM,IAAI4G,OAAM,6DAGlB,OAAOvF,GAAQ1B,EAAKuG,WAAWlD,IAAShB,KAAK,SAAUkB,GAErD,MADAF,GAASE,GAAWF,EAChB3C,IAAaV,EAAKS,UAAYV,EAAKU,WAAaT,EAAKK,MAChDL,EAAK4B,MAAMyB,EAAQtD,GAAMsC,KAAKmE,EAAaA,GAE7CxG,EAAKK,KAAKgD,GAAQhB,KAAKmE,EAAaA,KAC1CnE,KAAK,SAAUI,GAChB,MAAOf,GAAQ1B,EAAKkH,UAAU7D,EAAQZ,IAAWJ,KAAK,SAAUqB,GAC9D,MAAOA,IAAajB,OAI1ByE,UAAW,aACXhF,eAAgB,SAAwBF,EAAOhD,EAAQe,GACrD,MAAOf,IAETwD,UAAW,SAAmBR,EAAOW,EAAM5C,GAEzC,MADAA,KAASA,MACLuB,EAAWvB,EAAKyC,WACXzC,EAAKyC,UAAUR,EAAOW,EAAM5C,GAE9B4C,GAETK,IAAK,SAAamE,GAChB,IAAK,GAAIC,GAAQhJ,UAAUC,OAAQC,EAAOC,MAAM6I,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAWD,EAARC,EAAeA,IACpG/I,EAAK+I,EAAQ,GAAKjJ,UAAUiJ,EAO9B,IAJIF,IAAU7I,EAAKD,SACjBC,EAAKsB,KAAKuH,GACVA,EAAQ,SAEI,UAAVA,GAAsBpK,KAAKoD,MAA/B,CAGA,GAAImH,GAASH,EAAMP,cAAgB,MAAQ7J,KAAKwK,KAAO,GACvD,IAAInD,QAAQ+C,GAAQ,CAClB,GAAIK,IAEHA,EAAYpD,SAAS+C,GAAOlE,MAAMuE,GAAYF,GAAQpE,OAAO5E,QACzD,CACL,GAAImJ,IAEHA,EAAYrD,SAASpB,IAAIC,MAAMwE,GAAYH,GAAQpE,OAAO5E,OAG/DoJ,WAAY,aACZpF,KAAM,SAAcvD,EAAK4D,EAAMU,EAAQtD,GACrC,GAAIC,GAAOjD,IAKX,OAJAsG,KAAWA,MACXA,EAAOtE,IAAMA,GAAOsE,EAAOtE,IAC3BsE,EAAOV,KAAOA,GAAQU,EAAOV,KAC7BU,EAAOC,OAASD,EAAOC,QAAU,OAC1B5B,EAAQ1B,EAAK0H,WAAW3I,EAAK4D,EAAMU,EAAQtD,IAAOsC,KAAK,SAAUkB,GAEtE,MADAF,GAASE,GAAWF,EACbrD,EAAKwD,KAAKH,EAAQtD,KACxBsC,KAAK,SAAUI,GAChB,MAAOf,GAAQ1B,EAAK2H,UAAU5I,EAAK4D,EAAMU,EAAQtD,EAAM0C,IAAWJ,KAAK,SAAUqB,GAC/E,MAAOA,IAAajB,OAI1BkF,UAAW,aACXC,UAAW,aACXC,IAAK,SAAa9I,EAAK4D,EAAMU,EAAQtD,GACnC,GAAIC,GAAOjD,IAKX,OAJAsG,KAAWA,MACXA,EAAOtE,IAAMA,GAAOsE,EAAOtE,IAC3BsE,EAAOV,KAAOA,GAAQU,EAAOV,KAC7BU,EAAOC,OAASD,EAAOC,QAAU,MAC1B5B,EAAQ1B,EAAK4H,UAAU7I,EAAK4D,EAAMU,EAAQtD,IAAOsC,KAAK,SAAUkB,GAErE,MADAF,GAASE,GAAWF,EACbrD,EAAKwD,KAAKH,EAAQtD,KACxBsC,KAAK,SAAUI,GAChB,MAAOf,GAAQ1B,EAAK8H,SAAS/I,EAAK4D,EAAMU,EAAQtD,EAAM0C,IAAWJ,KAAK,SAAUqB,GAC9E,MAAOA,IAAajB,OAI1BqF,SAAU,aACVC,OAAQ,SAAgB/F,EAAO1E,EAAI2E,EAAOlC,GACxC,GAAIC,GAAOjD,IAMX,OALAgD,GAAOA,EAAOoB,EAAKpB,MACnBA,EAAKf,SAAWe,EAAKf,WACrBe,EAAKf,OAASgB,EAAKkC,eAAeF,EAAOjC,EAAKf,OAAQe,GACtDA,EAAKoC,GAAK,SACVnC,EAAKoC,IAAIrC,EAAKoC,GAAIH,EAAO1E,EAAI2E,EAAOlC,GAC7B2B,EAAQ1B,EAAKgI,aAAahG,EAAO1E,EAAI2E,EAAOlC,IAAOsC,KAAK,WAC7D,MAAOrC,GAAKsC,KAAKtC,EAAKuC,QAAQ,SAAUP,EAAO1E,EAAIyC,GAAOC,EAAKwC,UAAUR,EAAOC,EAAOlC,GAAOA,KAC7FsC,KAAK,SAAUI,GAChB,MAAOzC,GAAK0C,YAAYV,EAAOS,EAAU1C,KACxCsC,KAAK,SAAUM,GAChB,MAAOjB,GAAQ1B,EAAKiI,YAAYjG,EAAO1E,EAAI2E,EAAOlC,EAAM4C,IAAON,KAAK,SAAUQ,GAC5E,MAAOA,IAASF,OAItBuF,UAAW,SAAmBlG,EAAOC,EAAOgC,EAAOlE,GACjD,GAAIC,GAAOjD,IAQX,OAPAkH,KAAUA,MACVlE,EAAOA,EAAOoB,EAAKpB,MACnBA,EAAKf,SAAWe,EAAKf,WACrBe,EAAKoC,GAAK,YACVnC,EAAKoC,IAAIrC,EAAKoC,GAAIH,EAAOC,EAAOgC,EAAOlE,GACvCqB,EAAUrB,EAAKf,OAAQiF,GACvBlE,EAAKf,OAASgB,EAAKkC,eAAeF,EAAOjC,EAAKf,OAAQe,GAC/C2B,EAAQ1B,EAAKmI,gBAAgBnG,EAAOC,EAAOgC,EAAOlE,IAAOsC,KAAK,WACnE,MAAOrC,GAAK6H,IAAI7H,EAAKuC,QAAQ,YAAaP,EAAOiC,EAAOlE,GAAOA,KAC9DsC,KAAK,SAAUI,GAChB,MAAOzC,GAAK0C,YAAYV,EAAOS,EAAU1C,KACxCsC,KAAK,SAAUM,GAChB,MAAOjB,GAAQ1B,EAAKoI,eAAepG,EAAOC,EAAOgC,EAAOlE,EAAM4C,IAAON,KAAK,SAAUQ,GAClF,MAAOA,IAASF,SAMxB7C,EAAcuI,UAAY,SAAUd,EAAMxH,GACxC,IAAKwH,IAAS9F,EAAS8F,GACrB,KAAM,IAAIe,WAAU,mDAAqE,mBAATf,GAAuB,YAAc5G,EAAQ4G,IAE/H,OAAO,UAAUgB,GACf,GAAIA,EAAOhB,GACT,KAAM,IAAIN,OAAM,yBAA2BM,EAAO,6BA4CpD,OA1CAxH,GAAKyI,QAAUzI,EAAKyI,SAAW,SAAUnF,GACvC,MAAOA,IAETtD,EAAK0C,SAAW1C,EAAK0C,UAAY,SAAUA,GACzC,MAAOA,IAET1C,EAAK0I,cAAgB1I,EAAK0I,eAAiB,SAAUC,GACnD,MAAO/G,GAAO+G,IAEhBH,EAAOhB,GAAQ,SAAUjK,EAAIgJ,GACvB5G,EAASpC,KACXgJ,EAAQhJ,GAEVgJ,EAAQA,KACR,IAAIqC,GAAU5L,KAAK6L,WAAW7I,EAAK4I,SAAW5L,KAAK8L,gBAAkB,QACjExF,IAKJ,IAJAhC,EAAOgC,EAAQtD,IACVuG,EAAMT,eAAe,aAAexC,EAAOuC,WAC9CU,EAAMV,SAAWvC,EAAOuC,UAEO,kBAAtBU,GAAMd,YACfnC,EAAOtE,IAAMuH,EAAMd,YAAYzI,KAAMuJ,OAChC,CACL,GAAIwC,IAASxC,EAAMrG,UAAYlD,KAAKkD,UAAY0I,EAAQI,SAAS9I,SAAU0I,EAAQnD,YAAYzI,KAAMyE,EAAOlE,GAAMA,EAAK,KAAMgJ,GACzH9E,GAAOlE,IACTwL,EAAMlJ,KAAKtC,GAEbwL,EAAMlJ,KAAKG,EAAKiJ,UAAYzB,GAC5BlE,EAAOtE,IAAMb,EAAS+E,MAAM,KAAM6F,GAKpC,MAHAzF,GAAOC,OAASD,EAAOC,QAAU,MACjCD,EAAO4F,UAAYlM,KAAKwK,KACxBnG,EAAUiC,GAAQiD,GACX5E,EAAQ2B,GAAQhB,KAAKiE,EAAMkC,SAAWzI,EAAKyI,SAASnG,KAAK,SAAUgB,GACxE,MAAOsF,GAAQnF,KAAKH,KACnBhB,KAAK,SAAUM,GAIhB,MAHIA,IAAQA,EAAKU,SACfV,EAAKU,OAAO4F,UAAYlM,KAAKwK,MAExB5E,IACNN,KAAKiE,EAAM7D,UAAY1C,EAAK0C,SAAU6D,EAAMmC,eAAiB1I,EAAK0I,gBAEhEF,IAIXzI,EAAcoJ,WAAa,SAAUnJ,GAEnC,MADAA,KAASA,MACF,SAAUwI,GAIf,MAHArJ,GAAOqJ,EAAQ,SAAU1K,EAAOsB,GAC9BW,EAAcuI,UAAUlJ,EAAKtB,GAAO0K,KAE/BA,IAIXzI,EAAcqJ,SACZC,KAAM,gBACNC,MAAOC,SAAS,IAAK,IACrBC,MAAOD,SAAS,IAAK,IACrBE,MAAOF,SAAS,IAAK,IACrBG,MAAe,IACfC,KAAc,SAGhBjN,EAAOD,QAAUsD,GAGX,CAED,SAASrD,EAAQD,GAEtBC,EAAOD,QAAUQ,GAIZ,SAASP,EAAQD,GAEtBC,EAAOD,QAAU0D","file":"fetch/dist/js-data-fetch.min.js"} \ No newline at end of file diff --git a/dist/js-data-http.js b/dist/js-data-http.js index 43bc72a..8279ad6 100644 --- a/dist/js-data-http.js +++ b/dist/js-data-http.js @@ -16,7 +16,7 @@ exports["DSHttpAdapter"] = factory(require("js-data")); else root["DSHttpAdapter"] = factory(root["JSData"]); -})(this, function(__WEBPACK_EXTERNAL_MODULE_2__) { +})(this, function(__WEBPACK_EXTERNAL_MODULE_1__) { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; @@ -104,18 +104,16 @@ return /******/ (function(modules) { // webpackBootstrap self.httpConfig = opts.httpConfig === undefined ? {} : opts.httpConfig; self.suffix = opts.suffix === undefined ? '' : opts.suffix; self.useFetch = opts.useFetch === undefined ? false : opts.useFetch; - - // Use "window.fetch" if available and the user asks for it - if (hasFetch && (self.useFetch || self.http === undefined)) {} } - fillIn(DSHttpAdapter, { + fillIn(DSHttpAdapter.prototype, { beforeCreate: function beforeCreate() {}, create: function create(Model, props, opts) { var self = this; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(Model, opts.params, opts); + opts.suffix || (opts.suffix = Model.suffix); opts.op = 'create'; self.dbg(opts.op, Model, props, opts); return resolve(self.beforeCreate(Model, props, opts)).then(function () { @@ -123,7 +121,7 @@ return /******/ (function(modules) { // webpackBootstrap }).then(function (response) { return self.deserialize(Model, response, opts); }).then(function (data) { - return resolve(self.afterCreate(Model, data, opts)).then(function (_data) { + return resolve(self.afterCreate(Model, props, opts, data)).then(function (_data) { return _data || data; }); }); @@ -157,6 +155,9 @@ return /******/ (function(modules) { // webpackBootstrap if (isFunction(opts.deserialize)) { return opts.deserialize(Model, data, opts); } + if (isFunction(Model.deserialize)) { + return Model.deserialize(Model, data, opts); + } if (opts.raw) { return data; } @@ -212,6 +213,7 @@ return /******/ (function(modules) { // webpackBootstrap opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(Model, opts.params, opts); + opts.suffix || (opts.suffix = Model.suffix); opts.op = 'find'; self.dbg(opts.op, Model, id, opts); return resolve(self.beforeFind(Model, id, opts)).then(function () { @@ -219,31 +221,34 @@ return /******/ (function(modules) { // webpackBootstrap }).then(function (response) { return self.deserialize(Model, response, opts); }).then(function (data) { - return resolve(self.afterFind(Model, id, data, opts)).then(function (_data) { + return resolve(self.afterFind(Model, id, opts, data)).then(function (_data) { return _data || data; }); }); }, afterFind: function afterFind() {}, + beforeFindAll: function beforeFindAll() {}, findAll: function findAll(Model, query, opts) { var self = this; query || (query = {}); opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); + opts.suffix || (opts.suffix = Model.suffix); opts.op = 'findAll'; self.dbg(opts.op, Model, query, opts); deepMixIn(opts.params, query); opts.params = self.queryTransform(Model, opts.params, opts); return resolve(self.beforeFindAll(Model, query, opts)).then(function () { - return self.GET(self.getPath('findAll', Model, query, opts), opts); + return self.GET(self.getPath('findAll', Model, opts.params, opts), opts); }).then(function (response) { return self.deserialize(Model, response, opts); }).then(function (data) { - return resolve(self.afterFindAll(Model, query, data, opts)).then(function (_data) { + return resolve(self.afterFindAll(Model, query, opts, data)).then(function (_data) { return _data || data; }); }); }, + afterFindAll: function afterFindAll() {}, beforeGET: function beforeGET() {}, GET: function GET(url, config, opts) { var self = this; @@ -270,7 +275,7 @@ return /******/ (function(modules) { // webpackBootstrap var parentKey = Model.parentKey; var endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : Model.endpoint; var parentField = Model.parentField; - var parentDef = Model.getResource(Model.parent); + var parentDef = Model.parent ? Model.getResource(Model.parent) : undefined; var parentId = opts.params[parentKey]; if (parentId === false || !parentKey || !parentDef) { @@ -517,15 +522,17 @@ return /******/ (function(modules) { // webpackBootstrap }); }, afterPUT: function afterPUT() {}, + beforeUpdate: function beforeUpdate() {}, update: function update(Model, id, props, opts) { var self = this; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(Model, opts.params, opts); + opts.suffix || (opts.suffix = Model.suffix); opts.op = 'update'; self.dbg(opts.op, Model, id, props, opts); return resolve(self.beforeUpdate(Model, id, props, opts)).then(function () { - return self.POST(self.getPath('update', Model, id, opts), self.serialize(Model, props, opts), opts); + return self.PUT(self.getPath('update', Model, id, opts), self.serialize(Model, props, opts), opts); }).then(function (response) { return self.deserialize(Model, response, opts); }).then(function (data) { @@ -534,17 +541,20 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }, + afterUpdate: function afterUpdate() {}, + beforeUpdateAll: function beforeUpdateAll() {}, updateAll: function updateAll(Model, props, query, opts) { var self = this; query || (query = {}); opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); - opts.op = 'updateAll'; - self.dbg(opts.op, Model, props, query, opts); deepMixIn(opts.params, query); opts.params = self.queryTransform(Model, opts.params, opts); + opts.suffix || (opts.suffix = Model.suffix); + opts.op = 'updateAll'; + self.dbg(opts.op, Model, props, query, opts); return resolve(self.beforeUpdateAll(Model, props, query, opts)).then(function () { - return self.PUT(self.getPath('updateAll', Model, query, opts), opts); + return self.PUT(self.getPath('updateAll', Model, opts.params, opts), self.serialize(Model, props, opts), opts); }).then(function (response) { return self.deserialize(Model, response, opts); }).then(function (data) { @@ -557,6 +567,8 @@ return /******/ (function(modules) { // webpackBootstrap return DSHttpAdapter; }(); + DSHttpAdapter.extend = extend; + DSHttpAdapter.version = { full: '2.2.1', major: parseInt('2', 10), @@ -569,31 +581,30 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = DSHttpAdapter; /***/ }, -/* 1 */, -/* 2 */ +/* 1 */ /***/ function(module, exports) { - module.exports = __WEBPACK_EXTERNAL_MODULE_2__; + module.exports = __WEBPACK_EXTERNAL_MODULE_1__; /***/ }, -/* 3 */ +/* 2 */ /***/ function(module, exports, __webpack_require__) { - module.exports = __webpack_require__(4); + module.exports = __webpack_require__(3); /***/ }, -/* 4 */ +/* 3 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var defaults = __webpack_require__(5); - var utils = __webpack_require__(6); - var dispatchRequest = __webpack_require__(7); - var InterceptorManager = __webpack_require__(16); - var isAbsoluteURL = __webpack_require__(17); - var combineURLs = __webpack_require__(18); - var bind = __webpack_require__(19); + var defaults = __webpack_require__(4); + var utils = __webpack_require__(5); + var dispatchRequest = __webpack_require__(6); + var InterceptorManager = __webpack_require__(15); + var isAbsoluteURL = __webpack_require__(16); + var combineURLs = __webpack_require__(17); + var bind = __webpack_require__(18); function Axios(defaultConfig) { this.defaultConfig = utils.merge({ @@ -661,7 +672,7 @@ return /******/ (function(modules) { // webpackBootstrap axios.all = function all(promises) { return Promise.all(promises); }; - axios.spread = __webpack_require__(20); + axios.spread = __webpack_require__(19); // Expose interceptors axios.interceptors = defaultInstance.interceptors; @@ -692,12 +703,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 5 */ +/* 4 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var utils = __webpack_require__(6); + var utils = __webpack_require__(5); var PROTECTION_PREFIX = /^\)\]\}',?\n/; var DEFAULT_CONTENT_TYPE = { @@ -761,7 +772,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 6 */ +/* 5 */ /***/ function(module, exports) { 'use strict'; @@ -1007,7 +1018,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 7 */ +/* 6 */ /***/ function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(process) {'use strict'; @@ -1024,10 +1035,10 @@ return /******/ (function(modules) { // webpackBootstrap try { if ((typeof XMLHttpRequest !== 'undefined') || (typeof ActiveXObject !== 'undefined')) { // For browsers use XHR adapter - __webpack_require__(9)(resolve, reject, config); + __webpack_require__(8)(resolve, reject, config); } else if (typeof process !== 'undefined') { // For node use HTTP adapter - __webpack_require__(9)(resolve, reject, config); + __webpack_require__(8)(resolve, reject, config); } } catch (e) { reject(e); @@ -1036,10 +1047,10 @@ return /******/ (function(modules) { // webpackBootstrap }; - /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8))) + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7))) /***/ }, -/* 8 */ +/* 7 */ /***/ function(module, exports) { // shim for using process in browser @@ -1136,20 +1147,20 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 9 */ +/* 8 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; /*global ActiveXObject:true*/ - var defaults = __webpack_require__(5); - var utils = __webpack_require__(6); - var buildURL = __webpack_require__(10); - var parseHeaders = __webpack_require__(11); - var transformData = __webpack_require__(12); - var isURLSameOrigin = __webpack_require__(13); - var btoa = window.btoa || __webpack_require__(14); + var defaults = __webpack_require__(4); + var utils = __webpack_require__(5); + var buildURL = __webpack_require__(9); + var parseHeaders = __webpack_require__(10); + var transformData = __webpack_require__(11); + var isURLSameOrigin = __webpack_require__(12); + var btoa = window.btoa || __webpack_require__(13); module.exports = function xhrAdapter(resolve, reject, config) { // Transform request data @@ -1226,7 +1237,7 @@ return /******/ (function(modules) { // webpackBootstrap // This is only done if running in a standard browser environment. // Specifically not if we're in a web worker, or react-native. if (utils.isStandardBrowserEnv()) { - var cookies = __webpack_require__(15); + var cookies = __webpack_require__(14); // Add xsrf header var xsrfValue = config.withCredentials || isURLSameOrigin(config.url) ? @@ -1277,12 +1288,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 10 */ +/* 9 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var utils = __webpack_require__(6); + var utils = __webpack_require__(5); function encode(val) { return encodeURIComponent(val). @@ -1350,12 +1361,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 11 */ +/* 10 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var utils = __webpack_require__(6); + var utils = __webpack_require__(5); /** * Parse headers into an object @@ -1393,12 +1404,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 12 */ +/* 11 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var utils = __webpack_require__(6); + var utils = __webpack_require__(5); /** * Transform the data for a request or a response @@ -1419,12 +1430,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 13 */ +/* 12 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var utils = __webpack_require__(6); + var utils = __webpack_require__(5); module.exports = ( utils.isStandardBrowserEnv() ? @@ -1493,7 +1504,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 14 */ +/* 13 */ /***/ function(module, exports) { 'use strict'; @@ -1535,12 +1546,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 15 */ +/* 14 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var utils = __webpack_require__(6); + var utils = __webpack_require__(5); module.exports = ( utils.isStandardBrowserEnv() ? @@ -1594,12 +1605,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 16 */ +/* 15 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var utils = __webpack_require__(6); + var utils = __webpack_require__(5); function InterceptorManager() { this.handlers = []; @@ -1652,7 +1663,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 17 */ +/* 16 */ /***/ function(module, exports) { 'use strict'; @@ -1672,7 +1683,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 18 */ +/* 17 */ /***/ function(module, exports) { 'use strict'; @@ -1690,7 +1701,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 19 */ +/* 18 */ /***/ function(module, exports) { 'use strict'; @@ -1707,7 +1718,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 20 */ +/* 19 */ /***/ function(module, exports) { 'use strict'; diff --git a/fetch/.gitignore b/fetch/.gitignore index 7c57759..e02e481 100644 --- a/fetch/.gitignore +++ b/fetch/.gitignore @@ -1,2 +1,2 @@ -dist/js-data-fetch-tests.js -node_modules/ \ No newline at end of file +node_modules/ +junit/ \ No newline at end of file diff --git a/fetch/.npmignore b/fetch/.npmignore index 8c7f131..b1510e2 100644 --- a/fetch/.npmignore +++ b/fetch/.npmignore @@ -1,4 +1,4 @@ -test/ -mocha.start.js -dist/js-data-fetch-tests.js -webpack.config.js \ No newline at end of file +webpack.config.js +karma.conf.js +karma.start.js +junit/ \ No newline at end of file diff --git a/fetch/dist/js-data-fetch.js b/fetch/dist/js-data-fetch.js index 5a0a1df..91c9c0a 100644 --- a/fetch/dist/js-data-fetch.js +++ b/fetch/dist/js-data-fetch.js @@ -12,49 +12,49 @@ module.exports = factory(require("js-data"), require("undefined")); else if(typeof define === 'function' && define.amd) define(["js-data", "undefined"], factory); - else { - var a = typeof exports === 'object' ? factory(require("js-data"), require("undefined")) : factory(root["js-data"], root["undefined"]); - for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; - } -})(this, function(__WEBPACK_EXTERNAL_MODULE_2__, __WEBPACK_EXTERNAL_MODULE_3__) { + else if(typeof exports === 'object') + exports["DSHttpAdapter"] = factory(require("js-data"), require("undefined")); + else + root["DSHttpAdapter"] = factory(root["JSData"], root["undefined"]); +})(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_2__) { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; - +/******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { - +/******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) /******/ return installedModules[moduleId].exports; - +/******/ /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ exports: {}, /******/ id: moduleId, /******/ loaded: false /******/ }; - +/******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); - +/******/ /******/ // Flag the module as loaded /******/ module.loaded = true; - +/******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } - - +/******/ +/******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; - +/******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; - +/******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; - +/******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(0); /******/ }) @@ -64,16 +64,17 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { 'use strict'; - + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; - - var _jsData = __webpack_require__(2); - + + var _jsData = __webpack_require__(1); + /* global fetch:true Headers:true Request:true */ - var axios = __webpack_require__(3); + var axios = __webpack_require__(2); var _ = _jsData.utils._; var copy = _jsData.utils.copy; var deepMixIn = _jsData.utils.deepMixIn; + var extend = _jsData.utils.extend; var fillIn = _jsData.utils.fillIn; var forOwn = _jsData.utils.forOwn; var isArray = _jsData.utils.isArray; @@ -85,13 +86,13 @@ return /******/ (function(modules) { // webpackBootstrap var resolve = _jsData.utils.resolve; var reject = _jsData.utils.reject; var toJson = _jsData.utils.toJson; - + var hasFetch = false; - + try { hasFetch = window && window.fetch; } catch (e) {} - + function isValidString(value) { return value != null && value !== ''; } @@ -103,22 +104,22 @@ return /******/ (function(modules) { // webpackBootstrap for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } - + var result = join(args, '/'); return result.replace(/([^:\/]|^)\/{2,}/g, '$1/'); } - + function encode(val) { - return encodeURIComponent(val).replace(/%40/gi, '@').replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+'); + return encodeURIComponent(val).replace(/%40/gi, '@').replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+').replace(/%5B/gi, '[').replace(/%5D/gi, ']'); } - + function buildUrl(url, params) { if (!params) { return url; } - + var parts = []; - + forOwn(params, function (val, key) { if (val === null || typeof val === 'undefined') { return; @@ -126,7 +127,7 @@ return /******/ (function(modules) { // webpackBootstrap if (!isArray(val)) { val = [val]; } - + val.forEach(function (v) { if (window.toString.call(v) === '[object Date]') { v = v.toISOString(); @@ -136,14 +137,14 @@ return /******/ (function(modules) { // webpackBootstrap parts.push(encode(key) + '=' + encode(v)); }); }); - + if (parts.length > 0) { url += (url.indexOf('?') === -1 ? '?' : '&') + parts.join('&'); } - + return url; } - + /** * DSHttpAdapter class. * @class DSHttpAdapter @@ -159,10 +160,10 @@ return /******/ (function(modules) { // webpackBootstrap */ function DSHttpAdapter(opts) { var self = this; - + // Default values for arguments opts || (opts = {}); - + // Default and user-defined settings self.basePath = opts.basePath === undefined ? '' : opts.basePath; self.debug = opts.debug === undefined ? false : opts.debug; @@ -171,18 +172,16 @@ return /******/ (function(modules) { // webpackBootstrap self.httpConfig = opts.httpConfig === undefined ? {} : opts.httpConfig; self.suffix = opts.suffix === undefined ? '' : opts.suffix; self.useFetch = opts.useFetch === undefined ? false : opts.useFetch; - - // Use "window.fetch" if available and the user asks for it - if (hasFetch && (self.useFetch || self.http === undefined)) {} } - - fillIn(DSHttpAdapter, { + + fillIn(DSHttpAdapter.prototype, { beforeCreate: function beforeCreate() {}, create: function create(Model, props, opts) { var self = this; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(Model, opts.params, opts); + opts.suffix || (opts.suffix = Model.suffix); opts.op = 'create'; self.dbg(opts.op, Model, props, opts); return resolve(self.beforeCreate(Model, props, opts)).then(function () { @@ -190,7 +189,7 @@ return /******/ (function(modules) { // webpackBootstrap }).then(function (response) { return self.deserialize(Model, response, opts); }).then(function (data) { - return resolve(self.afterCreate(Model, data, opts)).then(function (_data) { + return resolve(self.afterCreate(Model, props, opts, data)).then(function (_data) { return _data || data; }); }); @@ -200,7 +199,7 @@ return /******/ (function(modules) { // webpackBootstrap for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2]; } - + this.log.apply(this, ['debug'].concat(args)); }, beforeDEL: function beforeDEL() {}, @@ -224,6 +223,9 @@ return /******/ (function(modules) { // webpackBootstrap if (isFunction(opts.deserialize)) { return opts.deserialize(Model, data, opts); } + if (isFunction(Model.deserialize)) { + return Model.deserialize(Model, data, opts); + } if (opts.raw) { return data; } @@ -235,6 +237,7 @@ return /******/ (function(modules) { // webpackBootstrap opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(Model, opts.params, opts); + opts.suffix || (opts.suffix = Model.suffix); opts.op = 'destroy'; self.dbg(opts.op, Model, id, opts); return resolve(self.beforeDestroy(Model, id, opts)).then(function () { @@ -242,35 +245,38 @@ return /******/ (function(modules) { // webpackBootstrap }).then(function (response) { return self.deserialize(Model, response, opts); }).then(function (data) { - return resolve(self.afterDestroy(Model, id, data, opts)).then(function (_data) { + return resolve(self.afterDestroy(Model, id, opts, data)).then(function (_data) { return _data || data; }); }); }, + afterDestroy: function afterDestroy() {}, beforeDestroyAll: function beforeDestroyAll() {}, destroyAll: function destroyAll(Model, query, opts) { var self = this; query || (query = {}); opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); - opts.op = 'destroy'; - self.dbg(opts.op, Model, query, opts); deepMixIn(opts.params, query); opts.params = self.queryTransform(Model, opts.params, opts); + opts.suffix || (opts.suffix = Model.suffix); + opts.op = 'destroy'; + self.dbg(opts.op, Model, query, opts); return resolve(self.beforeDestroyAll(Model, query, opts)).then(function () { - return self.DEL(self.getPath('destroyAll', Model, query, opts), opts); + return self.DEL(self.getPath('destroyAll', Model, opts.params, opts), opts); }).then(function (response) { return self.deserialize(Model, response, opts); }).then(function (data) { - return resolve(self.afterDestroyAll(Model, query, data, opts)).then(function (_data) { + return resolve(self.afterDestroyAll(Model, query, opts, data)).then(function (_data) { return _data || data; }); }); }, + afterDestroyAll: function afterDestroyAll() {}, error: function error() { if (console) { var _console; - + (_console = console)[typeof console.error === 'function' ? 'error' : 'log'].apply(_console, arguments); } }, @@ -278,11 +284,11 @@ return /******/ (function(modules) { // webpackBootstrap function fetch(_x, _x2) { return _fetch.apply(this, arguments); } - + fetch.toString = function () { return _fetch.toString(); }; - + return fetch; }(function (config, opts) { var requestConfig = { @@ -290,11 +296,11 @@ return /******/ (function(modules) { // webpackBootstrap // turn the plain headers object into the Fetch Headers object headers: new Headers(config.headers) }; - + if (config.data) { requestConfig.body = toJson(config.data); } - + return fetch(new Request(buildUrl(config.url, config.params), requestConfig)).then(function (response) { response.config = { method: config.method, @@ -312,6 +318,7 @@ return /******/ (function(modules) { // webpackBootstrap opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(Model, opts.params, opts); + opts.suffix || (opts.suffix = Model.suffix); opts.op = 'find'; self.dbg(opts.op, Model, id, opts); return resolve(self.beforeFind(Model, id, opts)).then(function () { @@ -319,31 +326,34 @@ return /******/ (function(modules) { // webpackBootstrap }).then(function (response) { return self.deserialize(Model, response, opts); }).then(function (data) { - return resolve(self.afterFind(Model, id, data, opts)).then(function (_data) { + return resolve(self.afterFind(Model, id, opts, data)).then(function (_data) { return _data || data; }); }); }, afterFind: function afterFind() {}, + beforeFindAll: function beforeFindAll() {}, findAll: function findAll(Model, query, opts) { var self = this; query || (query = {}); opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); + opts.suffix || (opts.suffix = Model.suffix); opts.op = 'findAll'; self.dbg(opts.op, Model, query, opts); deepMixIn(opts.params, query); opts.params = self.queryTransform(Model, opts.params, opts); return resolve(self.beforeFindAll(Model, query, opts)).then(function () { - return self.GET(self.getPath('findAll', Model, query, opts), opts); + return self.GET(self.getPath('findAll', Model, opts.params, opts), opts); }).then(function (response) { return self.deserialize(Model, response, opts); }).then(function (data) { - return resolve(self.afterFindAll(Model, query, data, opts)).then(function (_data) { + return resolve(self.afterFindAll(Model, query, opts, data)).then(function (_data) { return _data || data; }); }); }, + afterFindAll: function afterFindAll() {}, beforeGET: function beforeGET() {}, GET: function GET(url, config, opts) { var self = this; @@ -362,17 +372,17 @@ return /******/ (function(modules) { // webpackBootstrap afterGET: function afterGET() {}, getEndpoint: function getEndpoint(Model, id, opts) { var _this = this; - + opts || (opts = {}); opts.params || (opts.params = {}); - + var item = undefined; var parentKey = Model.parentKey; var endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : Model.endpoint; var parentField = Model.parentField; - var parentDef = Model.getResource(Model.parent); + var parentDef = Model.parent ? Model.getResource(Model.parent) : undefined; var parentId = opts.params[parentKey]; - + if (parentId === false || !parentKey || !parentDef) { if (parentId === false) { delete opts.params[parentKey]; @@ -380,17 +390,17 @@ return /******/ (function(modules) { // webpackBootstrap return endpoint; } else { delete opts.params[parentKey]; - + if (isString(id) || isNumber(id)) { item = Model.get(id); } else if (isObject(id)) { item = id; } - + if (item) { parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null); } - + if (parentId) { var _ret = function () { delete opts.endpoint; @@ -403,7 +413,7 @@ return /******/ (function(modules) { // webpackBootstrap v: makePath(_this.getEndpoint(parentDef, parentId, _opts, parentId, endpoint)) }; }(); - + if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v; } else { return endpoint; @@ -413,7 +423,7 @@ return /******/ (function(modules) { // webpackBootstrap getPath: function getPath(method, Model, id, opts) { var self = this; opts || (opts = {}); - var args = [opts.basePath === undefined ? self.basePath : opts.basePath, self.getEndpoint(Model, isString(id) || isNumber(id) || method === 'create' ? id : null, opts)]; + var args = [opts.basePath === undefined ? Model.basePath === undefined ? self.basePath : Model.basePath : opts.basePath, self.getEndpoint(Model, isString(id) || isNumber(id) || method === 'create' ? id : null, opts)]; if (method === 'find' || method === 'update' || method === 'destroy') { args.push(id); } @@ -434,7 +444,7 @@ return /******/ (function(modules) { // webpackBootstrap if (suffix && config.url.substr(config.url.length - suffix.length) !== suffix) { config.url += suffix; } - + function logResponse(data) { var str = start.toUTCString() + ' - ' + config.method.toUpperCase() + ' ' + config.url + ' - ' + data.status + ' ' + (new Date().getTime() - start.getTime()) + 'ms'; if (data.status >= 200 && data.status < 300) { @@ -449,11 +459,11 @@ return /******/ (function(modules) { // webpackBootstrap return reject(data); } } - + if (!self.http) { throw new Error('You have not configured this adapter with an http library!'); } - + return resolve(self.beforeHTTP(config)).then(function (_config) { config = _config || config; if (hasFetch && (self.useFetch || opts.useFetch || !self.http)) { @@ -481,7 +491,7 @@ return /******/ (function(modules) { // webpackBootstrap for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { args[_key3 - 1] = arguments[_key3]; } - + if (level && !args.length) { args.push(level); level = 'debug'; @@ -492,11 +502,11 @@ return /******/ (function(modules) { // webpackBootstrap var prefix = level.toUpperCase() + ': (' + this.name + ')'; if (console[level]) { var _console2; - + (_console2 = console)[level].apply(_console2, [prefix].concat(args)); } else { var _console3; - + (_console3 = console).log.apply(_console3, [prefix].concat(args)); } }, @@ -534,15 +544,17 @@ return /******/ (function(modules) { // webpackBootstrap }); }, afterPUT: function afterPUT() {}, + beforeUpdate: function beforeUpdate() {}, update: function update(Model, id, props, opts) { var self = this; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(Model, opts.params, opts); + opts.suffix || (opts.suffix = Model.suffix); opts.op = 'update'; self.dbg(opts.op, Model, id, props, opts); return resolve(self.beforeUpdate(Model, id, props, opts)).then(function () { - return self.POST(self.getPath('update', Model, id, opts), self.serialize(Model, props, opts), opts); + return self.PUT(self.getPath('update', Model, id, opts), self.serialize(Model, props, opts), opts); }).then(function (response) { return self.deserialize(Model, response, opts); }).then(function (data) { @@ -551,17 +563,20 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }, + afterUpdate: function afterUpdate() {}, + beforeUpdateAll: function beforeUpdateAll() {}, updateAll: function updateAll(Model, props, query, opts) { var self = this; query || (query = {}); opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); - opts.op = 'updateAll'; - self.dbg(opts.op, Model, props, query, opts); deepMixIn(opts.params, query); opts.params = self.queryTransform(Model, opts.params, opts); + opts.suffix || (opts.suffix = Model.suffix); + opts.op = 'updateAll'; + self.dbg(opts.op, Model, props, query, opts); return resolve(self.beforeUpdateAll(Model, props, query, opts)).then(function () { - return self.PUT(self.getPath('updateAll', Model, query, opts), opts); + return self.PUT(self.getPath('updateAll', Model, opts.params, opts), self.serialize(Model, props, opts), opts); }).then(function (response) { return self.deserialize(Model, response, opts); }).then(function (data) { @@ -569,9 +584,10 @@ return /******/ (function(modules) { // webpackBootstrap return _data || data; }); }); - } + }, + afterUpdateAll: function afterUpdateAll() {} }); - + DSHttpAdapter.addAction = function (name, opts) { if (!name || !isString(name)) { throw new TypeError('action(name[, opts]): Expected: string, Found: ' + (typeof name === 'undefined' ? 'undefined' : _typeof(name))); @@ -625,7 +641,7 @@ return /******/ (function(modules) { // webpackBootstrap return target; }; }; - + DSHttpAdapter.addActions = function (opts) { opts || (opts = {}); return function (target) { @@ -635,7 +651,9 @@ return /******/ (function(modules) { // webpackBootstrap return target; }; }; - + + DSHttpAdapter.extend = extend; + DSHttpAdapter.version = { full: '3.0.0-alpha.2', major: parseInt('3', 10), @@ -644,18 +662,17 @@ return /******/ (function(modules) { // webpackBootstrap alpha: true ? '2' : false, beta: true ? 'false' : false }; - + module.exports = DSHttpAdapter; /***/ }, -/* 1 */, -/* 2 */ +/* 1 */ /***/ function(module, exports) { - module.exports = __WEBPACK_EXTERNAL_MODULE_2__; + module.exports = __WEBPACK_EXTERNAL_MODULE_1__; /***/ }, -/* 3 */ +/* 2 */ /***/ function(module, exports) { module.exports = undefined; @@ -663,4 +680,5 @@ return /******/ (function(modules) { // webpackBootstrap /***/ } /******/ ]) }); -; \ No newline at end of file +; +//# sourceMappingURL=js-data-fetch.js.map \ No newline at end of file diff --git a/fetch/dist/js-data-fetch.js.map b/fetch/dist/js-data-fetch.js.map new file mode 100644 index 0000000..588b680 --- /dev/null +++ b/fetch/dist/js-data-fetch.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 07f739a805cd9bda904c","webpack:///C:/Users/jason/Documents/GitHub/js-data-http/src/index.js","webpack:///external {\"amd\":\"js-data\",\"commonjs\":\"js-data\",\"commonjs2\":\"js-data\",\"root\":\"JSData\"}","webpack:///external \"undefined\""],"names":[],"mappings":"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","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[\"DSHttpAdapter\"] = factory(require(\"js-data\"), require(\"undefined\"));\n\telse\n\t\troot[\"DSHttpAdapter\"] = factory(root[\"JSData\"], root[\"undefined\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_2__) {\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 07f739a805cd9bda904c\n **/","/* global fetch:true Headers:true Request:true */\r\nconst axios = require('axios')\r\nimport {utils} from 'js-data'\r\nconst {\r\n _,\r\n copy,\r\n deepMixIn,\r\n extend,\r\n fillIn,\r\n forOwn,\r\n isArray,\r\n isFunction,\r\n isNumber,\r\n isObject,\r\n isSorN,\r\n isString,\r\n resolve,\r\n reject,\r\n toJson\r\n} = utils\r\n\r\nlet hasFetch = false\r\n\r\ntry {\r\n hasFetch = window && window.fetch\r\n} catch (e) {}\r\n\r\nfunction isValidString (value) {\r\n return (value != null && value !== '')\r\n}\r\nfunction join (items, separator) {\r\n separator || (separator = '')\r\n return items.filter(isValidString).join(separator)\r\n}\r\nfunction makePath (...args) {\r\n let result = join(args, '/')\r\n return result.replace(/([^:\\/]|^)\\/{2,}/g, '$1/')\r\n}\r\n\r\nfunction encode (val) {\r\n return encodeURIComponent(val)\r\n .replace(/%40/gi, '@')\r\n .replace(/%3A/gi, ':')\r\n .replace(/%24/g, '$')\r\n .replace(/%2C/gi, ',')\r\n .replace(/%20/g, '+')\r\n .replace(/%5B/gi, '[')\r\n .replace(/%5D/gi, ']')\r\n}\r\n\r\nfunction buildUrl (url, params) {\r\n if (!params) {\r\n return url\r\n }\r\n\r\n const parts = []\r\n\r\n forOwn(params, function (val, key) {\r\n if (val === null || typeof val === 'undefined') {\r\n return\r\n }\r\n if (!isArray(val)) {\r\n val = [val]\r\n }\r\n\r\n val.forEach(function (v) {\r\n if (window.toString.call(v) === '[object Date]') {\r\n v = v.toISOString()\r\n } else if (isObject(v)) {\r\n v = toJson(v)\r\n }\r\n parts.push(`${encode(key)}=${encode(v)}`)\r\n })\r\n })\r\n\r\n if (parts.length > 0) {\r\n url += (url.indexOf('?') === -1 ? '?' : '&') + parts.join('&')\r\n }\r\n\r\n return url\r\n}\r\n\r\n/**\r\n * DSHttpAdapter class.\r\n * @class DSHttpAdapter\r\n *\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.basePath='']\r\n * @param {boolean} [opts.debug=false]\r\n * @param {boolean} [opts.forceTrailingSlash=false]\r\n * @param {Object} [opts.http=axios]\r\n * @param {Object} [opts.httpConfig={}]\r\n * @param {string} [opts.suffix='']\r\n * @param {boolean} [opts.useFetch=false]\r\n */\r\nfunction DSHttpAdapter (opts) {\r\n const self = this\r\n\r\n // Default values for arguments\r\n opts || (opts = {})\r\n\r\n // Default and user-defined settings\r\n self.basePath = opts.basePath === undefined ? '' : opts.basePath\r\n self.debug = opts.debug === undefined ? false : opts.debug\r\n self.forceTrailingSlash = opts.forceTrailingSlash === undefined ? false : opts.forceTrailingSlash\r\n self.http = opts.http === undefined ? axios : opts.http\r\n self.httpConfig = opts.httpConfig === undefined ? {} : opts.httpConfig\r\n self.suffix = opts.suffix === undefined ? '' : opts.suffix\r\n self.useFetch = opts.useFetch === undefined ? false : opts.useFetch\r\n}\r\n\r\nfillIn(DSHttpAdapter.prototype, {\r\n\r\n beforeCreate () {},\r\n\r\n create (Model, props, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'create'\r\n self.dbg(opts.op, Model, props, opts)\r\n return resolve(self.beforeCreate(Model, props, opts)).then(function () {\r\n return self.POST(\r\n self.getPath('create', Model, props, opts),\r\n self.serialize(Model, props, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterCreate(Model, props, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n afterCreate () {},\r\n\r\n dbg (...args) {\r\n this.log('debug', ...args)\r\n },\r\n\r\n beforeDEL () {},\r\n\r\n DEL (url, config, opts) {\r\n const self = this\r\n config || (config = {})\r\n config.url = url || config.url\r\n config.method = config.method || 'delete'\r\n return resolve(self.beforeDEL(url, config, opts)).then(function (_config) {\r\n config = _config || config\r\n return self.HTTP(config, opts)\r\n }).then(function (response) {\r\n return resolve(self.afterDEL(url, config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n afterDEL () {},\r\n\r\n deserialize (Model, data, opts) {\r\n opts || (opts = {})\r\n if (isFunction(opts.deserialize)) {\r\n return opts.deserialize(Model, data, opts)\r\n }\r\n if (isFunction(Model.deserialize)) {\r\n return Model.deserialize(Model, data, opts)\r\n }\r\n if (opts.raw) {\r\n return data\r\n }\r\n return data ? ('data' in data ? data.data : data) : data\r\n },\r\n\r\n beforeDestroy () {},\r\n\r\n destroy (Model, id, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'destroy'\r\n self.dbg(opts.op, Model, id, opts)\r\n return resolve(self.beforeDestroy(Model, id, opts)).then(function () {\r\n return self.DEL(\r\n self.getPath('destroy', Model, id, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterDestroy(Model, id, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n afterDestroy () {},\r\n\r\n beforeDestroyAll () {},\r\n\r\n destroyAll (Model, query, opts) {\r\n const self = this\r\n query || (query = {})\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n deepMixIn(opts.params, query)\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'destroy'\r\n self.dbg(opts.op, Model, query, opts)\r\n return resolve(self.beforeDestroyAll(Model, query, opts)).then(function () {\r\n return self.DEL(\r\n self.getPath('destroyAll', Model, opts.params, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterDestroyAll(Model, query, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n afterDestroyAll () {},\r\n\r\n error (...args) {\r\n if (console) {\r\n console[typeof console.error === 'function' ? 'error' : 'log'](...args)\r\n }\r\n },\r\n\r\n fetch (config, opts) {\r\n const requestConfig = {\r\n method: config.method,\r\n // turn the plain headers object into the Fetch Headers object\r\n headers: new Headers(config.headers)\r\n }\r\n\r\n if (config.data) {\r\n requestConfig.body = toJson(config.data)\r\n }\r\n\r\n return fetch(new Request(buildUrl(config.url, config.params), requestConfig)).then(function (response) {\r\n response.config = {\r\n method: config.method,\r\n url: config.url\r\n }\r\n return response.json().then(function (data) {\r\n response.data = data\r\n return response\r\n })\r\n })\r\n },\r\n\r\n beforeFind () {},\r\n\r\n find (Model, id, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'find'\r\n self.dbg(opts.op, Model, id, opts)\r\n return resolve(self.beforeFind(Model, id, opts)).then(function () {\r\n return self.GET(\r\n self.getPath('find', Model, id, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterFind(Model, id, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n afterFind () {},\r\n\r\n beforeFindAll () {},\r\n\r\n findAll (Model, query, opts) {\r\n const self = this\r\n query || (query = {})\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'findAll'\r\n self.dbg(opts.op, Model, query, opts)\r\n deepMixIn(opts.params, query)\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n return resolve(self.beforeFindAll(Model, query, opts)).then(function () {\r\n return self.GET(\r\n self.getPath('findAll', Model, opts.params, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterFindAll(Model, query, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n afterFindAll () {},\r\n\r\n beforeGET () {},\r\n\r\n GET (url, config, opts) {\r\n const self = this\r\n config || (config = {})\r\n config.url = url || config.url\r\n config.method = config.method || 'get'\r\n return resolve(self.beforeGET(url, config, opts)).then(function (_config) {\r\n config = _config || config\r\n return self.HTTP(config, opts)\r\n }).then(function (response) {\r\n return resolve(self.afterGET(url, config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n afterGET () {},\r\n\r\n getEndpoint (Model, id, opts) {\r\n opts || (opts = {})\r\n opts.params || (opts.params = {})\r\n\r\n let item\r\n const parentKey = Model.parentKey\r\n const endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : Model.endpoint\r\n let parentField = Model.parentField\r\n const parentDef = Model.parent ? Model.getResource(Model.parent) : undefined\r\n let parentId = opts.params[parentKey]\r\n\r\n if (parentId === false || !parentKey || !parentDef) {\r\n if (parentId === false) {\r\n delete opts.params[parentKey]\r\n }\r\n return endpoint\r\n } else {\r\n delete opts.params[parentKey]\r\n\r\n if (isString(id) || isNumber(id)) {\r\n item = Model.get(id)\r\n } else if (isObject(id)) {\r\n item = id\r\n }\r\n\r\n if (item) {\r\n parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null)\r\n }\r\n\r\n if (parentId) {\r\n delete opts.endpoint\r\n const _opts = {}\r\n forOwn(opts, function (value, key) {\r\n _opts[key] = value\r\n })\r\n _(_opts, parentDef)\r\n return makePath(this.getEndpoint(parentDef, parentId, _opts, parentId, endpoint))\r\n } else {\r\n return endpoint\r\n }\r\n }\r\n },\r\n\r\n getPath (method, Model, id, opts) {\r\n const self = this\r\n opts || (opts = {})\r\n const args = [\r\n opts.basePath === undefined ? (Model.basePath === undefined ? self.basePath : Model.basePath) : opts.basePath,\r\n self.getEndpoint(Model, (isString(id) || isNumber(id) || method === 'create') ? id : null, opts)\r\n ]\r\n if (method === 'find' || method === 'update' || method === 'destroy') {\r\n args.push(id)\r\n }\r\n return makePath.apply(utils, args)\r\n },\r\n\r\n beforeHTTP () {},\r\n\r\n HTTP (config, opts) {\r\n const self = this\r\n const start = new Date()\r\n opts || (opts = {})\r\n config = copy(config)\r\n config = deepMixIn(config, self.httpConfig)\r\n if (self.forceTrailingSlash && config.url[config.url.length - 1] !== '/') {\r\n config.url += '/'\r\n }\r\n config.method = config.method.toUpperCase()\r\n const suffix = config.suffix || opts.suffix || self.suffix\r\n if (suffix && config.url.substr(config.url.length - suffix.length) !== suffix) {\r\n config.url += suffix\r\n }\r\n\r\n function logResponse (data) {\r\n const str = `${start.toUTCString()} - ${config.method.toUpperCase()} ${config.url} - ${data.status} ${(new Date().getTime() - start.getTime())}ms`\r\n if (data.status >= 200 && data.status < 300) {\r\n if (self.log) {\r\n self.dbg('debug', str, data)\r\n }\r\n return data\r\n } else {\r\n if (self.error) {\r\n self.error(`'FAILED: ${str}`, data)\r\n }\r\n return reject(data)\r\n }\r\n }\r\n\r\n if (!self.http) {\r\n throw new Error('You have not configured this adapter with an http library!')\r\n }\r\n\r\n return resolve(self.beforeHTTP(config)).then(function (_config) {\r\n config = _config || config\r\n if (hasFetch && (self.useFetch || opts.useFetch || !self.http)) {\r\n return self.fetch(config, opts).then(logResponse, logResponse)\r\n }\r\n return self.http(config).then(logResponse, logResponse)\r\n }).then(function (response) {\r\n return resolve(self.afterHTTP(config, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n afterHTTP () {},\r\n\r\n queryTransform (Model, params, opts) {\r\n return params\r\n },\r\n\r\n serialize (Model, data, opts) {\r\n opts || (opts = {})\r\n if (isFunction(opts.serialize)) {\r\n return opts.serialize(Model, data, opts)\r\n }\r\n return data\r\n },\r\n\r\n log (level, ...args) {\r\n if (level && !args.length) {\r\n args.push(level)\r\n level = 'debug'\r\n }\r\n if (level === 'debug' && !this.debug) {\r\n return\r\n }\r\n const prefix = `${level.toUpperCase()}: (${this.name})`\r\n if (console[level]) {\r\n console[level](prefix, ...args)\r\n } else {\r\n console.log(prefix, ...args)\r\n }\r\n },\r\n\r\n beforePOST () {},\r\n\r\n POST (url, data, config, opts) {\r\n const self = this\r\n config || (config = {})\r\n config.url = url || config.url\r\n config.data = data || config.data\r\n config.method = config.method || 'post'\r\n return resolve(self.beforePOST(url, data, config, opts)).then(function (_config) {\r\n config = _config || config\r\n return self.HTTP(config, opts)\r\n }).then(function (response) {\r\n return resolve(self.afterPOST(url, data, config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n afterPOST () {},\r\n\r\n beforePUT () {},\r\n\r\n PUT (url, data, config, opts) {\r\n const self = this\r\n config || (config = {})\r\n config.url = url || config.url\r\n config.data = data || config.data\r\n config.method = config.method || 'put'\r\n return resolve(self.beforePUT(url, data, config, opts)).then(function (_config) {\r\n config = _config || config\r\n return self.HTTP(config, opts)\r\n }).then(function (response) {\r\n return resolve(self.afterPUT(url, data, config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n afterPUT () {},\r\n\r\n beforeUpdate () {},\r\n\r\n update (Model, id, props, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'update'\r\n self.dbg(opts.op, Model, id, props, opts)\r\n return resolve(self.beforeUpdate(Model, id, props, opts)).then(function () {\r\n return self.PUT(\r\n self.getPath('update', Model, id, opts),\r\n self.serialize(Model, props, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterUpdate(Model, id, props, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n afterUpdate () {},\r\n\r\n beforeUpdateAll () {},\r\n\r\n updateAll (Model, props, query, opts) {\r\n const self = this\r\n query || (query = {})\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n deepMixIn(opts.params, query)\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'updateAll'\r\n self.dbg(opts.op, Model, props, query, opts)\r\n return resolve(self.beforeUpdateAll(Model, props, query, opts)).then(function () {\r\n return self.PUT(\r\n self.getPath('updateAll', Model, opts.params, opts),\r\n self.serialize(Model, props, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterUpdateAll(Model, props, query, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n afterUpdateAll () {}\r\n})\r\n\r\nDSHttpAdapter.addAction = function (name, opts) {\r\n if (!name || !isString(name)) {\r\n throw new TypeError('action(name[, opts]): Expected: string, Found: ' + typeof name)\r\n }\r\n return function (target) {\r\n if (target[name]) {\r\n throw new Error('action(name[, opts]): ' + name + ' already exists on target!')\r\n }\r\n opts.request = opts.request || function (config) { return config }\r\n opts.response = opts.response || function (response) { return response }\r\n opts.responseError = opts.responseError || function (err) { return reject(err) }\r\n target[name] = function (id, _opts) {\r\n if (isObject(id)) {\r\n _opts = id\r\n }\r\n _opts = _opts || {}\r\n let adapter = this.getAdapter(opts.adapter || this.defaultAdapter || 'http')\r\n let config = {}\r\n fillIn(config, opts)\r\n if (!_opts.hasOwnProperty('endpoint') && config.endpoint) {\r\n _opts.endpoint = config.endpoint\r\n }\r\n if (typeof _opts.getEndpoint === 'function') {\r\n config.url = _opts.getEndpoint(this, _opts)\r\n } else {\r\n let args = [\r\n _opts.basePath || this.basePath || adapter.defaults.basePath,\r\n adapter.getEndpoint(this, isSorN(id) ? id : null, _opts)\r\n ]\r\n if (isSorN(id)) {\r\n args.push(id)\r\n }\r\n args.push(opts.pathname || name)\r\n config.url = makePath.apply(null, args)\r\n }\r\n config.method = config.method || 'GET'\r\n config.modelName = this.name\r\n deepMixIn(config)(_opts)\r\n return resolve(config)\r\n .then(_opts.request || opts.request)\r\n .then(function (config) { return adapter.HTTP(config) })\r\n .then(function (data) {\r\n if (data && data.config) {\r\n data.config.modelName = this.name\r\n }\r\n return data\r\n })\r\n .then(_opts.response || opts.response, _opts.responseError || opts.responseError)\r\n }\r\n return target\r\n }\r\n}\r\n\r\nDSHttpAdapter.addActions = function (opts) {\r\n opts || (opts = {})\r\n return function (target) {\r\n forOwn(target, function (value, key) {\r\n DSHttpAdapter.addAction(key, value)(target)\r\n })\r\n return target\r\n }\r\n}\r\n\r\nDSHttpAdapter.extend = extend\r\n\r\nDSHttpAdapter.version = {\r\n full: '<%= pkg.version %>',\r\n major: parseInt('<%= major %>', 10),\r\n minor: parseInt('<%= minor %>', 10),\r\n patch: parseInt('<%= patch %>', 10),\r\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\r\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\r\n}\r\n\r\nmodule.exports = DSHttpAdapter\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/jason/Documents/GitHub/js-data-http/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 **/","module.exports = undefined;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"undefined\"\n ** module id = 2\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 1e617e3..3b1ac4a 100644 --- a/fetch/dist/js-data-fetch.min.js +++ b/fetch/dist/js-data-fetch.min.js @@ -7,5 +7,5 @@ * * @overview Fetch HTTP (XHR) adapter for js-data in the browser. */ -!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e(require("js-data"),require("undefined"));else if("function"==typeof define&&define.amd)define(["js-data","undefined"],e);else{var n="object"==typeof exports?e(require("js-data"),require("undefined")):e(t["js-data"],t.undefined);for(var r in n)("object"==typeof exports?exports:t)[r]=n[r]}}(this,function(t,e){return function(t){function e(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return t[r].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){"use strict";function r(t){return null!=t&&""!==t}function o(t,e){return e||(e=""),t.filter(r).join(e)}function u(){for(var t=arguments.length,e=Array(t),n=0;t>n;n++)e[n]=arguments[n];var r=o(e,"/");return r.replace(/([^:\/]|^)\/{2,}/g,"$1/")}function i(t){return encodeURIComponent(t).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function a(t,e){if(!e)return t;var n=[];return g(e,function(t,e){null!==t&&"undefined"!=typeof t&&(b(t)||(t=[t]),t.forEach(function(t){"[object Date]"===window.toString.call(t)?t=t.toISOString():v(t)&&(t=S(t)),n.push(i(e)+"="+i(t))}))}),n.length>0&&(t+=(-1===t.indexOf("?")?"?":"&")+n.join("&")),t}function f(t){var e=this;t||(t={}),e.basePath=void 0===t.basePath?"":t.basePath,e.debug=void 0===t.debug?!1:t.debug,e.forceTrailingSlash=void 0===t.forceTrailingSlash?!1:t.forceTrailingSlash,e.http=void 0===t.http?p:t.http,e.httpConfig=void 0===t.httpConfig?{}:t.httpConfig,e.suffix=void 0===t.suffix?"":t.suffix,e.useFetch=void 0===t.useFetch?!1:t.useFetch,w&&(e.useFetch||void 0===e.http)}var s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},c=n(2),p=n(3),d=c.utils._,l=c.utils.copy,h=c.utils.deepMixIn,m=c.utils.fillIn,g=c.utils.forOwn,b=c.utils.isArray,y=c.utils.isFunction,T=c.utils.isNumber,v=c.utils.isObject,P=c.utils.isSorN,E=c.utils.isString,A=c.utils.resolve,x=c.utils.reject,S=c.utils.toJson,w=!1;try{w=window&&window.fetch}catch(t){}m(f,{beforeCreate:function(){},create:function(t,e,n){var r=this;return n=n?l(n):{},n.params||(n.params={}),n.params=r.queryTransform(t,n.params,n),n.op="create",r.dbg(n.op,t,e,n),A(r.beforeCreate(t,e,n)).then(function(){return r.POST(r.getPath("create",t,e,n),r.serialize(t,e,n),n)}).then(function(e){return r.deserialize(t,e,n)}).then(function(e){return A(r.afterCreate(t,e,n)).then(function(t){return t||e})})},afterCreate:function(){},dbg:function(){for(var t=arguments.length,e=Array(t),n=0;t>n;n++)e[n]=arguments[n];this.log.apply(this,["debug"].concat(e))},beforeDEL:function(){},DEL:function(t,e,n){var r=this;return e||(e={}),e.url=t||e.url,e.method=e.method||"delete",A(r.beforeDEL(t,e,n)).then(function(t){return e=t||e,r.HTTP(e,n)}).then(function(o){return A(r.afterDEL(t,e,n,o)).then(function(t){return t||o})})},afterDEL:function(){},deserialize:function(t,e,n){return n||(n={}),y(n.deserialize)?n.deserialize(t,e,n):n.raw?e:e&&"data"in e?e.data:e},beforeDestroy:function(){},destroy:function(t,e,n){var r=this;return n=n?l(n):{},n.params||(n.params={}),n.params=r.queryTransform(t,n.params,n),n.op="destroy",r.dbg(n.op,t,e,n),A(r.beforeDestroy(t,e,n)).then(function(){return r.DEL(r.getPath("destroy",t,e,n),n)}).then(function(e){return r.deserialize(t,e,n)}).then(function(o){return A(r.afterDestroy(t,e,o,n)).then(function(t){return t||o})})},beforeDestroyAll:function(){},destroyAll:function(t,e,n){var r=this;return e||(e={}),n=n?l(n):{},n.params||(n.params={}),n.op="destroy",r.dbg(n.op,t,e,n),h(n.params,e),n.params=r.queryTransform(t,n.params,n),A(r.beforeDestroyAll(t,e,n)).then(function(){return r.DEL(r.getPath("destroyAll",t,e,n),n)}).then(function(e){return r.deserialize(t,e,n)}).then(function(o){return A(r.afterDestroyAll(t,e,o,n)).then(function(t){return t||o})})},error:function(){if(console){var t;(t=console)["function"==typeof console.error?"error":"log"].apply(t,arguments)}},fetch:function(t){function e(e,n){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}(function(t,e){var n={method:t.method,headers:new Headers(t.headers)};return t.data&&(n.body=S(t.data)),fetch(new Request(a(t.url,t.params),n)).then(function(e){return e.config={method:t.method,url:t.url},e.json().then(function(t){return e.data=t,e})})}),beforeFind:function(){},find:function(t,e,n){var r=this;return n=n?l(n):{},n.params||(n.params={}),n.params=r.queryTransform(t,n.params,n),n.op="find",r.dbg(n.op,t,e,n),A(r.beforeFind(t,e,n)).then(function(){return r.GET(r.getPath("find",t,e,n),n)}).then(function(e){return r.deserialize(t,e,n)}).then(function(o){return A(r.afterFind(t,e,o,n)).then(function(t){return t||o})})},afterFind:function(){},findAll:function(t,e,n){var r=this;return e||(e={}),n=n?l(n):{},n.params||(n.params={}),n.op="findAll",r.dbg(n.op,t,e,n),h(n.params,e),n.params=r.queryTransform(t,n.params,n),A(r.beforeFindAll(t,e,n)).then(function(){return r.GET(r.getPath("findAll",t,e,n),n)}).then(function(e){return r.deserialize(t,e,n)}).then(function(o){return A(r.afterFindAll(t,e,o,n)).then(function(t){return t||o})})},beforeGET:function(){},GET:function(t,e,n){var r=this;return e||(e={}),e.url=t||e.url,e.method=e.method||"get",A(r.beforeGET(t,e,n)).then(function(t){return e=t||e,r.HTTP(e,n)}).then(function(o){return A(r.afterGET(t,e,n,o)).then(function(t){return t||o})})},afterGET:function(){},getEndpoint:function(t,e,n){var r=this;n||(n={}),n.params||(n.params={});var o=void 0,i=t.parentKey,a=n.hasOwnProperty("endpoint")?n.endpoint:t.endpoint,f=t.parentField,c=t.getResource(t.parent),p=n.params[i];if(p===!1||!i||!c)return p===!1&&delete n.params[i],a;if(delete n.params[i],E(e)||T(e)?o=t.get(e):v(e)&&(o=e),o&&(p=p||o[i]||(o[f]?o[f][c.idAttribute]:null)),!p)return a;var l=function(){delete n.endpoint;var t={};return g(n,function(e,n){t[n]=e}),d(t,c),{v:u(r.getEndpoint(c,p,t,p,a))}}();return"object"===("undefined"==typeof l?"undefined":s(l))?l.v:void 0},getPath:function(t,e,n,r){var o=this;r||(r={});var i=[void 0===r.basePath?o.basePath:r.basePath,o.getEndpoint(e,E(n)||T(n)||"create"===t?n:null,r)];return("find"===t||"update"===t||"destroy"===t)&&i.push(n),u.apply(c.utils,i)},beforeHTTP:function(){},HTTP:function(t,e){function n(e){var n=o.toUTCString()+" - "+t.method.toUpperCase()+" "+t.url+" - "+e.status+" "+((new Date).getTime()-o.getTime())+"ms";return e.status>=200&&e.status<300?(r.log&&r.dbg("debug",n,e),e):(r.error&&r.error("'FAILED: "+n,e),x(e))}var r=this,o=new Date;e||(e={}),t=l(t),t=h(t,r.httpConfig),r.forceTrailingSlash&&"/"!==t.url[t.url.length-1]&&(t.url+="/"),t.method=t.method.toUpperCase();var u=t.suffix||e.suffix||r.suffix;if(u&&t.url.substr(t.url.length-u.length)!==u&&(t.url+=u),!r.http)throw new Error("You have not configured this adapter with an http library!");return A(r.beforeHTTP(t)).then(function(o){return t=o||t,w&&(r.useFetch||e.useFetch||!r.http)?r.fetch(t,e).then(n,n):r.http(t).then(n,n)}).then(function(e){return A(r.afterHTTP(t,e)).then(function(t){return t||e})})},afterHTTP:function(){},queryTransform:function(t,e,n){return e},serialize:function(t,e,n){return n||(n={}),y(n.serialize)?n.serialize(t,e,n):e},log:function(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;e>r;r++)n[r-1]=arguments[r];if(t&&!n.length&&(n.push(t),t="debug"),"debug"!==t||this.debug){var o=t.toUpperCase()+": ("+this.name+")";if(console[t]){var u;(u=console)[t].apply(u,[o].concat(n))}else{var i;(i=console).log.apply(i,[o].concat(n))}}},beforePOST:function(){},POST:function(t,e,n,r){var o=this;return n||(n={}),n.url=t||n.url,n.data=e||n.data,n.method=n.method||"post",A(o.beforePOST(t,e,n,r)).then(function(t){return n=t||n,o.HTTP(n,r)}).then(function(u){return A(o.afterPOST(t,e,n,r,u)).then(function(t){return t||u})})},afterPOST:function(){},beforePUT:function(){},PUT:function(t,e,n,r){var o=this;return n||(n={}),n.url=t||n.url,n.data=e||n.data,n.method=n.method||"put",A(o.beforePUT(t,e,n,r)).then(function(t){return n=t||n,o.HTTP(n,r)}).then(function(u){return A(o.afterPUT(t,e,n,r,u)).then(function(t){return t||u})})},afterPUT:function(){},update:function(t,e,n,r){var o=this;return r=r?l(r):{},r.params||(r.params={}),r.params=o.queryTransform(t,r.params,r),r.op="update",o.dbg(r.op,t,e,n,r),A(o.beforeUpdate(t,e,n,r)).then(function(){return o.POST(o.getPath("update",t,e,r),o.serialize(t,n,r),r)}).then(function(e){return o.deserialize(t,e,r)}).then(function(u){return A(o.afterUpdate(t,e,n,r,u)).then(function(t){return t||u})})},updateAll:function(t,e,n,r){var o=this;return n||(n={}),r=r?l(r):{},r.params||(r.params={}),r.op="updateAll",o.dbg(r.op,t,e,n,r),h(r.params,n),r.params=o.queryTransform(t,r.params,r),A(o.beforeUpdateAll(t,e,n,r)).then(function(){return o.PUT(o.getPath("updateAll",t,n,r),r)}).then(function(e){return o.deserialize(t,e,r)}).then(function(u){return A(o.afterUpdateAll(t,e,n,r,u)).then(function(t){return t||u})})}}),f.addAction=function(t,e){if(!t||!E(t))throw new TypeError("action(name[, opts]): Expected: string, Found: "+("undefined"==typeof t?"undefined":s(t)));return function(n){if(n[t])throw new Error("action(name[, opts]): "+t+" already exists on target!");return e.request=e.request||function(t){return t},e.response=e.response||function(t){return t},e.responseError=e.responseError||function(t){return x(t)},n[t]=function(n,r){v(n)&&(r=n),r=r||{};var o=this.getAdapter(e.adapter||this.defaultAdapter||"http"),i={};if(m(i,e),!r.hasOwnProperty("endpoint")&&i.endpoint&&(r.endpoint=i.endpoint),"function"==typeof r.getEndpoint)i.url=r.getEndpoint(this,r);else{var a=[r.basePath||this.basePath||o.defaults.basePath,o.getEndpoint(this,P(n)?n:null,r)];P(n)&&a.push(n),a.push(e.pathname||t),i.url=u.apply(null,a)}return i.method=i.method||"GET",i.modelName=this.name,h(i)(r),A(i).then(r.request||e.request).then(function(t){return o.HTTP(t)}).then(function(t){return t&&t.config&&(t.config.modelName=this.name),t}).then(r.response||e.response,r.responseError||e.responseError)},n}},f.addActions=function(t){return t||(t={}),function(t){return g(t,function(e,n){f.addAction(n,e)(t)}),t}},f.version={full:"3.0.0-alpha.2",major:parseInt("3",10),minor:parseInt("0",10),patch:parseInt("0",10),alpha:"2",beta:"false"},t.exports=f},,function(e,n){e.exports=t},function(t,e){t.exports=void 0}])}); -//# sourceMappingURL=dist/js-data-fetch.min.map \ No newline at end of file +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("js-data"),require("undefined")):"function"==typeof define&&define.amd?define(["js-data","undefined"],e):"object"==typeof exports?exports.DSHttpAdapter=e(require("js-data"),require("undefined")):t.DSHttpAdapter=e(t.JSData,t.undefined)}(this,function(t,e){return function(t){function e(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return t[r].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){"use strict";function r(t){return null!=t&&""!==t}function o(t,e){return e||(e=""),t.filter(r).join(e)}function i(){for(var t=arguments.length,e=Array(t),n=0;t>n;n++)e[n]=arguments[n];var r=o(e,"/");return r.replace(/([^:\/]|^)\/{2,}/g,"$1/")}function u(t){return encodeURIComponent(t).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function a(t,e){if(!e)return t;var n=[];return b(e,function(t,e){null!==t&&"undefined"!=typeof t&&(y(t)||(t=[t]),t.forEach(function(t){"[object Date]"===window.toString.call(t)?t=t.toISOString():x(t)&&(t=D(t)),n.push(u(e)+"="+u(t))}))}),n.length>0&&(t+=(-1===t.indexOf("?")?"?":"&")+n.join("&")),t}function f(t){var e=this;t||(t={}),e.basePath=void 0===t.basePath?"":t.basePath,e.debug=void 0===t.debug?!1:t.debug,e.forceTrailingSlash=void 0===t.forceTrailingSlash?!1:t.forceTrailingSlash,e.http=void 0===t.http?p:t.http,e.httpConfig=void 0===t.httpConfig?{}:t.httpConfig,e.suffix=void 0===t.suffix?"":t.suffix,e.useFetch=void 0===t.useFetch?!1:t.useFetch}var s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},c=n(1),p=n(2),d=c.utils._,l=c.utils.copy,h=c.utils.deepMixIn,m=c.utils.extend,g=c.utils.fillIn,b=c.utils.forOwn,y=c.utils.isArray,T=c.utils.isFunction,v=c.utils.isNumber,x=c.utils.isObject,P=c.utils.isSorN,A=c.utils.isString,E=c.utils.resolve,S=c.utils.reject,D=c.utils.toJson,w=!1;try{w=window&&window.fetch}catch(t){}g(f.prototype,{beforeCreate:function(){},create:function(t,e,n){var r=this;return n=n?l(n):{},n.params||(n.params={}),n.params=r.queryTransform(t,n.params,n),n.suffix||(n.suffix=t.suffix),n.op="create",r.dbg(n.op,t,e,n),E(r.beforeCreate(t,e,n)).then(function(){return r.POST(r.getPath("create",t,e,n),r.serialize(t,e,n),n)}).then(function(e){return r.deserialize(t,e,n)}).then(function(o){return E(r.afterCreate(t,e,n,o)).then(function(t){return t||o})})},afterCreate:function(){},dbg:function(){for(var t=arguments.length,e=Array(t),n=0;t>n;n++)e[n]=arguments[n];this.log.apply(this,["debug"].concat(e))},beforeDEL:function(){},DEL:function(t,e,n){var r=this;return e||(e={}),e.url=t||e.url,e.method=e.method||"delete",E(r.beforeDEL(t,e,n)).then(function(t){return e=t||e,r.HTTP(e,n)}).then(function(o){return E(r.afterDEL(t,e,n,o)).then(function(t){return t||o})})},afterDEL:function(){},deserialize:function(t,e,n){return n||(n={}),T(n.deserialize)?n.deserialize(t,e,n):T(t.deserialize)?t.deserialize(t,e,n):n.raw?e:e&&"data"in e?e.data:e},beforeDestroy:function(){},destroy:function(t,e,n){var r=this;return n=n?l(n):{},n.params||(n.params={}),n.params=r.queryTransform(t,n.params,n),n.suffix||(n.suffix=t.suffix),n.op="destroy",r.dbg(n.op,t,e,n),E(r.beforeDestroy(t,e,n)).then(function(){return r.DEL(r.getPath("destroy",t,e,n),n)}).then(function(e){return r.deserialize(t,e,n)}).then(function(o){return E(r.afterDestroy(t,e,n,o)).then(function(t){return t||o})})},afterDestroy:function(){},beforeDestroyAll:function(){},destroyAll:function(t,e,n){var r=this;return e||(e={}),n=n?l(n):{},n.params||(n.params={}),h(n.params,e),n.params=r.queryTransform(t,n.params,n),n.suffix||(n.suffix=t.suffix),n.op="destroy",r.dbg(n.op,t,e,n),E(r.beforeDestroyAll(t,e,n)).then(function(){return r.DEL(r.getPath("destroyAll",t,n.params,n),n)}).then(function(e){return r.deserialize(t,e,n)}).then(function(o){return E(r.afterDestroyAll(t,e,n,o)).then(function(t){return t||o})})},afterDestroyAll:function(){},error:function(){if(console){var t;(t=console)["function"==typeof console.error?"error":"log"].apply(t,arguments)}},fetch:function(t){function e(e,n){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}(function(t,e){var n={method:t.method,headers:new Headers(t.headers)};return t.data&&(n.body=D(t.data)),fetch(new Request(a(t.url,t.params),n)).then(function(e){return e.config={method:t.method,url:t.url},e.json().then(function(t){return e.data=t,e})})}),beforeFind:function(){},find:function(t,e,n){var r=this;return n=n?l(n):{},n.params||(n.params={}),n.params=r.queryTransform(t,n.params,n),n.suffix||(n.suffix=t.suffix),n.op="find",r.dbg(n.op,t,e,n),E(r.beforeFind(t,e,n)).then(function(){return r.GET(r.getPath("find",t,e,n),n)}).then(function(e){return r.deserialize(t,e,n)}).then(function(o){return E(r.afterFind(t,e,n,o)).then(function(t){return t||o})})},afterFind:function(){},beforeFindAll:function(){},findAll:function(t,e,n){var r=this;return e||(e={}),n=n?l(n):{},n.params||(n.params={}),n.suffix||(n.suffix=t.suffix),n.op="findAll",r.dbg(n.op,t,e,n),h(n.params,e),n.params=r.queryTransform(t,n.params,n),E(r.beforeFindAll(t,e,n)).then(function(){return r.GET(r.getPath("findAll",t,n.params,n),n)}).then(function(e){return r.deserialize(t,e,n)}).then(function(o){return E(r.afterFindAll(t,e,n,o)).then(function(t){return t||o})})},afterFindAll:function(){},beforeGET:function(){},GET:function(t,e,n){var r=this;return e||(e={}),e.url=t||e.url,e.method=e.method||"get",E(r.beforeGET(t,e,n)).then(function(t){return e=t||e,r.HTTP(e,n)}).then(function(o){return E(r.afterGET(t,e,n,o)).then(function(t){return t||o})})},afterGET:function(){},getEndpoint:function(t,e,n){var r=this;n||(n={}),n.params||(n.params={});var o=void 0,u=t.parentKey,a=n.hasOwnProperty("endpoint")?n.endpoint:t.endpoint,f=t.parentField,c=t.parent?t.getResource(t.parent):void 0,p=n.params[u];if(p===!1||!u||!c)return p===!1&&delete n.params[u],a;if(delete n.params[u],A(e)||v(e)?o=t.get(e):x(e)&&(o=e),o&&(p=p||o[u]||(o[f]?o[f][c.idAttribute]:null)),!p)return a;var l=function(){delete n.endpoint;var t={};return b(n,function(e,n){t[n]=e}),d(t,c),{v:i(r.getEndpoint(c,p,t,p,a))}}();return"object"===("undefined"==typeof l?"undefined":s(l))?l.v:void 0},getPath:function(t,e,n,r){var o=this;r||(r={});var u=[void 0===r.basePath?void 0===e.basePath?o.basePath:e.basePath:r.basePath,o.getEndpoint(e,A(n)||v(n)||"create"===t?n:null,r)];return("find"===t||"update"===t||"destroy"===t)&&u.push(n),i.apply(c.utils,u)},beforeHTTP:function(){},HTTP:function(t,e){function n(e){var n=o.toUTCString()+" - "+t.method.toUpperCase()+" "+t.url+" - "+e.status+" "+((new Date).getTime()-o.getTime())+"ms";return e.status>=200&&e.status<300?(r.log&&r.dbg("debug",n,e),e):(r.error&&r.error("'FAILED: "+n,e),S(e))}var r=this,o=new Date;e||(e={}),t=l(t),t=h(t,r.httpConfig),r.forceTrailingSlash&&"/"!==t.url[t.url.length-1]&&(t.url+="/"),t.method=t.method.toUpperCase();var i=t.suffix||e.suffix||r.suffix;if(i&&t.url.substr(t.url.length-i.length)!==i&&(t.url+=i),!r.http)throw new Error("You have not configured this adapter with an http library!");return E(r.beforeHTTP(t)).then(function(o){return t=o||t,w&&(r.useFetch||e.useFetch||!r.http)?r.fetch(t,e).then(n,n):r.http(t).then(n,n)}).then(function(e){return E(r.afterHTTP(t,e)).then(function(t){return t||e})})},afterHTTP:function(){},queryTransform:function(t,e,n){return e},serialize:function(t,e,n){return n||(n={}),T(n.serialize)?n.serialize(t,e,n):e},log:function(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;e>r;r++)n[r-1]=arguments[r];if(t&&!n.length&&(n.push(t),t="debug"),"debug"!==t||this.debug){var o=t.toUpperCase()+": ("+this.name+")";if(console[t]){var i;(i=console)[t].apply(i,[o].concat(n))}else{var u;(u=console).log.apply(u,[o].concat(n))}}},beforePOST:function(){},POST:function(t,e,n,r){var o=this;return n||(n={}),n.url=t||n.url,n.data=e||n.data,n.method=n.method||"post",E(o.beforePOST(t,e,n,r)).then(function(t){return n=t||n,o.HTTP(n,r)}).then(function(i){return E(o.afterPOST(t,e,n,r,i)).then(function(t){return t||i})})},afterPOST:function(){},beforePUT:function(){},PUT:function(t,e,n,r){var o=this;return n||(n={}),n.url=t||n.url,n.data=e||n.data,n.method=n.method||"put",E(o.beforePUT(t,e,n,r)).then(function(t){return n=t||n,o.HTTP(n,r)}).then(function(i){return E(o.afterPUT(t,e,n,r,i)).then(function(t){return t||i})})},afterPUT:function(){},beforeUpdate:function(){},update:function(t,e,n,r){var o=this;return r=r?l(r):{},r.params||(r.params={}),r.params=o.queryTransform(t,r.params,r),r.suffix||(r.suffix=t.suffix),r.op="update",o.dbg(r.op,t,e,n,r),E(o.beforeUpdate(t,e,n,r)).then(function(){return o.PUT(o.getPath("update",t,e,r),o.serialize(t,n,r),r)}).then(function(e){return o.deserialize(t,e,r)}).then(function(i){return E(o.afterUpdate(t,e,n,r,i)).then(function(t){return t||i})})},afterUpdate:function(){},beforeUpdateAll:function(){},updateAll:function(t,e,n,r){var o=this;return n||(n={}),r=r?l(r):{},r.params||(r.params={}),h(r.params,n),r.params=o.queryTransform(t,r.params,r),r.suffix||(r.suffix=t.suffix),r.op="updateAll",o.dbg(r.op,t,e,n,r),E(o.beforeUpdateAll(t,e,n,r)).then(function(){return o.PUT(o.getPath("updateAll",t,r.params,r),o.serialize(t,e,r),r)}).then(function(e){return o.deserialize(t,e,r)}).then(function(i){return E(o.afterUpdateAll(t,e,n,r,i)).then(function(t){return t||i})})},afterUpdateAll:function(){}}),f.addAction=function(t,e){if(!t||!A(t))throw new TypeError("action(name[, opts]): Expected: string, Found: "+("undefined"==typeof t?"undefined":s(t)));return function(n){if(n[t])throw new Error("action(name[, opts]): "+t+" already exists on target!");return e.request=e.request||function(t){return t},e.response=e.response||function(t){return t},e.responseError=e.responseError||function(t){return S(t)},n[t]=function(n,r){x(n)&&(r=n),r=r||{};var o=this.getAdapter(e.adapter||this.defaultAdapter||"http"),u={};if(g(u,e),!r.hasOwnProperty("endpoint")&&u.endpoint&&(r.endpoint=u.endpoint),"function"==typeof r.getEndpoint)u.url=r.getEndpoint(this,r);else{var a=[r.basePath||this.basePath||o.defaults.basePath,o.getEndpoint(this,P(n)?n:null,r)];P(n)&&a.push(n),a.push(e.pathname||t),u.url=i.apply(null,a)}return u.method=u.method||"GET",u.modelName=this.name,h(u)(r),E(u).then(r.request||e.request).then(function(t){return o.HTTP(t)}).then(function(t){return t&&t.config&&(t.config.modelName=this.name),t}).then(r.response||e.response,r.responseError||e.responseError)},n}},f.addActions=function(t){return t||(t={}),function(t){return b(t,function(e,n){f.addAction(n,e)(t)}),t}},f.extend=m,f.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},t.exports=f},function(e,n){e.exports=t},function(t,e){t.exports=void 0}])}); +//# sourceMappingURL=fetch/dist/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 new file mode 100644 index 0000000..6a51763 --- /dev/null +++ b/fetch/dist/js-data-fetch.min.map @@ -0,0 +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_2__","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","forOwn","key","isArray","forEach","v","window","toString","toISOString","isObject","toJson","push","indexOf","DSHttpAdapter","opts","self","basePath","undefined","debug","forceTrailingSlash","http","axios","httpConfig","suffix","useFetch","_typeof","Symbol","iterator","obj","constructor","_jsData","_","utils","copy","deepMixIn","extend","fillIn","isFunction","isNumber","isSorN","isString","resolve","reject","hasFetch","fetch","e","prototype","beforeCreate","create","Model","props","queryTransform","op","dbg","then","POST","getPath","serialize","response","deserialize","data","afterCreate","_data","_len2","_key2","log","apply","concat","beforeDEL","DEL","config","method","_config","HTTP","afterDEL","_response","raw","beforeDestroy","destroy","afterDestroy","beforeDestroyAll","destroyAll","query","afterDestroyAll","error","console","_console","_fetch","_x","_x2","requestConfig","headers","Headers","body","Request","json","beforeFind","find","GET","afterFind","beforeFindAll","findAll","afterFindAll","beforeGET","afterGET","getEndpoint","_this","item","parentKey","endpoint","hasOwnProperty","parentField","parentDef","parent","getResource","parentId","get","idAttribute","_ret","_opts","beforeHTTP","logResponse","str","start","toUTCString","toUpperCase","status","Date","getTime","substr","Error","afterHTTP","level","_len3","_key3","prefix","name","_console2","_console3","beforePOST","afterPOST","beforePUT","PUT","afterPUT","beforeUpdate","update","afterUpdate","beforeUpdateAll","updateAll","afterUpdateAll","addAction","TypeError","target","request","responseError","err","adapter","getAdapter","defaultAdapter","_args","defaults","pathname","modelName","addActions","version","full","major","parseInt","minor","patch","alpha","beta"],"mappings":"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","file":"fetch/dist/js-data-fetch.min.js"} \ No newline at end of file diff --git a/fetch/karma.conf.js b/fetch/karma.conf.js new file mode 100644 index 0000000..ecbd4cb --- /dev/null +++ b/fetch/karma.conf.js @@ -0,0 +1,81 @@ +var customLaunchers = { + bs_ie9_windows7: { + base: 'BrowserStack', + browser: 'ie', + browser_version: '9.0', + os: 'Windows', + os_version: '7' + }, + bs_safari7_osxmavericks: { + base: 'BrowserStack', + browser: 'safari', + browser_version: '7.1', + os: 'OS X', + os_version: 'Mavericks' + }, + bs_firefox41_windows7: { + base: 'BrowserStack', + browser: 'firefox', + browser_version: '41.0', + os: 'Windows', + os_version: '7' + }, + bs_chrome46_windows7: { + base: 'BrowserStack', + browser: 'chrome', + browser_version: '46.0', + os: 'Windows', + os_version: '7' + } +} + +var browsers = ['PhantomJS'] +if ( + process.env.BROWSERSTACK_USERNAME && + process.env.BROWSERSTACK_ACCESS_KEY +) { + browsers = browsers.concat(Object.keys(customLaunchers)) +} + +module.exports = function (config) { + config.set({ + basePath: '../', + frameworks: ['sinon', 'chai', 'mocha'], + plugins: [ + 'karma-sinon', + 'karma-mocha', + 'karma-chai', + 'karma-phantomjs-launcher', + 'karma-browserstack-launcher', + 'karma-junit-reporter' + ], + autoWatch: false, + browsers: browsers, + files: [ + 'node_modules/es6-promise/dist/es6-promise.js', + 'node_modules/js-data/dist/js-data.js', + 'fetch/dist/js-data-fetch.js', + 'fetch/karma.start.js', + 'test/*.test.js' + ], + browserStack: { + username: process.env.BROWSERSTACK_USERNAME, + accessKey: process.env.BROWSERSTACK_ACCESS_KEY + }, + customLaunchers: customLaunchers, + reporters: ['dots', 'junit'], + junitReporter: { + outputDir: process.env.CIRCLE_TEST_REPORTS || 'junit', + outputFile: undefined, + suite: 'js-data-http', + userBrowserName: false + }, + port: 9876, + runnerPort: 9100, + colors: true, + logLevel: config.LOG_INFO, + browserNoActivityTimeout: 90000, + captureTimeout: 90000, + singleRun: true + }) +} diff --git a/fetch/karma.start.js b/fetch/karma.start.js new file mode 100644 index 0000000..f645f58 --- /dev/null +++ b/fetch/karma.start.js @@ -0,0 +1,77 @@ +/* global JSData:true, DSHttpAdapter:true, sinon:true, chai:true */ +before(function () { + var Test = this + Test.fail = function (msg) { + if (msg instanceof Error) { + console.log(msg.stack) + } else { + Test.assert.equal('should not reach this!: ' + msg, 'failure') + } + } + Test.assert = chai.assert + Test.sinon = sinon + Test.JSData = JSData + Test.DSHttpAdapter = DSHttpAdapter + Test.User = JSData.Model.extend({}, { + name: 'user' + }) + Test.Post = JSData.Model.extend({}, { + name: 'post', + endpoint: 'posts', + basePath: 'api' + }) + + console.log('Testing against js-data ' + JSData.version.full) +}) + +beforeEach(function () { + var Test = this + Test.adapter = new DSHttpAdapter() + Test.User.registerAdapter('http', Test.adapter, { default: true }) + Test.Post.registerAdapter('http', Test.adapter, { default: true }) + + Test.p1 = { author: 'John', age: 30, id: 5 } + Test.p2 = { author: 'Sally', age: 31, id: 6 } + Test.p3 = { author: 'Mike', age: 32, id: 7 } + Test.p4 = { author: 'Adam', age: 33, id: 8 } + Test.p5 = { author: 'Adam', age: 33, id: 9 } + + Test.requests = [] + + Test.adapter.http = function (config) { + config.headers || (config.headers = {}) + config.headers.Accept = 'application/json, text/plain, */*' + var params = [] + for (var key in config.params) { + config.params[key] = Test.JSData.utils.isObject(config.params[key]) ? JSON.stringify(config.params[key]) : config.params[key] + params.push([key, config.params[key]]) + } + return new Promise(function (resolve) { + var url = config.url + if (params.length) { + url += '?' + params.forEach(function (param) { + url += param[0] + url += '=' + url += encodeURIComponent(param[1]) + }) + } + var request = { + url: url, + method: config.method, + requestBody: JSON.stringify(config.data), + requestHeaders: config.headers, + respond: function (statusCode, headers, body) { + resolve({ + url: config.url, + method: config.method, + status: statusCode, + headers: headers, + data: body && statusCode >= 200 && statusCode < 300 ? JSON.parse(body) : '' + }) + } + } + Test.requests.push(request) + }) + } +}) diff --git a/fetch/package.json b/fetch/package.json index 20e92c1..820568a 100644 --- a/fetch/package.json +++ b/fetch/package.json @@ -1,7 +1,7 @@ { "name": "js-data-fetch", "description": "HTTP adapter for js-data that uses fetch.", - "version": "3.0.0-alpha.1", + "version": "3.0.0-alpha.2", "homepage": "http://www.js-data.io/docs/dshttpadapter", "repository": { "type": "git", diff --git a/fetch/webpack.config.js b/fetch/webpack.config.js index 7864e84..85f657e 100644 --- a/fetch/webpack.config.js +++ b/fetch/webpack.config.js @@ -1,34 +1,44 @@ -var path= require('path') +var path = require('path') module.exports = { + devtool: 'source-map', entry: { - './fetch/dist/js-data-fetch.js': './src/index.js', - './fetch/dist/js-data-fetch-tests.js': './fetch/test/unit/index.js' + './fetch/dist/js-data-fetch.js': './src/index.js' }, output: { filename: '[name]', - libraryTarget: 'umd' + libraryTarget: 'umd', + library: 'DSHttpAdapter' }, externals: [ - 'js-data', + { + 'js-data': { + amd: 'js-data', + commonjs: 'js-data', + commonjs2: 'js-data', + root: 'JSData' + } + }, { 'axios': 'var undefined' }, - 'chai' + { + 'chai': { + amd: 'chai', + commonjs: 'chai', + commonjs2: 'chai', + root: 'chai' + } + } ], module: { loaders: [ { loader: 'babel-loader', include: [ - path.resolve(__dirname, '../src'), - path.resolve(__dirname, 'test') + path.resolve(__dirname, '../src') ], - test: /\.jsx?$/, - query: { - presets: ['es2015', 'stage-0'], - plugins: ['syntax-async-functions', 'transform-regenerator'] - } + test: /\.js$/ } ] } diff --git a/karma.conf.js b/karma.conf.js index cf506ce..d1f709a 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -69,20 +69,45 @@ module.exports = function (config) { // web server port port: 9876, - // cli runner port - runnerPort: 9100, - - // enable / disable colors in the output (reporters and logs) - colors: true, - - // level of logging - logLevel: config.LOG_INFO, - - // If browser does not capture in given timeout [ms], kill it - captureTimeout: 30000, - - // Continuous Integration mode - // if true, it capture browsers, run tests and exit - singleRun: true - }); -}; +module.exports = function (config) { + config.set({ + basePath: './', + frameworks: ['sinon', 'chai', 'mocha'], + plugins: [ + 'karma-sinon', + 'karma-mocha', + 'karma-chai', + 'karma-phantomjs-launcher', + 'karma-browserstack-launcher', + 'karma-junit-reporter' + ], + autoWatch: false, + browsers: browsers, + files: [ + 'node_modules/es6-promise/dist/es6-promise.js', + 'node_modules/js-data/dist/js-data.js', + 'dist/js-data-http.js', + 'karma.start.js', + 'test/*.test.js' + ], + browserStack: { + username: process.env.BROWSERSTACK_USERNAME, + accessKey: process.env.BROWSERSTACK_ACCESS_KEY + }, + customLaunchers: customLaunchers, + reporters: ['dots', 'junit'], + junitReporter: { + outputDir: process.env.CIRCLE_TEST_REPORTS || 'junit', + outputFile: undefined, + suite: 'js-data-http', + userBrowserName: false + }, + port: 9876, + runnerPort: 9100, + colors: true, + logLevel: config.LOG_INFO, + browserNoActivityTimeout: 90000, + captureTimeout: 90000, + singleRun: true + }) +} diff --git a/karma.start.js b/karma.start.js index 857082a..cc39e7c 100644 --- a/karma.start.js +++ b/karma.start.js @@ -1,89 +1,60 @@ -// Setup global test variables -var dsHttpAdapter, User, Post, datastore, DSUtils, queryTransform, p1, p2, p3, p4, p5; - -// Helper globals -var fail = function (msg) { - if (msg instanceof Error) { - console.log(msg.stack); - } else { - assert.equal('should not reach this!: ' + msg, 'failure'); +/* global JSData:true, DSHttpAdapter:true, sinon:true, chai:true */ +before(function () { + var Test = this + Test.fail = function (msg) { + if (msg instanceof Error) { + console.log(msg.stack) + } else { + Test.assert.equal('should not reach this!: ' + msg, 'failure') + } } -}; -var TYPES_EXCEPT_STRING = [123, 123.123, null, undefined, {}, [], true, false, function () { -}]; -var TYPES_EXCEPT_STRING_OR_ARRAY = [123, 123.123, null, undefined, {}, true, false, function () { -}]; -var TYPES_EXCEPT_STRING_OR_OBJECT = [123, 123.123, null, undefined, [], true, false, function () { -}]; -var TYPES_EXCEPT_STRING_OR_NUMBER_OBJECT = [null, undefined, [], true, false, function () { -}]; -var TYPES_EXCEPT_ARRAY = ['string', 123, 123.123, null, undefined, {}, true, false, function () { -}]; -var TYPES_EXCEPT_STRING_OR_NUMBER = [null, undefined, {}, [], true, false, function () { -}]; -var TYPES_EXCEPT_STRING_OR_ARRAY_OR_NUMBER = [null, undefined, {}, true, false, function () { -}]; -var TYPES_EXCEPT_NUMBER = ['string', null, undefined, {}, [], true, false, function () { -}]; -var TYPES_EXCEPT_OBJECT = ['string', 123, 123.123, null, undefined, true, false, function () { -}]; -var TYPES_EXCEPT_BOOLEAN = ['string', 123, 123.123, null, undefined, {}, [], function () { -}]; -var TYPES_EXCEPT_FUNCTION = ['string', 123, 123.123, null, undefined, {}, [], true, false]; - -// Setup before each test -beforeEach(function () { - var JSData; - if (!window && typeof module !== 'undefined' && module.exports) { - JSData = require('js-data'); - } else { - JSData = window.JSData; - } - - queryTransform = function (resourceName, query) { - queryTransform.callCount += 1; - return query; - }; - - DSUtils = JSData.DSUtils; - datastore = new JSData.DS(); - - User = datastore.defineResource('user'); - Post = datastore.defineResource({ - name: 'posts', + Test.assert = chai.assert + Test.sinon = sinon + Test.JSData = JSData + Test.DSHttpAdapter = DSHttpAdapter + Test.User = JSData.Model.extend({}, { + name: 'user' + }) + Test.Post = JSData.Model.extend({}, { + name: 'post', + endpoint: 'posts', basePath: 'api' - }); - dsHttpAdapter = new DSHttpAdapter({ - queryTransform: queryTransform - }); - datastore.registerAdapter('http', dsHttpAdapter, { default: true }); + }) - queryTransform.callCount = 0; + console.log('Testing against js-data ' + JSData.version.full) +}) + +beforeEach(function () { + var Test = this + Test.adapter = new DSHttpAdapter() + Test.User.registerAdapter('http', Test.adapter, { default: true }) + Test.Post.registerAdapter('http', Test.adapter, { default: true }) - p1 = { author: 'John', age: 30, id: 5 }; - p2 = { author: 'Sally', age: 31, id: 6 }; - p3 = { author: 'Mike', age: 32, id: 7 }; - p4 = { author: 'Adam', age: 33, id: 8 }; - p5 = { author: 'Adam', age: 33, id: 9 }; + Test.p1 = { author: 'John', age: 30, id: 5 } + Test.p2 = { author: 'Sally', age: 31, id: 6 } + Test.p3 = { author: 'Mike', age: 32, id: 7 } + Test.p4 = { author: 'Adam', age: 33, id: 8 } + Test.p5 = { author: 'Adam', age: 33, id: 9 } try { - this.xhr = sinon.useFakeXMLHttpRequest(); + Test.xhr = Test.sinon.useFakeXMLHttpRequest() // Create an array to store requests - var requests = this.requests = []; + Test.requests = [] // Keep references to created requests - this.xhr.onCreate = function (xhr) { - requests.push(xhr); - }; + Test.xhr.onCreate = function (xhr) { + Test.requests.push(xhr) + } } catch (err) { - console.error(err); + console.error(err) } -}); +}) afterEach(function () { + var Test = this // Restore the global timer functions to their native implementations try { - this.xhr.restore(); + Test.xhr.restore() } catch (err) { - console.error(err); + console.error(err) } -}); +}) diff --git a/mocha.start.js b/mocha.start.js deleted file mode 100644 index 82fe6b6..0000000 --- a/mocha.start.js +++ /dev/null @@ -1,238 +0,0 @@ -'use strict' - -require('babel-polyfill'); -var assert = require('chai').assert; -var sinon = require('sinon') -var mocha = require('mocha') -var JSData = require('js-data') -var DSHttpAdapter = require('./dist/js-data-http') -var DSHttpAdapterTests = require('./dist/js-data-http-tests') - -var store - -var lifecycle = {} - -var globals = module.exports = { - store: undefined, - JSData: JSData, - DSHttpAdapter: DSHttpAdapter -} - -for (var key in DSHttpAdapter) { - globals[key] = DSHttpAdapter[key] -} - -for (var key in JSData) { - globals[key] = JSData[key] -} -for (var key in DSHttpAdapterTests) { - if (key !== 'init') { - globals[key] = DSHttpAdapterTests[key] - } -} - -var test = new mocha() - -var testGlobals = [] - -for (var key in globals) { - global[key] = globals[key] - testGlobals.push(globals[key]) -} -test.globals(testGlobals) - -beforeEach(function () { - globals.sinon = global.sinon = sinon - this.data = {} - this.data.p1 = globals.p1 = global.p1 = { author: 'John', age: 30, id: 5 } - this.data.p2 = globals.p2 = global.p2 = { author: 'Sally', age: 31, id: 6 } - this.data.p3 = globals.p3 = global.p3 = { author: 'Mike', age: 32, id: 7 } - this.data.p4 = globals.p4 = global.p4 = { author: 'Adam', age: 33, id: 8 } - this.data.p5 = globals.p5 = global.p5 = { author: 'Adam', age: 33, id: 9 } - var Base = JSData.Model.extend({}, { - name: 'base', - linkRelations: true - }); - this.Post = Base.extend({}, { - name: 'post', - endpoint: '/posts' - }) - this.User = Base.extend({}, { - name: 'user' - }) - this.Group = Base.extend({}, { - name: 'group' - }) - this.Organization = Base.extend({}, { - name: 'organization' - }) - this.Profile = Base.extend({}, { - name: 'profile' - }) - this.Comment = Base.extend({}, { - name: 'comment' - }) - this.User.belongsTo(this.Organization, { - localField: 'organization', - localKey: 'organizationId' - }) - this.User.hasMany(this.Comment, { - localField: 'comments', - foreignKey: 'userId' - }) - this.User.hasMany(this.Comment, { - localField: 'approvedComments', - foreignKey: 'approvedBy' - }) - this.User.hasMany(this.Group, { - localField: 'groups', - foreignKeys: 'userIds' - }) - this.User.hasOne(this.Profile, { - localField: 'profile', - foreignKey: 'userId' - }) - this.Group.hasMany(this.User, { - localField: 'users', - localKeys: 'userIds' - }) - this.Organization.hasMany(this.User, { - localField: 'users', - foreignKey: 'organizationId' - }) - this.Profile.belongsTo(this.User, { - localField: 'user', - localKey: 'userId' - }) - this.Comment.belongsTo(this.User, { - localField: 'user', - localKey: 'userId' - }) - this.Comment.belongsTo(this.User, { - localField: 'approvedByUser', - localKey: 'approvedBy' - }) - this.data.user1 = { - name: 'John Anderson', - id: 1, - organizationId: 2 - } - this.data.organization2 = { - name: 'Test Corp 2', - id: 2 - } - this.data.comment3 = { - content: 'test comment 3', - id: 3, - userId: 1 - } - this.data.profile4 = { - content: 'test profile 4', - id: 4, - userId: 1 - } - - this.data.comment11 = { - id: 11, - userId: 10, - content: 'test comment 11' - } - this.data.comment12 = { - id: 12, - userId: 10, - content: 'test comment 12' - } - this.data.comment13 = { - id: 13, - userId: 10, - content: 'test comment 13' - } - this.data.organization14 = { - id: 14, - name: 'Test Corp' - } - this.data.profile15 = { - id: 15, - userId: 10, - email: 'john.anderson@test.com' - } - this.data.user10 = { - name: 'John Anderson', - id: 10, - organizationId: 14, - comments: [ - this.data.comment11, - this.data.comment12, - this.data.comment13 - ], - organization: this.data.organization14, - profile: this.data.profile15 - } - this.data.user16 = { - id: 16, - organizationId: 15, - name: 'test user 16' - } - this.data.user17 = { - id: 17, - organizationId: 15, - name: 'test user 17' - } - this.data.user18 = { - id: 18, - organizationId: 15, - name: 'test user 18' - } - this.data.group1 = { - name: 'group 1', - id: 1, - userIds: [10] - } - this.data.group2 = { - name: 'group 2', - id: 2, - userIds: [10] - } - this.data.organization15 = { - name: 'Another Test Corp', - id: 15, - users: [ - this.data.user16, - this.data.user17, - this.data.user18 - ] - } - this.data.user19 = { - id: 19, - name: 'test user 19' - } - this.data.user20 = { - id: 20, - name: 'test user 20' - } - this.data.comment19 = { - content: 'test comment 19', - id: 19, - approvedBy: 19, - approvedByUser: this.data.user19, - userId: 20, - user: this.data.user20 - } - this.data.user22 = { - id: 22, - name: 'test user 22' - } - this.data.profile21 = { - content: 'test profile 21', - id: 21, - userId: 22, - user: this.data.user22 - } -}) - -DSHttpAdapterTests.init() - -afterEach(function () { - globals.store = null - global.store = null -}) diff --git a/node/.gitignore b/node/.gitignore index 19fd076..e69de29 100644 --- a/node/.gitignore +++ b/node/.gitignore @@ -1,2 +0,0 @@ -dist/js-data-http-node-tests.js -node_modules/ \ No newline at end of file diff --git a/node/.npmignore b/node/.npmignore index 39363cf..7200422 100644 --- a/node/.npmignore +++ b/node/.npmignore @@ -1,4 +1,2 @@ -test/ mocha.start.js -dist/js-data-http-node-tests.js webpack.config.js \ No newline at end of file diff --git a/node/LICENSE b/node/LICENSE index d74449a..73d2777 100644 --- a/node/LICENSE +++ b/node/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2014-2015 Jason Dobry +Copyright (c) 2014-2016 Jason Dobry Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/node/dist/js-data-fetch.js b/node/dist/js-data-fetch.js deleted file mode 100644 index f33102f..0000000 --- a/node/dist/js-data-fetch.js +++ /dev/null @@ -1,644 +0,0 @@ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(require("js-data"), require("axios")); - else if(typeof define === 'function' && define.amd) - define(["js-data", "axios"], factory); - else { - var a = typeof exports === 'object' ? factory(require("js-data"), require("axios")) : factory(root["js-data"], root["axios"]); - for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; - } -})(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_2__) { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; - -/******/ // The require function -/******/ function __webpack_require__(moduleId) { - -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) -/******/ return installedModules[moduleId].exports; - -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ exports: {}, -/******/ id: moduleId, -/******/ loaded: false -/******/ }; - -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); - -/******/ // Flag the module as loaded -/******/ module.loaded = true; - -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } - - -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; - -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; - -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; - -/******/ // Load entry module and return exports -/******/ return __webpack_require__(0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; - - var _jsData = __webpack_require__(1); - - /* global fetch:true Headers:true Request:true */ - var axios = __webpack_require__(2); - var _ = _jsData.utils._; - var copy = _jsData.utils.copy; - var deepMixIn = _jsData.utils.deepMixIn; - var fillIn = _jsData.utils.fillIn; - var forOwn = _jsData.utils.forOwn; - var isArray = _jsData.utils.isArray; - var isFunction = _jsData.utils.isFunction; - var isNumber = _jsData.utils.isNumber; - var isObject = _jsData.utils.isObject; - var isSorN = _jsData.utils.isSorN; - var isString = _jsData.utils.isString; - var resolve = _jsData.utils.resolve; - var reject = _jsData.utils.reject; - var toJson = _jsData.utils.toJson; - - var hasFetch = false; - - try { - hasFetch = window && window.fetch; - } catch (e) {} - - function isValidString(value) { - return value != null && value !== ''; - } - function join(items, separator) { - separator || (separator = ''); - return items.filter(isValidString).join(separator); - } - function makePath() { - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - var result = join(args, '/'); - return result.replace(/([^:\/]|^)\/{2,}/g, '$1/'); - } - - function encode(val) { - return encodeURIComponent(val).replace(/%40/gi, '@').replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+'); - } - - function buildUrl(url, params) { - if (!params) { - return url; - } - - var parts = []; - - forOwn(params, function (val, key) { - if (val === null || typeof val === 'undefined') { - return; - } - if (!isArray(val)) { - val = [val]; - } - - val.forEach(function (v) { - if (window.toString.call(v) === '[object Date]') { - v = v.toISOString(); - } else if (isObject(v)) { - v = toJson(v); - } - parts.push(encode(key) + '=' + encode(v)); - }); - }); - - if (parts.length > 0) { - url += (url.indexOf('?') === -1 ? '?' : '&') + parts.join('&'); - } - - return url; - } - - /** - * DSHttpAdapter class. - * @class DSHttpAdapter - * - * @param {Object} [opts] Configuration options. - * @param {string} [opts.basePath=''] - * @param {boolean} [opts.debug=false] - * @param {boolean} [opts.forceTrailingSlash=false] - * @param {Object} [opts.http=axios] - * @param {Object} [opts.httpConfig={}] - * @param {string} [opts.suffix=''] - * @param {boolean} [opts.useFetch=false] - */ - function DSHttpAdapter(opts) { - var self = this; - - // Default values for arguments - opts || (opts = {}); - - // Default and user-defined settings - self.basePath = opts.basePath === undefined ? '' : opts.basePath; - self.debug = opts.debug === undefined ? false : opts.debug; - self.forceTrailingSlash = opts.forceTrailingSlash === undefined ? false : opts.forceTrailingSlash; - self.http = opts.http === undefined ? axios : opts.http; - self.httpConfig = opts.httpConfig === undefined ? {} : opts.httpConfig; - self.suffix = opts.suffix === undefined ? '' : opts.suffix; - self.useFetch = opts.useFetch === undefined ? false : opts.useFetch; - - // Use "window.fetch" if available and the user asks for it - if (self.useFetch && hasFetch) { - self.deserialize = function (Model, response, opts) { - opts || (opts = {}); - return response.json(); - }; - self.http = function (config) { - var requestConfig = { - method: config.method, - // turn the plain headers object into the Fetch Headers object - headers: new Headers(config.headers) - }; - - if (config.data) { - requestConfig.body = toJson(config.data); - } - - return fetch(new Request(buildUrl(config.url, config.params), requestConfig)).then(function (response) { - response.config = { - method: config.method, - url: config.url - }; - return response; - }); - }; - } - } - - fillIn(DSHttpAdapter, { - beforeCreate: function beforeCreate() {}, - create: function create(Model, props, opts) { - var self = this; - opts = opts ? copy(opts) : {}; - opts.params || (opts.params = {}); - opts.params = self.queryTransform(Model, opts.params, opts); - opts.op = 'create'; - self.dbg(opts.op, Model, props, opts); - return resolve(self.beforeCreate(Model, props, opts)).then(function () { - return self.POST(self.getPath('create', Model, props, opts), self.serialize(Model, props, opts), opts); - }).then(function (response) { - return self.deserialize(Model, response, opts); - }).then(function (data) { - return resolve(self.afterCreate(Model, data, opts)).then(function (_data) { - return _data || data; - }); - }); - }, - afterCreate: function afterCreate() {}, - dbg: function dbg() { - for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - - this.log.apply(this, ['debug'].concat(args)); - }, - beforeDEL: function beforeDEL() {}, - DEL: function DEL(url, config, opts) { - var self = this; - config || (config = {}); - config.url = url || config.url; - config.method = config.method || 'delete'; - return resolve(self.beforeDEL(url, config, opts)).then(function (_config) { - config = _config || config; - return self.HTTP(config, opts); - }).then(function (response) { - return resolve(self.afterDEL(url, config, opts, response)).then(function (_response) { - return _response || response; - }); - }); - }, - afterDEL: function afterDEL() {}, - deserialize: function deserialize(Model, data, opts) { - opts || (opts = {}); - if (isFunction(opts.deserialize)) { - return opts.deserialize(Model, data, opts); - } - if (opts.raw) { - return data; - } - return data ? 'data' in data ? data.data : data : data; - }, - beforeDestroy: function beforeDestroy() {}, - destroy: function destroy(Model, id, opts) { - var self = this; - opts = opts ? copy(opts) : {}; - opts.params || (opts.params = {}); - opts.params = self.queryTransform(Model, opts.params, opts); - opts.op = 'destroy'; - self.dbg(opts.op, Model, id, opts); - return resolve(self.beforeDestroy(Model, id, opts)).then(function () { - return self.DEL(self.getPath('destroy', Model, id, opts), opts); - }).then(function (response) { - return self.deserialize(Model, response, opts); - }).then(function (data) { - return resolve(self.afterDestroy(Model, id, data, opts)).then(function (_data) { - return _data || data; - }); - }); - }, - beforeDestroyAll: function beforeDestroyAll() {}, - destroyAll: function destroyAll(Model, query, opts) { - var self = this; - query || (query = {}); - opts = opts ? copy(opts) : {}; - opts.params || (opts.params = {}); - opts.op = 'destroy'; - self.dbg(opts.op, Model, query, opts); - deepMixIn(opts.params, query); - opts.params = self.queryTransform(Model, opts.params, opts); - return resolve(self.beforeDestroyAll(Model, query, opts)).then(function () { - return self.DEL(self.getPath('destroyAll', Model, query, opts), opts); - }).then(function (response) { - return self.deserialize(Model, response, opts); - }).then(function (data) { - return resolve(self.afterDestroyAll(Model, query, data, opts)).then(function (_data) { - return _data || data; - }); - }); - }, - error: function error() { - if (console) { - var _console; - - (_console = console)[typeof console.error === 'function' ? 'error' : 'log'].apply(_console, arguments); - } - }, - beforeFind: function beforeFind() {}, - find: function find(Model, id, opts) { - var self = this; - opts = opts ? copy(opts) : {}; - opts.params || (opts.params = {}); - opts.params = self.queryTransform(Model, opts.params, opts); - opts.op = 'find'; - self.dbg(opts.op, Model, id, opts); - return resolve(self.beforeFind(Model, id, opts)).then(function () { - return self.GET(self.getPath('find', Model, id, opts), opts); - }).then(function (response) { - return self.deserialize(Model, response, opts); - }).then(function (data) { - return resolve(self.afterFind(Model, id, data, opts)).then(function (_data) { - return _data || data; - }); - }); - }, - afterFind: function afterFind() {}, - findAll: function findAll(Model, query, opts) { - var self = this; - query || (query = {}); - opts = opts ? copy(opts) : {}; - opts.params || (opts.params = {}); - opts.op = 'findAll'; - self.dbg(opts.op, Model, query, opts); - deepMixIn(opts.params, query); - opts.params = self.queryTransform(Model, opts.params, opts); - return resolve(self.beforeFindAll(Model, query, opts)).then(function () { - return self.GET(self.getPath('findAll', Model, query, opts), opts); - }).then(function (response) { - return self.deserialize(Model, response, opts); - }).then(function (data) { - return resolve(self.afterFindAll(Model, query, data, opts)).then(function (_data) { - return _data || data; - }); - }); - }, - beforeGET: function beforeGET() {}, - GET: function GET(url, config, opts) { - var self = this; - config || (config = {}); - config.url = url || config.url; - config.method = config.method || 'get'; - return resolve(self.beforeGET(url, config, opts)).then(function (_config) { - config = _config || config; - return self.HTTP(config, opts); - }).then(function (response) { - return resolve(self.afterGET(url, config, opts, response)).then(function (_response) { - return _response || response; - }); - }); - }, - afterGET: function afterGET() {}, - getEndpoint: function getEndpoint(Model, id, opts) { - var _this = this; - - opts || (opts = {}); - opts.params || (opts.params = {}); - - var item = undefined; - var parentKey = Model.parentKey; - var endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : Model.endpoint; - var parentField = Model.parentField; - var parentDef = Model.getResource(Model.parent); - var parentId = opts.params[parentKey]; - - if (parentId === false || !parentKey || !parentDef) { - if (parentId === false) { - delete opts.params[parentKey]; - } - return endpoint; - } else { - delete opts.params[parentKey]; - - if (isString(id) || isNumber(id)) { - item = Model.get(id); - } else if (isObject(id)) { - item = id; - } - - if (item) { - parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null); - } - - if (parentId) { - var _ret = function () { - delete opts.endpoint; - var _opts = {}; - forOwn(opts, function (value, key) { - _opts[key] = value; - }); - _(_opts, parentDef); - return { - v: makePath(_this.getEndpoint(parentDef, parentId, _opts, parentId, endpoint)) - }; - }(); - - if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v; - } else { - return endpoint; - } - } - }, - getPath: function getPath(method, Model, id, opts) { - var self = this; - opts || (opts = {}); - var args = [opts.basePath === undefined ? self.basePath : opts.basePath, self.getEndpoint(Model, isString(id) || isNumber(id) || method === 'create' ? id : null, opts)]; - if (method === 'find' || method === 'update' || method === 'destroy') { - args.push(id); - } - return makePath.apply(_jsData.utils, args); - }, - beforeHTTP: function beforeHTTP() {}, - HTTP: function HTTP(config, opts) { - var self = this; - var start = new Date(); - config = copy(config); - config = deepMixIn(config, self.httpConfig); - if (self.forceTrailingSlash && config.url[config.url.length - 1] !== '/') { - config.url += '/'; - } - config.method = config.method.toUpperCase(); - var suffix = config.suffix || opts.suffix || self.suffix; - if (suffix && config.url.substr(config.url.length - suffix.length) !== suffix) { - config.url += suffix; - } - - function logResponse(data) { - var str = start.toUTCString() + ' - ' + config.method.toUpperCase() + ' ' + config.url + ' - ' + data.status + ' ' + (new Date().getTime() - start.getTime()) + 'ms'; - if (data.status >= 200 && data.status < 300) { - if (self.log) { - self.dbg('debug', str, data); - } - return data; - } else { - if (self.error) { - self.error('\'FAILED: ' + str, data); - } - return reject(data); - } - } - - if (!self.http) { - throw new Error('You have not configured this adapter with an http library!'); - } - - return resolve(self.beforeHTTP(config)).then(function (_config) { - config = _config || config; - return self.http(config).then(logResponse, logResponse); - }).then(function (response) { - return resolve(self.afterHTTP(config, response)).then(function (_response) { - return _response || response; - }); - }); - }, - afterHTTP: function afterHTTP() {}, - queryTransform: function queryTransform(Model, params, opts) { - return params; - }, - serialize: function serialize(Model, data, opts) { - opts || (opts = {}); - if (isFunction(opts.serialize)) { - return opts.serialize(Model, data, opts); - } - return data; - }, - log: function log(level) { - for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { - args[_key3 - 1] = arguments[_key3]; - } - - if (level && !args.length) { - args.push(level); - level = 'debug'; - } - if (level === 'debug' && !this.debug) { - return; - } - var prefix = level.toUpperCase() + ': (' + this.name + ')'; - if (console[level]) { - var _console2; - - (_console2 = console)[level].apply(_console2, [prefix].concat(args)); - } else { - var _console3; - - (_console3 = console).log.apply(_console3, [prefix].concat(args)); - } - }, - beforePOST: function beforePOST() {}, - POST: function POST(url, data, config, opts) { - var self = this; - config || (config = {}); - config.url = url || config.url; - config.data = data || config.data; - config.method = config.method || 'post'; - return resolve(self.beforePOST(url, data, config, opts)).then(function (_config) { - config = _config || config; - return self.HTTP(config, opts); - }).then(function (response) { - return resolve(self.afterPOST(url, data, config, opts, response)).then(function (_response) { - return _response || response; - }); - }); - }, - afterPOST: function afterPOST() {}, - beforePUT: function beforePUT() {}, - PUT: function PUT(url, data, config, opts) { - var self = this; - config || (config = {}); - config.url = url || config.url; - config.data = data || config.data; - config.method = config.method || 'put'; - return resolve(self.beforePUT(url, data, config, opts)).then(function (_config) { - config = _config || config; - return self.HTTP(config, opts); - }).then(function (response) { - return resolve(self.afterPUT(url, data, config, opts, response)).then(function (_response) { - return _response || response; - }); - }); - }, - afterPUT: function afterPUT() {}, - update: function update(Model, id, props, opts) { - var self = this; - opts = opts ? copy(opts) : {}; - opts.params || (opts.params = {}); - opts.params = self.queryTransform(Model, opts.params, opts); - opts.op = 'update'; - self.dbg(opts.op, Model, id, props, opts); - return resolve(self.beforeUpdate(Model, id, props, opts)).then(function () { - return self.POST(self.getPath('update', Model, id, opts), self.serialize(Model, props, opts), opts); - }).then(function (response) { - return self.deserialize(Model, response, opts); - }).then(function (data) { - return resolve(self.afterUpdate(Model, id, props, opts, data)).then(function (_data) { - return _data || data; - }); - }); - }, - updateAll: function updateAll(Model, props, query, opts) { - var self = this; - query || (query = {}); - opts = opts ? copy(opts) : {}; - opts.params || (opts.params = {}); - opts.op = 'updateAll'; - self.dbg(opts.op, Model, props, query, opts); - deepMixIn(opts.params, query); - opts.params = self.queryTransform(Model, opts.params, opts); - return resolve(self.beforeUpdateAll(Model, props, query, opts)).then(function () { - return self.PUT(self.getPath('updateAll', Model, query, opts), opts); - }).then(function (response) { - return self.deserialize(Model, response, opts); - }).then(function (data) { - return resolve(self.afterUpdateAll(Model, props, query, opts, data)).then(function (_data) { - return _data || data; - }); - }); - } - }); - - DSHttpAdapter.addAction = function (name, opts) { - if (!name || !isString(name)) { - throw new TypeError('action(name[, opts]): Expected: string, Found: ' + (typeof name === 'undefined' ? 'undefined' : _typeof(name))); - } - return function (target) { - if (target[name]) { - throw new Error('action(name[, opts]): ' + name + ' already exists on target!'); - } - opts.request = opts.request || function (config) { - return config; - }; - opts.response = opts.response || function (response) { - return response; - }; - opts.responseError = opts.responseError || function (err) { - return reject(err); - }; - target[name] = function (id, _opts) { - if (isObject(id)) { - _opts = id; - } - _opts = _opts || {}; - var adapter = this.getAdapter(opts.adapter || this.defaultAdapter || 'http'); - var config = {}; - fillIn(config, opts); - if (!_opts.hasOwnProperty('endpoint') && config.endpoint) { - _opts.endpoint = config.endpoint; - } - if (typeof _opts.getEndpoint === 'function') { - config.url = _opts.getEndpoint(this, _opts); - } else { - var _args = [_opts.basePath || this.basePath || adapter.defaults.basePath, adapter.getEndpoint(this, isSorN(id) ? id : null, _opts)]; - if (isSorN(id)) { - _args.push(id); - } - _args.push(opts.pathname || name); - config.url = makePath.apply(null, _args); - } - config.method = config.method || 'GET'; - config.modelName = this.name; - deepMixIn(config)(_opts); - return resolve(config).then(_opts.request || opts.request).then(function (config) { - return adapter.HTTP(config); - }).then(function (data) { - if (data && data.config) { - data.config.modelName = this.name; - } - return data; - }).then(_opts.response || opts.response, _opts.responseError || opts.responseError); - }; - return target; - }; - }; - - DSHttpAdapter.addActions = function (opts) { - opts || (opts = {}); - return function (target) { - forOwn(target, function (value, key) { - DSHttpAdapter.addAction(key, value)(target); - }); - return target; - }; - }; - - DSHttpAdapter.version = { - full: '<%= pkg.version %>', - major: parseInt('<%= major %>', 10), - minor: parseInt('<%= minor %>', 10), - patch: parseInt('<%= patch %>', 10), - alpha: true ? '<%= alpha %>' : false, - beta: true ? '<%= beta %>' : false - }; - - module.exports = DSHttpAdapter; - -/***/ }, -/* 1 */ -/***/ function(module, exports) { - - module.exports = __WEBPACK_EXTERNAL_MODULE_1__; - -/***/ }, -/* 2 */ -/***/ function(module, exports) { - - module.exports = __WEBPACK_EXTERNAL_MODULE_2__; - -/***/ } -/******/ ]) -}); -; \ 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 056086a..af52746 100644 --- a/node/dist/js-data-http-node.js +++ b/node/dist/js-data-http-node.js @@ -16,45 +16,45 @@ var a = typeof exports === 'object' ? factory(require("js-data"), require("axios")) : factory(root["js-data"], root["axios"]); for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; } -})(this, function(__WEBPACK_EXTERNAL_MODULE_2__, __WEBPACK_EXTERNAL_MODULE_3__) { +})(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_2__) { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; - +/******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { - +/******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) /******/ return installedModules[moduleId].exports; - +/******/ /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ exports: {}, /******/ id: moduleId, /******/ loaded: false /******/ }; - +/******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); - +/******/ /******/ // Flag the module as loaded /******/ module.loaded = true; - +/******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } - - +/******/ +/******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; - +/******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; - +/******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; - +/******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(0); /******/ }) @@ -64,16 +64,17 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { 'use strict'; - + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; - - var _jsData = __webpack_require__(2); - + + var _jsData = __webpack_require__(1); + /* global fetch:true Headers:true Request:true */ - var axios = __webpack_require__(3); + var axios = __webpack_require__(2); var _ = _jsData.utils._; var copy = _jsData.utils.copy; var deepMixIn = _jsData.utils.deepMixIn; + var extend = _jsData.utils.extend; var fillIn = _jsData.utils.fillIn; var forOwn = _jsData.utils.forOwn; var isArray = _jsData.utils.isArray; @@ -85,13 +86,13 @@ return /******/ (function(modules) { // webpackBootstrap var resolve = _jsData.utils.resolve; var reject = _jsData.utils.reject; var toJson = _jsData.utils.toJson; - + var hasFetch = false; - + try { hasFetch = window && window.fetch; } catch (e) {} - + function isValidString(value) { return value != null && value !== ''; } @@ -103,22 +104,22 @@ return /******/ (function(modules) { // webpackBootstrap for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } - + var result = join(args, '/'); return result.replace(/([^:\/]|^)\/{2,}/g, '$1/'); } - + function encode(val) { - return encodeURIComponent(val).replace(/%40/gi, '@').replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+'); + return encodeURIComponent(val).replace(/%40/gi, '@').replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+').replace(/%5B/gi, '[').replace(/%5D/gi, ']'); } - + function buildUrl(url, params) { if (!params) { return url; } - + var parts = []; - + forOwn(params, function (val, key) { if (val === null || typeof val === 'undefined') { return; @@ -126,7 +127,7 @@ return /******/ (function(modules) { // webpackBootstrap if (!isArray(val)) { val = [val]; } - + val.forEach(function (v) { if (window.toString.call(v) === '[object Date]') { v = v.toISOString(); @@ -136,14 +137,14 @@ return /******/ (function(modules) { // webpackBootstrap parts.push(encode(key) + '=' + encode(v)); }); }); - + if (parts.length > 0) { url += (url.indexOf('?') === -1 ? '?' : '&') + parts.join('&'); } - + return url; } - + /** * DSHttpAdapter class. * @class DSHttpAdapter @@ -159,10 +160,10 @@ return /******/ (function(modules) { // webpackBootstrap */ function DSHttpAdapter(opts) { var self = this; - + // Default values for arguments opts || (opts = {}); - + // Default and user-defined settings self.basePath = opts.basePath === undefined ? '' : opts.basePath; self.debug = opts.debug === undefined ? false : opts.debug; @@ -171,18 +172,16 @@ return /******/ (function(modules) { // webpackBootstrap self.httpConfig = opts.httpConfig === undefined ? {} : opts.httpConfig; self.suffix = opts.suffix === undefined ? '' : opts.suffix; self.useFetch = opts.useFetch === undefined ? false : opts.useFetch; - - // Use "window.fetch" if available and the user asks for it - if (hasFetch && (self.useFetch || self.http === undefined)) {} } - - fillIn(DSHttpAdapter, { + + fillIn(DSHttpAdapter.prototype, { beforeCreate: function beforeCreate() {}, create: function create(Model, props, opts) { var self = this; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(Model, opts.params, opts); + opts.suffix || (opts.suffix = Model.suffix); opts.op = 'create'; self.dbg(opts.op, Model, props, opts); return resolve(self.beforeCreate(Model, props, opts)).then(function () { @@ -190,7 +189,7 @@ return /******/ (function(modules) { // webpackBootstrap }).then(function (response) { return self.deserialize(Model, response, opts); }).then(function (data) { - return resolve(self.afterCreate(Model, data, opts)).then(function (_data) { + return resolve(self.afterCreate(Model, props, opts, data)).then(function (_data) { return _data || data; }); }); @@ -200,7 +199,7 @@ return /******/ (function(modules) { // webpackBootstrap for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2]; } - + this.log.apply(this, ['debug'].concat(args)); }, beforeDEL: function beforeDEL() {}, @@ -224,6 +223,9 @@ return /******/ (function(modules) { // webpackBootstrap if (isFunction(opts.deserialize)) { return opts.deserialize(Model, data, opts); } + if (isFunction(Model.deserialize)) { + return Model.deserialize(Model, data, opts); + } if (opts.raw) { return data; } @@ -235,6 +237,7 @@ return /******/ (function(modules) { // webpackBootstrap opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(Model, opts.params, opts); + opts.suffix || (opts.suffix = Model.suffix); opts.op = 'destroy'; self.dbg(opts.op, Model, id, opts); return resolve(self.beforeDestroy(Model, id, opts)).then(function () { @@ -242,35 +245,38 @@ return /******/ (function(modules) { // webpackBootstrap }).then(function (response) { return self.deserialize(Model, response, opts); }).then(function (data) { - return resolve(self.afterDestroy(Model, id, data, opts)).then(function (_data) { + return resolve(self.afterDestroy(Model, id, opts, data)).then(function (_data) { return _data || data; }); }); }, + afterDestroy: function afterDestroy() {}, beforeDestroyAll: function beforeDestroyAll() {}, destroyAll: function destroyAll(Model, query, opts) { var self = this; query || (query = {}); opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); - opts.op = 'destroy'; - self.dbg(opts.op, Model, query, opts); deepMixIn(opts.params, query); opts.params = self.queryTransform(Model, opts.params, opts); + opts.suffix || (opts.suffix = Model.suffix); + opts.op = 'destroy'; + self.dbg(opts.op, Model, query, opts); return resolve(self.beforeDestroyAll(Model, query, opts)).then(function () { - return self.DEL(self.getPath('destroyAll', Model, query, opts), opts); + return self.DEL(self.getPath('destroyAll', Model, opts.params, opts), opts); }).then(function (response) { return self.deserialize(Model, response, opts); }).then(function (data) { - return resolve(self.afterDestroyAll(Model, query, data, opts)).then(function (_data) { + return resolve(self.afterDestroyAll(Model, query, opts, data)).then(function (_data) { return _data || data; }); }); }, + afterDestroyAll: function afterDestroyAll() {}, error: function error() { if (console) { var _console; - + (_console = console)[typeof console.error === 'function' ? 'error' : 'log'].apply(_console, arguments); } }, @@ -278,11 +284,11 @@ return /******/ (function(modules) { // webpackBootstrap function fetch(_x, _x2) { return _fetch.apply(this, arguments); } - + fetch.toString = function () { return _fetch.toString(); }; - + return fetch; }(function (config, opts) { var requestConfig = { @@ -290,11 +296,11 @@ return /******/ (function(modules) { // webpackBootstrap // turn the plain headers object into the Fetch Headers object headers: new Headers(config.headers) }; - + if (config.data) { requestConfig.body = toJson(config.data); } - + return fetch(new Request(buildUrl(config.url, config.params), requestConfig)).then(function (response) { response.config = { method: config.method, @@ -312,6 +318,7 @@ return /******/ (function(modules) { // webpackBootstrap opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(Model, opts.params, opts); + opts.suffix || (opts.suffix = Model.suffix); opts.op = 'find'; self.dbg(opts.op, Model, id, opts); return resolve(self.beforeFind(Model, id, opts)).then(function () { @@ -319,31 +326,34 @@ return /******/ (function(modules) { // webpackBootstrap }).then(function (response) { return self.deserialize(Model, response, opts); }).then(function (data) { - return resolve(self.afterFind(Model, id, data, opts)).then(function (_data) { + return resolve(self.afterFind(Model, id, opts, data)).then(function (_data) { return _data || data; }); }); }, afterFind: function afterFind() {}, + beforeFindAll: function beforeFindAll() {}, findAll: function findAll(Model, query, opts) { var self = this; query || (query = {}); opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); + opts.suffix || (opts.suffix = Model.suffix); opts.op = 'findAll'; self.dbg(opts.op, Model, query, opts); deepMixIn(opts.params, query); opts.params = self.queryTransform(Model, opts.params, opts); return resolve(self.beforeFindAll(Model, query, opts)).then(function () { - return self.GET(self.getPath('findAll', Model, query, opts), opts); + return self.GET(self.getPath('findAll', Model, opts.params, opts), opts); }).then(function (response) { return self.deserialize(Model, response, opts); }).then(function (data) { - return resolve(self.afterFindAll(Model, query, data, opts)).then(function (_data) { + return resolve(self.afterFindAll(Model, query, opts, data)).then(function (_data) { return _data || data; }); }); }, + afterFindAll: function afterFindAll() {}, beforeGET: function beforeGET() {}, GET: function GET(url, config, opts) { var self = this; @@ -362,17 +372,17 @@ return /******/ (function(modules) { // webpackBootstrap afterGET: function afterGET() {}, getEndpoint: function getEndpoint(Model, id, opts) { var _this = this; - + opts || (opts = {}); opts.params || (opts.params = {}); - + var item = undefined; var parentKey = Model.parentKey; var endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : Model.endpoint; var parentField = Model.parentField; - var parentDef = Model.getResource(Model.parent); + var parentDef = Model.parent ? Model.getResource(Model.parent) : undefined; var parentId = opts.params[parentKey]; - + if (parentId === false || !parentKey || !parentDef) { if (parentId === false) { delete opts.params[parentKey]; @@ -380,17 +390,17 @@ return /******/ (function(modules) { // webpackBootstrap return endpoint; } else { delete opts.params[parentKey]; - + if (isString(id) || isNumber(id)) { item = Model.get(id); } else if (isObject(id)) { item = id; } - + if (item) { parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null); } - + if (parentId) { var _ret = function () { delete opts.endpoint; @@ -403,7 +413,7 @@ return /******/ (function(modules) { // webpackBootstrap v: makePath(_this.getEndpoint(parentDef, parentId, _opts, parentId, endpoint)) }; }(); - + if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v; } else { return endpoint; @@ -413,7 +423,7 @@ return /******/ (function(modules) { // webpackBootstrap getPath: function getPath(method, Model, id, opts) { var self = this; opts || (opts = {}); - var args = [opts.basePath === undefined ? self.basePath : opts.basePath, self.getEndpoint(Model, isString(id) || isNumber(id) || method === 'create' ? id : null, opts)]; + var args = [opts.basePath === undefined ? Model.basePath === undefined ? self.basePath : Model.basePath : opts.basePath, self.getEndpoint(Model, isString(id) || isNumber(id) || method === 'create' ? id : null, opts)]; if (method === 'find' || method === 'update' || method === 'destroy') { args.push(id); } @@ -434,7 +444,7 @@ return /******/ (function(modules) { // webpackBootstrap if (suffix && config.url.substr(config.url.length - suffix.length) !== suffix) { config.url += suffix; } - + function logResponse(data) { var str = start.toUTCString() + ' - ' + config.method.toUpperCase() + ' ' + config.url + ' - ' + data.status + ' ' + (new Date().getTime() - start.getTime()) + 'ms'; if (data.status >= 200 && data.status < 300) { @@ -449,11 +459,11 @@ return /******/ (function(modules) { // webpackBootstrap return reject(data); } } - + if (!self.http) { throw new Error('You have not configured this adapter with an http library!'); } - + return resolve(self.beforeHTTP(config)).then(function (_config) { config = _config || config; if (hasFetch && (self.useFetch || opts.useFetch || !self.http)) { @@ -481,7 +491,7 @@ return /******/ (function(modules) { // webpackBootstrap for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { args[_key3 - 1] = arguments[_key3]; } - + if (level && !args.length) { args.push(level); level = 'debug'; @@ -492,11 +502,11 @@ return /******/ (function(modules) { // webpackBootstrap var prefix = level.toUpperCase() + ': (' + this.name + ')'; if (console[level]) { var _console2; - + (_console2 = console)[level].apply(_console2, [prefix].concat(args)); } else { var _console3; - + (_console3 = console).log.apply(_console3, [prefix].concat(args)); } }, @@ -534,15 +544,17 @@ return /******/ (function(modules) { // webpackBootstrap }); }, afterPUT: function afterPUT() {}, + beforeUpdate: function beforeUpdate() {}, update: function update(Model, id, props, opts) { var self = this; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(Model, opts.params, opts); + opts.suffix || (opts.suffix = Model.suffix); opts.op = 'update'; self.dbg(opts.op, Model, id, props, opts); return resolve(self.beforeUpdate(Model, id, props, opts)).then(function () { - return self.POST(self.getPath('update', Model, id, opts), self.serialize(Model, props, opts), opts); + return self.PUT(self.getPath('update', Model, id, opts), self.serialize(Model, props, opts), opts); }).then(function (response) { return self.deserialize(Model, response, opts); }).then(function (data) { @@ -551,17 +563,20 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }, + afterUpdate: function afterUpdate() {}, + beforeUpdateAll: function beforeUpdateAll() {}, updateAll: function updateAll(Model, props, query, opts) { var self = this; query || (query = {}); opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); - opts.op = 'updateAll'; - self.dbg(opts.op, Model, props, query, opts); deepMixIn(opts.params, query); opts.params = self.queryTransform(Model, opts.params, opts); + opts.suffix || (opts.suffix = Model.suffix); + opts.op = 'updateAll'; + self.dbg(opts.op, Model, props, query, opts); return resolve(self.beforeUpdateAll(Model, props, query, opts)).then(function () { - return self.PUT(self.getPath('updateAll', Model, query, opts), opts); + return self.PUT(self.getPath('updateAll', Model, opts.params, opts), self.serialize(Model, props, opts), opts); }).then(function (response) { return self.deserialize(Model, response, opts); }).then(function (data) { @@ -569,9 +584,10 @@ return /******/ (function(modules) { // webpackBootstrap return _data || data; }); }); - } + }, + afterUpdateAll: function afterUpdateAll() {} }); - + DSHttpAdapter.addAction = function (name, opts) { if (!name || !isString(name)) { throw new TypeError('action(name[, opts]): Expected: string, Found: ' + (typeof name === 'undefined' ? 'undefined' : _typeof(name))); @@ -625,7 +641,7 @@ return /******/ (function(modules) { // webpackBootstrap return target; }; }; - + DSHttpAdapter.addActions = function (opts) { opts || (opts = {}); return function (target) { @@ -635,7 +651,9 @@ return /******/ (function(modules) { // webpackBootstrap return target; }; }; - + + DSHttpAdapter.extend = extend; + DSHttpAdapter.version = { full: '3.0.0-alpha.2', major: parseInt('3', 10), @@ -644,23 +662,23 @@ return /******/ (function(modules) { // webpackBootstrap alpha: true ? '2' : false, beta: true ? 'false' : false }; - + module.exports = DSHttpAdapter; /***/ }, -/* 1 */, -/* 2 */ +/* 1 */ /***/ function(module, exports) { - module.exports = __WEBPACK_EXTERNAL_MODULE_2__; + module.exports = __WEBPACK_EXTERNAL_MODULE_1__; /***/ }, -/* 3 */ +/* 2 */ /***/ function(module, exports) { - module.exports = __WEBPACK_EXTERNAL_MODULE_3__; + module.exports = __WEBPACK_EXTERNAL_MODULE_2__; /***/ } /******/ ]) }); -; \ No newline at end of file +; +//# sourceMappingURL=js-data-http-node.js.map \ No newline at end of file diff --git a/node/dist/js-data-http-node.js.map b/node/dist/js-data-http-node.js.map new file mode 100644 index 0000000..2c38488 --- /dev/null +++ b/node/dist/js-data-http-node.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 6b88933e73e00efb3a56","webpack:///C:/Users/jason/Documents/GitHub/js-data-http/src/index.js","webpack:///external \"js-data\"","webpack:///external \"axios\""],"names":[],"mappings":"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","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_2__) {\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 6b88933e73e00efb3a56\n **/","/* global fetch:true Headers:true Request:true */\r\nconst axios = require('axios')\r\nimport {utils} from 'js-data'\r\nconst {\r\n _,\r\n copy,\r\n deepMixIn,\r\n extend,\r\n fillIn,\r\n forOwn,\r\n isArray,\r\n isFunction,\r\n isNumber,\r\n isObject,\r\n isSorN,\r\n isString,\r\n resolve,\r\n reject,\r\n toJson\r\n} = utils\r\n\r\nlet hasFetch = false\r\n\r\ntry {\r\n hasFetch = window && window.fetch\r\n} catch (e) {}\r\n\r\nfunction isValidString (value) {\r\n return (value != null && value !== '')\r\n}\r\nfunction join (items, separator) {\r\n separator || (separator = '')\r\n return items.filter(isValidString).join(separator)\r\n}\r\nfunction makePath (...args) {\r\n let result = join(args, '/')\r\n return result.replace(/([^:\\/]|^)\\/{2,}/g, '$1/')\r\n}\r\n\r\nfunction encode (val) {\r\n return encodeURIComponent(val)\r\n .replace(/%40/gi, '@')\r\n .replace(/%3A/gi, ':')\r\n .replace(/%24/g, '$')\r\n .replace(/%2C/gi, ',')\r\n .replace(/%20/g, '+')\r\n .replace(/%5B/gi, '[')\r\n .replace(/%5D/gi, ']')\r\n}\r\n\r\nfunction buildUrl (url, params) {\r\n if (!params) {\r\n return url\r\n }\r\n\r\n const parts = []\r\n\r\n forOwn(params, function (val, key) {\r\n if (val === null || typeof val === 'undefined') {\r\n return\r\n }\r\n if (!isArray(val)) {\r\n val = [val]\r\n }\r\n\r\n val.forEach(function (v) {\r\n if (window.toString.call(v) === '[object Date]') {\r\n v = v.toISOString()\r\n } else if (isObject(v)) {\r\n v = toJson(v)\r\n }\r\n parts.push(`${encode(key)}=${encode(v)}`)\r\n })\r\n })\r\n\r\n if (parts.length > 0) {\r\n url += (url.indexOf('?') === -1 ? '?' : '&') + parts.join('&')\r\n }\r\n\r\n return url\r\n}\r\n\r\n/**\r\n * DSHttpAdapter class.\r\n * @class DSHttpAdapter\r\n *\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.basePath='']\r\n * @param {boolean} [opts.debug=false]\r\n * @param {boolean} [opts.forceTrailingSlash=false]\r\n * @param {Object} [opts.http=axios]\r\n * @param {Object} [opts.httpConfig={}]\r\n * @param {string} [opts.suffix='']\r\n * @param {boolean} [opts.useFetch=false]\r\n */\r\nfunction DSHttpAdapter (opts) {\r\n const self = this\r\n\r\n // Default values for arguments\r\n opts || (opts = {})\r\n\r\n // Default and user-defined settings\r\n self.basePath = opts.basePath === undefined ? '' : opts.basePath\r\n self.debug = opts.debug === undefined ? false : opts.debug\r\n self.forceTrailingSlash = opts.forceTrailingSlash === undefined ? false : opts.forceTrailingSlash\r\n self.http = opts.http === undefined ? axios : opts.http\r\n self.httpConfig = opts.httpConfig === undefined ? {} : opts.httpConfig\r\n self.suffix = opts.suffix === undefined ? '' : opts.suffix\r\n self.useFetch = opts.useFetch === undefined ? false : opts.useFetch\r\n}\r\n\r\nfillIn(DSHttpAdapter.prototype, {\r\n\r\n beforeCreate () {},\r\n\r\n create (Model, props, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'create'\r\n self.dbg(opts.op, Model, props, opts)\r\n return resolve(self.beforeCreate(Model, props, opts)).then(function () {\r\n return self.POST(\r\n self.getPath('create', Model, props, opts),\r\n self.serialize(Model, props, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterCreate(Model, props, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n afterCreate () {},\r\n\r\n dbg (...args) {\r\n this.log('debug', ...args)\r\n },\r\n\r\n beforeDEL () {},\r\n\r\n DEL (url, config, opts) {\r\n const self = this\r\n config || (config = {})\r\n config.url = url || config.url\r\n config.method = config.method || 'delete'\r\n return resolve(self.beforeDEL(url, config, opts)).then(function (_config) {\r\n config = _config || config\r\n return self.HTTP(config, opts)\r\n }).then(function (response) {\r\n return resolve(self.afterDEL(url, config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n afterDEL () {},\r\n\r\n deserialize (Model, data, opts) {\r\n opts || (opts = {})\r\n if (isFunction(opts.deserialize)) {\r\n return opts.deserialize(Model, data, opts)\r\n }\r\n if (isFunction(Model.deserialize)) {\r\n return Model.deserialize(Model, data, opts)\r\n }\r\n if (opts.raw) {\r\n return data\r\n }\r\n return data ? ('data' in data ? data.data : data) : data\r\n },\r\n\r\n beforeDestroy () {},\r\n\r\n destroy (Model, id, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'destroy'\r\n self.dbg(opts.op, Model, id, opts)\r\n return resolve(self.beforeDestroy(Model, id, opts)).then(function () {\r\n return self.DEL(\r\n self.getPath('destroy', Model, id, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterDestroy(Model, id, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n afterDestroy () {},\r\n\r\n beforeDestroyAll () {},\r\n\r\n destroyAll (Model, query, opts) {\r\n const self = this\r\n query || (query = {})\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n deepMixIn(opts.params, query)\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'destroy'\r\n self.dbg(opts.op, Model, query, opts)\r\n return resolve(self.beforeDestroyAll(Model, query, opts)).then(function () {\r\n return self.DEL(\r\n self.getPath('destroyAll', Model, opts.params, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterDestroyAll(Model, query, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n afterDestroyAll () {},\r\n\r\n error (...args) {\r\n if (console) {\r\n console[typeof console.error === 'function' ? 'error' : 'log'](...args)\r\n }\r\n },\r\n\r\n fetch (config, opts) {\r\n const requestConfig = {\r\n method: config.method,\r\n // turn the plain headers object into the Fetch Headers object\r\n headers: new Headers(config.headers)\r\n }\r\n\r\n if (config.data) {\r\n requestConfig.body = toJson(config.data)\r\n }\r\n\r\n return fetch(new Request(buildUrl(config.url, config.params), requestConfig)).then(function (response) {\r\n response.config = {\r\n method: config.method,\r\n url: config.url\r\n }\r\n return response.json().then(function (data) {\r\n response.data = data\r\n return response\r\n })\r\n })\r\n },\r\n\r\n beforeFind () {},\r\n\r\n find (Model, id, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'find'\r\n self.dbg(opts.op, Model, id, opts)\r\n return resolve(self.beforeFind(Model, id, opts)).then(function () {\r\n return self.GET(\r\n self.getPath('find', Model, id, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterFind(Model, id, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n afterFind () {},\r\n\r\n beforeFindAll () {},\r\n\r\n findAll (Model, query, opts) {\r\n const self = this\r\n query || (query = {})\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'findAll'\r\n self.dbg(opts.op, Model, query, opts)\r\n deepMixIn(opts.params, query)\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n return resolve(self.beforeFindAll(Model, query, opts)).then(function () {\r\n return self.GET(\r\n self.getPath('findAll', Model, opts.params, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterFindAll(Model, query, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n afterFindAll () {},\r\n\r\n beforeGET () {},\r\n\r\n GET (url, config, opts) {\r\n const self = this\r\n config || (config = {})\r\n config.url = url || config.url\r\n config.method = config.method || 'get'\r\n return resolve(self.beforeGET(url, config, opts)).then(function (_config) {\r\n config = _config || config\r\n return self.HTTP(config, opts)\r\n }).then(function (response) {\r\n return resolve(self.afterGET(url, config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n afterGET () {},\r\n\r\n getEndpoint (Model, id, opts) {\r\n opts || (opts = {})\r\n opts.params || (opts.params = {})\r\n\r\n let item\r\n const parentKey = Model.parentKey\r\n const endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : Model.endpoint\r\n let parentField = Model.parentField\r\n const parentDef = Model.parent ? Model.getResource(Model.parent) : undefined\r\n let parentId = opts.params[parentKey]\r\n\r\n if (parentId === false || !parentKey || !parentDef) {\r\n if (parentId === false) {\r\n delete opts.params[parentKey]\r\n }\r\n return endpoint\r\n } else {\r\n delete opts.params[parentKey]\r\n\r\n if (isString(id) || isNumber(id)) {\r\n item = Model.get(id)\r\n } else if (isObject(id)) {\r\n item = id\r\n }\r\n\r\n if (item) {\r\n parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null)\r\n }\r\n\r\n if (parentId) {\r\n delete opts.endpoint\r\n const _opts = {}\r\n forOwn(opts, function (value, key) {\r\n _opts[key] = value\r\n })\r\n _(_opts, parentDef)\r\n return makePath(this.getEndpoint(parentDef, parentId, _opts, parentId, endpoint))\r\n } else {\r\n return endpoint\r\n }\r\n }\r\n },\r\n\r\n getPath (method, Model, id, opts) {\r\n const self = this\r\n opts || (opts = {})\r\n const args = [\r\n opts.basePath === undefined ? (Model.basePath === undefined ? self.basePath : Model.basePath) : opts.basePath,\r\n self.getEndpoint(Model, (isString(id) || isNumber(id) || method === 'create') ? id : null, opts)\r\n ]\r\n if (method === 'find' || method === 'update' || method === 'destroy') {\r\n args.push(id)\r\n }\r\n return makePath.apply(utils, args)\r\n },\r\n\r\n beforeHTTP () {},\r\n\r\n HTTP (config, opts) {\r\n const self = this\r\n const start = new Date()\r\n opts || (opts = {})\r\n config = copy(config)\r\n config = deepMixIn(config, self.httpConfig)\r\n if (self.forceTrailingSlash && config.url[config.url.length - 1] !== '/') {\r\n config.url += '/'\r\n }\r\n config.method = config.method.toUpperCase()\r\n const suffix = config.suffix || opts.suffix || self.suffix\r\n if (suffix && config.url.substr(config.url.length - suffix.length) !== suffix) {\r\n config.url += suffix\r\n }\r\n\r\n function logResponse (data) {\r\n const str = `${start.toUTCString()} - ${config.method.toUpperCase()} ${config.url} - ${data.status} ${(new Date().getTime() - start.getTime())}ms`\r\n if (data.status >= 200 && data.status < 300) {\r\n if (self.log) {\r\n self.dbg('debug', str, data)\r\n }\r\n return data\r\n } else {\r\n if (self.error) {\r\n self.error(`'FAILED: ${str}`, data)\r\n }\r\n return reject(data)\r\n }\r\n }\r\n\r\n if (!self.http) {\r\n throw new Error('You have not configured this adapter with an http library!')\r\n }\r\n\r\n return resolve(self.beforeHTTP(config)).then(function (_config) {\r\n config = _config || config\r\n if (hasFetch && (self.useFetch || opts.useFetch || !self.http)) {\r\n return self.fetch(config, opts).then(logResponse, logResponse)\r\n }\r\n return self.http(config).then(logResponse, logResponse)\r\n }).then(function (response) {\r\n return resolve(self.afterHTTP(config, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n afterHTTP () {},\r\n\r\n queryTransform (Model, params, opts) {\r\n return params\r\n },\r\n\r\n serialize (Model, data, opts) {\r\n opts || (opts = {})\r\n if (isFunction(opts.serialize)) {\r\n return opts.serialize(Model, data, opts)\r\n }\r\n return data\r\n },\r\n\r\n log (level, ...args) {\r\n if (level && !args.length) {\r\n args.push(level)\r\n level = 'debug'\r\n }\r\n if (level === 'debug' && !this.debug) {\r\n return\r\n }\r\n const prefix = `${level.toUpperCase()}: (${this.name})`\r\n if (console[level]) {\r\n console[level](prefix, ...args)\r\n } else {\r\n console.log(prefix, ...args)\r\n }\r\n },\r\n\r\n beforePOST () {},\r\n\r\n POST (url, data, config, opts) {\r\n const self = this\r\n config || (config = {})\r\n config.url = url || config.url\r\n config.data = data || config.data\r\n config.method = config.method || 'post'\r\n return resolve(self.beforePOST(url, data, config, opts)).then(function (_config) {\r\n config = _config || config\r\n return self.HTTP(config, opts)\r\n }).then(function (response) {\r\n return resolve(self.afterPOST(url, data, config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n afterPOST () {},\r\n\r\n beforePUT () {},\r\n\r\n PUT (url, data, config, opts) {\r\n const self = this\r\n config || (config = {})\r\n config.url = url || config.url\r\n config.data = data || config.data\r\n config.method = config.method || 'put'\r\n return resolve(self.beforePUT(url, data, config, opts)).then(function (_config) {\r\n config = _config || config\r\n return self.HTTP(config, opts)\r\n }).then(function (response) {\r\n return resolve(self.afterPUT(url, data, config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n afterPUT () {},\r\n\r\n beforeUpdate () {},\r\n\r\n update (Model, id, props, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'update'\r\n self.dbg(opts.op, Model, id, props, opts)\r\n return resolve(self.beforeUpdate(Model, id, props, opts)).then(function () {\r\n return self.PUT(\r\n self.getPath('update', Model, id, opts),\r\n self.serialize(Model, props, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterUpdate(Model, id, props, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n afterUpdate () {},\r\n\r\n beforeUpdateAll () {},\r\n\r\n updateAll (Model, props, query, opts) {\r\n const self = this\r\n query || (query = {})\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n deepMixIn(opts.params, query)\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'updateAll'\r\n self.dbg(opts.op, Model, props, query, opts)\r\n return resolve(self.beforeUpdateAll(Model, props, query, opts)).then(function () {\r\n return self.PUT(\r\n self.getPath('updateAll', Model, opts.params, opts),\r\n self.serialize(Model, props, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterUpdateAll(Model, props, query, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n afterUpdateAll () {}\r\n})\r\n\r\nDSHttpAdapter.addAction = function (name, opts) {\r\n if (!name || !isString(name)) {\r\n throw new TypeError('action(name[, opts]): Expected: string, Found: ' + typeof name)\r\n }\r\n return function (target) {\r\n if (target[name]) {\r\n throw new Error('action(name[, opts]): ' + name + ' already exists on target!')\r\n }\r\n opts.request = opts.request || function (config) { return config }\r\n opts.response = opts.response || function (response) { return response }\r\n opts.responseError = opts.responseError || function (err) { return reject(err) }\r\n target[name] = function (id, _opts) {\r\n if (isObject(id)) {\r\n _opts = id\r\n }\r\n _opts = _opts || {}\r\n let adapter = this.getAdapter(opts.adapter || this.defaultAdapter || 'http')\r\n let config = {}\r\n fillIn(config, opts)\r\n if (!_opts.hasOwnProperty('endpoint') && config.endpoint) {\r\n _opts.endpoint = config.endpoint\r\n }\r\n if (typeof _opts.getEndpoint === 'function') {\r\n config.url = _opts.getEndpoint(this, _opts)\r\n } else {\r\n let args = [\r\n _opts.basePath || this.basePath || adapter.defaults.basePath,\r\n adapter.getEndpoint(this, isSorN(id) ? id : null, _opts)\r\n ]\r\n if (isSorN(id)) {\r\n args.push(id)\r\n }\r\n args.push(opts.pathname || name)\r\n config.url = makePath.apply(null, args)\r\n }\r\n config.method = config.method || 'GET'\r\n config.modelName = this.name\r\n deepMixIn(config)(_opts)\r\n return resolve(config)\r\n .then(_opts.request || opts.request)\r\n .then(function (config) { return adapter.HTTP(config) })\r\n .then(function (data) {\r\n if (data && data.config) {\r\n data.config.modelName = this.name\r\n }\r\n return data\r\n })\r\n .then(_opts.response || opts.response, _opts.responseError || opts.responseError)\r\n }\r\n return target\r\n }\r\n}\r\n\r\nDSHttpAdapter.addActions = function (opts) {\r\n opts || (opts = {})\r\n return function (target) {\r\n forOwn(target, function (value, key) {\r\n DSHttpAdapter.addAction(key, value)(target)\r\n })\r\n return target\r\n }\r\n}\r\n\r\nDSHttpAdapter.extend = extend\r\n\r\nDSHttpAdapter.version = {\r\n full: '<%= pkg.version %>',\r\n major: parseInt('<%= major %>', 10),\r\n minor: parseInt('<%= minor %>', 10),\r\n patch: parseInt('<%= patch %>', 10),\r\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\r\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\r\n}\r\n\r\nmodule.exports = DSHttpAdapter\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/jason/Documents/GitHub/js-data-http/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 **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"axios\"\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/node/mocha.start.js b/node/mocha.start.js index ab07f45..50dd9ea 100644 --- a/node/mocha.start.js +++ b/node/mocha.start.js @@ -1,238 +1,76 @@ 'use strict' -require('babel-polyfill'); -var assert = require('chai').assert; -var sinon = require('sinon') -var mocha = require('mocha') -var JSData = require('js-data') -var DSHttpAdapter = require('./dist/js-data-http-node') -var DSHttpAdapterTests = require('./dist/js-data-http-node-tests') +var querystring = require('querystring') -var store - -var lifecycle = {} - -var globals = module.exports = { - store: undefined, - JSData: JSData, - DSHttpAdapter: DSHttpAdapter -} - -for (var key in DSHttpAdapter) { - globals[key] = DSHttpAdapter[key] -} - -for (var key in JSData) { - globals[key] = JSData[key] -} -for (var key in DSHttpAdapterTests) { - if (key !== 'init') { - globals[key] = DSHttpAdapterTests[key] - } -} - -var test = new mocha() - -var testGlobals = [] - -for (var key in globals) { - global[key] = globals[key] - testGlobals.push(globals[key]) -} -test.globals(testGlobals) - -beforeEach(function () { - globals.sinon = global.sinon = sinon - this.data = {} - this.data.p1 = globals.p1 = global.p1 = { author: 'John', age: 30, id: 5 } - this.data.p2 = globals.p2 = global.p2 = { author: 'Sally', age: 31, id: 6 } - this.data.p3 = globals.p3 = global.p3 = { author: 'Mike', age: 32, id: 7 } - this.data.p4 = globals.p4 = global.p4 = { author: 'Adam', age: 33, id: 8 } - this.data.p5 = globals.p5 = global.p5 = { author: 'Adam', age: 33, id: 9 } - var Base = JSData.Model.extend({}, { - name: 'base', - linkRelations: true - }); - this.Post = Base.extend({}, { - name: 'post', - endpoint: '/posts' - }) - this.User = Base.extend({}, { +before(function () { + var Test = this + Test.fail = function (msg) { + if (msg instanceof Error) { + console.log(msg.stack) + } else { + Test.assert.equal('should not reach this!: ' + msg, 'failure') + } + } + Test.assert = require('chai').assert + Test.sinon = require('sinon') + Test.JSData = require('js-data') + Test.DSHttpAdapter = require('./dist/js-data-http-node') + Test.User = Test.JSData.Model.extend({}, { name: 'user' }) - this.Group = Base.extend({}, { - name: 'group' - }) - this.Organization = Base.extend({}, { - name: 'organization' - }) - this.Profile = Base.extend({}, { - name: 'profile' - }) - this.Comment = Base.extend({}, { - name: 'comment' - }) - this.User.belongsTo(this.Organization, { - localField: 'organization', - localKey: 'organizationId' - }) - this.User.hasMany(this.Comment, { - localField: 'comments', - foreignKey: 'userId' - }) - this.User.hasMany(this.Comment, { - localField: 'approvedComments', - foreignKey: 'approvedBy' - }) - this.User.hasMany(this.Group, { - localField: 'groups', - foreignKeys: 'userIds' - }) - this.User.hasOne(this.Profile, { - localField: 'profile', - foreignKey: 'userId' - }) - this.Group.hasMany(this.User, { - localField: 'users', - localKeys: 'userIds' - }) - this.Organization.hasMany(this.User, { - localField: 'users', - foreignKey: 'organizationId' - }) - this.Profile.belongsTo(this.User, { - localField: 'user', - localKey: 'userId' - }) - this.Comment.belongsTo(this.User, { - localField: 'user', - localKey: 'userId' - }) - this.Comment.belongsTo(this.User, { - localField: 'approvedByUser', - localKey: 'approvedBy' + Test.Post = Test.JSData.Model.extend({}, { + name: 'post', + endpoint: 'posts', + basePath: 'api' }) - this.data.user1 = { - name: 'John Anderson', - id: 1, - organizationId: 2 - } - this.data.organization2 = { - name: 'Test Corp 2', - id: 2 - } - this.data.comment3 = { - content: 'test comment 3', - id: 3, - userId: 1 - } - this.data.profile4 = { - content: 'test profile 4', - id: 4, - userId: 1 - } - this.data.comment11 = { - id: 11, - userId: 10, - content: 'test comment 11' - } - this.data.comment12 = { - id: 12, - userId: 10, - content: 'test comment 12' - } - this.data.comment13 = { - id: 13, - userId: 10, - content: 'test comment 13' - } - this.data.organization14 = { - id: 14, - name: 'Test Corp' - } - this.data.profile15 = { - id: 15, - userId: 10, - email: 'john.anderson@test.com' - } - this.data.user10 = { - name: 'John Anderson', - id: 10, - organizationId: 14, - comments: [ - this.data.comment11, - this.data.comment12, - this.data.comment13 - ], - organization: this.data.organization14, - profile: this.data.profile15 - } - this.data.user16 = { - id: 16, - organizationId: 15, - name: 'test user 16' - } - this.data.user17 = { - id: 17, - organizationId: 15, - name: 'test user 17' - } - this.data.user18 = { - id: 18, - organizationId: 15, - name: 'test user 18' - } - this.data.group1 = { - name: 'group 1', - id: 1, - userIds: [10] - } - this.data.group2 = { - name: 'group 2', - id: 2, - userIds: [10] - } - this.data.organization15 = { - name: 'Another Test Corp', - id: 15, - users: [ - this.data.user16, - this.data.user17, - this.data.user18 - ] - } - this.data.user19 = { - id: 19, - name: 'test user 19' - } - this.data.user20 = { - id: 20, - name: 'test user 20' - } - this.data.comment19 = { - content: 'test comment 19', - id: 19, - approvedBy: 19, - approvedByUser: this.data.user19, - userId: 20, - user: this.data.user20 - } - this.data.user22 = { - id: 22, - name: 'test user 22' - } - this.data.profile21 = { - content: 'test profile 21', - id: 21, - userId: 22, - user: this.data.user22 - } + console.log('Testing against js-data ' + Test.JSData.version.full) }) -DSHttpAdapterTests.init() +beforeEach(function () { + var Test = this + Test.adapter = new Test.DSHttpAdapter() + Test.User.registerAdapter('http', Test.adapter, { default: true }) + Test.Post.registerAdapter('http', Test.adapter, { default: true }) + + Test.p1 = { author: 'John', age: 30, id: 5 } + Test.p2 = { author: 'Sally', age: 31, id: 6 } + Test.p3 = { author: 'Mike', age: 32, id: 7 } + Test.p4 = { author: 'Adam', age: 33, id: 8 } + Test.p5 = { author: 'Adam', age: 33, id: 9 } + + Test.requests = [] -afterEach(function () { - globals.store = null - global.store = null + Test.adapter.http = function (config) { + config.headers || (config.headers = {}) + config.headers.Accept = 'application/json, text/plain, */*' + var params = 0 + for (var key in config.params) { + config.params[key] = Test.JSData.utils.isObject(config.params[key]) ? JSON.stringify(config.params[key]) : config.params[key] + params++ + } + return new Promise(function (resolve) { + var url = config.url + if (params) { + url += '?' + url += querystring.stringify(config.params) + } + var request = { + url: url, + method: config.method, + requestBody: JSON.stringify(config.data), + requestHeaders: config.headers, + respond: function (statusCode, headers, body) { + resolve({ + url: config.url, + method: config.method, + status: statusCode, + headers: headers, + data: body && statusCode >= 200 && statusCode < 300 ? JSON.parse(body) : '' + }) + } + } + Test.requests.push(request) + }) + } }) diff --git a/node/package.json b/node/package.json index d0bcd9d..3489949 100644 --- a/node/package.json +++ b/node/package.json @@ -19,6 +19,6 @@ "node.js" ], "peerDependencies": { - "axios": "0.7.x" + "axios": "0.8.x" } } diff --git a/node/test/unit/index.js b/node/test/unit/index.js deleted file mode 100644 index 626efdc..0000000 --- a/node/test/unit/index.js +++ /dev/null @@ -1,36 +0,0 @@ -/* global JSData:true */ -import {assert} from 'chai' - -assert.objectsEqual = function (a, b, msg) { - assert.deepEqual( - JSON.parse(JSON.stringify(a)), - JSON.parse(JSON.stringify(b)), - msg || 'Expected objects or arrays to be equal' - ) -} - -assert.fail = function (msg) { - assert.equal(`should not reach this!: ${msg}`, 'failure') -} - -export function init () { - describe('DSHttpAdapter (Node.js)', function () { - it('has all the right exports', function () { - assert.isFunction(DSHttpAdapter.addAction, 'has the addAction decorator') - assert.isFunction(DSHttpAdapter.addActions, 'has the addActions decorator') - assert.isObject(DSHttpAdapter.version, 'has a version') - }) - }) -} - -export const TYPES_EXCEPT_STRING = [123, 123.123, null, undefined, {}, [], true, false, function () {}] -export const TYPES_EXCEPT_STRING_OR_ARRAY = [123, 123.123, null, undefined, {}, true, false, function () {}] -export const TYPES_EXCEPT_STRING_OR_NUMBER = [null, undefined, {}, [], true, false, function () {}] -export const TYPES_EXCEPT_STRING_OR_OBJECT = [123, 123.123, null, undefined, [], true, false, function () {}] -export const TYPES_EXCEPT_STRING_OR_NUMBER_OBJECT = [null, undefined, [], true, false, function () {}] -export const TYPES_EXCEPT_ARRAY = ['string', 123, 123.123, null, undefined, {}, true, false, function () {}] -export const TYPES_EXCEPT_STRING_OR_ARRAY_OR_NUMBER = [null, undefined, {}, true, false, function () {}] -export const TYPES_EXCEPT_NUMBER = ['string', null, undefined, {}, [], true, false, function () {}] -export const TYPES_EXCEPT_OBJECT = ['string', 123, 123.123, null, undefined, true, false, function () {}] -export const TYPES_EXCEPT_BOOLEAN = ['string', 123, 123.123, null, undefined, {}, [], function () {}] -export const TYPES_EXCEPT_FUNCTION = ['string', 123, 123.123, null, undefined, {}, [], true, false] diff --git a/node/webpack.config.js b/node/webpack.config.js index e78d72a..9ba2482 100644 --- a/node/webpack.config.js +++ b/node/webpack.config.js @@ -1,9 +1,9 @@ var path= require('path') module.exports = { + devtool: 'source-map', entry: { './node/dist/js-data-http-node.js': './src/index.js', - './node/dist/js-data-http-node-tests.js': './node/test/unit/index.js' }, output: { filename: '[name]', @@ -19,14 +19,9 @@ module.exports = { { loader: 'babel-loader', include: [ - path.resolve(__dirname, '../src'), - path.resolve(__dirname, 'test') + path.resolve(__dirname, '../src') ], - test: /\.jsx?$/, - query: { - presets: ['es2015', 'stage-0'], - plugins: ['syntax-async-functions', 'transform-regenerator'] - } + test: /\.js$/ } ] } diff --git a/package.json b/package.json index 15114df..0195660 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "lint": "standard src/**/*.js", "bundle": "webpack --config webpack.config.js --colors", "min": "uglifyjs dist/js-data-http.js -o dist/js-data-http.min.js --source-map dist/js-data-http.min.map --source-map-url js-data-http.min.map -v -m -c --screw-ie8", - "min_fetch": "uglifyjs fetch/dist/js-data-fetch.js -o fetch/dist/js-data-fetch.min.js --source-map dist/js-data-fetch.min.map --source-map-url js-data-fetch.min.map -v -m -c --screw-ie8", + "min_fetch": "uglifyjs fetch/dist/js-data-fetch.js -o fetch/dist/js-data-fetch.min.js --source-map fetch/dist/js-data-fetch.min.map --source-map-url js-data-fetch.min.map -v -m -c --screw-ie8", "version": "node scripts/version.js", "banner": "node scripts/banner.js", "gzip": "echo gzipped size: $(cat dist/js-data-http.min.js | gzip -f9 | wc -c)kb", diff --git a/src/index.js b/src/index.js index b0d6023..da307f3 100644 --- a/src/index.js +++ b/src/index.js @@ -353,6 +353,8 @@ class DSHttpAdapter { } } +DSHttpAdapter.extend = extend + DSHttpAdapter.version = { full: '<%= pkg.version %>', major: parseInt('<%= major %>', 10), diff --git a/test/DEL.test.js b/test/DEL.test.js new file mode 100644 index 0000000..047dcd6 --- /dev/null +++ b/test/DEL.test.js @@ -0,0 +1,3 @@ +describe('DEL', function () { + it('should DEL') +}) diff --git a/test/GET.test.js b/test/GET.test.js new file mode 100644 index 0000000..adf478e --- /dev/null +++ b/test/GET.test.js @@ -0,0 +1,3 @@ +describe('GET', function () { + it('should GET') +}) diff --git a/test/HTTP.test.js b/test/HTTP.test.js new file mode 100644 index 0000000..199bf95 --- /dev/null +++ b/test/HTTP.test.js @@ -0,0 +1,3 @@ +describe('HTTP', function () { + it('should HTTP') +}) diff --git a/test/POST.test.js b/test/POST.test.js new file mode 100644 index 0000000..3170500 --- /dev/null +++ b/test/POST.test.js @@ -0,0 +1,3 @@ +describe('POST', function () { + it('should POST') +}) diff --git a/test/PUT.test.js b/test/PUT.test.js new file mode 100644 index 0000000..e62a1a3 --- /dev/null +++ b/test/PUT.test.js @@ -0,0 +1,3 @@ +describe('PUT', function () { + it('should PUT') +}) diff --git a/test/browser/create.spec.js b/test/browser/create.spec.js deleted file mode 100644 index 48f2dcb..0000000 --- a/test/browser/create.spec.js +++ /dev/null @@ -1,31 +0,0 @@ -describe.only('create', function () { - - it('should make a POST request', function () { - var _this = this; - - setTimeout(function () { - assert.equal(1, _this.requests.length); - assert.equal(_this.requests[0].url, 'api/posts'); - assert.equal(_this.requests[0].method, 'POST'); - assert.equal(_this.requests[0].requestBody, DSUtils.toJson({ author: 'John', age: 30 })); - _this.requests[0].respond(200, { 'Content-Type': 'application/json' }, DSUtils.toJson(p1)); - }, 30); - - return dsHttpAdapter.create(Post, { author: 'John', age: 30 }).then(function (data) { - assert.deepEqual(data, p1, 'post should have been created'); - - setTimeout(function () { - assert.equal(2, _this.requests.length); - assert.equal(_this.requests[1].url, 'api2/posts'); - assert.equal(_this.requests[1].requestBody, DSUtils.toJson({ author: 'John', age: 30 })); - _this.requests[1].respond(200, { 'Content-Type': 'application/json' }, DSUtils.toJson(p1)); - }, 30); - - return dsHttpAdapter.create(Post, { author: 'John', age: 30 }, { basePath: 'api2' }); - }).then(function (data) { - assert.deepEqual(data, p1, 'post should have been created'); - - assert.equal(queryTransform.callCount, 2, 'queryTransform should have been called twice'); - }); - }); -}); diff --git a/test/browser/destroy.spec.js b/test/browser/destroy.spec.js deleted file mode 100644 index bfebf00..0000000 --- a/test/browser/destroy.spec.js +++ /dev/null @@ -1,29 +0,0 @@ -describe('DSHttpAdapter.destroy(resourceConfig, id, options)', function () { - - it('should make a DELETE request', function () { - var _this = this; - - setTimeout(function () { - assert.equal(1, _this.requests.length); - assert.equal(_this.requests[0].url, 'api/posts/1'); - assert.equal(_this.requests[0].method, 'DELETE'); - _this.requests[0].respond(200, { 'Content-Type': 'text/plain' }, '1'); - }, 30); - - return dsHttpAdapter.destroy(Post, 1).then(function (data) { - assert.deepEqual(data, 1, 'post should have been deleted'); - - setTimeout(function () { - assert.equal(2, _this.requests.length); - assert.equal(_this.requests[1].url, 'api2/posts/1'); - assert.equal(_this.requests[1].method, 'DELETE'); - _this.requests[1].respond(200, { 'Content-Type': 'text/plain' }, '1'); - }, 30); - - return dsHttpAdapter.destroy(Post, 1, { basePath: 'api2' }); - }).then(function (data) { - assert.deepEqual(data, 1, 'post should have been deleted'); - assert.equal(queryTransform.callCount, 2, 'queryTransform should have been called twice'); - }); - }); -}); diff --git a/test/browser/destroyAll.spec.js b/test/browser/destroyAll.spec.js deleted file mode 100644 index d070c58..0000000 --- a/test/browser/destroyAll.spec.js +++ /dev/null @@ -1,35 +0,0 @@ -describe('DSHttpAdapter.destroyAll(resourceConfig, params, options)', function () { - - it('should make a DELETE request', function () { - var _this = this; - - setTimeout(function () { - assert.equal(1, _this.requests.length); - assert.equal(_this.requests[0].url, 'api/posts'); - assert.equal(_this.requests[0].method, 'DELETE'); - _this.requests[0].respond(204); - }, 30); - - return dsHttpAdapter.destroyAll(Post, {}).then(function (data) { - assert.equal('', data, 'posts should have been found'); - - setTimeout(function () { - assert.equal(2, _this.requests.length); - assert.equal(_this.requests[1].url, 'api2/posts?where=%7B%22author%22:%7B%22%3D%3D%22:%22John%22%7D%7D'); - assert.equal(_this.requests[1].method, 'DELETE'); - _this.requests[1].respond(204); - }, 30); - - return dsHttpAdapter.destroyAll(Post, { - where: { - author: { - '==': 'John' - } - } - }, { basePath: 'api2' }); - }).then(function (data) { - assert.equal('', data, 'posts should have been destroyed'); - assert.equal(queryTransform.callCount, 2, 'queryTransform should have been called'); - }); - }); -}); diff --git a/test/browser/find.spec.js b/test/browser/find.spec.js deleted file mode 100644 index c6e3ec1..0000000 --- a/test/browser/find.spec.js +++ /dev/null @@ -1,156 +0,0 @@ -describe('DSHttpAdapter.find(resourceConfig, id, options)', function () { - - it('should make a GET request', function () { - var _this = this; - - setTimeout(function () { - assert.equal(1, _this.requests.length); - assert.equal(_this.requests[0].url, 'api/posts/1'); - assert.equal(_this.requests[0].method, 'GET'); - _this.requests[0].respond(200, { 'Content-Type': 'application/json' }, JSON.stringify(p1)); - }, 30); - - return dsHttpAdapter.find(Post, 1).then(function (data) { - assert.deepEqual(data, p1, 'post should have been found'); - - setTimeout(function () { - assert.equal(2, _this.requests.length); - assert.equal(_this.requests[1].url, 'api2/posts/1'); - assert.equal(_this.requests[1].method, 'GET'); - _this.requests[1].respond(200, { 'Content-Type': 'application/json' }, JSON.stringify(p1)); - }, 30); - - return dsHttpAdapter.find(Post, 1, { basePath: 'api2' }); - }).then(function (data) { - assert.deepEqual(data, p1, 'post should have been found'); - assert.equal(queryTransform.callCount, 2, 'queryTransform should have been called twice'); - }); - }); - - it('should allow overriding urlPath', function () { - var _this = this; - - setTimeout(function () { - assert.equal(1, _this.requests.length); - assert.equal(_this.requests[0].url, 'api/foo/bar/beep/boop/1'); - assert.equal(_this.requests[0].method, 'GET'); - _this.requests[0].respond(200, { 'Content-Type': 'application/json' }, JSON.stringify(p1)); - }, 30); - - return Post.find(1, { urlPath: '/foo/bar/beep/boop/1' }).then(function (data) { - assert.equal(data.id, p1.id, 'post should have been found'); - assert.equal(queryTransform.callCount, 1, 'queryTransform should have been called twice'); - }); - }); - - it('should use default configs', function () { - var _this = this; - - dsHttpAdapter.defaults.httpConfig.params = { test: 'test' }; - dsHttpAdapter.defaults.httpConfig.headers = { Authorization: 'test' }; - - setTimeout(function () { - assert.equal(1, _this.requests.length); - assert.equal(_this.requests[0].url, 'api/posts/1?test=test'); - assert.equal(_this.requests[0].method, 'GET'); - assert.deepEqual({ - Authorization: 'test', - Accept: 'application/json, text/plain, */*' - }, _this.requests[0].requestHeaders); - _this.requests[0].respond(200, { 'Content-Type': 'application/json' }, JSON.stringify(p1)); - }, 30); - - return dsHttpAdapter.find(Post, 1).then(function (data) { - assert.deepEqual(data, p1, 'post should have been found'); - - delete dsHttpAdapter.defaults.httpConfig.params; - delete dsHttpAdapter.defaults.httpConfig.headers; - }); - }); - - it('should log errors', function () { - var _this = this; - var loggedError; - - dsHttpAdapter.defaults.error = function (err) { - loggedError = err; - }; - - setTimeout(function () { - assert.equal(1, _this.requests.length); - assert.equal(_this.requests[0].url, 'api/posts/1'); - assert.equal(_this.requests[0].method, 'GET'); - _this.requests[0].respond(404, { 'Content-Type': 'text/plain' }, 'Not Found'); - }, 30); - - return dsHttpAdapter.find(Post, 1).then(function () { - throw new Error('Should not have succeeded!'); - }, function () { - console.log(loggedError); - assert.isString(loggedError); - assert.isTrue(loggedError.indexOf('api/posts/1') !== -1, loggedError); - }); - }); - - it('should use suffixes', function () { - var _this = this; - - var Thing = datastore.defineResource({ - name: 'thing', - endpoint: 'things', - suffix: '.xml' - }); - - var otherAdapter = new DSHttpAdapter({ - suffix: '.json' - }); - - setTimeout(function () { - assert.equal(1, _this.requests.length); - assert.equal(_this.requests[0].url, 'things/1.xml'); - assert.equal(_this.requests[0].method, 'GET'); - _this.requests[0].respond(200, { 'Content-Type': 'application/json' }, JSON.stringify({ id: 1 })); - }, 30); - - return dsHttpAdapter.find(Thing, 1).then(function () { - - setTimeout(function () { - assert.equal(2, _this.requests.length); - assert.equal(_this.requests[1].url, 'api/posts/1.json'); - assert.equal(_this.requests[1].method, 'GET'); - _this.requests[1].respond(200, { 'Content-Type': 'application/json' }, JSON.stringify({ id: 1 })); - }, 30); - - return otherAdapter.find(Post, 1); - }); - }); - - it('should use parent', function () { - var _this = this; - - var Thing = datastore.defineResource({ - name: 'thing', - endpoint: 'things', - relations: { - belongsTo: { - user: { - localKey: 'userId', - localField: 'user', - parent: true - } - } - } - }); - - setTimeout(function () { - assert.equal(1, _this.requests.length); - assert.equal(_this.requests[0].url, 'user/2/things/1'); - assert.equal(_this.requests[0].method, 'GET'); - _this.requests[0].respond(200, { 'Content-Type': 'application/json' }, JSON.stringify({ id: 1 })); - }, 30); - - return dsHttpAdapter.find(Thing, 1, { params: { userId: 2 } }).then(function (data) { - assert.deepEqual(data, { id: 1 }, 'thing should have been found'); - }); - }); -}); diff --git a/test/browser/findAll.spec.js b/test/browser/findAll.spec.js deleted file mode 100644 index 06f6165..0000000 --- a/test/browser/findAll.spec.js +++ /dev/null @@ -1,93 +0,0 @@ -describe('dsHttpAdapter.findAll(resourceConfig, params, options)', function () { - - it('should make a GET request', function () { - var _this = this; - - setTimeout(function () { - assert.equal(1, _this.requests.length); - assert.equal(_this.requests[0].url, 'api/posts'); - assert.equal(_this.requests[0].method, 'GET'); - _this.requests[0].respond(200, { 'Content-Type': 'application/json' }, JSON.stringify([p1])); - }, 30); - - return dsHttpAdapter.findAll(Post, {}).then(function (data) { - assert.deepEqual(data, [p1], 'posts should have been found'); - - setTimeout(function () { - assert.equal(2, _this.requests.length); - assert.equal(_this.requests[1].url, 'api2/posts?where=%7B%22author%22:%7B%22%3D%3D%22:%22John%22%7D%7D'); - assert.equal(_this.requests[1].method, 'GET'); - _this.requests[1].respond(200, { 'Content-Type': 'application/json' }, JSON.stringify([p1])); - }, 30); - - return dsHttpAdapter.findAll(Post, { - where: { - author: { - '==': 'John' - } - } - }, { basePath: 'api2' }); - }).then(function (data) { - assert.deepEqual(data, [p1], 'posts should have been found'); - assert.equal(queryTransform.callCount, 2, 'queryTransform should have been called'); - }); - }); - - it('should use one of many parents', function () { - var _this = this; - - var Thing = datastore.defineResource({ - name: 'thing', - endpoint: 'things', - relations: { - belongsTo: { - user: { - localKey: 'userId', - localField: 'user', - parent: true - }, - posts: { - localKey: 'postId', - localField: 'post', - parent: true - } - } - } - }); - - if (!Thing.parents) { - Thing.parents = { - user: { - key: 'userId', - field: 'user' - }, - posts: { - key: 'postId', - field: 'post' - } - } - } - - setTimeout(function () { - assert.equal(1, _this.requests.length); - assert.equal(_this.requests[0].url, 'user/1/things'); - assert.equal(_this.requests[0].method, 'GET'); - _this.requests[0].respond(200, { 'Content-Type': 'application/json' }, JSON.stringify([{ id: 1 }])); - }, 30); - - return dsHttpAdapter.findAll(Thing, { userId: 1 }).then(function (data) { - assert.deepEqual(data, [{ id: 1 }], 'user thing should have been found'); - - setTimeout(function () { - assert.equal(2, _this.requests.length); - assert.equal(_this.requests[1].url, 'posts/2/things'); - assert.equal(_this.requests[1].method, 'GET'); - _this.requests[1].respond(200, { 'Content-Type': 'application/json' }, JSON.stringify([{ id: 2 }])); - }, 30); - - return dsHttpAdapter.findAll(Thing, { postId: 2 }); - }).then(function(data) { - assert.deepEqual(data, [{ id: 2 }], 'post thing should have been found'); - }); - }); -}); diff --git a/test/browser/update.spec.js b/test/browser/update.spec.js deleted file mode 100644 index 6f7cf37..0000000 --- a/test/browser/update.spec.js +++ /dev/null @@ -1,31 +0,0 @@ -describe('DSHttpAdapter.update(resourceConfig, id, attrs, options)', function () { - - it('should make a PUT request', function () { - var _this = this; - - setTimeout(function () { - assert.equal(1, _this.requests.length); - assert.equal(_this.requests[0].url, 'api/posts/1'); - assert.equal(_this.requests[0].method, 'PUT'); - assert.equal(_this.requests[0].requestBody, JSON.stringify({ author: 'John', age: 30 })); - _this.requests[0].respond(200, { 'Content-Type': 'application/json' }, JSON.stringify(p1)); - }, 30); - - return dsHttpAdapter.update(Post, 1, { author: 'John', age: 30 }).then(function (data) { - assert.deepEqual(data, p1, 'post 5 should have been updated'); - - setTimeout(function () { - assert.equal(2, _this.requests.length); - assert.equal(_this.requests[1].url, 'api2/posts/1'); - assert.equal(_this.requests[1].method, 'PUT'); - assert.equal(_this.requests[1].requestBody, JSON.stringify({ author: 'John', age: 30 })); - _this.requests[1].respond(200, { 'Content-Type': 'application/json' }, JSON.stringify(p1)); - }, 30); - - return dsHttpAdapter.update(Post, 1, { author: 'John', age: 30 }, { basePath: 'api2' }); - }).then(function (data) { - assert.deepEqual(data, p1, 'post 5 should have been updated'); - assert.equal(queryTransform.callCount, 2, 'queryTransform should have been called twice'); - }); - }); -}); diff --git a/test/browser/updateAll.spec.js b/test/browser/updateAll.spec.js deleted file mode 100644 index f8179c1..0000000 --- a/test/browser/updateAll.spec.js +++ /dev/null @@ -1,35 +0,0 @@ -describe('DSHttpAdapter.updateAll(resourceConfig, attrs, params, options)', function () { - - it('should make a PUT request', function () { - var _this = this; - - setTimeout(function () { - assert.equal(1, _this.requests.length); - assert.equal(_this.requests[0].url, 'api/posts'); - assert.equal(_this.requests[0].method, 'PUT'); - _this.requests[0].respond(200, { 'Content-Type': 'application/json' }, JSON.stringify([p1])); - }, 30); - - return dsHttpAdapter.updateAll(Post, { author: 'John', age: 30 }).then(function (data) { - assert.deepEqual(data, [p1], 'posts should have been updated'); - - setTimeout(function () { - assert.equal(2, _this.requests.length); - assert.equal(_this.requests[1].url, 'api2/posts?where=%7B%22author%22:%7B%22%3D%3D%22:%22John%22%7D%7D'); - assert.equal(_this.requests[1].method, 'PUT'); - _this.requests[1].respond(200, { 'Content-Type': 'application/json' }, JSON.stringify([p1])); - }, 30); - - return dsHttpAdapter.updateAll(Post, { author: 'John', age: 30 }, { - where: { - author: { - '==': 'John' - } - } - }, { basePath: 'api2' }); - }).then(function (data) { - assert.deepEqual(data, [p1], 'posts should have been updated'); - assert.equal(queryTransform.callCount, 1, 'queryTransform should have been called'); - }); - }); -}); diff --git a/test/create.test.js b/test/create.test.js new file mode 100644 index 0000000..8da03d1 --- /dev/null +++ b/test/create.test.js @@ -0,0 +1,34 @@ +describe('create', function () { + it('should create', function () { + var Test = this + var post = { + author: 'John', + age: 30 + } + + setTimeout(function () { + Test.requests[0].respond(200, { 'Content-Type': 'application/json' }, JSON.stringify(Test.p1)) + }, 30) + + return Test.adapter.create(Test.Post, post) + .then(function (data) { + Test.assert.equal(Test.requests[0].url, 'api/posts') + Test.assert.equal(Test.requests[0].method, 'POST') + Test.assert.equal(Test.requests[0].requestBody, JSON.stringify(post)) + Test.assert.deepEqual(data, Test.p1, 'post should have been created') + + setTimeout(function () { + Test.requests[1].respond(200, { 'Content-Type': 'application/json' }, JSON.stringify(Test.p1)) + }, 30) + + return Test.adapter.create(Test.Post, post, { + basePath: 'api2' + }) + }) + .then(function (data) { + Test.assert.equal(Test.requests[1].url, 'api2/posts') + Test.assert.equal(Test.requests[1].requestBody, JSON.stringify(post)) + Test.assert.deepEqual(data, Test.p1, 'post should have been created') + }) + }) +}) diff --git a/test/deserialize.test.js b/test/deserialize.test.js new file mode 100644 index 0000000..eeb4559 --- /dev/null +++ b/test/deserialize.test.js @@ -0,0 +1,3 @@ +describe('deserialize', function () { + it('should deserialize') +}) diff --git a/test/destroy.test.js b/test/destroy.test.js new file mode 100644 index 0000000..13ed79d --- /dev/null +++ b/test/destroy.test.js @@ -0,0 +1,29 @@ +describe('destroy', function () { + it('should destroy', function () { + var Test = this + + setTimeout(function () { + Test.requests[0].respond(200, { 'Content-Type': 'text/plain' }, '1') + }, 30) + + return Test.adapter.destroy(Test.Post, 1) + .then(function (data) { + Test.assert.equal(1, Test.requests.length) + Test.assert.equal(Test.requests[0].url, 'api/posts/1') + Test.assert.equal(Test.requests[0].method, 'DELETE') + Test.assert.deepEqual(data, 1, 'post should have been deleted') + + setTimeout(function () { + Test.requests[1].respond(200, { 'Content-Type': 'text/plain' }, '1') + }, 30) + + return Test.adapter.destroy(Test.Post, 1, { basePath: 'api2' }) + }) + .then(function (data) { + Test.assert.equal(2, Test.requests.length) + Test.assert.equal(Test.requests[1].url, 'api2/posts/1') + Test.assert.equal(Test.requests[1].method, 'DELETE') + Test.assert.deepEqual(data, 1, 'post should have been deleted') + }) + }) +}) diff --git a/test/destroyAll.test.js b/test/destroyAll.test.js new file mode 100644 index 0000000..d73879d --- /dev/null +++ b/test/destroyAll.test.js @@ -0,0 +1,35 @@ +describe('destroyAll', function () { + it('should destroyAll', function () { + var Test = this + + setTimeout(function () { + Test.requests[0].respond(204) + }, 30) + + return Test.adapter.destroyAll(Test.Post, {}) + .then(function (data) { + Test.assert.equal(1, Test.requests.length) + Test.assert.equal(Test.requests[0].url, 'api/posts') + Test.assert.equal(Test.requests[0].method, 'DELETE') + Test.assert.equal('', data, 'posts should have been found') + + setTimeout(function () { + Test.requests[1].respond(204) + }, 30) + + return Test.adapter.destroyAll(Test.Post, { + where: { + author: { + '==': 'John' + } + } + }, { basePath: 'api2' }) + }) + .then(function (data) { + Test.assert.equal(2, Test.requests.length) + Test.assert.equal(Test.requests[1].url.indexOf('api2/posts?where='), 0) + Test.assert.equal(Test.requests[1].method, 'DELETE') + Test.assert.equal('', data, 'posts should have been destroyed') + }) + }) +}) diff --git a/test/fetch.test.js b/test/fetch.test.js new file mode 100644 index 0000000..d86e69f --- /dev/null +++ b/test/fetch.test.js @@ -0,0 +1,3 @@ +describe('fetch', function () { + it('should fetch') +}) diff --git a/test/find.test.js b/test/find.test.js new file mode 100644 index 0000000..76288f2 --- /dev/null +++ b/test/find.test.js @@ -0,0 +1,115 @@ +describe('find', function () { + it('should find', function () { + var Test = this + + setTimeout(function () { + Test.requests[0].respond(200, { 'Content-Type': 'application/json' }, JSON.stringify(Test.p1)) + }, 30) + + return Test.adapter.find(Test.Post, 1) + .then(function (data) { + Test.assert.equal(1, Test.requests.length) + Test.assert.equal(Test.requests[0].url, 'api/posts/1') + Test.assert.equal(Test.requests[0].method, 'GET') + Test.assert.deepEqual(data, Test.p1, 'post should have been found') + + setTimeout(function () { + Test.requests[1].respond(200, { 'Content-Type': 'application/json' }, JSON.stringify(Test.p1)) + }, 30) + + return Test.adapter.find(Test.Post, 1, { basePath: 'api2' }) + }) + .then(function (data) { + Test.assert.equal(2, Test.requests.length) + Test.assert.equal(Test.requests[1].url, 'api2/posts/1') + Test.assert.equal(Test.requests[1].method, 'GET') + Test.assert.deepEqual(data, Test.p1, 'post should have been found') + }) + }) + + it('should use default configs', function () { + var Test = this + + Test.adapter.httpConfig.params = { test: 'test' } + Test.adapter.httpConfig.headers = { Authorization: 'test' } + + setTimeout(function () { + Test.requests[0].respond(200, { 'Content-Type': 'application/json' }, JSON.stringify(Test.p1)) + }, 30) + + return Test.adapter.find(Test.Post, 1) + .then(function (data) { + Test.assert.equal(1, Test.requests.length) + Test.assert.equal(Test.requests[0].url, 'api/posts/1?test=test') + Test.assert.equal(Test.requests[0].method, 'GET') + Test.assert.deepEqual({ + Authorization: 'test', + Accept: 'application/json, text/plain, */*' + }, Test.requests[0].requestHeaders) + Test.assert.deepEqual(data, Test.p1, 'post should have been found') + + delete Test.adapter.httpConfig.params + delete Test.adapter.httpConfig.headers + }) + }) + + it('should log errors', function () { + var Test = this + var loggedError + + Test.adapter.error = function (err) { + loggedError = err + } + + setTimeout(function () { + Test.requests[0].respond(404, { 'Content-Type': 'text/plain' }, 'Not Found') + }, 30) + + return Test.adapter.find(Test.Post, 1) + .then(function () { + throw new Error('Should not have succeeded!') + }, function () { + Test.assert.equal(1, Test.requests.length) + Test.assert.equal(Test.requests[0].url, 'api/posts/1') + Test.assert.equal(Test.requests[0].method, 'GET') + Test.assert.isString(loggedError) + Test.assert.isTrue(loggedError.indexOf('api/posts/1') !== -1) + }) + }) + + it('should use suffixes', function () { + var Test = this + + var Thing = Test.JSData.Model.extend({}, { + name: 'thing', + endpoint: 'things', + suffix: '.xml' + }) + + var otherAdapter = new Test.DSHttpAdapter({ + suffix: '.json' + }) + otherAdapter.http = Test.adapter.http + + setTimeout(function () { + Test.requests[0].respond(200, { 'Content-Type': 'application/json' }, JSON.stringify({ id: 1 })) + }, 30) + + return Test.adapter.find(Thing, 1) + .then(function () { + Test.assert.equal(1, Test.requests.length) + Test.assert.equal(Test.requests[0].url, 'things/1.xml') + Test.assert.equal(Test.requests[0].method, 'GET') + + setTimeout(function () { + Test.requests[1].respond(200, { 'Content-Type': 'application/json' }, JSON.stringify({ id: 1 })) + }, 30) + + return otherAdapter.find(Test.Post, 1) + }).then(function () { + Test.assert.equal(2, Test.requests.length) + Test.assert.equal(Test.requests[1].url, 'api/posts/1.json') + Test.assert.equal(Test.requests[1].method, 'GET') + }) + }) +}) diff --git a/test/findAll.test.js b/test/findAll.test.js new file mode 100644 index 0000000..b131ca4 --- /dev/null +++ b/test/findAll.test.js @@ -0,0 +1,35 @@ +describe('findAll', function () { + it('should findAll', function () { + var Test = this + + setTimeout(function () { + Test.requests[0].respond(200, { 'Content-Type': 'application/json' }, JSON.stringify([Test.p1])) + }, 30) + + return Test.adapter.findAll(Test.Post, {}) + .then(function (data) { + Test.assert.equal(1, Test.requests.length) + Test.assert.equal(Test.requests[0].url, 'api/posts') + Test.assert.equal(Test.requests[0].method, 'GET') + Test.assert.deepEqual(data, [Test.p1], 'posts should have been found') + + setTimeout(function () { + Test.requests[1].respond(200, { 'Content-Type': 'application/json' }, JSON.stringify([Test.p1])) + }, 30) + + return Test.adapter.findAll(Test.Post, { + where: { + author: { + '==': 'John' + } + } + }, { basePath: 'api2' }) + }) + .then(function (data) { + Test.assert.equal(2, Test.requests.length) + Test.assert.equal(Test.requests[1].url.indexOf('api2/posts?where='), 0) + Test.assert.equal(Test.requests[1].method, 'GET') + Test.assert.deepEqual(data, [Test.p1], 'posts should have been found') + }) + }) +}) diff --git a/test/getEndpoint.test.js b/test/getEndpoint.test.js new file mode 100644 index 0000000..3e88df6 --- /dev/null +++ b/test/getEndpoint.test.js @@ -0,0 +1,3 @@ +describe('getEndpoint', function () { + it('should getEndpoint') +}) diff --git a/test/getPath.test.js b/test/getPath.test.js new file mode 100644 index 0000000..93a65ce --- /dev/null +++ b/test/getPath.test.js @@ -0,0 +1,3 @@ +describe('getPath', function () { + it('should getPath') +}) diff --git a/test/node/create.spec.js b/test/node/create.spec.js deleted file mode 100644 index bb71ad7..0000000 --- a/test/node/create.spec.js +++ /dev/null @@ -1,16 +0,0 @@ -describe('DSHttpAdapter.create(resourceConfig, attrs, options)', function () { - - it('should make a POST request', function (done) { - var server = http.createServer(function (req, res) { - res.setHeader('Content-Type', 'application/json;charset=utf-8'); - res.end(DSUtils.toJson(p1)); - }).listen(4444, function () { - dsHttpAdapter.create(Post, {author: 'John', age: 30}).then(function (data) { - assert.deepEqual(data, p1, 'post should have been created'); - assert.equal(queryTransform.callCount, 1, 'queryTransform should have been called'); - server.close(); - done(); - }).catch(done); - }); - }); -}); diff --git a/test/queryTransform.test.js b/test/queryTransform.test.js new file mode 100644 index 0000000..bc819ae --- /dev/null +++ b/test/queryTransform.test.js @@ -0,0 +1,3 @@ +describe('queryTransform', function () { + it('should queryTransform') +}) diff --git a/test/serialize.test.js b/test/serialize.test.js new file mode 100644 index 0000000..41c858b --- /dev/null +++ b/test/serialize.test.js @@ -0,0 +1,3 @@ +describe('serialize', function () { + it('should serialize') +}) diff --git a/test/static.addAction.test.js b/test/static.addAction.test.js new file mode 100644 index 0000000..a368b20 --- /dev/null +++ b/test/static.addAction.test.js @@ -0,0 +1,3 @@ +describe('static addAction', function () { + it('should addAction') +}) diff --git a/test/static.addActions.test.js b/test/static.addActions.test.js new file mode 100644 index 0000000..685c0cf --- /dev/null +++ b/test/static.addActions.test.js @@ -0,0 +1,3 @@ +describe('static addActions', function () { + it('should addActions') +}) diff --git a/test/unit/index.js b/test/unit/index.js deleted file mode 100644 index 6d73c9c..0000000 --- a/test/unit/index.js +++ /dev/null @@ -1,36 +0,0 @@ -/* global JSData:true */ -import {assert} from 'chai' - -assert.objectsEqual = function (a, b, msg) { - assert.deepEqual( - JSON.parse(JSON.stringify(a)), - JSON.parse(JSON.stringify(b)), - msg || 'Expected objects or arrays to be equal' - ) -} - -assert.fail = function (msg) { - assert.equal(`should not reach this!: ${msg}`, 'failure') -} - -export function init () { - describe('DSHttpAdapter', function () { - it('has all the right exports', function () { - assert.isFunction(DSHttpAdapter.addAction, 'has the addAction decorator') - assert.isFunction(DSHttpAdapter.addActions, 'has the addActions decorator') - assert.isObject(DSHttpAdapter.version, 'has a version') - }) - }) -} - -export const TYPES_EXCEPT_STRING = [123, 123.123, null, undefined, {}, [], true, false, function () {}] -export const TYPES_EXCEPT_STRING_OR_ARRAY = [123, 123.123, null, undefined, {}, true, false, function () {}] -export const TYPES_EXCEPT_STRING_OR_NUMBER = [null, undefined, {}, [], true, false, function () {}] -export const TYPES_EXCEPT_STRING_OR_OBJECT = [123, 123.123, null, undefined, [], true, false, function () {}] -export const TYPES_EXCEPT_STRING_OR_NUMBER_OBJECT = [null, undefined, [], true, false, function () {}] -export const TYPES_EXCEPT_ARRAY = ['string', 123, 123.123, null, undefined, {}, true, false, function () {}] -export const TYPES_EXCEPT_STRING_OR_ARRAY_OR_NUMBER = [null, undefined, {}, true, false, function () {}] -export const TYPES_EXCEPT_NUMBER = ['string', null, undefined, {}, [], true, false, function () {}] -export const TYPES_EXCEPT_OBJECT = ['string', 123, 123.123, null, undefined, true, false, function () {}] -export const TYPES_EXCEPT_BOOLEAN = ['string', 123, 123.123, null, undefined, {}, [], function () {}] -export const TYPES_EXCEPT_FUNCTION = ['string', 123, 123.123, null, undefined, {}, [], true, false] diff --git a/test/update.test.js b/test/update.test.js new file mode 100644 index 0000000..15427aa --- /dev/null +++ b/test/update.test.js @@ -0,0 +1,31 @@ +describe('update', function () { + it('should update', function () { + var Test = this + + setTimeout(function () { + Test.requests[0].respond(200, { 'Content-Type': 'application/json' }, JSON.stringify(Test.p1)) + }, 30) + + return Test.adapter.update(Test.Post, 1, { author: 'John', age: 30 }) + .then(function (data) { + Test.assert.equal(1, Test.requests.length) + Test.assert.equal(Test.requests[0].url, 'api/posts/1') + Test.assert.equal(Test.requests[0].method, 'PUT') + Test.assert.equal(Test.requests[0].requestBody, JSON.stringify({ author: 'John', age: 30 })) + Test.assert.deepEqual(data, Test.p1, 'post 5 should have been updated') + + setTimeout(function () { + Test.requests[1].respond(200, { 'Content-Type': 'application/json' }, JSON.stringify(Test.p1)) + }, 30) + + return Test.adapter.update(Test.Post, 1, { author: 'John', age: 30 }, { basePath: 'api2' }) + }) + .then(function (data) { + Test.assert.equal(2, Test.requests.length) + Test.assert.equal(Test.requests[1].url, 'api2/posts/1') + Test.assert.equal(Test.requests[1].method, 'PUT') + Test.assert.equal(Test.requests[1].requestBody, JSON.stringify({ author: 'John', age: 30 })) + Test.assert.deepEqual(data, Test.p1, 'post 5 should have been updated') + }) + }) +}) diff --git a/test/updateAll.test.js b/test/updateAll.test.js new file mode 100644 index 0000000..a55573e --- /dev/null +++ b/test/updateAll.test.js @@ -0,0 +1,35 @@ +describe('updateAll', function () { + it('should updateAll', function () { + var Test = this + + setTimeout(function () { + Test.requests[0].respond(200, { 'Content-Type': 'application/json' }, JSON.stringify([Test.p1])) + }, 30) + + return Test.adapter.updateAll(Test.Post, { author: 'John', age: 30 }) + .then(function (data) { + Test.assert.equal(1, Test.requests.length) + Test.assert.equal(Test.requests[0].url, 'api/posts') + Test.assert.equal(Test.requests[0].method, 'PUT') + Test.assert.deepEqual(data, [Test.p1], 'posts should have been updated') + + setTimeout(function () { + Test.requests[1].respond(200, { 'Content-Type': 'application/json' }, JSON.stringify([Test.p1])) + }, 30) + + return Test.adapter.updateAll(Test.Post, { author: 'John', age: 30 }, { + where: { + author: { + '==': 'John' + } + } + }, { basePath: 'api2' }) + }) + .then(function (data) { + Test.assert.equal(2, Test.requests.length) + Test.assert.equal(Test.requests[1].url.indexOf('api2/posts?where='), 0) + Test.assert.equal(Test.requests[1].method, 'PUT') + Test.assert.deepEqual(data, [Test.p1], 'posts should have been updated') + }) + }) +}) From 65fa4f1153e65d7255ab3efd8d5eaff199d754dd Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Sun, 10 Jan 2016 16:14:49 -0800 Subject: [PATCH 08/24] Stable Version 3.0.0-alpha.3 --- conf.json | 19 + dist/js-data-http.js | 843 ++++++++++++++++++++++- fetch/dist/js-data-fetch.js | 1031 ++++++++++++++++++++++++++-- fetch/dist/js-data-fetch.js.map | 2 +- fetch/dist/js-data-fetch.min.js | 4 +- fetch/dist/js-data-fetch.min.map | 2 +- fetch/package.json | 2 +- node/dist/js-data-http-node.js | 1031 ++++++++++++++++++++++++++-- node/dist/js-data-http-node.js.map | 2 +- node/package.json | 2 +- src/index.js | 155 ++++- test/createMany.test.js | 3 + test/responseError.test.js | 3 + test/updateMany.test.js | 3 + 14 files changed, 2962 insertions(+), 140 deletions(-) create mode 100644 conf.json create mode 100644 test/createMany.test.js create mode 100644 test/responseError.test.js create mode 100644 test/updateMany.test.js diff --git a/conf.json b/conf.json new file mode 100644 index 0000000..4a8fb77 --- /dev/null +++ b/conf.json @@ -0,0 +1,19 @@ + { + "source": { + "includePattern": ".*js$" + }, + "plugins": ["plugins/markdown"], + "opts": { + "template": "./node_modules/ink-docstrap/template", + "destination": "./doc/", + "recurse": true, + "verbose": true, + "readme": "./README.md", + "package": "./package.json" + }, + "templates": { + "theme": "lumen", + "systemName": "js-data-http", + "copyright": "js-data-http Copyright © 2014-2016 Jason Dobry" + } +} \ No newline at end of file diff --git a/dist/js-data-http.js b/dist/js-data-http.js index 8279ad6..389b8aa 100644 --- a/dist/js-data-http.js +++ b/dist/js-data-http.js @@ -97,17 +97,498 @@ return /******/ (function(modules) { // webpackBootstrap opts || (opts = {}); // Default and user-defined settings + /** + * @name DSHttpAdapter#basePath + * @type {string} + */ self.basePath = opts.basePath === undefined ? '' : opts.basePath; + + /** + * @name DSHttpAdapter#debug + * @type {boolean} + * @default false + */ self.debug = opts.debug === undefined ? false : opts.debug; + + /** + * @name DSHttpAdapter#forceTrailingSlash + * @type {boolean} + * @default false + */ self.forceTrailingSlash = opts.forceTrailingSlash === undefined ? false : opts.forceTrailingSlash; + + /** + * @name DSHttpAdapter#http + * @type {Function} + */ self.http = opts.http === undefined ? axios : opts.http; + + /** + * @name DSHttpAdapter#httpConfig + * @type {Object} + */ self.httpConfig = opts.httpConfig === undefined ? {} : opts.httpConfig; + + /** + * @name DSHttpAdapter#suffix + * @type {string} + */ self.suffix = opts.suffix === undefined ? '' : opts.suffix; + + /** + * @name DSHttpAdapter#useFetch + * @type {boolean} + * @default false + */ self.useFetch = opts.useFetch === undefined ? false : opts.useFetch; } fillIn(DSHttpAdapter.prototype, { + /** + * Lifecycle hook called by {@link DSHttpAdapter#create}. If this method + * returns a promise then {@link DSHttpAdapter#create} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#create} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#create}. + * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#create}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#create}. + * @param {Object} data The `data` value that {@link DSHttpAdapter#create} will return. + */ + + afterCreate: function afterCreate() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#createMany}. If this method + * returns a promise then {@link DSHttpAdapter#createMany} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#createMany} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#createMany}. + * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#createMany}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#createMany}. + * @param {Object} data The `data` value that {@link DSHttpAdapter#createMany} will return. + */ + afterCreateMany: function afterCreateMany() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#DEL}. If this method + * returns a promise then {@link DSHttpAdapter#DEL} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#DEL} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {string} url The `url` argument passed to {@link DSHttpAdapter#DEL}. + * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#DEL}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#DEL}. + * @param {Object} response The `response` value that {@link DSHttpAdapter#DEL} will return. + */ + afterDEL: function afterDEL() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#destroy}. If this method + * returns a promise then {@link DSHttpAdapter#destroy} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#destroy} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroy}. + * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#destroy}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroy}. + * @param {Object} data The `data` value that {@link DSHttpAdapter#destroy} will return. + */ + afterDestroy: function afterDestroy() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#destroyAll}. If this method + * returns a promise then {@link DSHttpAdapter#destroyAll} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#destroyAll} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroyAll}. + * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#destroyAll}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroyAll}. + * @param {Object} data The `data` value that {@link DSHttpAdapter#destroyAll} will return. + */ + afterDestroyAll: function afterDestroyAll() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#find}. If this method + * returns a promise then {@link DSHttpAdapter#find} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#find} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#find}. + * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#find}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#find}. + * @param {Object} data The `data` value that {@link DSHttpAdapter#find} will return. + */ + afterFind: function afterFind() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#findAll}. If this method + * returns a promise then {@link DSHttpAdapter#findAll} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#findAll} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#findAll}. + * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#findAll}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#findAll}. + * @param {Object} data The `data` value that {@link DSHttpAdapter#findAll} will return. + */ + afterFindAll: function afterFindAll() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#GET}. If this method + * returns a promise then {@link DSHttpAdapter#GET} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#GET} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {string} url The `url` argument passed to {@link DSHttpAdapter#GET}. + * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#GET}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#GET}. + * @param {Object} response The `response` value that {@link DSHttpAdapter#GET} will return. + */ + afterGET: function afterGET() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#HTTP}. If this method + * returns a promise then {@link DSHttpAdapter#HTTP} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#HTTP} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#HTTP}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#HTTP}. + * @param {Object} response The `response` value that {@link DSHttpAdapter#HTTP} will return. + */ + afterHTTP: function afterHTTP() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#POST}. If this method + * returns a promise then {@link DSHttpAdapter#POST} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#POST} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {string} url The `url` argument passed to {@link DSHttpAdapter#POST}. + * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#POST}. + * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#POST}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#POST}. + * @param {Object} response The `response` value that {@link DSHttpAdapter#POST} will return. + */ + afterPOST: function afterPOST() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#PUT}. If this method + * returns a promise then {@link DSHttpAdapter#PUT} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#PUT} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {string} url The `url` argument passed to {@link DSHttpAdapter#PUT}. + * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#PUT}. + * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#PUT}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#PUT}. + * @param {Object} response The `response` value that {@link DSHttpAdapter#PUT} will return. + */ + afterPUT: function afterPUT() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#update}. If this method + * returns a promise then {@link DSHttpAdapter#update} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#update} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#update}. + * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#update}. + * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#update}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#update}. + * @param {Object} data The `data` value that {@link DSHttpAdapter#update} will return. + */ + afterUpdate: function afterUpdate() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#updateAll}. If this method + * returns a promise then {@link DSHttpAdapter#updateAll} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#updateAll} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateAll}. + * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#updateAll}. + * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#updateAll}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateAll}. + * @param {Object} data The `data` value that {@link DSHttpAdapter#updateAll} will return. + */ + afterUpdateAll: function afterUpdateAll() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#updateMany}. If this method + * returns a promise then {@link DSHttpAdapter#updateMany} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#updateMany} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateMany}. + * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#updateMany}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateMany}. + * @param {Object} data The `data` value that {@link DSHttpAdapter#updateMany} will return. + */ + afterUpdateMany: function afterUpdateMany() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#create}. If this method + * returns a promise then {@link DSHttpAdapter#create} will wait for the + * promise to resolve before continuing. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#create}. + * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#create}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#create}. + */ beforeCreate: function beforeCreate() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#createMany}. If this method + * returns a promise then {@link DSHttpAdapter#createMany} will wait for the + * promise to resolve before continuing. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#createMany}. + * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#createMany}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#createMany}. + */ + beforeCreateMany: function beforeCreateMany() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#DEL}. If this method + * returns a promise then {@link DSHttpAdapter#DEL} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#create} + * will resolve with that same value, then the `config` argument passed to + * {@link DSHttpAdapter#DEL} will be replaced by the value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#DEL}. + * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#DEL}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#DEL}. + */ + beforeDEL: function beforeDEL() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#destroy}. If this method + * returns a promise then {@link DSHttpAdapter#destroy} will wait for the + * promise to resolve before continuing. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroy}. + * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#destroy}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroy}. + */ + beforeDestroy: function beforeDestroy() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#destroyAll}. If this method + * returns a promise then {@link DSHttpAdapter#destroyAll} will wait for the + * promise to resolve before continuing. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroyAll}. + * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#destroyAll}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroyAll}. + */ + beforeDestroyAll: function beforeDestroyAll() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#find}. If this method + * returns a promise then {@link DSHttpAdapter#find} will wait for the + * promise to resolve before continuing. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#find}. + * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#find}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#find}. + */ + beforeFind: function beforeFind() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#findAll}. If this method + * returns a promise then {@link DSHttpAdapter#findAll} will wait for the + * promise to resolve before continuing. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#findAll}. + * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#findAll}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#findAll}. + */ + beforeFindAll: function beforeFindAll() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#GET}. If this method + * returns a promise then {@link DSHttpAdapter#GET} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#create} + * will resolve with that same value, then the `config` argument passed to + * {@link DSHttpAdapter#GET} will be replaced by the value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#GET}. + * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#GET}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#GET}. + */ + beforeGET: function beforeGET() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#HTTP}. If this method + * returns a promise then {@link DSHttpAdapter#HTTP} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#create} + * will resolve with that same value, then the `config` argument passed to + * {@link DSHttpAdapter#HTTP} will be replaced by the value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#HTTP}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#HTTP}. + */ + beforeHTTP: function beforeHTTP() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#POST}. If this method + * returns a promise then {@link DSHttpAdapter#POST} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#create} + * will resolve with that same value, then the `config` argument passed to + * {@link DSHttpAdapter#POST} will be replaced by the value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#POST}. + * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#POST}. + * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#POST}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#POST}. + */ + beforePOST: function beforePOST() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#PUT}. If this method + * returns a promise then {@link DSHttpAdapter#PUT} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#create} + * will resolve with that same value, then the `config` argument passed to + * {@link DSHttpAdapter#PUT} will be replaced by the value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#PUT}. + * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#PUT}. + * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#PUT}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#PUT}. + */ + beforePUT: function beforePUT() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#update}. If this method + * returns a promise then {@link DSHttpAdapter#update} will wait for the + * promise to resolve before continuing. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#update}. + * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#update}. + * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#update}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#update}. + */ + beforeUpdate: function beforeUpdate() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#updateAll}. If this method + * returns a promise then {@link DSHttpAdapter#updateAll} will wait for the + * promise to resolve before continuing. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateAll}. + * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#updateAll}. + * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#updateAll}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateAll}. + */ + beforeUpdateAll: function beforeUpdateAll() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#updateMany}. If this method + * returns a promise then {@link DSHttpAdapter#updateMany} will wait for the + * promise to resolve before continuing. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateMany}. + * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#updateMany}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateMany}. + */ + beforeUpdateMany: function beforeUpdateMany() {}, + + /** + * Create a new the entity from the provided `props`. + * + * {@link DSHttpAdapter#beforeCreate} will be called before calling + * {@link DSHttpAdapter#POST}. + * {@link DSHttpAdapter#afterCreate} will be called after calling + * {@link DSHttpAdapter#POST}. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The Model. + * @param {Object} props Properties to send as the payload. + * @param {Object} [opts] Configuration options. + * @param {string} [opts.params] TODO + * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @return {Promise} + */ create: function create(Model, props, opts) { var self = this; opts = opts ? copy(opts) : {}; @@ -126,7 +607,50 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }, - afterCreate: function afterCreate() {}, + + /** + * Create multiple new entities in batch. + * + * {@link DSHttpAdapter#beforeCreateMany} will be called before calling + * {@link DSHttpAdapter#POST}. + * {@link DSHttpAdapter#afterCreateMany} will be called after calling + * {@link DSHttpAdapter#POST}. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The Model. + * @param {Array} models Array of property objects to send as the payload. + * @param {Object} [opts] Configuration options. + * @param {string} [opts.params] TODO + * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @return {Promise} + */ + createMany: function createMany(Model, models, opts) { + var self = this; + opts = opts ? copy(opts) : {}; + opts.params || (opts.params = {}); + opts.params = self.queryTransform(Model, opts.params, opts); + opts.suffix || (opts.suffix = Model.suffix); + opts.op = 'createMany'; + self.dbg(opts.op, Model, models, opts); + return resolve(self.beforeCreateMany(Model, models, opts)).then(function () { + return self.POST(self.getPath('createMany', Model, null, opts), self.serialize(Model, models, opts), opts); + }).then(function (response) { + return self.deserialize(Model, response, opts); + }).then(function (data) { + return resolve(self.afterCreateMany(Model, models, opts, data)).then(function (_data) { + return _data || data; + }); + }); + }, + + /** + * Call {@link DSHttpAdapter#log} at the "debug" level. + * + * @memberof DSHttpAdapter + * @instance + * @param {...*} [args] Args passed to {@link DSHttpAdapter#log}. + */ dbg: function dbg() { for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2]; @@ -134,7 +658,23 @@ return /******/ (function(modules) { // webpackBootstrap this.log.apply(this, ['debug'].concat(args)); }, - beforeDEL: function beforeDEL() {}, + + /** + * Make an Http request to `url` according to the configuration in `config`. + * + * {@link DSHttpAdapter#beforeDEL} will be called before calling + * {@link DSHttpAdapter#HTTP}. + * {@link DSHttpAdapter#afterDEL} will be called after calling + * {@link DSHttpAdapter#HTTP}. + * + * @memberof DSHttpAdapter + * @instance + * @param {string} url Url for the request. + * @param {Object} [config] Http configuration that will be passed to + * {@link DSHttpAdapter#HTTP}. + * @param {Object} [opts] Configuration options. + * @return {Promise} + */ DEL: function DEL(url, config, opts) { var self = this; config || (config = {}); @@ -149,17 +689,28 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }, - afterDEL: function afterDEL() {}, - deserialize: function deserialize(Model, data, opts) { + + /** + * Transform the server response object into the payload that will be returned + * to JSData. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The Model used for the operation. + * @param {Object} response Response object from {@link DSHttpAdapter#HTTP}. + * @param {Object} opts Configuration options. + * @return {(Object|Array)} Deserialized data. + */ + deserialize: function deserialize(Model, response, opts) { opts || (opts = {}); if (isFunction(opts.deserialize)) { - return opts.deserialize(Model, data, opts); + return opts.deserialize(Model, response, opts); } if (isFunction(Model.deserialize)) { - return Model.deserialize(Model, data, opts); + return Model.deserialize(Model, response, opts); } if (opts.raw) { - return data; + return response; } }, { key: 'log', @@ -181,6 +732,20 @@ return /******/ (function(modules) { // webpackBootstrap (_console = console)[typeof console.error === 'function' ? 'error' : 'log'].apply(_console, arguments); } }, + + /** + * Make an Http request using `window.fetch`. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} config Request configuration. + * @param {Object} config.data Payload for the request. + * @param {string} config.method Http method for the request. + * @param {Object} config.headers Headers for the request. + * @param {Object} config.params Querystring for the request. + * @param {string} config.url Url for the request. + * @param {Object} [opts] Configuration options. + */ fetch: function (_fetch) { function fetch(_x, _x2) { return _fetch.apply(this, arguments); @@ -207,7 +772,24 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }), - beforeFind: function beforeFind() {}, + + /** + * Retrieve the entity with the given primary key. + * + * {@link DSHttpAdapter#beforeFind} will be called before calling + * {@link DSHttpAdapter#GET}. + * {@link DSHttpAdapter#afterFind} will be called after calling + * {@link DSHttpAdapter#GET}. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The Model. + * @param {(string|number)} id Primary key of the entity to retrieve. + * @param {Object} [opts] Configuration options. + * @param {string} [opts.params] TODO + * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @return {Promise} + */ find: function find(Model, id, opts) { var self = this; opts = opts ? copy(opts) : {}; @@ -226,8 +808,24 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }, - afterFind: function afterFind() {}, - beforeFindAll: function beforeFindAll() {}, + + /** + * Retrieve the entities that match the selection `query`. + * + * {@link DSHttpAdapter#beforeFindAll} will be called before calling + * {@link DSHttpAdapter#GET}. + * {@link DSHttpAdapter#afterFindAll} will be called after calling + * {@link DSHttpAdapter#GET}. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The Model. + * @param {Object} query Selection query. + * @param {Object} [opts] Configuration options. + * @param {string} [opts.params] TODO + * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @return {Promise} + */ findAll: function findAll(Model, query, opts) { var self = this; query || (query = {}); @@ -248,8 +846,17 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }, - afterFindAll: function afterFindAll() {}, - beforeGET: function beforeGET() {}, + + /** + * { function_description } + * + * @memberof DSHttpAdapter + * @instance + * @param {string} url The url for the request. + * @param {Object} config Request configuration options. + * @param {Object} [opts] Configuration options. + * @return {Promise} + */ GET: function GET(url, config, opts) { var self = this; config || (config = {}); @@ -264,7 +871,15 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }, - afterGET: function afterGET() {}, + + /** + * @memberof DSHttpAdapter + * @instance + * @param {*} Model { description } + * @param {*} id { description } + * @param {boolean} opts { description } + * @return {string} Full path. + */ getEndpoint: function getEndpoint(Model, id, opts) { var _this = this; @@ -488,7 +1103,18 @@ return /******/ (function(modules) { // webpackBootstrap (_console3 = console).log.apply(_console3, [prefix].concat(args)); } }, - beforePOST: function beforePOST() {}, + + /** + * { function_description } + * + * @memberof DSHttpAdapter + * @instance + * @param {*} url { description } + * @param {*} data { description } + * @param {*} config { description } + * @param {Object} [opts] Configuration options. + * @return {Promise} + */ POST: function POST(url, data, config, opts) { var self = this; config || (config = {}); @@ -504,8 +1130,18 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }, - afterPOST: function afterPOST() {}, - beforePUT: function beforePUT() {}, + + /** + * { function_description } + * + * @memberof DSHttpAdapter + * @instance + * @param {*} url { description } + * @param {*} data { description } + * @param {*} config { description } + * @param {Object} [opts] Configuration options. + * @return {Promise} + */ PUT: function PUT(url, data, config, opts) { var self = this; config || (config = {}); @@ -521,8 +1157,77 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }, - afterPUT: function afterPUT() {}, - beforeUpdate: function beforeUpdate() {}, + + /** + * { function_description } + * + * @memberof DSHttpAdapter + * @instance + * @param {*} Model { description } + * @param {*} params { description } + * @param {*} opts { description } + * @return {*} Transformed params. + */ + queryTransform: function queryTransform(Model, params, opts) { + opts || (opts = {}); + if (isFunction(opts.queryTransform)) { + return opts.queryTransform(Model, params, opts); + } + if (isFunction(Model.queryTransform)) { + return Model.queryTransform(Model, params, opts); + } + return params; + }, + + /** + * Error handler invoked when the promise returned by {@link DSHttpAdapter#http} + * is rejected. Default implementation is to just return the error wrapped in + * a rejected Promise, aka rethrow the error. {@link DSHttpAdapter#http} is + * called by {@link DSHttpAdapter#HTTP}. + * + * @memberof DSHttpAdapter + * @instance + * @param {*} err The error that {@link DSHttpAdapter#http} rejected with. + * @param {*} config The `config` argument that was passed to {@link DSHttpAdapter#HTTP}. + * @param {*} opts The `opts` argument that was passed to {@link DSHttpAdapter#HTTP}. + * @return {Promise} + */ + responseError: function responseError(err, config, opts) { + return reject(err); + }, + + /** + * { function_description } + * + * @memberof DSHttpAdapter + * @instance + * @param {*} Model { description } + * @param {*} data { description } + * @param {*} opts { description } + * @return {*} Serialized data. + */ + serialize: function serialize(Model, data, opts) { + opts || (opts = {}); + if (isFunction(opts.serialize)) { + return opts.serialize(Model, data, opts); + } + if (isFunction(Model.serialize)) { + return Model.serialize(Model, data, opts); + } + return data; + }, + + /** + * { function_description } + * + * @memberof DSHttpAdapter + * @instance + * @param {*} Model { description } + * @param {*} id { description } + * @param {*} props { description } + * @param {Object} [opts] Configuration options. + * @return {Promise} + */ update: function update(Model, id, props, opts) { var self = this; opts = opts ? copy(opts) : {}; @@ -541,8 +1246,18 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }, - afterUpdate: function afterUpdate() {}, - beforeUpdateAll: function beforeUpdateAll() {}, + + /** + * { function_description } + * + * @memberof DSHttpAdapter + * @instance + * @param {*} Model { description } + * @param {*} props { description } + * @param {*} query { description } + * @param {Object} [opts] Configuration options. + * @return {Promise} + */ updateAll: function updateAll(Model, props, query, opts) { var self = this; query || (query = {}); @@ -554,7 +1269,7 @@ return /******/ (function(modules) { // webpackBootstrap opts.op = 'updateAll'; self.dbg(opts.op, Model, props, query, opts); return resolve(self.beforeUpdateAll(Model, props, query, opts)).then(function () { - return self.PUT(self.getPath('updateAll', Model, opts.params, opts), self.serialize(Model, props, opts), opts); + return self.PUT(self.getPath('updateAll', Model, null, opts), self.serialize(Model, props, opts), opts); }).then(function (response) { return self.deserialize(Model, response, opts); }).then(function (data) { @@ -567,8 +1282,68 @@ return /******/ (function(modules) { // webpackBootstrap return DSHttpAdapter; }(); + /** + * Alternative to ES6 class syntax for extending `DSHttpAdapter`. + * + * __ES6__: + * ```javascript + * class MyHttpAdapter extends DSHttpAdapter { + * deserialize (Model, data, opts) { + * const data = super.deserialize(Model, data, opts) + * data.foo = 'bar' + * return data + * } + * } + * ``` + * + * __ES5__: + * ```javascript + * var instanceProps = { + * // override deserialize + * deserialize: function (Model, data, opts) { + * var Ctor = this.constructor + * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize + * // call the super deserialize + * var data = superDeserialize(Model, data, opts) + * data.foo = 'bar' + * return data + * }, + * say: function () { return 'hi' } + * } + * var classProps = { + * yell: function () { return 'HI' } + * } + * + * var MyHttpAdapter = DSHttpAdapter.extend(instanceProps, classProps) + * var adapter = new MyHttpAdapter() + * adapter.say() // "hi" + * MyHttpAdapter.yell() // "HI" + * ``` + * + * @name DSHttpAdapter.extend + * @method + * @param {Object} [instanceProps] Properties that will be added to the + * prototype of the subclass. + * @param {Object} [classProps] Properties that will be added as static + * properties to the subclass itself. + * @return {Object} Subclass of `DSHttpAdapter`. + */ DSHttpAdapter.extend = extend; + /** + * Details of the current version of the `js-data-http` module. + * + * @name DSHttpAdapter.version + * @type {Object} + * @property {string} version.full The full semver value. + * @property {number} version.major The major version number. + * @property {number} version.minor The minor version number. + * @property {number} version.patch The patch version number. + * @property {(string|boolean)} version.alpha The alpha version value, + * otherwise `false` if the current version is not alpha. + * @property {(string|boolean)} version.beta The beta version value, + * otherwise `false` if the current version is not beta. + */ DSHttpAdapter.version = { full: '2.2.1', major: parseInt('2', 10), @@ -578,6 +1353,32 @@ return /******/ (function(modules) { // webpackBootstrap beta: true ? 'false' : false }; + /** + * Registered as `js-data-http` in NPM and Bower. The build of `js-data-http` + * that works on Node.js is registered in NPM as `js-data-http-node`. The build + * of `js-data-http` that does not bundle `axios` is registered in NPM and Bower + * as `js-data-fetch`. + * + * __Script tag__: + * ```javascript + * window.DSHttpAdapter + * ``` + * __CommonJS__: + * ```javascript + * var DSHttpAdapter = require('js-data-http') + * ``` + * __ES6 Modules__: + * ```javascript + * import DSHttpAdapter from 'js-data-http' + * ``` + * __AMD__: + * ```javascript + * define('myApp', ['js-data-http'], function (DSHttpAdapter) { ... }) + * ``` + * + * @module js-data-http + */ + module.exports = DSHttpAdapter; /***/ }, diff --git a/fetch/dist/js-data-fetch.js b/fetch/dist/js-data-fetch.js index 91c9c0a..871af05 100644 --- a/fetch/dist/js-data-fetch.js +++ b/fetch/dist/js-data-fetch.js @@ -1,6 +1,6 @@ /*! * js-data-fetch -* @version 3.0.0-alpha.2 - Homepage +* @version 3.0.0-alpha.3 - Homepage * @author Jason Dobry * @copyright (c) 2014-2016 Jason Dobry * @license MIT @@ -148,6 +148,7 @@ return /******/ (function(modules) { // webpackBootstrap /** * DSHttpAdapter class. * @class DSHttpAdapter + * @alias DSHttpAdapter * * @param {Object} [opts] Configuration options. * @param {string} [opts.basePath=''] @@ -165,17 +166,498 @@ return /******/ (function(modules) { // webpackBootstrap opts || (opts = {}); // Default and user-defined settings + /** + * @name DSHttpAdapter#basePath + * @type {string} + */ self.basePath = opts.basePath === undefined ? '' : opts.basePath; + + /** + * @name DSHttpAdapter#debug + * @type {boolean} + * @default false + */ self.debug = opts.debug === undefined ? false : opts.debug; + + /** + * @name DSHttpAdapter#forceTrailingSlash + * @type {boolean} + * @default false + */ self.forceTrailingSlash = opts.forceTrailingSlash === undefined ? false : opts.forceTrailingSlash; + + /** + * @name DSHttpAdapter#http + * @type {Function} + */ self.http = opts.http === undefined ? axios : opts.http; + + /** + * @name DSHttpAdapter#httpConfig + * @type {Object} + */ self.httpConfig = opts.httpConfig === undefined ? {} : opts.httpConfig; + + /** + * @name DSHttpAdapter#suffix + * @type {string} + */ self.suffix = opts.suffix === undefined ? '' : opts.suffix; + + /** + * @name DSHttpAdapter#useFetch + * @type {boolean} + * @default false + */ self.useFetch = opts.useFetch === undefined ? false : opts.useFetch; } fillIn(DSHttpAdapter.prototype, { + /** + * Lifecycle hook called by {@link DSHttpAdapter#create}. If this method + * returns a promise then {@link DSHttpAdapter#create} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#create} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#create}. + * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#create}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#create}. + * @param {Object} data The `data` value that {@link DSHttpAdapter#create} will return. + */ + + afterCreate: function afterCreate() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#createMany}. If this method + * returns a promise then {@link DSHttpAdapter#createMany} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#createMany} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#createMany}. + * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#createMany}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#createMany}. + * @param {Object} data The `data` value that {@link DSHttpAdapter#createMany} will return. + */ + afterCreateMany: function afterCreateMany() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#DEL}. If this method + * returns a promise then {@link DSHttpAdapter#DEL} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#DEL} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {string} url The `url` argument passed to {@link DSHttpAdapter#DEL}. + * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#DEL}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#DEL}. + * @param {Object} response The `response` value that {@link DSHttpAdapter#DEL} will return. + */ + afterDEL: function afterDEL() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#destroy}. If this method + * returns a promise then {@link DSHttpAdapter#destroy} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#destroy} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroy}. + * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#destroy}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroy}. + * @param {Object} data The `data` value that {@link DSHttpAdapter#destroy} will return. + */ + afterDestroy: function afterDestroy() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#destroyAll}. If this method + * returns a promise then {@link DSHttpAdapter#destroyAll} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#destroyAll} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroyAll}. + * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#destroyAll}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroyAll}. + * @param {Object} data The `data` value that {@link DSHttpAdapter#destroyAll} will return. + */ + afterDestroyAll: function afterDestroyAll() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#find}. If this method + * returns a promise then {@link DSHttpAdapter#find} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#find} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#find}. + * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#find}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#find}. + * @param {Object} data The `data` value that {@link DSHttpAdapter#find} will return. + */ + afterFind: function afterFind() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#findAll}. If this method + * returns a promise then {@link DSHttpAdapter#findAll} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#findAll} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#findAll}. + * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#findAll}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#findAll}. + * @param {Object} data The `data` value that {@link DSHttpAdapter#findAll} will return. + */ + afterFindAll: function afterFindAll() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#GET}. If this method + * returns a promise then {@link DSHttpAdapter#GET} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#GET} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {string} url The `url` argument passed to {@link DSHttpAdapter#GET}. + * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#GET}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#GET}. + * @param {Object} response The `response` value that {@link DSHttpAdapter#GET} will return. + */ + afterGET: function afterGET() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#HTTP}. If this method + * returns a promise then {@link DSHttpAdapter#HTTP} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#HTTP} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#HTTP}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#HTTP}. + * @param {Object} response The `response` value that {@link DSHttpAdapter#HTTP} will return. + */ + afterHTTP: function afterHTTP() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#POST}. If this method + * returns a promise then {@link DSHttpAdapter#POST} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#POST} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {string} url The `url` argument passed to {@link DSHttpAdapter#POST}. + * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#POST}. + * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#POST}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#POST}. + * @param {Object} response The `response` value that {@link DSHttpAdapter#POST} will return. + */ + afterPOST: function afterPOST() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#PUT}. If this method + * returns a promise then {@link DSHttpAdapter#PUT} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#PUT} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {string} url The `url` argument passed to {@link DSHttpAdapter#PUT}. + * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#PUT}. + * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#PUT}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#PUT}. + * @param {Object} response The `response` value that {@link DSHttpAdapter#PUT} will return. + */ + afterPUT: function afterPUT() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#update}. If this method + * returns a promise then {@link DSHttpAdapter#update} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#update} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#update}. + * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#update}. + * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#update}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#update}. + * @param {Object} data The `data` value that {@link DSHttpAdapter#update} will return. + */ + afterUpdate: function afterUpdate() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#updateAll}. If this method + * returns a promise then {@link DSHttpAdapter#updateAll} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#updateAll} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateAll}. + * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#updateAll}. + * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#updateAll}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateAll}. + * @param {Object} data The `data` value that {@link DSHttpAdapter#updateAll} will return. + */ + afterUpdateAll: function afterUpdateAll() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#updateMany}. If this method + * returns a promise then {@link DSHttpAdapter#updateMany} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#updateMany} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateMany}. + * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#updateMany}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateMany}. + * @param {Object} data The `data` value that {@link DSHttpAdapter#updateMany} will return. + */ + afterUpdateMany: function afterUpdateMany() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#create}. If this method + * returns a promise then {@link DSHttpAdapter#create} will wait for the + * promise to resolve before continuing. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#create}. + * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#create}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#create}. + */ beforeCreate: function beforeCreate() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#createMany}. If this method + * returns a promise then {@link DSHttpAdapter#createMany} will wait for the + * promise to resolve before continuing. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#createMany}. + * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#createMany}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#createMany}. + */ + beforeCreateMany: function beforeCreateMany() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#DEL}. If this method + * returns a promise then {@link DSHttpAdapter#DEL} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#create} + * will resolve with that same value, then the `config` argument passed to + * {@link DSHttpAdapter#DEL} will be replaced by the value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#DEL}. + * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#DEL}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#DEL}. + */ + beforeDEL: function beforeDEL() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#destroy}. If this method + * returns a promise then {@link DSHttpAdapter#destroy} will wait for the + * promise to resolve before continuing. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroy}. + * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#destroy}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroy}. + */ + beforeDestroy: function beforeDestroy() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#destroyAll}. If this method + * returns a promise then {@link DSHttpAdapter#destroyAll} will wait for the + * promise to resolve before continuing. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroyAll}. + * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#destroyAll}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroyAll}. + */ + beforeDestroyAll: function beforeDestroyAll() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#find}. If this method + * returns a promise then {@link DSHttpAdapter#find} will wait for the + * promise to resolve before continuing. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#find}. + * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#find}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#find}. + */ + beforeFind: function beforeFind() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#findAll}. If this method + * returns a promise then {@link DSHttpAdapter#findAll} will wait for the + * promise to resolve before continuing. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#findAll}. + * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#findAll}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#findAll}. + */ + beforeFindAll: function beforeFindAll() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#GET}. If this method + * returns a promise then {@link DSHttpAdapter#GET} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#create} + * will resolve with that same value, then the `config` argument passed to + * {@link DSHttpAdapter#GET} will be replaced by the value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#GET}. + * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#GET}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#GET}. + */ + beforeGET: function beforeGET() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#HTTP}. If this method + * returns a promise then {@link DSHttpAdapter#HTTP} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#create} + * will resolve with that same value, then the `config` argument passed to + * {@link DSHttpAdapter#HTTP} will be replaced by the value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#HTTP}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#HTTP}. + */ + beforeHTTP: function beforeHTTP() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#POST}. If this method + * returns a promise then {@link DSHttpAdapter#POST} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#create} + * will resolve with that same value, then the `config` argument passed to + * {@link DSHttpAdapter#POST} will be replaced by the value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#POST}. + * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#POST}. + * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#POST}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#POST}. + */ + beforePOST: function beforePOST() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#PUT}. If this method + * returns a promise then {@link DSHttpAdapter#PUT} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#create} + * will resolve with that same value, then the `config` argument passed to + * {@link DSHttpAdapter#PUT} will be replaced by the value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#PUT}. + * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#PUT}. + * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#PUT}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#PUT}. + */ + beforePUT: function beforePUT() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#update}. If this method + * returns a promise then {@link DSHttpAdapter#update} will wait for the + * promise to resolve before continuing. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#update}. + * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#update}. + * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#update}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#update}. + */ + beforeUpdate: function beforeUpdate() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#updateAll}. If this method + * returns a promise then {@link DSHttpAdapter#updateAll} will wait for the + * promise to resolve before continuing. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateAll}. + * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#updateAll}. + * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#updateAll}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateAll}. + */ + beforeUpdateAll: function beforeUpdateAll() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#updateMany}. If this method + * returns a promise then {@link DSHttpAdapter#updateMany} will wait for the + * promise to resolve before continuing. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateMany}. + * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#updateMany}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateMany}. + */ + beforeUpdateMany: function beforeUpdateMany() {}, + + /** + * Create a new the entity from the provided `props`. + * + * {@link DSHttpAdapter#beforeCreate} will be called before calling + * {@link DSHttpAdapter#POST}. + * {@link DSHttpAdapter#afterCreate} will be called after calling + * {@link DSHttpAdapter#POST}. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The Model. + * @param {Object} props Properties to send as the payload. + * @param {Object} [opts] Configuration options. + * @param {string} [opts.params] TODO + * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @return {Promise} + */ create: function create(Model, props, opts) { var self = this; opts = opts ? copy(opts) : {}; @@ -194,7 +676,50 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }, - afterCreate: function afterCreate() {}, + + /** + * Create multiple new entities in batch. + * + * {@link DSHttpAdapter#beforeCreateMany} will be called before calling + * {@link DSHttpAdapter#POST}. + * {@link DSHttpAdapter#afterCreateMany} will be called after calling + * {@link DSHttpAdapter#POST}. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The Model. + * @param {Array} models Array of property objects to send as the payload. + * @param {Object} [opts] Configuration options. + * @param {string} [opts.params] TODO + * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @return {Promise} + */ + createMany: function createMany(Model, models, opts) { + var self = this; + opts = opts ? copy(opts) : {}; + opts.params || (opts.params = {}); + opts.params = self.queryTransform(Model, opts.params, opts); + opts.suffix || (opts.suffix = Model.suffix); + opts.op = 'createMany'; + self.dbg(opts.op, Model, models, opts); + return resolve(self.beforeCreateMany(Model, models, opts)).then(function () { + return self.POST(self.getPath('createMany', Model, null, opts), self.serialize(Model, models, opts), opts); + }).then(function (response) { + return self.deserialize(Model, response, opts); + }).then(function (data) { + return resolve(self.afterCreateMany(Model, models, opts, data)).then(function (_data) { + return _data || data; + }); + }); + }, + + /** + * Call {@link DSHttpAdapter#log} at the "debug" level. + * + * @memberof DSHttpAdapter + * @instance + * @param {...*} [args] Args passed to {@link DSHttpAdapter#log}. + */ dbg: function dbg() { for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2]; @@ -202,7 +727,23 @@ return /******/ (function(modules) { // webpackBootstrap this.log.apply(this, ['debug'].concat(args)); }, - beforeDEL: function beforeDEL() {}, + + /** + * Make an Http request to `url` according to the configuration in `config`. + * + * {@link DSHttpAdapter#beforeDEL} will be called before calling + * {@link DSHttpAdapter#HTTP}. + * {@link DSHttpAdapter#afterDEL} will be called after calling + * {@link DSHttpAdapter#HTTP}. + * + * @memberof DSHttpAdapter + * @instance + * @param {string} url Url for the request. + * @param {Object} [config] Http configuration that will be passed to + * {@link DSHttpAdapter#HTTP}. + * @param {Object} [opts] Configuration options. + * @return {Promise} + */ DEL: function DEL(url, config, opts) { var self = this; config || (config = {}); @@ -217,21 +758,49 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }, - afterDEL: function afterDEL() {}, - deserialize: function deserialize(Model, data, opts) { + + /** + * Transform the server response object into the payload that will be returned + * to JSData. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The Model used for the operation. + * @param {Object} response Response object from {@link DSHttpAdapter#HTTP}. + * @param {Object} opts Configuration options. + * @return {(Object|Array)} Deserialized data. + */ + deserialize: function deserialize(Model, response, opts) { opts || (opts = {}); if (isFunction(opts.deserialize)) { - return opts.deserialize(Model, data, opts); + return opts.deserialize(Model, response, opts); } if (isFunction(Model.deserialize)) { - return Model.deserialize(Model, data, opts); + return Model.deserialize(Model, response, opts); } if (opts.raw) { - return data; + return response; } - return data ? 'data' in data ? data.data : data : data; + return response ? 'data' in response ? response.data : response : response; }, - beforeDestroy: function beforeDestroy() {}, + + /** + * Destroy the entity with the given primary key. + * + * {@link DSHttpAdapter#beforeDestroy} will be called before calling + * {@link DSHttpAdapter#DEL}. + * {@link DSHttpAdapter#afterDestroy} will be called after calling + * {@link DSHttpAdapter#DEL}. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The Model. + * @param {(string|number)} id Primary key of the entity to destroy. + * @param {Object} [opts] Configuration options. + * @param {string} [opts.params] TODO + * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @return {Promise} + */ destroy: function destroy(Model, id, opts) { var self = this; opts = opts ? copy(opts) : {}; @@ -250,8 +819,24 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }, - afterDestroy: function afterDestroy() {}, - beforeDestroyAll: function beforeDestroyAll() {}, + + /** + * Destroy the entities that match the selection `query`. + * + * {@link DSHttpAdapter#beforeDestroyAll} will be called before calling + * {@link DSHttpAdapter#DEL}. + * {@link DSHttpAdapter#afterDestroyAll} will be called after calling + * {@link DSHttpAdapter#DEL}. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The Model. + * @param {Object} query Selection query. + * @param {Object} [opts] Configuration options. + * @param {string} [opts.params] TODO + * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @return {Promise} + */ destroyAll: function destroyAll(Model, query, opts) { var self = this; query || (query = {}); @@ -260,10 +845,10 @@ return /******/ (function(modules) { // webpackBootstrap deepMixIn(opts.params, query); opts.params = self.queryTransform(Model, opts.params, opts); opts.suffix || (opts.suffix = Model.suffix); - opts.op = 'destroy'; + opts.op = 'destroyAll'; self.dbg(opts.op, Model, query, opts); return resolve(self.beforeDestroyAll(Model, query, opts)).then(function () { - return self.DEL(self.getPath('destroyAll', Model, opts.params, opts), opts); + return self.DEL(self.getPath('destroyAll', Model, null, opts), opts); }).then(function (response) { return self.deserialize(Model, response, opts); }).then(function (data) { @@ -272,7 +857,14 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }, - afterDestroyAll: function afterDestroyAll() {}, + + /** + * Log an error. + * + * @memberof DSHttpAdapter + * @instance + * @param {...*} [args] Arguments to log. + */ error: function error() { if (console) { var _console; @@ -280,6 +872,20 @@ return /******/ (function(modules) { // webpackBootstrap (_console = console)[typeof console.error === 'function' ? 'error' : 'log'].apply(_console, arguments); } }, + + /** + * Make an Http request using `window.fetch`. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} config Request configuration. + * @param {Object} config.data Payload for the request. + * @param {string} config.method Http method for the request. + * @param {Object} config.headers Headers for the request. + * @param {Object} config.params Querystring for the request. + * @param {string} config.url Url for the request. + * @param {Object} [opts] Configuration options. + */ fetch: function (_fetch) { function fetch(_x, _x2) { return _fetch.apply(this, arguments); @@ -312,7 +918,24 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }), - beforeFind: function beforeFind() {}, + + /** + * Retrieve the entity with the given primary key. + * + * {@link DSHttpAdapter#beforeFind} will be called before calling + * {@link DSHttpAdapter#GET}. + * {@link DSHttpAdapter#afterFind} will be called after calling + * {@link DSHttpAdapter#GET}. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The Model. + * @param {(string|number)} id Primary key of the entity to retrieve. + * @param {Object} [opts] Configuration options. + * @param {string} [opts.params] TODO + * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @return {Promise} + */ find: function find(Model, id, opts) { var self = this; opts = opts ? copy(opts) : {}; @@ -331,8 +954,24 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }, - afterFind: function afterFind() {}, - beforeFindAll: function beforeFindAll() {}, + + /** + * Retrieve the entities that match the selection `query`. + * + * {@link DSHttpAdapter#beforeFindAll} will be called before calling + * {@link DSHttpAdapter#GET}. + * {@link DSHttpAdapter#afterFindAll} will be called after calling + * {@link DSHttpAdapter#GET}. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The Model. + * @param {Object} query Selection query. + * @param {Object} [opts] Configuration options. + * @param {string} [opts.params] TODO + * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @return {Promise} + */ findAll: function findAll(Model, query, opts) { var self = this; query || (query = {}); @@ -353,8 +992,17 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }, - afterFindAll: function afterFindAll() {}, - beforeGET: function beforeGET() {}, + + /** + * { function_description } + * + * @memberof DSHttpAdapter + * @instance + * @param {string} url The url for the request. + * @param {Object} config Request configuration options. + * @param {Object} [opts] Configuration options. + * @return {Promise} + */ GET: function GET(url, config, opts) { var self = this; config || (config = {}); @@ -369,7 +1017,15 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }, - afterGET: function afterGET() {}, + + /** + * @memberof DSHttpAdapter + * @instance + * @param {*} Model { description } + * @param {*} id { description } + * @param {boolean} opts { description } + * @return {string} Full path. + */ getEndpoint: function getEndpoint(Model, id, opts) { var _this = this; @@ -420,6 +1076,15 @@ return /******/ (function(modules) { // webpackBootstrap } } }, + + /** + * @memberof DSHttpAdapter + * @instance + * @param {string} method TODO + * @param {*} Model TODO + * @param {(string|number)?} id TODO + * @param {Object} opts Configuration options. + */ getPath: function getPath(method, Model, id, opts) { var self = this; opts || (opts = {}); @@ -429,7 +1094,16 @@ return /******/ (function(modules) { // webpackBootstrap } return makePath.apply(_jsData.utils, args); }, - beforeHTTP: function beforeHTTP() {}, + + /** + * Make an Http request. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} config Request configuration options. + * @param {Object} [opts] Configuration options. + * @return {Promise} + */ HTTP: function HTTP(config, opts) { var self = this; var start = new Date(); @@ -464,29 +1138,29 @@ return /******/ (function(modules) { // webpackBootstrap throw new Error('You have not configured this adapter with an http library!'); } - return resolve(self.beforeHTTP(config)).then(function (_config) { + return resolve(self.beforeHTTP(config, opts)).then(function (_config) { config = _config || config; if (hasFetch && (self.useFetch || opts.useFetch || !self.http)) { return self.fetch(config, opts).then(logResponse, logResponse); } - return self.http(config).then(logResponse, logResponse); + return self.http(config).then(logResponse, logResponse).catch(function (err) { + return self.responseError(err, config, opts); + }); }).then(function (response) { - return resolve(self.afterHTTP(config, response)).then(function (_response) { + return resolve(self.afterHTTP(config, opts, response)).then(function (_response) { return _response || response; }); }); }, - afterHTTP: function afterHTTP() {}, - queryTransform: function queryTransform(Model, params, opts) { - return params; - }, - serialize: function serialize(Model, data, opts) { - opts || (opts = {}); - if (isFunction(opts.serialize)) { - return opts.serialize(Model, data, opts); - } - return data; - }, + + /** + * Log the provided arguments at the specified leve. + * + * @memberof DSHttpAdapter + * @instance + * @param {string} level Log level. + * @param {...*} [args] Arguments to log. + */ log: function log(level) { for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { args[_key3 - 1] = arguments[_key3]; @@ -510,7 +1184,18 @@ return /******/ (function(modules) { // webpackBootstrap (_console3 = console).log.apply(_console3, [prefix].concat(args)); } }, - beforePOST: function beforePOST() {}, + + /** + * { function_description } + * + * @memberof DSHttpAdapter + * @instance + * @param {*} url { description } + * @param {*} data { description } + * @param {*} config { description } + * @param {Object} [opts] Configuration options. + * @return {Promise} + */ POST: function POST(url, data, config, opts) { var self = this; config || (config = {}); @@ -526,8 +1211,18 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }, - afterPOST: function afterPOST() {}, - beforePUT: function beforePUT() {}, + + /** + * { function_description } + * + * @memberof DSHttpAdapter + * @instance + * @param {*} url { description } + * @param {*} data { description } + * @param {*} config { description } + * @param {Object} [opts] Configuration options. + * @return {Promise} + */ PUT: function PUT(url, data, config, opts) { var self = this; config || (config = {}); @@ -543,8 +1238,77 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }, - afterPUT: function afterPUT() {}, - beforeUpdate: function beforeUpdate() {}, + + /** + * { function_description } + * + * @memberof DSHttpAdapter + * @instance + * @param {*} Model { description } + * @param {*} params { description } + * @param {*} opts { description } + * @return {*} Transformed params. + */ + queryTransform: function queryTransform(Model, params, opts) { + opts || (opts = {}); + if (isFunction(opts.queryTransform)) { + return opts.queryTransform(Model, params, opts); + } + if (isFunction(Model.queryTransform)) { + return Model.queryTransform(Model, params, opts); + } + return params; + }, + + /** + * Error handler invoked when the promise returned by {@link DSHttpAdapter#http} + * is rejected. Default implementation is to just return the error wrapped in + * a rejected Promise, aka rethrow the error. {@link DSHttpAdapter#http} is + * called by {@link DSHttpAdapter#HTTP}. + * + * @memberof DSHttpAdapter + * @instance + * @param {*} err The error that {@link DSHttpAdapter#http} rejected with. + * @param {*} config The `config` argument that was passed to {@link DSHttpAdapter#HTTP}. + * @param {*} opts The `opts` argument that was passed to {@link DSHttpAdapter#HTTP}. + * @return {Promise} + */ + responseError: function responseError(err, config, opts) { + return reject(err); + }, + + /** + * { function_description } + * + * @memberof DSHttpAdapter + * @instance + * @param {*} Model { description } + * @param {*} data { description } + * @param {*} opts { description } + * @return {*} Serialized data. + */ + serialize: function serialize(Model, data, opts) { + opts || (opts = {}); + if (isFunction(opts.serialize)) { + return opts.serialize(Model, data, opts); + } + if (isFunction(Model.serialize)) { + return Model.serialize(Model, data, opts); + } + return data; + }, + + /** + * { function_description } + * + * @memberof DSHttpAdapter + * @instance + * @param {*} Model { description } + * @param {*} id { description } + * @param {*} props { description } + * @param {Object} [opts] Configuration options. + * @return {Promise} + */ update: function update(Model, id, props, opts) { var self = this; opts = opts ? copy(opts) : {}; @@ -563,8 +1327,18 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }, - afterUpdate: function afterUpdate() {}, - beforeUpdateAll: function beforeUpdateAll() {}, + + /** + * { function_description } + * + * @memberof DSHttpAdapter + * @instance + * @param {*} Model { description } + * @param {*} props { description } + * @param {*} query { description } + * @param {Object} [opts] Configuration options. + * @return {Promise} + */ updateAll: function updateAll(Model, props, query, opts) { var self = this; query || (query = {}); @@ -576,7 +1350,7 @@ return /******/ (function(modules) { // webpackBootstrap opts.op = 'updateAll'; self.dbg(opts.op, Model, props, query, opts); return resolve(self.beforeUpdateAll(Model, props, query, opts)).then(function () { - return self.PUT(self.getPath('updateAll', Model, opts.params, opts), self.serialize(Model, props, opts), opts); + return self.PUT(self.getPath('updateAll', Model, null, opts), self.serialize(Model, props, opts), opts); }).then(function (response) { return self.deserialize(Model, response, opts); }).then(function (data) { @@ -585,15 +1359,65 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }, - afterUpdateAll: function afterUpdateAll() {} + + /** + * Update multiple entities in batch. + * + * {@link DSHttpAdapter#beforeUpdateMany} will be called before calling + * {@link DSHttpAdapter#PUT}. + * {@link DSHttpAdapter#afterUpdateMany} will be called after calling + * {@link DSHttpAdapter#PUT}. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The Model. + * @param {Array} models Array of property objects to send as the payload. + * @param {Object} [opts] Configuration options. + * @param {string} [opts.params] TODO + * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @return {Promise} + */ + updateMany: function updateMany(Model, models, opts) { + var self = this; + opts = opts ? copy(opts) : {}; + opts.params || (opts.params = {}); + opts.params = self.queryTransform(Model, opts.params, opts); + opts.suffix || (opts.suffix = Model.suffix); + opts.op = 'updateMany'; + self.dbg(opts.op, Model, models, opts); + return resolve(self.beforeUpdateMany(Model, models, opts)).then(function () { + return self.PUT(self.getPath('updateMany', Model, null, opts), self.serialize(Model, models, opts), opts); + }).then(function (response) { + return self.deserialize(Model, response, opts); + }).then(function (data) { + return resolve(self.afterUpdateMany(Model, models, opts, data)).then(function (_data) { + return _data || data; + }); + }); + } }); + /** + * Add an Http actions to a Model. + * + * @name DSHttpAdapter.addAction + * @method + * @param {string} name Name of the new action. + * @param {Object} [opts] Action configuration + * @param {string} [opts.adapter] + * @param {string} [opts.pathname] + * @param {Function} [opts.request] + * @param {Function} [opts.response] + * @param {Function} [opts.responseError] + * @return {Function} Decoration function, which should be passed the Model to + * decorate when invoked. + */ DSHttpAdapter.addAction = function (name, opts) { if (!name || !isString(name)) { throw new TypeError('action(name[, opts]): Expected: string, Found: ' + (typeof name === 'undefined' ? 'undefined' : _typeof(name))); } - return function (target) { - if (target[name]) { + return function (Model) { + if (Model[name]) { throw new Error('action(name[, opts]): ' + name + ' already exists on target!'); } opts.request = opts.request || function (config) { @@ -605,7 +1429,7 @@ return /******/ (function(modules) { // webpackBootstrap opts.responseError = opts.responseError || function (err) { return reject(err); }; - target[name] = function (id, _opts) { + Model[name] = function (id, _opts) { if (isObject(id)) { _opts = id; } @@ -638,31 +1462,128 @@ return /******/ (function(modules) { // webpackBootstrap return data; }).then(_opts.response || opts.response, _opts.responseError || opts.responseError); }; - return target; + return Model; }; }; + /** + * Add multiple Http actions to a Model. See {@link DSHttpAdapter.addAction} for + * action configuration options. + * + * @name DSHttpAdapter.addActions + * @method + * @param {Object.} opts Object where the key is an action name + * and the value is the configuration for the action. + * @return {Function} Decoration function, which should be passed the Model to + * decorate when invoked. + */ DSHttpAdapter.addActions = function (opts) { opts || (opts = {}); - return function (target) { - forOwn(target, function (value, key) { - DSHttpAdapter.addAction(key, value)(target); + return function (Model) { + forOwn(Model, function (value, key) { + DSHttpAdapter.addAction(key, value)(Model); }); - return target; + return Model; }; }; + /** + * Alternative to ES6 class syntax for extending `DSHttpAdapter`. + * + * __ES6__: + * ```javascript + * class MyHttpAdapter extends DSHttpAdapter { + * deserialize (Model, data, opts) { + * const data = super.deserialize(Model, data, opts) + * data.foo = 'bar' + * return data + * } + * } + * ``` + * + * __ES5__: + * ```javascript + * var instanceProps = { + * // override deserialize + * deserialize: function (Model, data, opts) { + * var Ctor = this.constructor + * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize + * // call the super deserialize + * var data = superDeserialize(Model, data, opts) + * data.foo = 'bar' + * return data + * }, + * say: function () { return 'hi' } + * } + * var classProps = { + * yell: function () { return 'HI' } + * } + * + * var MyHttpAdapter = DSHttpAdapter.extend(instanceProps, classProps) + * var adapter = new MyHttpAdapter() + * adapter.say() // "hi" + * MyHttpAdapter.yell() // "HI" + * ``` + * + * @name DSHttpAdapter.extend + * @method + * @param {Object} [instanceProps] Properties that will be added to the + * prototype of the subclass. + * @param {Object} [classProps] Properties that will be added as static + * properties to the subclass itself. + * @return {Object} Subclass of `DSHttpAdapter`. + */ DSHttpAdapter.extend = extend; + /** + * Details of the current version of the `js-data-http` module. + * + * @name DSHttpAdapter.version + * @type {Object} + * @property {string} version.full The full semver value. + * @property {number} version.major The major version number. + * @property {number} version.minor The minor version number. + * @property {number} version.patch The patch version number. + * @property {(string|boolean)} version.alpha The alpha version value, + * otherwise `false` if the current version is not alpha. + * @property {(string|boolean)} version.beta The beta version value, + * otherwise `false` if the current version is not beta. + */ DSHttpAdapter.version = { - full: '3.0.0-alpha.2', + full: '3.0.0-alpha.3', major: parseInt('3', 10), minor: parseInt('0', 10), patch: parseInt('0', 10), - alpha: true ? '2' : false, + alpha: true ? '3' : false, beta: true ? 'false' : false }; + /** + * Registered as `js-data-http` in NPM and Bower. The build of `js-data-http` + * that works on Node.js is registered in NPM as `js-data-http-node`. The build + * of `js-data-http` that does not bundle `axios` is registered in NPM and Bower + * as `js-data-fetch`. + * + * __Script tag__: + * ```javascript + * window.DSHttpAdapter + * ``` + * __CommonJS__: + * ```javascript + * var DSHttpAdapter = require('js-data-http') + * ``` + * __ES6 Modules__: + * ```javascript + * import DSHttpAdapter from 'js-data-http' + * ``` + * __AMD__: + * ```javascript + * define('myApp', ['js-data-http'], function (DSHttpAdapter) { ... }) + * ``` + * + * @module js-data-http + */ + module.exports = DSHttpAdapter; /***/ }, diff --git a/fetch/dist/js-data-fetch.js.map b/fetch/dist/js-data-fetch.js.map index 588b680..ff5b4e4 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 07f739a805cd9bda904c","webpack:///C:/Users/jason/Documents/GitHub/js-data-http/src/index.js","webpack:///external {\"amd\":\"js-data\",\"commonjs\":\"js-data\",\"commonjs2\":\"js-data\",\"root\":\"JSData\"}","webpack:///external \"undefined\""],"names":[],"mappings":"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","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[\"DSHttpAdapter\"] = factory(require(\"js-data\"), require(\"undefined\"));\n\telse\n\t\troot[\"DSHttpAdapter\"] = factory(root[\"JSData\"], root[\"undefined\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_2__) {\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 07f739a805cd9bda904c\n **/","/* global fetch:true Headers:true Request:true */\r\nconst axios = require('axios')\r\nimport {utils} from 'js-data'\r\nconst {\r\n _,\r\n copy,\r\n deepMixIn,\r\n extend,\r\n fillIn,\r\n forOwn,\r\n isArray,\r\n isFunction,\r\n isNumber,\r\n isObject,\r\n isSorN,\r\n isString,\r\n resolve,\r\n reject,\r\n toJson\r\n} = utils\r\n\r\nlet hasFetch = false\r\n\r\ntry {\r\n hasFetch = window && window.fetch\r\n} catch (e) {}\r\n\r\nfunction isValidString (value) {\r\n return (value != null && value !== '')\r\n}\r\nfunction join (items, separator) {\r\n separator || (separator = '')\r\n return items.filter(isValidString).join(separator)\r\n}\r\nfunction makePath (...args) {\r\n let result = join(args, '/')\r\n return result.replace(/([^:\\/]|^)\\/{2,}/g, '$1/')\r\n}\r\n\r\nfunction encode (val) {\r\n return encodeURIComponent(val)\r\n .replace(/%40/gi, '@')\r\n .replace(/%3A/gi, ':')\r\n .replace(/%24/g, '$')\r\n .replace(/%2C/gi, ',')\r\n .replace(/%20/g, '+')\r\n .replace(/%5B/gi, '[')\r\n .replace(/%5D/gi, ']')\r\n}\r\n\r\nfunction buildUrl (url, params) {\r\n if (!params) {\r\n return url\r\n }\r\n\r\n const parts = []\r\n\r\n forOwn(params, function (val, key) {\r\n if (val === null || typeof val === 'undefined') {\r\n return\r\n }\r\n if (!isArray(val)) {\r\n val = [val]\r\n }\r\n\r\n val.forEach(function (v) {\r\n if (window.toString.call(v) === '[object Date]') {\r\n v = v.toISOString()\r\n } else if (isObject(v)) {\r\n v = toJson(v)\r\n }\r\n parts.push(`${encode(key)}=${encode(v)}`)\r\n })\r\n })\r\n\r\n if (parts.length > 0) {\r\n url += (url.indexOf('?') === -1 ? '?' : '&') + parts.join('&')\r\n }\r\n\r\n return url\r\n}\r\n\r\n/**\r\n * DSHttpAdapter class.\r\n * @class DSHttpAdapter\r\n *\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.basePath='']\r\n * @param {boolean} [opts.debug=false]\r\n * @param {boolean} [opts.forceTrailingSlash=false]\r\n * @param {Object} [opts.http=axios]\r\n * @param {Object} [opts.httpConfig={}]\r\n * @param {string} [opts.suffix='']\r\n * @param {boolean} [opts.useFetch=false]\r\n */\r\nfunction DSHttpAdapter (opts) {\r\n const self = this\r\n\r\n // Default values for arguments\r\n opts || (opts = {})\r\n\r\n // Default and user-defined settings\r\n self.basePath = opts.basePath === undefined ? '' : opts.basePath\r\n self.debug = opts.debug === undefined ? false : opts.debug\r\n self.forceTrailingSlash = opts.forceTrailingSlash === undefined ? false : opts.forceTrailingSlash\r\n self.http = opts.http === undefined ? axios : opts.http\r\n self.httpConfig = opts.httpConfig === undefined ? {} : opts.httpConfig\r\n self.suffix = opts.suffix === undefined ? '' : opts.suffix\r\n self.useFetch = opts.useFetch === undefined ? false : opts.useFetch\r\n}\r\n\r\nfillIn(DSHttpAdapter.prototype, {\r\n\r\n beforeCreate () {},\r\n\r\n create (Model, props, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'create'\r\n self.dbg(opts.op, Model, props, opts)\r\n return resolve(self.beforeCreate(Model, props, opts)).then(function () {\r\n return self.POST(\r\n self.getPath('create', Model, props, opts),\r\n self.serialize(Model, props, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterCreate(Model, props, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n afterCreate () {},\r\n\r\n dbg (...args) {\r\n this.log('debug', ...args)\r\n },\r\n\r\n beforeDEL () {},\r\n\r\n DEL (url, config, opts) {\r\n const self = this\r\n config || (config = {})\r\n config.url = url || config.url\r\n config.method = config.method || 'delete'\r\n return resolve(self.beforeDEL(url, config, opts)).then(function (_config) {\r\n config = _config || config\r\n return self.HTTP(config, opts)\r\n }).then(function (response) {\r\n return resolve(self.afterDEL(url, config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n afterDEL () {},\r\n\r\n deserialize (Model, data, opts) {\r\n opts || (opts = {})\r\n if (isFunction(opts.deserialize)) {\r\n return opts.deserialize(Model, data, opts)\r\n }\r\n if (isFunction(Model.deserialize)) {\r\n return Model.deserialize(Model, data, opts)\r\n }\r\n if (opts.raw) {\r\n return data\r\n }\r\n return data ? ('data' in data ? data.data : data) : data\r\n },\r\n\r\n beforeDestroy () {},\r\n\r\n destroy (Model, id, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'destroy'\r\n self.dbg(opts.op, Model, id, opts)\r\n return resolve(self.beforeDestroy(Model, id, opts)).then(function () {\r\n return self.DEL(\r\n self.getPath('destroy', Model, id, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterDestroy(Model, id, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n afterDestroy () {},\r\n\r\n beforeDestroyAll () {},\r\n\r\n destroyAll (Model, query, opts) {\r\n const self = this\r\n query || (query = {})\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n deepMixIn(opts.params, query)\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'destroy'\r\n self.dbg(opts.op, Model, query, opts)\r\n return resolve(self.beforeDestroyAll(Model, query, opts)).then(function () {\r\n return self.DEL(\r\n self.getPath('destroyAll', Model, opts.params, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterDestroyAll(Model, query, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n afterDestroyAll () {},\r\n\r\n error (...args) {\r\n if (console) {\r\n console[typeof console.error === 'function' ? 'error' : 'log'](...args)\r\n }\r\n },\r\n\r\n fetch (config, opts) {\r\n const requestConfig = {\r\n method: config.method,\r\n // turn the plain headers object into the Fetch Headers object\r\n headers: new Headers(config.headers)\r\n }\r\n\r\n if (config.data) {\r\n requestConfig.body = toJson(config.data)\r\n }\r\n\r\n return fetch(new Request(buildUrl(config.url, config.params), requestConfig)).then(function (response) {\r\n response.config = {\r\n method: config.method,\r\n url: config.url\r\n }\r\n return response.json().then(function (data) {\r\n response.data = data\r\n return response\r\n })\r\n })\r\n },\r\n\r\n beforeFind () {},\r\n\r\n find (Model, id, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'find'\r\n self.dbg(opts.op, Model, id, opts)\r\n return resolve(self.beforeFind(Model, id, opts)).then(function () {\r\n return self.GET(\r\n self.getPath('find', Model, id, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterFind(Model, id, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n afterFind () {},\r\n\r\n beforeFindAll () {},\r\n\r\n findAll (Model, query, opts) {\r\n const self = this\r\n query || (query = {})\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'findAll'\r\n self.dbg(opts.op, Model, query, opts)\r\n deepMixIn(opts.params, query)\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n return resolve(self.beforeFindAll(Model, query, opts)).then(function () {\r\n return self.GET(\r\n self.getPath('findAll', Model, opts.params, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterFindAll(Model, query, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n afterFindAll () {},\r\n\r\n beforeGET () {},\r\n\r\n GET (url, config, opts) {\r\n const self = this\r\n config || (config = {})\r\n config.url = url || config.url\r\n config.method = config.method || 'get'\r\n return resolve(self.beforeGET(url, config, opts)).then(function (_config) {\r\n config = _config || config\r\n return self.HTTP(config, opts)\r\n }).then(function (response) {\r\n return resolve(self.afterGET(url, config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n afterGET () {},\r\n\r\n getEndpoint (Model, id, opts) {\r\n opts || (opts = {})\r\n opts.params || (opts.params = {})\r\n\r\n let item\r\n const parentKey = Model.parentKey\r\n const endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : Model.endpoint\r\n let parentField = Model.parentField\r\n const parentDef = Model.parent ? Model.getResource(Model.parent) : undefined\r\n let parentId = opts.params[parentKey]\r\n\r\n if (parentId === false || !parentKey || !parentDef) {\r\n if (parentId === false) {\r\n delete opts.params[parentKey]\r\n }\r\n return endpoint\r\n } else {\r\n delete opts.params[parentKey]\r\n\r\n if (isString(id) || isNumber(id)) {\r\n item = Model.get(id)\r\n } else if (isObject(id)) {\r\n item = id\r\n }\r\n\r\n if (item) {\r\n parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null)\r\n }\r\n\r\n if (parentId) {\r\n delete opts.endpoint\r\n const _opts = {}\r\n forOwn(opts, function (value, key) {\r\n _opts[key] = value\r\n })\r\n _(_opts, parentDef)\r\n return makePath(this.getEndpoint(parentDef, parentId, _opts, parentId, endpoint))\r\n } else {\r\n return endpoint\r\n }\r\n }\r\n },\r\n\r\n getPath (method, Model, id, opts) {\r\n const self = this\r\n opts || (opts = {})\r\n const args = [\r\n opts.basePath === undefined ? (Model.basePath === undefined ? self.basePath : Model.basePath) : opts.basePath,\r\n self.getEndpoint(Model, (isString(id) || isNumber(id) || method === 'create') ? id : null, opts)\r\n ]\r\n if (method === 'find' || method === 'update' || method === 'destroy') {\r\n args.push(id)\r\n }\r\n return makePath.apply(utils, args)\r\n },\r\n\r\n beforeHTTP () {},\r\n\r\n HTTP (config, opts) {\r\n const self = this\r\n const start = new Date()\r\n opts || (opts = {})\r\n config = copy(config)\r\n config = deepMixIn(config, self.httpConfig)\r\n if (self.forceTrailingSlash && config.url[config.url.length - 1] !== '/') {\r\n config.url += '/'\r\n }\r\n config.method = config.method.toUpperCase()\r\n const suffix = config.suffix || opts.suffix || self.suffix\r\n if (suffix && config.url.substr(config.url.length - suffix.length) !== suffix) {\r\n config.url += suffix\r\n }\r\n\r\n function logResponse (data) {\r\n const str = `${start.toUTCString()} - ${config.method.toUpperCase()} ${config.url} - ${data.status} ${(new Date().getTime() - start.getTime())}ms`\r\n if (data.status >= 200 && data.status < 300) {\r\n if (self.log) {\r\n self.dbg('debug', str, data)\r\n }\r\n return data\r\n } else {\r\n if (self.error) {\r\n self.error(`'FAILED: ${str}`, data)\r\n }\r\n return reject(data)\r\n }\r\n }\r\n\r\n if (!self.http) {\r\n throw new Error('You have not configured this adapter with an http library!')\r\n }\r\n\r\n return resolve(self.beforeHTTP(config)).then(function (_config) {\r\n config = _config || config\r\n if (hasFetch && (self.useFetch || opts.useFetch || !self.http)) {\r\n return self.fetch(config, opts).then(logResponse, logResponse)\r\n }\r\n return self.http(config).then(logResponse, logResponse)\r\n }).then(function (response) {\r\n return resolve(self.afterHTTP(config, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n afterHTTP () {},\r\n\r\n queryTransform (Model, params, opts) {\r\n return params\r\n },\r\n\r\n serialize (Model, data, opts) {\r\n opts || (opts = {})\r\n if (isFunction(opts.serialize)) {\r\n return opts.serialize(Model, data, opts)\r\n }\r\n return data\r\n },\r\n\r\n log (level, ...args) {\r\n if (level && !args.length) {\r\n args.push(level)\r\n level = 'debug'\r\n }\r\n if (level === 'debug' && !this.debug) {\r\n return\r\n }\r\n const prefix = `${level.toUpperCase()}: (${this.name})`\r\n if (console[level]) {\r\n console[level](prefix, ...args)\r\n } else {\r\n console.log(prefix, ...args)\r\n }\r\n },\r\n\r\n beforePOST () {},\r\n\r\n POST (url, data, config, opts) {\r\n const self = this\r\n config || (config = {})\r\n config.url = url || config.url\r\n config.data = data || config.data\r\n config.method = config.method || 'post'\r\n return resolve(self.beforePOST(url, data, config, opts)).then(function (_config) {\r\n config = _config || config\r\n return self.HTTP(config, opts)\r\n }).then(function (response) {\r\n return resolve(self.afterPOST(url, data, config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n afterPOST () {},\r\n\r\n beforePUT () {},\r\n\r\n PUT (url, data, config, opts) {\r\n const self = this\r\n config || (config = {})\r\n config.url = url || config.url\r\n config.data = data || config.data\r\n config.method = config.method || 'put'\r\n return resolve(self.beforePUT(url, data, config, opts)).then(function (_config) {\r\n config = _config || config\r\n return self.HTTP(config, opts)\r\n }).then(function (response) {\r\n return resolve(self.afterPUT(url, data, config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n afterPUT () {},\r\n\r\n beforeUpdate () {},\r\n\r\n update (Model, id, props, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'update'\r\n self.dbg(opts.op, Model, id, props, opts)\r\n return resolve(self.beforeUpdate(Model, id, props, opts)).then(function () {\r\n return self.PUT(\r\n self.getPath('update', Model, id, opts),\r\n self.serialize(Model, props, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterUpdate(Model, id, props, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n afterUpdate () {},\r\n\r\n beforeUpdateAll () {},\r\n\r\n updateAll (Model, props, query, opts) {\r\n const self = this\r\n query || (query = {})\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n deepMixIn(opts.params, query)\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'updateAll'\r\n self.dbg(opts.op, Model, props, query, opts)\r\n return resolve(self.beforeUpdateAll(Model, props, query, opts)).then(function () {\r\n return self.PUT(\r\n self.getPath('updateAll', Model, opts.params, opts),\r\n self.serialize(Model, props, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterUpdateAll(Model, props, query, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n afterUpdateAll () {}\r\n})\r\n\r\nDSHttpAdapter.addAction = function (name, opts) {\r\n if (!name || !isString(name)) {\r\n throw new TypeError('action(name[, opts]): Expected: string, Found: ' + typeof name)\r\n }\r\n return function (target) {\r\n if (target[name]) {\r\n throw new Error('action(name[, opts]): ' + name + ' already exists on target!')\r\n }\r\n opts.request = opts.request || function (config) { return config }\r\n opts.response = opts.response || function (response) { return response }\r\n opts.responseError = opts.responseError || function (err) { return reject(err) }\r\n target[name] = function (id, _opts) {\r\n if (isObject(id)) {\r\n _opts = id\r\n }\r\n _opts = _opts || {}\r\n let adapter = this.getAdapter(opts.adapter || this.defaultAdapter || 'http')\r\n let config = {}\r\n fillIn(config, opts)\r\n if (!_opts.hasOwnProperty('endpoint') && config.endpoint) {\r\n _opts.endpoint = config.endpoint\r\n }\r\n if (typeof _opts.getEndpoint === 'function') {\r\n config.url = _opts.getEndpoint(this, _opts)\r\n } else {\r\n let args = [\r\n _opts.basePath || this.basePath || adapter.defaults.basePath,\r\n adapter.getEndpoint(this, isSorN(id) ? id : null, _opts)\r\n ]\r\n if (isSorN(id)) {\r\n args.push(id)\r\n }\r\n args.push(opts.pathname || name)\r\n config.url = makePath.apply(null, args)\r\n }\r\n config.method = config.method || 'GET'\r\n config.modelName = this.name\r\n deepMixIn(config)(_opts)\r\n return resolve(config)\r\n .then(_opts.request || opts.request)\r\n .then(function (config) { return adapter.HTTP(config) })\r\n .then(function (data) {\r\n if (data && data.config) {\r\n data.config.modelName = this.name\r\n }\r\n return data\r\n })\r\n .then(_opts.response || opts.response, _opts.responseError || opts.responseError)\r\n }\r\n return target\r\n }\r\n}\r\n\r\nDSHttpAdapter.addActions = function (opts) {\r\n opts || (opts = {})\r\n return function (target) {\r\n forOwn(target, function (value, key) {\r\n DSHttpAdapter.addAction(key, value)(target)\r\n })\r\n return target\r\n }\r\n}\r\n\r\nDSHttpAdapter.extend = extend\r\n\r\nDSHttpAdapter.version = {\r\n full: '<%= pkg.version %>',\r\n major: parseInt('<%= major %>', 10),\r\n minor: parseInt('<%= minor %>', 10),\r\n patch: parseInt('<%= patch %>', 10),\r\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\r\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\r\n}\r\n\r\nmodule.exports = DSHttpAdapter\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/jason/Documents/GitHub/js-data-http/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 **/","module.exports = undefined;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"undefined\"\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 4996488950a92853cf94","webpack:///C:/Users/jason/Documents/GitHub/js-data-http/src/index.js","webpack:///external {\"amd\":\"js-data\",\"commonjs\":\"js-data\",\"commonjs2\":\"js-data\",\"root\":\"JSData\"}","webpack:///external \"undefined\""],"names":[],"mappings":"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","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[\"DSHttpAdapter\"] = factory(require(\"js-data\"), require(\"undefined\"));\n\telse\n\t\troot[\"DSHttpAdapter\"] = factory(root[\"JSData\"], root[\"undefined\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_2__) {\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 4996488950a92853cf94\n **/","/* global fetch:true Headers:true Request:true */\r\nconst axios = require('axios')\r\nimport {utils} from 'js-data'\r\nconst {\r\n _,\r\n copy,\r\n deepMixIn,\r\n extend,\r\n fillIn,\r\n forOwn,\r\n isArray,\r\n isFunction,\r\n isNumber,\r\n isObject,\r\n isSorN,\r\n isString,\r\n resolve,\r\n reject,\r\n toJson\r\n} = utils\r\n\r\nlet hasFetch = false\r\n\r\ntry {\r\n hasFetch = window && window.fetch\r\n} catch (e) {}\r\n\r\nfunction isValidString (value) {\r\n return (value != null && value !== '')\r\n}\r\nfunction join (items, separator) {\r\n separator || (separator = '')\r\n return items.filter(isValidString).join(separator)\r\n}\r\nfunction makePath (...args) {\r\n let result = join(args, '/')\r\n return result.replace(/([^:\\/]|^)\\/{2,}/g, '$1/')\r\n}\r\n\r\nfunction encode (val) {\r\n return encodeURIComponent(val)\r\n .replace(/%40/gi, '@')\r\n .replace(/%3A/gi, ':')\r\n .replace(/%24/g, '$')\r\n .replace(/%2C/gi, ',')\r\n .replace(/%20/g, '+')\r\n .replace(/%5B/gi, '[')\r\n .replace(/%5D/gi, ']')\r\n}\r\n\r\nfunction buildUrl (url, params) {\r\n if (!params) {\r\n return url\r\n }\r\n\r\n const parts = []\r\n\r\n forOwn(params, function (val, key) {\r\n if (val === null || typeof val === 'undefined') {\r\n return\r\n }\r\n if (!isArray(val)) {\r\n val = [val]\r\n }\r\n\r\n val.forEach(function (v) {\r\n if (window.toString.call(v) === '[object Date]') {\r\n v = v.toISOString()\r\n } else if (isObject(v)) {\r\n v = toJson(v)\r\n }\r\n parts.push(`${encode(key)}=${encode(v)}`)\r\n })\r\n })\r\n\r\n if (parts.length > 0) {\r\n url += (url.indexOf('?') === -1 ? '?' : '&') + parts.join('&')\r\n }\r\n\r\n return url\r\n}\r\n\r\n/**\r\n * DSHttpAdapter class.\r\n * @class DSHttpAdapter\r\n * @alias DSHttpAdapter\r\n *\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.basePath='']\r\n * @param {boolean} [opts.debug=false]\r\n * @param {boolean} [opts.forceTrailingSlash=false]\r\n * @param {Object} [opts.http=axios]\r\n * @param {Object} [opts.httpConfig={}]\r\n * @param {string} [opts.suffix='']\r\n * @param {boolean} [opts.useFetch=false]\r\n */\r\nfunction DSHttpAdapter (opts) {\r\n const self = this\r\n\r\n // Default values for arguments\r\n opts || (opts = {})\r\n\r\n // Default and user-defined settings\r\n /**\r\n * @name DSHttpAdapter#basePath\r\n * @type {string}\r\n */\r\n self.basePath = opts.basePath === undefined ? '' : opts.basePath\r\n\r\n /**\r\n * @name DSHttpAdapter#debug\r\n * @type {boolean}\r\n * @default false\r\n */\r\n self.debug = opts.debug === undefined ? false : opts.debug\r\n\r\n /**\r\n * @name DSHttpAdapter#forceTrailingSlash\r\n * @type {boolean}\r\n * @default false\r\n */\r\n self.forceTrailingSlash = opts.forceTrailingSlash === undefined ? false : opts.forceTrailingSlash\r\n\r\n /**\r\n * @name DSHttpAdapter#http\r\n * @type {Function}\r\n */\r\n self.http = opts.http === undefined ? axios : opts.http\r\n\r\n /**\r\n * @name DSHttpAdapter#httpConfig\r\n * @type {Object}\r\n */\r\n self.httpConfig = opts.httpConfig === undefined ? {} : opts.httpConfig\r\n\r\n /**\r\n * @name DSHttpAdapter#suffix\r\n * @type {string}\r\n */\r\n self.suffix = opts.suffix === undefined ? '' : opts.suffix\r\n\r\n /**\r\n * @name DSHttpAdapter#useFetch\r\n * @type {boolean}\r\n * @default false\r\n */\r\n self.useFetch = opts.useFetch === undefined ? false : opts.useFetch\r\n}\r\n\r\nfillIn(DSHttpAdapter.prototype, {\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#create}. If this method\r\n * returns a promise then {@link DSHttpAdapter#create} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#create}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#create}.\r\n * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#create}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#create}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#create} will return.\r\n */\r\n afterCreate () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#createMany}. If this method\r\n * returns a promise then {@link DSHttpAdapter#createMany} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#createMany}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#createMany}.\r\n * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#createMany}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#createMany}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#createMany} will return.\r\n */\r\n afterCreateMany () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#DEL}. If this method\r\n * returns a promise then {@link DSHttpAdapter#DEL} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#DEL}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {string} url The `url` argument passed to {@link DSHttpAdapter#DEL}.\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#DEL}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#DEL}.\r\n * @param {Object} response The `response` value that {@link DSHttpAdapter#DEL} will return.\r\n */\r\n afterDEL () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#destroy}. If this method\r\n * returns a promise then {@link DSHttpAdapter#destroy} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#destroy}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroy}.\r\n * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#destroy}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroy}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#destroy} will return.\r\n */\r\n afterDestroy () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#destroyAll}. If this method\r\n * returns a promise then {@link DSHttpAdapter#destroyAll} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#destroyAll}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroyAll}.\r\n * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#destroyAll}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroyAll}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#destroyAll} will return.\r\n */\r\n afterDestroyAll () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#find}. If this method\r\n * returns a promise then {@link DSHttpAdapter#find} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#find}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#find}.\r\n * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#find}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#find}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#find} will return.\r\n */\r\n afterFind () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#findAll}. If this method\r\n * returns a promise then {@link DSHttpAdapter#findAll} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#findAll}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#findAll}.\r\n * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#findAll}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#findAll}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#findAll} will return.\r\n */\r\n afterFindAll () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#GET}. If this method\r\n * returns a promise then {@link DSHttpAdapter#GET} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#GET}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {string} url The `url` argument passed to {@link DSHttpAdapter#GET}.\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#GET}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#GET}.\r\n * @param {Object} response The `response` value that {@link DSHttpAdapter#GET} will return.\r\n */\r\n afterGET () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#HTTP}. If this method\r\n * returns a promise then {@link DSHttpAdapter#HTTP} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#HTTP}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#HTTP}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#HTTP}.\r\n * @param {Object} response The `response` value that {@link DSHttpAdapter#HTTP} will return.\r\n */\r\n afterHTTP () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#POST}. If this method\r\n * returns a promise then {@link DSHttpAdapter#POST} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#POST}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {string} url The `url` argument passed to {@link DSHttpAdapter#POST}.\r\n * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#POST}.\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#POST}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#POST}.\r\n * @param {Object} response The `response` value that {@link DSHttpAdapter#POST} will return.\r\n */\r\n afterPOST () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#PUT}. If this method\r\n * returns a promise then {@link DSHttpAdapter#PUT} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#PUT}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {string} url The `url` argument passed to {@link DSHttpAdapter#PUT}.\r\n * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#PUT}.\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#PUT}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#PUT}.\r\n * @param {Object} response The `response` value that {@link DSHttpAdapter#PUT} will return.\r\n */\r\n afterPUT () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#update}. If this method\r\n * returns a promise then {@link DSHttpAdapter#update} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#update}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#update}.\r\n * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#update}.\r\n * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#update}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#update}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#update} will return.\r\n */\r\n afterUpdate () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#updateAll}. If this method\r\n * returns a promise then {@link DSHttpAdapter#updateAll} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#updateAll}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateAll}.\r\n * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#updateAll}.\r\n * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#updateAll}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateAll}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#updateAll} will return.\r\n */\r\n afterUpdateAll () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#updateMany}. If this method\r\n * returns a promise then {@link DSHttpAdapter#updateMany} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#updateMany}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateMany}.\r\n * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#updateMany}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateMany}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#updateMany} will return.\r\n */\r\n afterUpdateMany () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#create}. If this method\r\n * returns a promise then {@link DSHttpAdapter#create} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#create}.\r\n * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#create}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#create}.\r\n */\r\n beforeCreate () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#createMany}. If this method\r\n * returns a promise then {@link DSHttpAdapter#createMany} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#createMany}.\r\n * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#createMany}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#createMany}.\r\n */\r\n beforeCreateMany () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#DEL}. If this method\r\n * returns a promise then {@link DSHttpAdapter#DEL} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#create}\r\n * will resolve with that same value, then the `config` argument passed to\r\n * {@link DSHttpAdapter#DEL} will be replaced by the value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#DEL}.\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#DEL}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#DEL}.\r\n */\r\n beforeDEL () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#destroy}. If this method\r\n * returns a promise then {@link DSHttpAdapter#destroy} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroy}.\r\n * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#destroy}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroy}.\r\n */\r\n beforeDestroy () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#destroyAll}. If this method\r\n * returns a promise then {@link DSHttpAdapter#destroyAll} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroyAll}.\r\n * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#destroyAll}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroyAll}.\r\n */\r\n beforeDestroyAll () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#find}. If this method\r\n * returns a promise then {@link DSHttpAdapter#find} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#find}.\r\n * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#find}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#find}.\r\n */\r\n beforeFind () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#findAll}. If this method\r\n * returns a promise then {@link DSHttpAdapter#findAll} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#findAll}.\r\n * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#findAll}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#findAll}.\r\n */\r\n beforeFindAll () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#GET}. If this method\r\n * returns a promise then {@link DSHttpAdapter#GET} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#create}\r\n * will resolve with that same value, then the `config` argument passed to\r\n * {@link DSHttpAdapter#GET} will be replaced by the value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#GET}.\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#GET}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#GET}.\r\n */\r\n beforeGET () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#HTTP}. If this method\r\n * returns a promise then {@link DSHttpAdapter#HTTP} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#create}\r\n * will resolve with that same value, then the `config` argument passed to\r\n * {@link DSHttpAdapter#HTTP} will be replaced by the value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#HTTP}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#HTTP}.\r\n */\r\n beforeHTTP () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#POST}. If this method\r\n * returns a promise then {@link DSHttpAdapter#POST} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#create}\r\n * will resolve with that same value, then the `config` argument passed to\r\n * {@link DSHttpAdapter#POST} will be replaced by the value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#POST}.\r\n * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#POST}.\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#POST}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#POST}.\r\n */\r\n beforePOST () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#PUT}. If this method\r\n * returns a promise then {@link DSHttpAdapter#PUT} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#create}\r\n * will resolve with that same value, then the `config` argument passed to\r\n * {@link DSHttpAdapter#PUT} will be replaced by the value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#PUT}.\r\n * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#PUT}.\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#PUT}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#PUT}.\r\n */\r\n beforePUT () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#update}. If this method\r\n * returns a promise then {@link DSHttpAdapter#update} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#update}.\r\n * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#update}.\r\n * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#update}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#update}.\r\n */\r\n beforeUpdate () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#updateAll}. If this method\r\n * returns a promise then {@link DSHttpAdapter#updateAll} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateAll}.\r\n * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#updateAll}.\r\n * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#updateAll}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateAll}.\r\n */\r\n beforeUpdateAll () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#updateMany}. If this method\r\n * returns a promise then {@link DSHttpAdapter#updateMany} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateMany}.\r\n * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#updateMany}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateMany}.\r\n */\r\n beforeUpdateMany () {},\r\n\r\n /**\r\n * Create a new the entity from the provided `props`.\r\n *\r\n * {@link DSHttpAdapter#beforeCreate} will be called before calling\r\n * {@link DSHttpAdapter#POST}.\r\n * {@link DSHttpAdapter#afterCreate} will be called after calling\r\n * {@link DSHttpAdapter#POST}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The Model.\r\n * @param {Object} props Properties to send as the payload.\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.params] TODO\r\n * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO\r\n * @return {Promise}\r\n */\r\n create (Model, props, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'create'\r\n self.dbg(opts.op, Model, props, opts)\r\n return resolve(self.beforeCreate(Model, props, opts)).then(function () {\r\n return self.POST(\r\n self.getPath('create', Model, props, opts),\r\n self.serialize(Model, props, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterCreate(Model, props, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Create multiple new entities in batch.\r\n *\r\n * {@link DSHttpAdapter#beforeCreateMany} will be called before calling\r\n * {@link DSHttpAdapter#POST}.\r\n * {@link DSHttpAdapter#afterCreateMany} will be called after calling\r\n * {@link DSHttpAdapter#POST}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The Model.\r\n * @param {Array} models Array of property objects to send as the payload.\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.params] TODO\r\n * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO\r\n * @return {Promise}\r\n */\r\n createMany (Model, models, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'createMany'\r\n self.dbg(opts.op, Model, models, opts)\r\n return resolve(self.beforeCreateMany(Model, models, opts)).then(function () {\r\n return self.POST(\r\n self.getPath('createMany', Model, null, opts),\r\n self.serialize(Model, models, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterCreateMany(Model, models, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Call {@link DSHttpAdapter#log} at the \"debug\" level.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {...*} [args] Args passed to {@link DSHttpAdapter#log}.\r\n */\r\n dbg (...args) {\r\n this.log('debug', ...args)\r\n },\r\n\r\n /**\r\n * Make an Http request to `url` according to the configuration in `config`.\r\n *\r\n * {@link DSHttpAdapter#beforeDEL} will be called before calling\r\n * {@link DSHttpAdapter#HTTP}.\r\n * {@link DSHttpAdapter#afterDEL} will be called after calling\r\n * {@link DSHttpAdapter#HTTP}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {string} url Url for the request.\r\n * @param {Object} [config] Http configuration that will be passed to\r\n * {@link DSHttpAdapter#HTTP}.\r\n * @param {Object} [opts] Configuration options.\r\n * @return {Promise}\r\n */\r\n DEL (url, config, opts) {\r\n const self = this\r\n config || (config = {})\r\n config.url = url || config.url\r\n config.method = config.method || 'delete'\r\n return resolve(self.beforeDEL(url, config, opts)).then(function (_config) {\r\n config = _config || config\r\n return self.HTTP(config, opts)\r\n }).then(function (response) {\r\n return resolve(self.afterDEL(url, config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Transform the server response object into the payload that will be returned\r\n * to JSData.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The Model used for the operation.\r\n * @param {Object} response Response object from {@link DSHttpAdapter#HTTP}.\r\n * @param {Object} opts Configuration options.\r\n * @return {(Object|Array)} Deserialized data.\r\n */\r\n deserialize (Model, response, opts) {\r\n opts || (opts = {})\r\n if (isFunction(opts.deserialize)) {\r\n return opts.deserialize(Model, response, opts)\r\n }\r\n if (isFunction(Model.deserialize)) {\r\n return Model.deserialize(Model, response, opts)\r\n }\r\n if (opts.raw) {\r\n return response\r\n }\r\n return response ? ('data' in response ? response.data : response) : response\r\n },\r\n\r\n /**\r\n * Destroy the entity with the given primary key.\r\n *\r\n * {@link DSHttpAdapter#beforeDestroy} will be called before calling\r\n * {@link DSHttpAdapter#DEL}.\r\n * {@link DSHttpAdapter#afterDestroy} will be called after calling\r\n * {@link DSHttpAdapter#DEL}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The Model.\r\n * @param {(string|number)} id Primary key of the entity to destroy.\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.params] TODO\r\n * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO\r\n * @return {Promise}\r\n */\r\n destroy (Model, id, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'destroy'\r\n self.dbg(opts.op, Model, id, opts)\r\n return resolve(self.beforeDestroy(Model, id, opts)).then(function () {\r\n return self.DEL(\r\n self.getPath('destroy', Model, id, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterDestroy(Model, id, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Destroy the entities that match the selection `query`.\r\n *\r\n * {@link DSHttpAdapter#beforeDestroyAll} will be called before calling\r\n * {@link DSHttpAdapter#DEL}.\r\n * {@link DSHttpAdapter#afterDestroyAll} will be called after calling\r\n * {@link DSHttpAdapter#DEL}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The Model.\r\n * @param {Object} query Selection query.\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.params] TODO\r\n * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO\r\n * @return {Promise}\r\n */\r\n destroyAll (Model, query, opts) {\r\n const self = this\r\n query || (query = {})\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n deepMixIn(opts.params, query)\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'destroyAll'\r\n self.dbg(opts.op, Model, query, opts)\r\n return resolve(self.beforeDestroyAll(Model, query, opts)).then(function () {\r\n return self.DEL(\r\n self.getPath('destroyAll', Model, null, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterDestroyAll(Model, query, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Log an error.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {...*} [args] Arguments to log.\r\n */\r\n error (...args) {\r\n if (console) {\r\n console[typeof console.error === 'function' ? 'error' : 'log'](...args)\r\n }\r\n },\r\n\r\n /**\r\n * Make an Http request using `window.fetch`.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} config Request configuration.\r\n * @param {Object} config.data Payload for the request.\r\n * @param {string} config.method Http method for the request.\r\n * @param {Object} config.headers Headers for the request.\r\n * @param {Object} config.params Querystring for the request.\r\n * @param {string} config.url Url for the request.\r\n * @param {Object} [opts] Configuration options.\r\n */\r\n fetch (config, opts) {\r\n const requestConfig = {\r\n method: config.method,\r\n // turn the plain headers object into the Fetch Headers object\r\n headers: new Headers(config.headers)\r\n }\r\n\r\n if (config.data) {\r\n requestConfig.body = toJson(config.data)\r\n }\r\n\r\n return fetch(new Request(buildUrl(config.url, config.params), requestConfig)).then(function (response) {\r\n response.config = {\r\n method: config.method,\r\n url: config.url\r\n }\r\n return response.json().then(function (data) {\r\n response.data = data\r\n return response\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Retrieve the entity with the given primary key.\r\n *\r\n * {@link DSHttpAdapter#beforeFind} will be called before calling\r\n * {@link DSHttpAdapter#GET}.\r\n * {@link DSHttpAdapter#afterFind} will be called after calling\r\n * {@link DSHttpAdapter#GET}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The Model.\r\n * @param {(string|number)} id Primary key of the entity to retrieve.\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.params] TODO\r\n * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO\r\n * @return {Promise}\r\n */\r\n find (Model, id, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'find'\r\n self.dbg(opts.op, Model, id, opts)\r\n return resolve(self.beforeFind(Model, id, opts)).then(function () {\r\n return self.GET(\r\n self.getPath('find', Model, id, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterFind(Model, id, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Retrieve the entities that match the selection `query`.\r\n *\r\n * {@link DSHttpAdapter#beforeFindAll} will be called before calling\r\n * {@link DSHttpAdapter#GET}.\r\n * {@link DSHttpAdapter#afterFindAll} will be called after calling\r\n * {@link DSHttpAdapter#GET}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The Model.\r\n * @param {Object} query Selection query.\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.params] TODO\r\n * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO\r\n * @return {Promise}\r\n */\r\n findAll (Model, query, opts) {\r\n const self = this\r\n query || (query = {})\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'findAll'\r\n self.dbg(opts.op, Model, query, opts)\r\n deepMixIn(opts.params, query)\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n return resolve(self.beforeFindAll(Model, query, opts)).then(function () {\r\n return self.GET(\r\n self.getPath('findAll', Model, opts.params, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterFindAll(Model, query, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * { function_description }\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {string} url The url for the request.\r\n * @param {Object} config Request configuration options.\r\n * @param {Object} [opts] Configuration options.\r\n * @return {Promise}\r\n */\r\n GET (url, config, opts) {\r\n const self = this\r\n config || (config = {})\r\n config.url = url || config.url\r\n config.method = config.method || 'get'\r\n return resolve(self.beforeGET(url, config, opts)).then(function (_config) {\r\n config = _config || config\r\n return self.HTTP(config, opts)\r\n }).then(function (response) {\r\n return resolve(self.afterGET(url, config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {*} Model { description }\r\n * @param {*} id { description }\r\n * @param {boolean} opts { description }\r\n * @return {string} Full path.\r\n */\r\n getEndpoint (Model, id, opts) {\r\n opts || (opts = {})\r\n opts.params || (opts.params = {})\r\n\r\n let item\r\n const parentKey = Model.parentKey\r\n const endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : Model.endpoint\r\n let parentField = Model.parentField\r\n const parentDef = Model.parent ? Model.getResource(Model.parent) : undefined\r\n let parentId = opts.params[parentKey]\r\n\r\n if (parentId === false || !parentKey || !parentDef) {\r\n if (parentId === false) {\r\n delete opts.params[parentKey]\r\n }\r\n return endpoint\r\n } else {\r\n delete opts.params[parentKey]\r\n\r\n if (isString(id) || isNumber(id)) {\r\n item = Model.get(id)\r\n } else if (isObject(id)) {\r\n item = id\r\n }\r\n\r\n if (item) {\r\n parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null)\r\n }\r\n\r\n if (parentId) {\r\n delete opts.endpoint\r\n const _opts = {}\r\n forOwn(opts, function (value, key) {\r\n _opts[key] = value\r\n })\r\n _(_opts, parentDef)\r\n return makePath(this.getEndpoint(parentDef, parentId, _opts, parentId, endpoint))\r\n } else {\r\n return endpoint\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {string} method TODO\r\n * @param {*} Model TODO\r\n * @param {(string|number)?} id TODO\r\n * @param {Object} opts Configuration options.\r\n */\r\n getPath (method, Model, id, opts) {\r\n const self = this\r\n opts || (opts = {})\r\n const args = [\r\n opts.basePath === undefined ? (Model.basePath === undefined ? self.basePath : Model.basePath) : opts.basePath,\r\n self.getEndpoint(Model, (isString(id) || isNumber(id) || method === 'create') ? id : null, opts)\r\n ]\r\n if (method === 'find' || method === 'update' || method === 'destroy') {\r\n args.push(id)\r\n }\r\n return makePath.apply(utils, args)\r\n },\r\n\r\n /**\r\n * Make an Http request.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} config Request configuration options.\r\n * @param {Object} [opts] Configuration options.\r\n * @return {Promise}\r\n */\r\n HTTP (config, opts) {\r\n const self = this\r\n const start = new Date()\r\n opts || (opts = {})\r\n config = copy(config)\r\n config = deepMixIn(config, self.httpConfig)\r\n if (self.forceTrailingSlash && config.url[config.url.length - 1] !== '/') {\r\n config.url += '/'\r\n }\r\n config.method = config.method.toUpperCase()\r\n const suffix = config.suffix || opts.suffix || self.suffix\r\n if (suffix && config.url.substr(config.url.length - suffix.length) !== suffix) {\r\n config.url += suffix\r\n }\r\n\r\n function logResponse (data) {\r\n const str = `${start.toUTCString()} - ${config.method.toUpperCase()} ${config.url} - ${data.status} ${(new Date().getTime() - start.getTime())}ms`\r\n if (data.status >= 200 && data.status < 300) {\r\n if (self.log) {\r\n self.dbg('debug', str, data)\r\n }\r\n return data\r\n } else {\r\n if (self.error) {\r\n self.error(`'FAILED: ${str}`, data)\r\n }\r\n return reject(data)\r\n }\r\n }\r\n\r\n if (!self.http) {\r\n throw new Error('You have not configured this adapter with an http library!')\r\n }\r\n\r\n return resolve(self.beforeHTTP(config, opts)).then(function (_config) {\r\n config = _config || config\r\n if (hasFetch && (self.useFetch || opts.useFetch || !self.http)) {\r\n return self.fetch(config, opts).then(logResponse, logResponse)\r\n }\r\n return self.http(config).then(logResponse, logResponse).catch(function (err) {\r\n return self.responseError(err, config, opts)\r\n })\r\n }).then(function (response) {\r\n return resolve(self.afterHTTP(config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Log the provided arguments at the specified leve.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {string} level Log level.\r\n * @param {...*} [args] Arguments to log.\r\n */\r\n log (level, ...args) {\r\n if (level && !args.length) {\r\n args.push(level)\r\n level = 'debug'\r\n }\r\n if (level === 'debug' && !this.debug) {\r\n return\r\n }\r\n const prefix = `${level.toUpperCase()}: (${this.name})`\r\n if (console[level]) {\r\n console[level](prefix, ...args)\r\n } else {\r\n console.log(prefix, ...args)\r\n }\r\n },\r\n\r\n /**\r\n * { function_description }\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {*} url { description }\r\n * @param {*} data { description }\r\n * @param {*} config { description }\r\n * @param {Object} [opts] Configuration options.\r\n * @return {Promise}\r\n */\r\n POST (url, data, config, opts) {\r\n const self = this\r\n config || (config = {})\r\n config.url = url || config.url\r\n config.data = data || config.data\r\n config.method = config.method || 'post'\r\n return resolve(self.beforePOST(url, data, config, opts)).then(function (_config) {\r\n config = _config || config\r\n return self.HTTP(config, opts)\r\n }).then(function (response) {\r\n return resolve(self.afterPOST(url, data, config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * { function_description }\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {*} url { description }\r\n * @param {*} data { description }\r\n * @param {*} config { description }\r\n * @param {Object} [opts] Configuration options.\r\n * @return {Promise}\r\n */\r\n PUT (url, data, config, opts) {\r\n const self = this\r\n config || (config = {})\r\n config.url = url || config.url\r\n config.data = data || config.data\r\n config.method = config.method || 'put'\r\n return resolve(self.beforePUT(url, data, config, opts)).then(function (_config) {\r\n config = _config || config\r\n return self.HTTP(config, opts)\r\n }).then(function (response) {\r\n return resolve(self.afterPUT(url, data, config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * { function_description }\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {*} Model { description }\r\n * @param {*} params { description }\r\n * @param {*} opts { description }\r\n * @return {*} Transformed params.\r\n */\r\n queryTransform (Model, params, opts) {\r\n opts || (opts = {})\r\n if (isFunction(opts.queryTransform)) {\r\n return opts.queryTransform(Model, params, opts)\r\n }\r\n if (isFunction(Model.queryTransform)) {\r\n return Model.queryTransform(Model, params, opts)\r\n }\r\n return params\r\n },\r\n\r\n /**\r\n * Error handler invoked when the promise returned by {@link DSHttpAdapter#http}\r\n * is rejected. Default implementation is to just return the error wrapped in\r\n * a rejected Promise, aka rethrow the error. {@link DSHttpAdapter#http} is\r\n * called by {@link DSHttpAdapter#HTTP}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {*} err The error that {@link DSHttpAdapter#http} rejected with.\r\n * @param {*} config The `config` argument that was passed to {@link DSHttpAdapter#HTTP}.\r\n * @param {*} opts The `opts` argument that was passed to {@link DSHttpAdapter#HTTP}.\r\n * @return {Promise}\r\n */\r\n responseError (err, config, opts) {\r\n return reject(err)\r\n },\r\n\r\n /**\r\n * { function_description }\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {*} Model { description }\r\n * @param {*} data { description }\r\n * @param {*} opts { description }\r\n * @return {*} Serialized data.\r\n */\r\n serialize (Model, data, opts) {\r\n opts || (opts = {})\r\n if (isFunction(opts.serialize)) {\r\n return opts.serialize(Model, data, opts)\r\n }\r\n if (isFunction(Model.serialize)) {\r\n return Model.serialize(Model, data, opts)\r\n }\r\n return data\r\n },\r\n\r\n /**\r\n * { function_description }\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {*} Model { description }\r\n * @param {*} id { description }\r\n * @param {*} props { description }\r\n * @param {Object} [opts] Configuration options.\r\n * @return {Promise}\r\n */\r\n update (Model, id, props, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'update'\r\n self.dbg(opts.op, Model, id, props, opts)\r\n return resolve(self.beforeUpdate(Model, id, props, opts)).then(function () {\r\n return self.PUT(\r\n self.getPath('update', Model, id, opts),\r\n self.serialize(Model, props, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterUpdate(Model, id, props, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * { function_description }\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {*} Model { description }\r\n * @param {*} props { description }\r\n * @param {*} query { description }\r\n * @param {Object} [opts] Configuration options.\r\n * @return {Promise}\r\n */\r\n updateAll (Model, props, query, opts) {\r\n const self = this\r\n query || (query = {})\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n deepMixIn(opts.params, query)\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'updateAll'\r\n self.dbg(opts.op, Model, props, query, opts)\r\n return resolve(self.beforeUpdateAll(Model, props, query, opts)).then(function () {\r\n return self.PUT(\r\n self.getPath('updateAll', Model, null, opts),\r\n self.serialize(Model, props, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterUpdateAll(Model, props, query, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Update multiple entities in batch.\r\n *\r\n * {@link DSHttpAdapter#beforeUpdateMany} will be called before calling\r\n * {@link DSHttpAdapter#PUT}.\r\n * {@link DSHttpAdapter#afterUpdateMany} will be called after calling\r\n * {@link DSHttpAdapter#PUT}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The Model.\r\n * @param {Array} models Array of property objects to send as the payload.\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.params] TODO\r\n * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO\r\n * @return {Promise}\r\n */\r\n updateMany (Model, models, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'updateMany'\r\n self.dbg(opts.op, Model, models, opts)\r\n return resolve(self.beforeUpdateMany(Model, models, opts)).then(function () {\r\n return self.PUT(\r\n self.getPath('updateMany', Model, null, opts),\r\n self.serialize(Model, models, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterUpdateMany(Model, models, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n }\r\n})\r\n\r\n/**\r\n * Add an Http actions to a Model.\r\n *\r\n * @name DSHttpAdapter.addAction\r\n * @method\r\n * @param {string} name Name of the new action.\r\n * @param {Object} [opts] Action configuration\r\n * @param {string} [opts.adapter]\r\n * @param {string} [opts.pathname]\r\n * @param {Function} [opts.request]\r\n * @param {Function} [opts.response]\r\n * @param {Function} [opts.responseError]\r\n * @return {Function} Decoration function, which should be passed the Model to\r\n * decorate when invoked.\r\n */\r\nDSHttpAdapter.addAction = function (name, opts) {\r\n if (!name || !isString(name)) {\r\n throw new TypeError('action(name[, opts]): Expected: string, Found: ' + typeof name)\r\n }\r\n return function (Model) {\r\n if (Model[name]) {\r\n throw new Error('action(name[, opts]): ' + name + ' already exists on target!')\r\n }\r\n opts.request = opts.request || function (config) { return config }\r\n opts.response = opts.response || function (response) { return response }\r\n opts.responseError = opts.responseError || function (err) { return reject(err) }\r\n Model[name] = function (id, _opts) {\r\n if (isObject(id)) {\r\n _opts = id\r\n }\r\n _opts = _opts || {}\r\n let adapter = this.getAdapter(opts.adapter || this.defaultAdapter || 'http')\r\n let config = {}\r\n fillIn(config, opts)\r\n if (!_opts.hasOwnProperty('endpoint') && config.endpoint) {\r\n _opts.endpoint = config.endpoint\r\n }\r\n if (typeof _opts.getEndpoint === 'function') {\r\n config.url = _opts.getEndpoint(this, _opts)\r\n } else {\r\n let args = [\r\n _opts.basePath || this.basePath || adapter.defaults.basePath,\r\n adapter.getEndpoint(this, isSorN(id) ? id : null, _opts)\r\n ]\r\n if (isSorN(id)) {\r\n args.push(id)\r\n }\r\n args.push(opts.pathname || name)\r\n config.url = makePath.apply(null, args)\r\n }\r\n config.method = config.method || 'GET'\r\n config.modelName = this.name\r\n deepMixIn(config)(_opts)\r\n return resolve(config)\r\n .then(_opts.request || opts.request)\r\n .then(function (config) { return adapter.HTTP(config) })\r\n .then(function (data) {\r\n if (data && data.config) {\r\n data.config.modelName = this.name\r\n }\r\n return data\r\n })\r\n .then(_opts.response || opts.response, _opts.responseError || opts.responseError)\r\n }\r\n return Model\r\n }\r\n}\r\n\r\n/**\r\n * Add multiple Http actions to a Model. See {@link DSHttpAdapter.addAction} for\r\n * action configuration options.\r\n *\r\n * @name DSHttpAdapter.addActions\r\n * @method\r\n * @param {Object.} opts Object where the key is an action name\r\n * and the value is the configuration for the action.\r\n * @return {Function} Decoration function, which should be passed the Model to\r\n * decorate when invoked.\r\n */\r\nDSHttpAdapter.addActions = function (opts) {\r\n opts || (opts = {})\r\n return function (Model) {\r\n forOwn(Model, function (value, key) {\r\n DSHttpAdapter.addAction(key, value)(Model)\r\n })\r\n return Model\r\n }\r\n}\r\n\r\n/**\r\n * Alternative to ES6 class syntax for extending `DSHttpAdapter`.\r\n *\r\n * __ES6__:\r\n * ```javascript\r\n * class MyHttpAdapter extends DSHttpAdapter {\r\n * deserialize (Model, data, opts) {\r\n * const data = super.deserialize(Model, data, opts)\r\n * data.foo = 'bar'\r\n * return data\r\n * }\r\n * }\r\n * ```\r\n *\r\n * __ES5__:\r\n * ```javascript\r\n * var instanceProps = {\r\n * // override deserialize\r\n * deserialize: function (Model, data, opts) {\r\n * var Ctor = this.constructor\r\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\r\n * // call the super deserialize\r\n * var data = superDeserialize(Model, data, opts)\r\n * data.foo = 'bar'\r\n * return data\r\n * },\r\n * say: function () { return 'hi' }\r\n * }\r\n * var classProps = {\r\n * yell: function () { return 'HI' }\r\n * }\r\n *\r\n * var MyHttpAdapter = DSHttpAdapter.extend(instanceProps, classProps)\r\n * var adapter = new MyHttpAdapter()\r\n * adapter.say() // \"hi\"\r\n * MyHttpAdapter.yell() // \"HI\"\r\n * ```\r\n *\r\n * @name DSHttpAdapter.extend\r\n * @method\r\n * @param {Object} [instanceProps] Properties that will be added to the\r\n * prototype of the subclass.\r\n * @param {Object} [classProps] Properties that will be added as static\r\n * properties to the subclass itself.\r\n * @return {Object} Subclass of `DSHttpAdapter`.\r\n */\r\nDSHttpAdapter.extend = extend\r\n\r\n/**\r\n * Details of the current version of the `js-data-http` module.\r\n *\r\n * @name DSHttpAdapter.version\r\n * @type {Object}\r\n * @property {string} version.full The full semver value.\r\n * @property {number} version.major The major version number.\r\n * @property {number} version.minor The minor version number.\r\n * @property {number} version.patch The patch version number.\r\n * @property {(string|boolean)} version.alpha The alpha version value,\r\n * otherwise `false` if the current version is not alpha.\r\n * @property {(string|boolean)} version.beta The beta version value,\r\n * otherwise `false` if the current version is not beta.\r\n */\r\nDSHttpAdapter.version = {\r\n full: '<%= pkg.version %>',\r\n major: parseInt('<%= major %>', 10),\r\n minor: parseInt('<%= minor %>', 10),\r\n patch: parseInt('<%= patch %>', 10),\r\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\r\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\r\n}\r\n\r\n/**\r\n * Registered as `js-data-http` in NPM and Bower. The build of `js-data-http`\r\n * that works on Node.js is registered in NPM as `js-data-http-node`. The build\r\n * of `js-data-http` that does not bundle `axios` is registered in NPM and Bower\r\n * as `js-data-fetch`.\r\n *\r\n * __Script tag__:\r\n * ```javascript\r\n * window.DSHttpAdapter\r\n * ```\r\n * __CommonJS__:\r\n * ```javascript\r\n * var DSHttpAdapter = require('js-data-http')\r\n * ```\r\n * __ES6 Modules__:\r\n * ```javascript\r\n * import DSHttpAdapter from 'js-data-http'\r\n * ```\r\n * __AMD__:\r\n * ```javascript\r\n * define('myApp', ['js-data-http'], function (DSHttpAdapter) { ... })\r\n * ```\r\n *\r\n * @module js-data-http\r\n */\r\n\r\nmodule.exports = DSHttpAdapter\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/jason/Documents/GitHub/js-data-http/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 **/","module.exports = undefined;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"undefined\"\n ** module id = 2\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 3b1ac4a..fad6c87 100644 --- a/fetch/dist/js-data-fetch.min.js +++ b/fetch/dist/js-data-fetch.min.js @@ -1,11 +1,11 @@ /*! * js-data-fetch -* @version 3.0.0-alpha.2 - Homepage +* @version 3.0.0-alpha.3 - Homepage * @author Jason Dobry * @copyright (c) 2014-2016 Jason Dobry * @license MIT * * @overview Fetch HTTP (XHR) adapter for js-data in the browser. */ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("js-data"),require("undefined")):"function"==typeof define&&define.amd?define(["js-data","undefined"],e):"object"==typeof exports?exports.DSHttpAdapter=e(require("js-data"),require("undefined")):t.DSHttpAdapter=e(t.JSData,t.undefined)}(this,function(t,e){return function(t){function e(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return t[r].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){"use strict";function r(t){return null!=t&&""!==t}function o(t,e){return e||(e=""),t.filter(r).join(e)}function i(){for(var t=arguments.length,e=Array(t),n=0;t>n;n++)e[n]=arguments[n];var r=o(e,"/");return r.replace(/([^:\/]|^)\/{2,}/g,"$1/")}function u(t){return encodeURIComponent(t).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function a(t,e){if(!e)return t;var n=[];return b(e,function(t,e){null!==t&&"undefined"!=typeof t&&(y(t)||(t=[t]),t.forEach(function(t){"[object Date]"===window.toString.call(t)?t=t.toISOString():x(t)&&(t=D(t)),n.push(u(e)+"="+u(t))}))}),n.length>0&&(t+=(-1===t.indexOf("?")?"?":"&")+n.join("&")),t}function f(t){var e=this;t||(t={}),e.basePath=void 0===t.basePath?"":t.basePath,e.debug=void 0===t.debug?!1:t.debug,e.forceTrailingSlash=void 0===t.forceTrailingSlash?!1:t.forceTrailingSlash,e.http=void 0===t.http?p:t.http,e.httpConfig=void 0===t.httpConfig?{}:t.httpConfig,e.suffix=void 0===t.suffix?"":t.suffix,e.useFetch=void 0===t.useFetch?!1:t.useFetch}var s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},c=n(1),p=n(2),d=c.utils._,l=c.utils.copy,h=c.utils.deepMixIn,m=c.utils.extend,g=c.utils.fillIn,b=c.utils.forOwn,y=c.utils.isArray,T=c.utils.isFunction,v=c.utils.isNumber,x=c.utils.isObject,P=c.utils.isSorN,A=c.utils.isString,E=c.utils.resolve,S=c.utils.reject,D=c.utils.toJson,w=!1;try{w=window&&window.fetch}catch(t){}g(f.prototype,{beforeCreate:function(){},create:function(t,e,n){var r=this;return n=n?l(n):{},n.params||(n.params={}),n.params=r.queryTransform(t,n.params,n),n.suffix||(n.suffix=t.suffix),n.op="create",r.dbg(n.op,t,e,n),E(r.beforeCreate(t,e,n)).then(function(){return r.POST(r.getPath("create",t,e,n),r.serialize(t,e,n),n)}).then(function(e){return r.deserialize(t,e,n)}).then(function(o){return E(r.afterCreate(t,e,n,o)).then(function(t){return t||o})})},afterCreate:function(){},dbg:function(){for(var t=arguments.length,e=Array(t),n=0;t>n;n++)e[n]=arguments[n];this.log.apply(this,["debug"].concat(e))},beforeDEL:function(){},DEL:function(t,e,n){var r=this;return e||(e={}),e.url=t||e.url,e.method=e.method||"delete",E(r.beforeDEL(t,e,n)).then(function(t){return e=t||e,r.HTTP(e,n)}).then(function(o){return E(r.afterDEL(t,e,n,o)).then(function(t){return t||o})})},afterDEL:function(){},deserialize:function(t,e,n){return n||(n={}),T(n.deserialize)?n.deserialize(t,e,n):T(t.deserialize)?t.deserialize(t,e,n):n.raw?e:e&&"data"in e?e.data:e},beforeDestroy:function(){},destroy:function(t,e,n){var r=this;return n=n?l(n):{},n.params||(n.params={}),n.params=r.queryTransform(t,n.params,n),n.suffix||(n.suffix=t.suffix),n.op="destroy",r.dbg(n.op,t,e,n),E(r.beforeDestroy(t,e,n)).then(function(){return r.DEL(r.getPath("destroy",t,e,n),n)}).then(function(e){return r.deserialize(t,e,n)}).then(function(o){return E(r.afterDestroy(t,e,n,o)).then(function(t){return t||o})})},afterDestroy:function(){},beforeDestroyAll:function(){},destroyAll:function(t,e,n){var r=this;return e||(e={}),n=n?l(n):{},n.params||(n.params={}),h(n.params,e),n.params=r.queryTransform(t,n.params,n),n.suffix||(n.suffix=t.suffix),n.op="destroy",r.dbg(n.op,t,e,n),E(r.beforeDestroyAll(t,e,n)).then(function(){return r.DEL(r.getPath("destroyAll",t,n.params,n),n)}).then(function(e){return r.deserialize(t,e,n)}).then(function(o){return E(r.afterDestroyAll(t,e,n,o)).then(function(t){return t||o})})},afterDestroyAll:function(){},error:function(){if(console){var t;(t=console)["function"==typeof console.error?"error":"log"].apply(t,arguments)}},fetch:function(t){function e(e,n){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}(function(t,e){var n={method:t.method,headers:new Headers(t.headers)};return t.data&&(n.body=D(t.data)),fetch(new Request(a(t.url,t.params),n)).then(function(e){return e.config={method:t.method,url:t.url},e.json().then(function(t){return e.data=t,e})})}),beforeFind:function(){},find:function(t,e,n){var r=this;return n=n?l(n):{},n.params||(n.params={}),n.params=r.queryTransform(t,n.params,n),n.suffix||(n.suffix=t.suffix),n.op="find",r.dbg(n.op,t,e,n),E(r.beforeFind(t,e,n)).then(function(){return r.GET(r.getPath("find",t,e,n),n)}).then(function(e){return r.deserialize(t,e,n)}).then(function(o){return E(r.afterFind(t,e,n,o)).then(function(t){return t||o})})},afterFind:function(){},beforeFindAll:function(){},findAll:function(t,e,n){var r=this;return e||(e={}),n=n?l(n):{},n.params||(n.params={}),n.suffix||(n.suffix=t.suffix),n.op="findAll",r.dbg(n.op,t,e,n),h(n.params,e),n.params=r.queryTransform(t,n.params,n),E(r.beforeFindAll(t,e,n)).then(function(){return r.GET(r.getPath("findAll",t,n.params,n),n)}).then(function(e){return r.deserialize(t,e,n)}).then(function(o){return E(r.afterFindAll(t,e,n,o)).then(function(t){return t||o})})},afterFindAll:function(){},beforeGET:function(){},GET:function(t,e,n){var r=this;return e||(e={}),e.url=t||e.url,e.method=e.method||"get",E(r.beforeGET(t,e,n)).then(function(t){return e=t||e,r.HTTP(e,n)}).then(function(o){return E(r.afterGET(t,e,n,o)).then(function(t){return t||o})})},afterGET:function(){},getEndpoint:function(t,e,n){var r=this;n||(n={}),n.params||(n.params={});var o=void 0,u=t.parentKey,a=n.hasOwnProperty("endpoint")?n.endpoint:t.endpoint,f=t.parentField,c=t.parent?t.getResource(t.parent):void 0,p=n.params[u];if(p===!1||!u||!c)return p===!1&&delete n.params[u],a;if(delete n.params[u],A(e)||v(e)?o=t.get(e):x(e)&&(o=e),o&&(p=p||o[u]||(o[f]?o[f][c.idAttribute]:null)),!p)return a;var l=function(){delete n.endpoint;var t={};return b(n,function(e,n){t[n]=e}),d(t,c),{v:i(r.getEndpoint(c,p,t,p,a))}}();return"object"===("undefined"==typeof l?"undefined":s(l))?l.v:void 0},getPath:function(t,e,n,r){var o=this;r||(r={});var u=[void 0===r.basePath?void 0===e.basePath?o.basePath:e.basePath:r.basePath,o.getEndpoint(e,A(n)||v(n)||"create"===t?n:null,r)];return("find"===t||"update"===t||"destroy"===t)&&u.push(n),i.apply(c.utils,u)},beforeHTTP:function(){},HTTP:function(t,e){function n(e){var n=o.toUTCString()+" - "+t.method.toUpperCase()+" "+t.url+" - "+e.status+" "+((new Date).getTime()-o.getTime())+"ms";return e.status>=200&&e.status<300?(r.log&&r.dbg("debug",n,e),e):(r.error&&r.error("'FAILED: "+n,e),S(e))}var r=this,o=new Date;e||(e={}),t=l(t),t=h(t,r.httpConfig),r.forceTrailingSlash&&"/"!==t.url[t.url.length-1]&&(t.url+="/"),t.method=t.method.toUpperCase();var i=t.suffix||e.suffix||r.suffix;if(i&&t.url.substr(t.url.length-i.length)!==i&&(t.url+=i),!r.http)throw new Error("You have not configured this adapter with an http library!");return E(r.beforeHTTP(t)).then(function(o){return t=o||t,w&&(r.useFetch||e.useFetch||!r.http)?r.fetch(t,e).then(n,n):r.http(t).then(n,n)}).then(function(e){return E(r.afterHTTP(t,e)).then(function(t){return t||e})})},afterHTTP:function(){},queryTransform:function(t,e,n){return e},serialize:function(t,e,n){return n||(n={}),T(n.serialize)?n.serialize(t,e,n):e},log:function(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;e>r;r++)n[r-1]=arguments[r];if(t&&!n.length&&(n.push(t),t="debug"),"debug"!==t||this.debug){var o=t.toUpperCase()+": ("+this.name+")";if(console[t]){var i;(i=console)[t].apply(i,[o].concat(n))}else{var u;(u=console).log.apply(u,[o].concat(n))}}},beforePOST:function(){},POST:function(t,e,n,r){var o=this;return n||(n={}),n.url=t||n.url,n.data=e||n.data,n.method=n.method||"post",E(o.beforePOST(t,e,n,r)).then(function(t){return n=t||n,o.HTTP(n,r)}).then(function(i){return E(o.afterPOST(t,e,n,r,i)).then(function(t){return t||i})})},afterPOST:function(){},beforePUT:function(){},PUT:function(t,e,n,r){var o=this;return n||(n={}),n.url=t||n.url,n.data=e||n.data,n.method=n.method||"put",E(o.beforePUT(t,e,n,r)).then(function(t){return n=t||n,o.HTTP(n,r)}).then(function(i){return E(o.afterPUT(t,e,n,r,i)).then(function(t){return t||i})})},afterPUT:function(){},beforeUpdate:function(){},update:function(t,e,n,r){var o=this;return r=r?l(r):{},r.params||(r.params={}),r.params=o.queryTransform(t,r.params,r),r.suffix||(r.suffix=t.suffix),r.op="update",o.dbg(r.op,t,e,n,r),E(o.beforeUpdate(t,e,n,r)).then(function(){return o.PUT(o.getPath("update",t,e,r),o.serialize(t,n,r),r)}).then(function(e){return o.deserialize(t,e,r)}).then(function(i){return E(o.afterUpdate(t,e,n,r,i)).then(function(t){return t||i})})},afterUpdate:function(){},beforeUpdateAll:function(){},updateAll:function(t,e,n,r){var o=this;return n||(n={}),r=r?l(r):{},r.params||(r.params={}),h(r.params,n),r.params=o.queryTransform(t,r.params,r),r.suffix||(r.suffix=t.suffix),r.op="updateAll",o.dbg(r.op,t,e,n,r),E(o.beforeUpdateAll(t,e,n,r)).then(function(){return o.PUT(o.getPath("updateAll",t,r.params,r),o.serialize(t,e,r),r)}).then(function(e){return o.deserialize(t,e,r)}).then(function(i){return E(o.afterUpdateAll(t,e,n,r,i)).then(function(t){return t||i})})},afterUpdateAll:function(){}}),f.addAction=function(t,e){if(!t||!A(t))throw new TypeError("action(name[, opts]): Expected: string, Found: "+("undefined"==typeof t?"undefined":s(t)));return function(n){if(n[t])throw new Error("action(name[, opts]): "+t+" already exists on target!");return e.request=e.request||function(t){return t},e.response=e.response||function(t){return t},e.responseError=e.responseError||function(t){return S(t)},n[t]=function(n,r){x(n)&&(r=n),r=r||{};var o=this.getAdapter(e.adapter||this.defaultAdapter||"http"),u={};if(g(u,e),!r.hasOwnProperty("endpoint")&&u.endpoint&&(r.endpoint=u.endpoint),"function"==typeof r.getEndpoint)u.url=r.getEndpoint(this,r);else{var a=[r.basePath||this.basePath||o.defaults.basePath,o.getEndpoint(this,P(n)?n:null,r)];P(n)&&a.push(n),a.push(e.pathname||t),u.url=i.apply(null,a)}return u.method=u.method||"GET",u.modelName=this.name,h(u)(r),E(u).then(r.request||e.request).then(function(t){return o.HTTP(t)}).then(function(t){return t&&t.config&&(t.config.modelName=this.name),t}).then(r.response||e.response,r.responseError||e.responseError)},n}},f.addActions=function(t){return t||(t={}),function(t){return b(t,function(e,n){f.addAction(n,e)(t)}),t}},f.extend=m,f.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},t.exports=f},function(e,n){e.exports=t},function(t,e){t.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.DSHttpAdapter=t(require("js-data"),require("undefined")):e.DSHttpAdapter=t(e.JSData,e.undefined)}(this,function(e,t){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 u(){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 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 i(e,t){if(!t)return e;var n=[];return y(t,function(e,t){null!==e&&"undefined"!=typeof e&&(b(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():x(e)&&(e=U(e)),n.push(a(t)+"="+a(e))}))}),n.length>0&&(e+=(-1===e.indexOf("?")?"?":"&")+n.join("&")),e}function f(e){var t=this;e||(e={}),t.basePath=void 0===e.basePath?"":e.basePath,t.debug=void 0===e.debug?!1:e.debug,t.forceTrailingSlash=void 0===e.forceTrailingSlash?!1:e.forceTrailingSlash,t.http=void 0===e.http?p:e.http,t.httpConfig=void 0===e.httpConfig?{}:e.httpConfig,t.suffix=void 0===e.suffix?"":e.suffix,t.useFetch=void 0===e.useFetch?!1:e.useFetch}var s="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},c=n(1),p=n(2),d=c.utils._,l=c.utils.copy,h=c.utils.deepMixIn,m=c.utils.extend,g=c.utils.fillIn,y=c.utils.forOwn,b=c.utils.isArray,T=c.utils.isFunction,v=c.utils.isNumber,x=c.utils.isObject,P=c.utils.isSorN,A=c.utils.isString,E=c.utils.resolve,S=c.utils.reject,U=c.utils.toJson,z=!1;try{z=window&&window.fetch}catch(e){}g(f.prototype,{afterCreate:function(){},afterCreateMany:function(){},afterDEL:function(){},afterDestroy:function(){},afterDestroyAll:function(){},afterFind:function(){},afterFindAll:function(){},afterGET:function(){},afterHTTP:function(){},afterPOST:function(){},afterPUT:function(){},afterUpdate:function(){},afterUpdateAll:function(){},afterUpdateMany:function(){},beforeCreate:function(){},beforeCreateMany:function(){},beforeDEL:function(){},beforeDestroy:function(){},beforeDestroyAll:function(){},beforeFind:function(){},beforeFindAll:function(){},beforeGET:function(){},beforeHTTP:function(){},beforePOST:function(){},beforePUT:function(){},beforeUpdate:function(){},beforeUpdateAll:function(){},beforeUpdateMany:function(){},create:function(e,t,n){var r=this;return n=n?l(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix||(n.suffix=e.suffix),n.op="create",r.dbg(n.op,e,t,n),E(r.beforeCreate(e,t,n)).then(function(){return r.POST(r.getPath("create",e,t,n),r.serialize(e,t,n),n)}).then(function(t){return r.deserialize(e,t,n)}).then(function(o){return E(r.afterCreate(e,t,n,o)).then(function(e){return e||o})})},createMany:function(e,t,n){var r=this;return n=n?l(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix||(n.suffix=e.suffix),n.op="createMany",r.dbg(n.op,e,t,n),E(r.beforeCreateMany(e,t,n)).then(function(){return r.POST(r.getPath("createMany",e,null,n),r.serialize(e,t,n),n)}).then(function(t){return r.deserialize(e,t,n)}).then(function(o){return E(r.afterCreateMany(e,t,n,o)).then(function(e){return e||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))},DEL:function(e,t,n){var r=this;return t||(t={}),t.url=e||t.url,t.method=t.method||"delete",E(r.beforeDEL(e,t,n)).then(function(e){return t=e||t,r.HTTP(t,n)}).then(function(o){return E(r.afterDEL(e,t,n,o)).then(function(e){return e||o})})},deserialize:function(e,t,n){return n||(n={}),T(n.deserialize)?n.deserialize(e,t,n):T(e.deserialize)?e.deserialize(e,t,n):n.raw?t:t&&"data"in t?t.data:t},destroy:function(e,t,n){var r=this;return n=n?l(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix||(n.suffix=e.suffix),n.op="destroy",r.dbg(n.op,e,t,n),E(r.beforeDestroy(e,t,n)).then(function(){return r.DEL(r.getPath("destroy",e,t,n),n)}).then(function(t){return r.deserialize(e,t,n)}).then(function(o){return E(r.afterDestroy(e,t,n,o)).then(function(e){return e||o})})},destroyAll:function(e,t,n){var r=this;return t||(t={}),n=n?l(n):{},n.params||(n.params={}),h(n.params,t),n.params=r.queryTransform(e,n.params,n),n.suffix||(n.suffix=e.suffix),n.op="destroyAll",r.dbg(n.op,e,t,n),E(r.beforeDestroyAll(e,t,n)).then(function(){return r.DEL(r.getPath("destroyAll",e,null,n),n)}).then(function(t){return r.deserialize(e,t,n)}).then(function(o){return E(r.afterDestroyAll(e,t,n,o)).then(function(e){return e||o})})},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=U(e.data)),fetch(new Request(i(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?l(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix||(n.suffix=e.suffix),n.op="find",r.dbg(n.op,e,t,n),E(r.beforeFind(e,t,n)).then(function(){return r.GET(r.getPath("find",e,t,n),n)}).then(function(t){return r.deserialize(e,t,n)}).then(function(o){return E(r.afterFind(e,t,n,o)).then(function(e){return e||o})})},findAll:function(e,t,n){var r=this;return t||(t={}),n=n?l(n):{},n.params||(n.params={}),n.suffix||(n.suffix=e.suffix),n.op="findAll",r.dbg(n.op,e,t,n),h(n.params,t),n.params=r.queryTransform(e,n.params,n),E(r.beforeFindAll(e,t,n)).then(function(){return r.GET(r.getPath("findAll",e,n.params,n),n)}).then(function(t){return r.deserialize(e,t,n)}).then(function(o){return E(r.afterFindAll(e,t,n,o)).then(function(e){return e||o})})},GET:function(e,t,n){var r=this;return t||(t={}),t.url=e||t.url,t.method=t.method||"get",E(r.beforeGET(e,t,n)).then(function(e){return t=e||t,r.HTTP(t,n)}).then(function(o){return E(r.afterGET(e,t,n,o)).then(function(e){return e||o})})},getEndpoint:function(e,t,n){var r=this;n||(n={}),n.params||(n.params={});var o=void 0,a=e.parentKey,i=n.hasOwnProperty("endpoint")?n.endpoint:e.endpoint,f=e.parentField,c=e.parent?e.getResource(e.parent):void 0,p=n.params[a];if(p===!1||!a||!c)return p===!1&&delete n.params[a],i;if(delete n.params[a],A(t)||v(t)?o=e.get(t):x(t)&&(o=t),o&&(p=p||o[a]||(o[f]?o[f][c.idAttribute]:null)),!p)return i;var l=function(){delete n.endpoint;var e={};return y(n,function(t,n){e[n]=t}),d(e,c),{v:u(r.getEndpoint(c,p,e,p,i))}}();return"object"===("undefined"==typeof l?"undefined":s(l))?l.v:void 0},getPath:function(e,t,n,r){var o=this;r||(r={});var a=[void 0===r.basePath?void 0===t.basePath?o.basePath:t.basePath:r.basePath,o.getEndpoint(t,A(n)||v(n)||"create"===e?n:null,r)];return("find"===e||"update"===e||"destroy"===e)&&a.push(n),u.apply(c.utils,a)},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),S(t))}var r=this,o=new Date;t||(t={}),e=l(e),e=h(e,r.httpConfig),r.forceTrailingSlash&&"/"!==e.url[e.url.length-1]&&(e.url+="/"),e.method=e.method.toUpperCase();var u=e.suffix||t.suffix||r.suffix;if(u&&e.url.substr(e.url.length-u.length)!==u&&(e.url+=u),!r.http)throw new Error("You have not configured this adapter with an http library!");return E(r.beforeHTTP(e,t)).then(function(o){return e=o||e,z&&(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 E(r.afterHTTP(e,t,n)).then(function(e){return e||n})})},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()+": ("+this.name+")";if(console[e]){var u;(u=console)[e].apply(u,[o].concat(n))}else{var a;(a=console).log.apply(a,[o].concat(n))}}},POST:function(e,t,n,r){var o=this;return n||(n={}),n.url=e||n.url,n.data=t||n.data,n.method=n.method||"post",E(o.beforePOST(e,t,n,r)).then(function(e){return n=e||n,o.HTTP(n,r)}).then(function(u){return E(o.afterPOST(e,t,n,r,u)).then(function(e){return e||u})})},PUT:function(e,t,n,r){var o=this;return n||(n={}),n.url=e||n.url,n.data=t||n.data,n.method=n.method||"put",E(o.beforePUT(e,t,n,r)).then(function(e){return n=e||n,o.HTTP(n,r)}).then(function(u){return E(o.afterPUT(e,t,n,r,u)).then(function(e){return e||u})})},queryTransform:function(e,t,n){return n||(n={}),T(n.queryTransform)?n.queryTransform(e,t,n):T(e.queryTransform)?e.queryTransform(e,t,n):t},responseError:function(e,t,n){return S(e)},serialize:function(e,t,n){return n||(n={}),T(n.serialize)?n.serialize(e,t,n):T(e.serialize)?e.serialize(e,t,n):t},update:function(e,t,n,r){var o=this;return r=r?l(r):{},r.params||(r.params={}),r.params=o.queryTransform(e,r.params,r),r.suffix||(r.suffix=e.suffix),r.op="update",o.dbg(r.op,e,t,n,r),E(o.beforeUpdate(e,t,n,r)).then(function(){return o.PUT(o.getPath("update",e,t,r),o.serialize(e,n,r),r)}).then(function(t){return o.deserialize(e,t,r)}).then(function(u){return E(o.afterUpdate(e,t,n,r,u)).then(function(e){return e||u})})},updateAll:function(e,t,n,r){var o=this;return n||(n={}),r=r?l(r):{},r.params||(r.params={}),h(r.params,n),r.params=o.queryTransform(e,r.params,r),r.suffix||(r.suffix=e.suffix),r.op="updateAll",o.dbg(r.op,e,t,n,r),E(o.beforeUpdateAll(e,t,n,r)).then(function(){return o.PUT(o.getPath("updateAll",e,null,r),o.serialize(e,t,r),r)}).then(function(t){return o.deserialize(e,t,r)}).then(function(u){return E(o.afterUpdateAll(e,t,n,r,u)).then(function(e){return e||u})})},updateMany:function(e,t,n){var r=this;return n=n?l(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix||(n.suffix=e.suffix),n.op="updateMany",r.dbg(n.op,e,t,n),E(r.beforeUpdateMany(e,t,n)).then(function(){return r.PUT(r.getPath("updateMany",e,null,n),r.serialize(e,t,n),n)}).then(function(t){return r.deserialize(e,t,n)}).then(function(o){return E(r.afterUpdateMany(e,t,n,o)).then(function(e){return e||o})})}}),f.addAction=function(e,t){if(!e||!A(e))throw new TypeError("action(name[, opts]): Expected: string, Found: "+("undefined"==typeof e?"undefined":s(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 S(e)},n[e]=function(n,r){x(n)&&(r=n),r=r||{};var o=this.getAdapter(t.adapter||this.defaultAdapter||"http"),a={};if(g(a,t),!r.hasOwnProperty("endpoint")&&a.endpoint&&(r.endpoint=a.endpoint),"function"==typeof r.getEndpoint)a.url=r.getEndpoint(this,r);else{var i=[r.basePath||this.basePath||o.defaults.basePath,o.getEndpoint(this,P(n)?n:null,r)];P(n)&&i.push(n),i.push(t.pathname||e),a.url=u.apply(null,i)}return a.method=a.method||"GET",a.modelName=this.name,h(a)(r),E(a).then(r.request||t.request).then(function(e){return o.HTTP(e)}).then(function(e){return e&&e.config&&(e.config.modelName=this.name),e}).then(r.response||t.response,r.responseError||t.responseError)},n}},f.addActions=function(e){return e||(e={}),function(e){return y(e,function(t,n){f.addAction(n,t)(e)}),e}},f.extend=m,f.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=f},function(t,n){t.exports=e},function(e,t){e.exports=void 0}])}); //# sourceMappingURL=fetch/dist/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 6a51763..84d4f9e 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_2__","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","forOwn","key","isArray","forEach","v","window","toString","toISOString","isObject","toJson","push","indexOf","DSHttpAdapter","opts","self","basePath","undefined","debug","forceTrailingSlash","http","axios","httpConfig","suffix","useFetch","_typeof","Symbol","iterator","obj","constructor","_jsData","_","utils","copy","deepMixIn","extend","fillIn","isFunction","isNumber","isSorN","isString","resolve","reject","hasFetch","fetch","e","prototype","beforeCreate","create","Model","props","queryTransform","op","dbg","then","POST","getPath","serialize","response","deserialize","data","afterCreate","_data","_len2","_key2","log","apply","concat","beforeDEL","DEL","config","method","_config","HTTP","afterDEL","_response","raw","beforeDestroy","destroy","afterDestroy","beforeDestroyAll","destroyAll","query","afterDestroyAll","error","console","_console","_fetch","_x","_x2","requestConfig","headers","Headers","body","Request","json","beforeFind","find","GET","afterFind","beforeFindAll","findAll","afterFindAll","beforeGET","afterGET","getEndpoint","_this","item","parentKey","endpoint","hasOwnProperty","parentField","parentDef","parent","getResource","parentId","get","idAttribute","_ret","_opts","beforeHTTP","logResponse","str","start","toUTCString","toUpperCase","status","Date","getTime","substr","Error","afterHTTP","level","_len3","_key3","prefix","name","_console2","_console3","beforePOST","afterPOST","beforePUT","PUT","afterPUT","beforeUpdate","update","afterUpdate","beforeUpdateAll","updateAll","afterUpdateAll","addAction","TypeError","target","request","responseError","err","adapter","getAdapter","defaultAdapter","_args","defaults","pathname","modelName","addActions","version","full","major","parseInt","minor","patch","alpha","beta"],"mappings":"CAAA,SAA2CA,EAAMC,GAC1B,gBAAZC,UAA0C,gBAAXC,QACxCA,OAAOD,QAAUD,EAAQG,QAAQ,WAAYA,QAAQ,cAC5B,kBAAXC,SAAyBA,OAAOC,IAC9CD,QAAQ,UAAW,aAAcJ,GACP,gBAAZC,SACdA,QAAuB,cAAID,EAAQG,QAAQ,WAAYA,QAAQ,cAE/DJ,EAAoB,cAAIC,EAAQD,EAAa,OAAGA,EAAgB,YAC/DO,KAAM,SAASC,EAA+BC,GACjD,MAAgB,UAAUC,GAKhB,QAASC,GAAoBC,GAG5B,GAAGC,EAAiBD,GACnB,MAAOC,GAAiBD,GAAUV,OAGnC,IAAIC,GAASU,EAAiBD,IAC7BV,WACAY,GAAIF,EACJG,QAAQ,EAUT,OANAL,GAAQE,GAAUI,KAAKb,EAAOD,QAASC,EAAQA,EAAOD,QAASS,GAG/DR,EAAOY,QAAS,EAGTZ,EAAOD,QAvBf,GAAIW,KAqCJ,OATAF,GAAoBM,EAAIP,EAGxBC,EAAoBO,EAAIL,EAGxBF,EAAoBQ,EAAI,GAGjBR,EAAoB,KAK/B,SAASR,EAAQD,EAASS,GAE/B,YA8BA,SAASS,GAAcC,GACrB,MAAgB,OAATA,GAA2B,KAAVA,EAE1B,QAASC,GAAKC,EAAOC,GAEnB,MADAA,KAAcA,EAAY,IACnBD,EAAME,OAAOL,GAAeE,KAAKE,GAE1C,QAASE,KACP,IAAK,GAAIC,GAAOC,UAAUC,OAAQC,EAAOC,MAAMJ,GAAOK,EAAO,EAAUL,EAAPK,EAAaA,IAC3EF,EAAKE,GAAQJ,UAAUI,EAGzB,IAAIC,GAASX,EAAKQ,EAAM,IACxB,OAAOG,GAAOC,QAAQ,oBAAqB,OAG7C,QAASC,GAAOC,GACd,MAAOC,oBAAmBD,GAAKF,QAAQ,QAAS,KAAKA,QAAQ,QAAS,KAAKA,QAAQ,OAAQ,KAAKA,QAAQ,QAAS,KAAKA,QAAQ,OAAQ,KAAKA,QAAQ,QAAS,KAAKA,QAAQ,QAAS,KAGpL,QAASI,GAASC,EAAKC,GACrB,IAAKA,EACH,MAAOD,EAGT,IAAIE,KAwBJ,OAtBAC,GAAOF,EAAQ,SAAUJ,EAAKO,GAChB,OAARP,GAA+B,mBAARA,KAGtBQ,EAAQR,KACXA,GAAOA,IAGTA,EAAIS,QAAQ,SAAUC,GACY,kBAA5BC,OAAOC,SAAShC,KAAK8B,GACvBA,EAAIA,EAAEG,cACGC,EAASJ,KAClBA,EAAIK,EAAOL,IAEbL,EAAMW,KAAKjB,EAAOQ,GAAO,IAAMR,EAAOW,SAItCL,EAAMZ,OAAS,IACjBU,IAA6B,KAArBA,EAAIc,QAAQ,KAAc,IAAM,KAAOZ,EAAMnB,KAAK,MAGrDiB,EAgBT,QAASe,GAAcC,GACrB,GAAIC,GAAOjD,IAGXgD,KAASA,MAGTC,EAAKC,SAA6BC,SAAlBH,EAAKE,SAAyB,GAAKF,EAAKE,SACxDD,EAAKG,MAAuBD,SAAfH,EAAKI,OAAsB,EAAQJ,EAAKI,MACrDH,EAAKI,mBAAiDF,SAA5BH,EAAKK,oBAAmC,EAAQL,EAAKK,mBAC/EJ,EAAKK,KAAqBH,SAAdH,EAAKM,KAAqBC,EAAQP,EAAKM,KACnDL,EAAKO,WAAiCL,SAApBH,EAAKQ,cAAgCR,EAAKQ,WAC5DP,EAAKQ,OAAyBN,SAAhBH,EAAKS,OAAuB,GAAKT,EAAKS,OACpDR,EAAKS,SAA6BP,SAAlBH,EAAKU,UAAyB,EAAQV,EAAKU,SA1G7D,GAAIC,GAA4B,kBAAXC,SAAoD,gBAApBA,QAAOC,SAAwB,SAAUC,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXF,SAAyBE,EAAIC,cAAgBH,OAAS,eAAkBE,IAEtOE,EAAU5D,EAAoB,GAG9BmD,EAAQnD,EAAoB,GAC5B6D,EAAID,EAAQE,MAAMD,EAClBE,EAAOH,EAAQE,MAAMC,KACrBC,EAAYJ,EAAQE,MAAME,UAC1BC,EAASL,EAAQE,MAAMG,OACvBC,EAASN,EAAQE,MAAMI,OACvBnC,EAAS6B,EAAQE,MAAM/B,OACvBE,EAAU2B,EAAQE,MAAM7B,QACxBkC,EAAaP,EAAQE,MAAMK,WAC3BC,EAAWR,EAAQE,MAAMM,SACzB7B,EAAWqB,EAAQE,MAAMvB,SACzB8B,EAAST,EAAQE,MAAMO,OACvBC,EAAWV,EAAQE,MAAMQ,SACzBC,EAAUX,EAAQE,MAAMS,QACxBC,EAASZ,EAAQE,MAAMU,OACvBhC,EAASoB,EAAQE,MAAMtB,OAEvBiC,GAAW,CAEf,KACEA,EAAWrC,QAAUA,OAAOsC,MAC5B,MAAOC,IAmFTT,EAAOvB,EAAciC,WACnBC,aAAc,aACdC,OAAQ,SAAgBC,EAAOC,EAAOpC,GACpC,GAAIC,GAAOjD,IAOX,OANAgD,GAAOA,EAAOmB,EAAKnB,MACnBA,EAAKf,SAAWe,EAAKf,WACrBe,EAAKf,OAASgB,EAAKoC,eAAeF,EAAOnC,EAAKf,OAAQe,GACtDA,EAAKS,SAAWT,EAAKS,OAAS0B,EAAM1B,QACpCT,EAAKsC,GAAK,SACVrC,EAAKsC,IAAIvC,EAAKsC,GAAIH,EAAOC,EAAOpC,GACzB2B,EAAQ1B,EAAKgC,aAAaE,EAAOC,EAAOpC,IAAOwC,KAAK,WACzD,MAAOvC,GAAKwC,KAAKxC,EAAKyC,QAAQ,SAAUP,EAAOC,EAAOpC,GAAOC,EAAK0C,UAAUR,EAAOC,EAAOpC,GAAOA,KAChGwC,KAAK,SAAUI,GAChB,MAAO3C,GAAK4C,YAAYV,EAAOS,EAAU5C,KACxCwC,KAAK,SAAUM,GAChB,MAAOnB,GAAQ1B,EAAK8C,YAAYZ,EAAOC,EAAOpC,EAAM8C,IAAON,KAAK,SAAUQ,GACxE,MAAOA,IAASF,OAItBC,YAAa,aACbR,IAAK,WACH,IAAK,GAAIU,GAAQ5E,UAAUC,OAAQC,EAAOC,MAAMyE,GAAQC,EAAQ,EAAWD,EAARC,EAAeA,IAChF3E,EAAK2E,GAAS7E,UAAU6E,EAG1BlG,MAAKmG,IAAIC,MAAMpG,MAAO,SAASqG,OAAO9E,KAExC+E,UAAW,aACXC,IAAK,SAAavE,EAAKwE,EAAQxD,GAC7B,GAAIC,GAAOjD,IAIX,OAHAwG,KAAWA,MACXA,EAAOxE,IAAMA,GAAOwE,EAAOxE,IAC3BwE,EAAOC,OAASD,EAAOC,QAAU,SAC1B9B,EAAQ1B,EAAKqD,UAAUtE,EAAKwE,EAAQxD,IAAOwC,KAAK,SAAUkB,GAE/D,MADAF,GAASE,GAAWF,EACbvD,EAAK0D,KAAKH,EAAQxD,KACxBwC,KAAK,SAAUI,GAChB,MAAOjB,GAAQ1B,EAAK2D,SAAS5E,EAAKwE,EAAQxD,EAAM4C,IAAWJ,KAAK,SAAUqB,GACxE,MAAOA,IAAajB,OAI1BgB,SAAU,aACVf,YAAa,SAAqBV,EAAOW,EAAM9C,GAE7C,MADAA,KAASA,MACLuB,EAAWvB,EAAK6C,aACX7C,EAAK6C,YAAYV,EAAOW,EAAM9C,GAEnCuB,EAAWY,EAAMU,aACZV,EAAMU,YAAYV,EAAOW,EAAM9C,GAEpCA,EAAK8D,IACAhB,EAEFA,GAAO,QAAUA,GAAOA,EAAKA,KAAcA,GAEpDiB,cAAe,aACfC,QAAS,SAAiB7B,EAAO5E,EAAIyC,GACnC,GAAIC,GAAOjD,IAOX,OANAgD,GAAOA,EAAOmB,EAAKnB,MACnBA,EAAKf,SAAWe,EAAKf,WACrBe,EAAKf,OAASgB,EAAKoC,eAAeF,EAAOnC,EAAKf,OAAQe,GACtDA,EAAKS,SAAWT,EAAKS,OAAS0B,EAAM1B,QACpCT,EAAKsC,GAAK,UACVrC,EAAKsC,IAAIvC,EAAKsC,GAAIH,EAAO5E,EAAIyC,GACtB2B,EAAQ1B,EAAK8D,cAAc5B,EAAO5E,EAAIyC,IAAOwC,KAAK,WACvD,MAAOvC,GAAKsD,IAAItD,EAAKyC,QAAQ,UAAWP,EAAO5E,EAAIyC,GAAOA,KACzDwC,KAAK,SAAUI,GAChB,MAAO3C,GAAK4C,YAAYV,EAAOS,EAAU5C,KACxCwC,KAAK,SAAUM,GAChB,MAAOnB,GAAQ1B,EAAKgE,aAAa9B,EAAO5E,EAAIyC,EAAM8C,IAAON,KAAK,SAAUQ,GACtE,MAAOA,IAASF,OAItBmB,aAAc,aACdC,iBAAkB,aAClBC,WAAY,SAAoBhC,EAAOiC,EAAOpE,GAC5C,GAAIC,GAAOjD,IASX,OARAoH,KAAUA,MACVpE,EAAOA,EAAOmB,EAAKnB,MACnBA,EAAKf,SAAWe,EAAKf,WACrBmC,EAAUpB,EAAKf,OAAQmF,GACvBpE,EAAKf,OAASgB,EAAKoC,eAAeF,EAAOnC,EAAKf,OAAQe,GACtDA,EAAKS,SAAWT,EAAKS,OAAS0B,EAAM1B,QACpCT,EAAKsC,GAAK,UACVrC,EAAKsC,IAAIvC,EAAKsC,GAAIH,EAAOiC,EAAOpE,GACzB2B,EAAQ1B,EAAKiE,iBAAiB/B,EAAOiC,EAAOpE,IAAOwC,KAAK,WAC7D,MAAOvC,GAAKsD,IAAItD,EAAKyC,QAAQ,aAAcP,EAAOnC,EAAKf,OAAQe,GAAOA,KACrEwC,KAAK,SAAUI,GAChB,MAAO3C,GAAK4C,YAAYV,EAAOS,EAAU5C,KACxCwC,KAAK,SAAUM,GAChB,MAAOnB,GAAQ1B,EAAKoE,gBAAgBlC,EAAOiC,EAAOpE,EAAM8C,IAAON,KAAK,SAAUQ,GAC5E,MAAOA,IAASF,OAItBuB,gBAAiB,aACjBC,MAAO,WACL,GAAIC,QAAS,CACX,GAAIC,IAEHA,EAAWD,SAAkC,kBAAlBA,SAAQD,MAAuB,QAAU,OAAOlB,MAAMoB,EAAUnG,aAGhGyD,MAAO,SAAU2C,GACf,QAAS3C,GAAM4C,EAAIC,GACjB,MAAOF,GAAOrB,MAAMpG,KAAMqB,WAO5B,MAJAyD,GAAMrC,SAAW,WACf,MAAOgF,GAAOhF,YAGTqC,GACP,SAAU0B,EAAQxD,GAClB,GAAI4E,IACFnB,OAAQD,EAAOC,OAEfoB,QAAS,GAAIC,SAAQtB,EAAOqB,SAO9B,OAJIrB,GAAOV,OACT8B,EAAcG,KAAOnF,EAAO4D,EAAOV,OAG9BhB,MAAM,GAAIkD,SAAQjG,EAASyE,EAAOxE,IAAKwE,EAAOvE,QAAS2F,IAAgBpC,KAAK,SAAUI,GAK3F,MAJAA,GAASY,QACPC,OAAQD,EAAOC,OACfzE,IAAKwE,EAAOxE,KAEP4D,EAASqC,OAAOzC,KAAK,SAAUM,GAEpC,MADAF,GAASE,KAAOA,EACTF,QAIbsC,WAAY,aACZC,KAAM,SAAchD,EAAO5E,EAAIyC,GAC7B,GAAIC,GAAOjD,IAOX,OANAgD,GAAOA,EAAOmB,EAAKnB,MACnBA,EAAKf,SAAWe,EAAKf,WACrBe,EAAKf,OAASgB,EAAKoC,eAAeF,EAAOnC,EAAKf,OAAQe,GACtDA,EAAKS,SAAWT,EAAKS,OAAS0B,EAAM1B,QACpCT,EAAKsC,GAAK,OACVrC,EAAKsC,IAAIvC,EAAKsC,GAAIH,EAAO5E,EAAIyC,GACtB2B,EAAQ1B,EAAKiF,WAAW/C,EAAO5E,EAAIyC,IAAOwC,KAAK,WACpD,MAAOvC,GAAKmF,IAAInF,EAAKyC,QAAQ,OAAQP,EAAO5E,EAAIyC,GAAOA,KACtDwC,KAAK,SAAUI,GAChB,MAAO3C,GAAK4C,YAAYV,EAAOS,EAAU5C,KACxCwC,KAAK,SAAUM,GAChB,MAAOnB,GAAQ1B,EAAKoF,UAAUlD,EAAO5E,EAAIyC,EAAM8C,IAAON,KAAK,SAAUQ,GACnE,MAAOA,IAASF,OAItBuC,UAAW,aACXC,cAAe,aACfC,QAAS,SAAiBpD,EAAOiC,EAAOpE,GACtC,GAAIC,GAAOjD,IASX,OARAoH,KAAUA,MACVpE,EAAOA,EAAOmB,EAAKnB,MACnBA,EAAKf,SAAWe,EAAKf,WACrBe,EAAKS,SAAWT,EAAKS,OAAS0B,EAAM1B,QACpCT,EAAKsC,GAAK,UACVrC,EAAKsC,IAAIvC,EAAKsC,GAAIH,EAAOiC,EAAOpE,GAChCoB,EAAUpB,EAAKf,OAAQmF,GACvBpE,EAAKf,OAASgB,EAAKoC,eAAeF,EAAOnC,EAAKf,OAAQe,GAC/C2B,EAAQ1B,EAAKqF,cAAcnD,EAAOiC,EAAOpE,IAAOwC,KAAK,WAC1D,MAAOvC,GAAKmF,IAAInF,EAAKyC,QAAQ,UAAWP,EAAOnC,EAAKf,OAAQe,GAAOA,KAClEwC,KAAK,SAAUI,GAChB,MAAO3C,GAAK4C,YAAYV,EAAOS,EAAU5C,KACxCwC,KAAK,SAAUM,GAChB,MAAOnB,GAAQ1B,EAAKuF,aAAarD,EAAOiC,EAAOpE,EAAM8C,IAAON,KAAK,SAAUQ,GACzE,MAAOA,IAASF,OAItB0C,aAAc,aACdC,UAAW,aACXL,IAAK,SAAapG,EAAKwE,EAAQxD,GAC7B,GAAIC,GAAOjD,IAIX,OAHAwG,KAAWA,MACXA,EAAOxE,IAAMA,GAAOwE,EAAOxE,IAC3BwE,EAAOC,OAASD,EAAOC,QAAU,MAC1B9B,EAAQ1B,EAAKwF,UAAUzG,EAAKwE,EAAQxD,IAAOwC,KAAK,SAAUkB,GAE/D,MADAF,GAASE,GAAWF,EACbvD,EAAK0D,KAAKH,EAAQxD,KACxBwC,KAAK,SAAUI,GAChB,MAAOjB,GAAQ1B,EAAKyF,SAAS1G,EAAKwE,EAAQxD,EAAM4C,IAAWJ,KAAK,SAAUqB,GACxE,MAAOA,IAAajB,OAI1B8C,SAAU,aACVC,YAAa,SAAqBxD,EAAO5E,EAAIyC,GAC3C,GAAI4F,GAAQ5I,IAEZgD,KAASA,MACTA,EAAKf,SAAWe,EAAKf,UAErB,IAAI4G,GAAO1F,OACP2F,EAAY3D,EAAM2D,UAClBC,EAAW/F,EAAKgG,eAAe,YAAchG,EAAK+F,SAAW5D,EAAM4D,SACnEE,EAAc9D,EAAM8D,YACpBC,EAAY/D,EAAMgE,OAAShE,EAAMiE,YAAYjE,EAAMgE,QAAUhG,OAC7DkG,EAAWrG,EAAKf,OAAO6G,EAE3B,IAAIO,KAAa,IAAUP,IAAcI,EAIvC,MAHIG,MAAa,SACRrG,GAAKf,OAAO6G,GAEdC,CAcP,UAZO/F,GAAKf,OAAO6G,GAEfpE,EAASnE,IAAOiE,EAASjE,GAC3BsI,EAAO1D,EAAMmE,IAAI/I,GACRoC,EAASpC,KAClBsI,EAAOtI,GAGLsI,IACFQ,EAAWA,GAAYR,EAAKC,KAAeD,EAAKI,GAAeJ,EAAKI,GAAaC,EAAUK,aAAe,QAGxGF,EAeF,MAAON,EAdP,IAAIS,GAAO,iBACFxG,GAAK+F,QACZ,IAAIU,KAKJ,OAJAtH,GAAOa,EAAM,SAAUlC,EAAOsB,GAC5BqH,EAAMrH,GAAOtB,IAEfmD,EAAEwF,EAAOP,IAEP3G,EAAGpB,EAASyH,EAAMD,YAAYO,EAAWG,EAAUI,EAAOJ,EAAUN,OAIxE,OAAoE,YAA/C,mBAATS,GAAuB,YAAc7F,EAAQ6F,IAA4BA,EAAKjH,EAA1F,QAMNmD,QAAS,SAAiBe,EAAQtB,EAAO5E,EAAIyC,GAC3C,GAAIC,GAAOjD,IACXgD,KAASA,KACT,IAAIzB,IAA0B4B,SAAlBH,EAAKE,SAA4CC,SAAnBgC,EAAMjC,SAAyBD,EAAKC,SAAWiC,EAAMjC,SAAWF,EAAKE,SAAUD,EAAK0F,YAAYxD,EAAOT,EAASnE,IAAOiE,EAASjE,IAAkB,WAAXkG,EAAsBlG,EAAK,KAAMyC,GAIlN,QAHe,SAAXyD,GAAgC,WAAXA,GAAkC,YAAXA,IAC9ClF,EAAKsB,KAAKtC,GAELY,EAASiF,MAAMpC,EAAQE,MAAO3C,IAEvCmI,WAAY,aACZ/C,KAAM,SAAcH,EAAQxD,GAe1B,QAAS2G,GAAY7D,GACnB,GAAI8D,GAAMC,EAAMC,cAAgB,MAAQtD,EAAOC,OAAOsD,cAAgB,IAAMvD,EAAOxE,IAAM,MAAQ8D,EAAKkE,OAAS,MAAO,GAAIC,OAAOC,UAAYL,EAAMK,WAAa,IAChK,OAAIpE,GAAKkE,QAAU,KAAOlE,EAAKkE,OAAS,KAClC/G,EAAKkD,KACPlD,EAAKsC,IAAI,QAASqE,EAAK9D,GAElBA,IAEH7C,EAAKqE,OACPrE,EAAKqE,MAAM,YAAesC,EAAK9D,GAE1BlB,EAAOkB,IAzBlB,GAAI7C,GAAOjD,KACP6J,EAAQ,GAAII,KAChBjH,KAASA,MACTwD,EAASrC,EAAKqC,GACdA,EAASpC,EAAUoC,EAAQvD,EAAKO,YAC5BP,EAAKI,oBAA4D,MAAtCmD,EAAOxE,IAAIwE,EAAOxE,IAAIV,OAAS,KAC5DkF,EAAOxE,KAAO,KAEhBwE,EAAOC,OAASD,EAAOC,OAAOsD,aAC9B,IAAItG,GAAS+C,EAAO/C,QAAUT,EAAKS,QAAUR,EAAKQ,MAoBlD,IAnBIA,GAAU+C,EAAOxE,IAAImI,OAAO3D,EAAOxE,IAAIV,OAASmC,EAAOnC,UAAYmC,IACrE+C,EAAOxE,KAAOyB,IAkBXR,EAAKK,KACR,KAAM,IAAI8G,OAAM,6DAGlB,OAAOzF,GAAQ1B,EAAKyG,WAAWlD,IAAShB,KAAK,SAAUkB,GAErD,MADAF,GAASE,GAAWF,EAChB3B,IAAa5B,EAAKS,UAAYV,EAAKU,WAAaT,EAAKK,MAChDL,EAAK6B,MAAM0B,EAAQxD,GAAMwC,KAAKmE,EAAaA,GAE7C1G,EAAKK,KAAKkD,GAAQhB,KAAKmE,EAAaA,KAC1CnE,KAAK,SAAUI,GAChB,MAAOjB,GAAQ1B,EAAKoH,UAAU7D,EAAQZ,IAAWJ,KAAK,SAAUqB,GAC9D,MAAOA,IAAajB,OAI1ByE,UAAW,aACXhF,eAAgB,SAAwBF,EAAOlD,EAAQe,GACrD,MAAOf,IAET0D,UAAW,SAAmBR,EAAOW,EAAM9C,GAEzC,MADAA,KAASA,MACLuB,EAAWvB,EAAK2C,WACX3C,EAAK2C,UAAUR,EAAOW,EAAM9C,GAE9B8C,GAETK,IAAK,SAAamE,GAChB,IAAK,GAAIC,GAAQlJ,UAAUC,OAAQC,EAAOC,MAAM+I,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAWD,EAARC,EAAeA,IACpGjJ,EAAKiJ,EAAQ,GAAKnJ,UAAUmJ,EAO9B,IAJIF,IAAU/I,EAAKD,SACjBC,EAAKsB,KAAKyH,GACVA,EAAQ,SAEI,UAAVA,GAAsBtK,KAAKoD,MAA/B,CAGA,GAAIqH,GAASH,EAAMP,cAAgB,MAAQ/J,KAAK0K,KAAO,GACvD,IAAInD,QAAQ+C,GAAQ,CAClB,GAAIK,IAEHA,EAAYpD,SAAS+C,GAAOlE,MAAMuE,GAAYF,GAAQpE,OAAO9E,QACzD,CACL,GAAIqJ,IAEHA,EAAYrD,SAASpB,IAAIC,MAAMwE,GAAYH,GAAQpE,OAAO9E,OAG/DsJ,WAAY,aACZpF,KAAM,SAAczD,EAAK8D,EAAMU,EAAQxD,GACrC,GAAIC,GAAOjD,IAKX,OAJAwG,KAAWA,MACXA,EAAOxE,IAAMA,GAAOwE,EAAOxE,IAC3BwE,EAAOV,KAAOA,GAAQU,EAAOV,KAC7BU,EAAOC,OAASD,EAAOC,QAAU,OAC1B9B,EAAQ1B,EAAK4H,WAAW7I,EAAK8D,EAAMU,EAAQxD,IAAOwC,KAAK,SAAUkB,GAEtE,MADAF,GAASE,GAAWF,EACbvD,EAAK0D,KAAKH,EAAQxD,KACxBwC,KAAK,SAAUI,GAChB,MAAOjB,GAAQ1B,EAAK6H,UAAU9I,EAAK8D,EAAMU,EAAQxD,EAAM4C,IAAWJ,KAAK,SAAUqB,GAC/E,MAAOA,IAAajB,OAI1BkF,UAAW,aACXC,UAAW,aACXC,IAAK,SAAahJ,EAAK8D,EAAMU,EAAQxD,GACnC,GAAIC,GAAOjD,IAKX,OAJAwG,KAAWA,MACXA,EAAOxE,IAAMA,GAAOwE,EAAOxE,IAC3BwE,EAAOV,KAAOA,GAAQU,EAAOV,KAC7BU,EAAOC,OAASD,EAAOC,QAAU,MAC1B9B,EAAQ1B,EAAK8H,UAAU/I,EAAK8D,EAAMU,EAAQxD,IAAOwC,KAAK,SAAUkB,GAErE,MADAF,GAASE,GAAWF,EACbvD,EAAK0D,KAAKH,EAAQxD,KACxBwC,KAAK,SAAUI,GAChB,MAAOjB,GAAQ1B,EAAKgI,SAASjJ,EAAK8D,EAAMU,EAAQxD,EAAM4C,IAAWJ,KAAK,SAAUqB,GAC9E,MAAOA,IAAajB,OAI1BqF,SAAU,aACVC,aAAc,aACdC,OAAQ,SAAgBhG,EAAO5E,EAAI6E,EAAOpC,GACxC,GAAIC,GAAOjD,IAOX,OANAgD,GAAOA,EAAOmB,EAAKnB,MACnBA,EAAKf,SAAWe,EAAKf,WACrBe,EAAKf,OAASgB,EAAKoC,eAAeF,EAAOnC,EAAKf,OAAQe,GACtDA,EAAKS,SAAWT,EAAKS,OAAS0B,EAAM1B,QACpCT,EAAKsC,GAAK,SACVrC,EAAKsC,IAAIvC,EAAKsC,GAAIH,EAAO5E,EAAI6E,EAAOpC,GAC7B2B,EAAQ1B,EAAKiI,aAAa/F,EAAO5E,EAAI6E,EAAOpC,IAAOwC,KAAK,WAC7D,MAAOvC,GAAK+H,IAAI/H,EAAKyC,QAAQ,SAAUP,EAAO5E,EAAIyC,GAAOC,EAAK0C,UAAUR,EAAOC,EAAOpC,GAAOA,KAC5FwC,KAAK,SAAUI,GAChB,MAAO3C,GAAK4C,YAAYV,EAAOS,EAAU5C,KACxCwC,KAAK,SAAUM,GAChB,MAAOnB,GAAQ1B,EAAKmI,YAAYjG,EAAO5E,EAAI6E,EAAOpC,EAAM8C,IAAON,KAAK,SAAUQ,GAC5E,MAAOA,IAASF,OAItBsF,YAAa,aACbC,gBAAiB,aACjBC,UAAW,SAAmBnG,EAAOC,EAAOgC,EAAOpE,GACjD,GAAIC,GAAOjD,IASX,OARAoH,KAAUA,MACVpE,EAAOA,EAAOmB,EAAKnB,MACnBA,EAAKf,SAAWe,EAAKf,WACrBmC,EAAUpB,EAAKf,OAAQmF,GACvBpE,EAAKf,OAASgB,EAAKoC,eAAeF,EAAOnC,EAAKf,OAAQe,GACtDA,EAAKS,SAAWT,EAAKS,OAAS0B,EAAM1B,QACpCT,EAAKsC,GAAK,YACVrC,EAAKsC,IAAIvC,EAAKsC,GAAIH,EAAOC,EAAOgC,EAAOpE,GAChC2B,EAAQ1B,EAAKoI,gBAAgBlG,EAAOC,EAAOgC,EAAOpE,IAAOwC,KAAK,WACnE,MAAOvC,GAAK+H,IAAI/H,EAAKyC,QAAQ,YAAaP,EAAOnC,EAAKf,OAAQe,GAAOC,EAAK0C,UAAUR,EAAOC,EAAOpC,GAAOA,KACxGwC,KAAK,SAAUI,GAChB,MAAO3C,GAAK4C,YAAYV,EAAOS,EAAU5C,KACxCwC,KAAK,SAAUM,GAChB,MAAOnB,GAAQ1B,EAAKsI,eAAepG,EAAOC,EAAOgC,EAAOpE,EAAM8C,IAAON,KAAK,SAAUQ,GAClF,MAAOA,IAASF,OAItByF,eAAgB,eAGlBxI,EAAcyI,UAAY,SAAUd,EAAM1H,GACxC,IAAK0H,IAAShG,EAASgG,GACrB,KAAM,IAAIe,WAAU,mDAAqE,mBAATf,GAAuB,YAAc/G,EAAQ+G,IAE/H,OAAO,UAAUgB,GACf,GAAIA,EAAOhB,GACT,KAAM,IAAIN,OAAM,yBAA2BM,EAAO,6BA4CpD,OA1CA1H,GAAK2I,QAAU3I,EAAK2I,SAAW,SAAUnF,GACvC,MAAOA,IAETxD,EAAK4C,SAAW5C,EAAK4C,UAAY,SAAUA,GACzC,MAAOA,IAET5C,EAAK4I,cAAgB5I,EAAK4I,eAAiB,SAAUC,GACnD,MAAOjH,GAAOiH,IAEhBH,EAAOhB,GAAQ,SAAUnK,EAAIkJ,GACvB9G,EAASpC,KACXkJ,EAAQlJ,GAEVkJ,EAAQA,KACR,IAAIqC,GAAU9L,KAAK+L,WAAW/I,EAAK8I,SAAW9L,KAAKgM,gBAAkB,QACjExF,IAKJ,IAJAlC,EAAOkC,EAAQxD,IACVyG,EAAMT,eAAe,aAAexC,EAAOuC,WAC9CU,EAAMV,SAAWvC,EAAOuC,UAEO,kBAAtBU,GAAMd,YACfnC,EAAOxE,IAAMyH,EAAMd,YAAY3I,KAAMyJ,OAChC,CACL,GAAIwC,IAASxC,EAAMvG,UAAYlD,KAAKkD,UAAY4I,EAAQI,SAAShJ,SAAU4I,EAAQnD,YAAY3I,KAAMyE,EAAOlE,GAAMA,EAAK,KAAMkJ,GACzHhF,GAAOlE,IACT0L,EAAMpJ,KAAKtC,GAEb0L,EAAMpJ,KAAKG,EAAKmJ,UAAYzB,GAC5BlE,EAAOxE,IAAMb,EAASiF,MAAM,KAAM6F,GAKpC,MAHAzF,GAAOC,OAASD,EAAOC,QAAU,MACjCD,EAAO4F,UAAYpM,KAAK0K,KACxBtG,EAAUoC,GAAQiD,GACX9E,EAAQ6B,GAAQhB,KAAKiE,EAAMkC,SAAW3I,EAAK2I,SAASnG,KAAK,SAAUgB,GACxE,MAAOsF,GAAQnF,KAAKH,KACnBhB,KAAK,SAAUM,GAIhB,MAHIA,IAAQA,EAAKU,SACfV,EAAKU,OAAO4F,UAAYpM,KAAK0K,MAExB5E,IACNN,KAAKiE,EAAM7D,UAAY5C,EAAK4C,SAAU6D,EAAMmC,eAAiB5I,EAAK4I,gBAEhEF,IAIX3I,EAAcsJ,WAAa,SAAUrJ,GAEnC,MADAA,KAASA,MACF,SAAU0I,GAIf,MAHAvJ,GAAOuJ,EAAQ,SAAU5K,EAAOsB,GAC9BW,EAAcyI,UAAUpJ,EAAKtB,GAAO4K,KAE/BA,IAIX3I,EAAcsB,OAASA,EAEvBtB,EAAcuJ,SACZC,KAAM,qBACNC,MAAOC,SAAS,eAAgB,IAChCC,MAAOD,SAAS,eAAgB,IAChCE,MAAOF,SAAS,eAAgB,IAChCG,MAAe,eACfC,KAAc,eAGhBjN,EAAOD,QAAUoD,GAIZ,SAASnD,EAAQD,GAEtBC,EAAOD,QAAUM,GAIZ,SAASL,EAAQD,GAEtBC,EAAOD,QAAUwD","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_2__","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","forOwn","key","isArray","forEach","v","window","toString","toISOString","isObject","toJson","push","indexOf","DSHttpAdapter","opts","self","basePath","undefined","debug","forceTrailingSlash","http","axios","httpConfig","suffix","useFetch","_typeof","Symbol","iterator","obj","constructor","_jsData","_","utils","copy","deepMixIn","extend","fillIn","isFunction","isNumber","isSorN","isString","resolve","reject","hasFetch","fetch","e","prototype","afterCreate","afterCreateMany","afterDEL","afterDestroy","afterDestroyAll","afterFind","afterFindAll","afterGET","afterHTTP","afterPOST","afterPUT","afterUpdate","afterUpdateAll","afterUpdateMany","beforeCreate","beforeCreateMany","beforeDEL","beforeDestroy","beforeDestroyAll","beforeFind","beforeFindAll","beforeGET","beforeHTTP","beforePOST","beforePUT","beforeUpdate","beforeUpdateAll","beforeUpdateMany","create","Model","props","queryTransform","op","dbg","then","POST","getPath","serialize","response","deserialize","data","_data","createMany","models","_len2","_key2","log","apply","concat","DEL","config","method","_config","HTTP","_response","raw","destroy","destroyAll","query","error","console","_console","_fetch","_x","_x2","requestConfig","headers","Headers","body","Request","json","find","GET","findAll","getEndpoint","_this","item","parentKey","endpoint","hasOwnProperty","parentField","parentDef","parent","getResource","parentId","get","idAttribute","_ret","_opts","logResponse","str","start","toUTCString","toUpperCase","status","Date","getTime","substr","Error","catch","err","responseError","level","_len3","_key3","prefix","name","_console2","_console3","PUT","update","updateAll","updateMany","addAction","TypeError","request","adapter","getAdapter","defaultAdapter","_args","defaults","pathname","modelName","addActions","version","full","major","parseInt","minor","patch","alpha","beta"],"mappings":"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","file":"fetch/dist/js-data-fetch.min.js"} \ No newline at end of file diff --git a/fetch/package.json b/fetch/package.json index 820568a..188bc1e 100644 --- a/fetch/package.json +++ b/fetch/package.json @@ -1,7 +1,7 @@ { "name": "js-data-fetch", "description": "HTTP adapter for js-data that uses fetch.", - "version": "3.0.0-alpha.2", + "version": "3.0.0-alpha.3", "homepage": "http://www.js-data.io/docs/dshttpadapter", "repository": { "type": "git", diff --git a/node/dist/js-data-http-node.js b/node/dist/js-data-http-node.js index af52746..dd591f5 100644 --- a/node/dist/js-data-http-node.js +++ b/node/dist/js-data-http-node.js @@ -1,6 +1,6 @@ /*! * js-data-http-node -* @version 3.0.0-alpha.2 - Homepage +* @version 3.0.0-alpha.3 - Homepage * @author Jason Dobry * @copyright (c) 2014-2016 Jason Dobry * @license MIT @@ -148,6 +148,7 @@ return /******/ (function(modules) { // webpackBootstrap /** * DSHttpAdapter class. * @class DSHttpAdapter + * @alias DSHttpAdapter * * @param {Object} [opts] Configuration options. * @param {string} [opts.basePath=''] @@ -165,17 +166,498 @@ return /******/ (function(modules) { // webpackBootstrap opts || (opts = {}); // Default and user-defined settings + /** + * @name DSHttpAdapter#basePath + * @type {string} + */ self.basePath = opts.basePath === undefined ? '' : opts.basePath; + + /** + * @name DSHttpAdapter#debug + * @type {boolean} + * @default false + */ self.debug = opts.debug === undefined ? false : opts.debug; + + /** + * @name DSHttpAdapter#forceTrailingSlash + * @type {boolean} + * @default false + */ self.forceTrailingSlash = opts.forceTrailingSlash === undefined ? false : opts.forceTrailingSlash; + + /** + * @name DSHttpAdapter#http + * @type {Function} + */ self.http = opts.http === undefined ? axios : opts.http; + + /** + * @name DSHttpAdapter#httpConfig + * @type {Object} + */ self.httpConfig = opts.httpConfig === undefined ? {} : opts.httpConfig; + + /** + * @name DSHttpAdapter#suffix + * @type {string} + */ self.suffix = opts.suffix === undefined ? '' : opts.suffix; + + /** + * @name DSHttpAdapter#useFetch + * @type {boolean} + * @default false + */ self.useFetch = opts.useFetch === undefined ? false : opts.useFetch; } fillIn(DSHttpAdapter.prototype, { + /** + * Lifecycle hook called by {@link DSHttpAdapter#create}. If this method + * returns a promise then {@link DSHttpAdapter#create} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#create} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#create}. + * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#create}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#create}. + * @param {Object} data The `data` value that {@link DSHttpAdapter#create} will return. + */ + + afterCreate: function afterCreate() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#createMany}. If this method + * returns a promise then {@link DSHttpAdapter#createMany} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#createMany} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#createMany}. + * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#createMany}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#createMany}. + * @param {Object} data The `data` value that {@link DSHttpAdapter#createMany} will return. + */ + afterCreateMany: function afterCreateMany() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#DEL}. If this method + * returns a promise then {@link DSHttpAdapter#DEL} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#DEL} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {string} url The `url` argument passed to {@link DSHttpAdapter#DEL}. + * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#DEL}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#DEL}. + * @param {Object} response The `response` value that {@link DSHttpAdapter#DEL} will return. + */ + afterDEL: function afterDEL() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#destroy}. If this method + * returns a promise then {@link DSHttpAdapter#destroy} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#destroy} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroy}. + * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#destroy}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroy}. + * @param {Object} data The `data` value that {@link DSHttpAdapter#destroy} will return. + */ + afterDestroy: function afterDestroy() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#destroyAll}. If this method + * returns a promise then {@link DSHttpAdapter#destroyAll} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#destroyAll} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroyAll}. + * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#destroyAll}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroyAll}. + * @param {Object} data The `data` value that {@link DSHttpAdapter#destroyAll} will return. + */ + afterDestroyAll: function afterDestroyAll() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#find}. If this method + * returns a promise then {@link DSHttpAdapter#find} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#find} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#find}. + * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#find}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#find}. + * @param {Object} data The `data` value that {@link DSHttpAdapter#find} will return. + */ + afterFind: function afterFind() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#findAll}. If this method + * returns a promise then {@link DSHttpAdapter#findAll} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#findAll} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#findAll}. + * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#findAll}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#findAll}. + * @param {Object} data The `data` value that {@link DSHttpAdapter#findAll} will return. + */ + afterFindAll: function afterFindAll() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#GET}. If this method + * returns a promise then {@link DSHttpAdapter#GET} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#GET} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {string} url The `url` argument passed to {@link DSHttpAdapter#GET}. + * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#GET}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#GET}. + * @param {Object} response The `response` value that {@link DSHttpAdapter#GET} will return. + */ + afterGET: function afterGET() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#HTTP}. If this method + * returns a promise then {@link DSHttpAdapter#HTTP} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#HTTP} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#HTTP}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#HTTP}. + * @param {Object} response The `response` value that {@link DSHttpAdapter#HTTP} will return. + */ + afterHTTP: function afterHTTP() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#POST}. If this method + * returns a promise then {@link DSHttpAdapter#POST} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#POST} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {string} url The `url` argument passed to {@link DSHttpAdapter#POST}. + * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#POST}. + * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#POST}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#POST}. + * @param {Object} response The `response` value that {@link DSHttpAdapter#POST} will return. + */ + afterPOST: function afterPOST() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#PUT}. If this method + * returns a promise then {@link DSHttpAdapter#PUT} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#PUT} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {string} url The `url` argument passed to {@link DSHttpAdapter#PUT}. + * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#PUT}. + * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#PUT}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#PUT}. + * @param {Object} response The `response` value that {@link DSHttpAdapter#PUT} will return. + */ + afterPUT: function afterPUT() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#update}. If this method + * returns a promise then {@link DSHttpAdapter#update} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#update} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#update}. + * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#update}. + * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#update}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#update}. + * @param {Object} data The `data` value that {@link DSHttpAdapter#update} will return. + */ + afterUpdate: function afterUpdate() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#updateAll}. If this method + * returns a promise then {@link DSHttpAdapter#updateAll} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#updateAll} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateAll}. + * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#updateAll}. + * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#updateAll}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateAll}. + * @param {Object} data The `data` value that {@link DSHttpAdapter#updateAll} will return. + */ + afterUpdateAll: function afterUpdateAll() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#updateMany}. If this method + * returns a promise then {@link DSHttpAdapter#updateMany} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#updateMany} + * will resolve with that same value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateMany}. + * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#updateMany}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateMany}. + * @param {Object} data The `data` value that {@link DSHttpAdapter#updateMany} will return. + */ + afterUpdateMany: function afterUpdateMany() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#create}. If this method + * returns a promise then {@link DSHttpAdapter#create} will wait for the + * promise to resolve before continuing. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#create}. + * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#create}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#create}. + */ beforeCreate: function beforeCreate() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#createMany}. If this method + * returns a promise then {@link DSHttpAdapter#createMany} will wait for the + * promise to resolve before continuing. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#createMany}. + * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#createMany}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#createMany}. + */ + beforeCreateMany: function beforeCreateMany() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#DEL}. If this method + * returns a promise then {@link DSHttpAdapter#DEL} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#create} + * will resolve with that same value, then the `config` argument passed to + * {@link DSHttpAdapter#DEL} will be replaced by the value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#DEL}. + * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#DEL}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#DEL}. + */ + beforeDEL: function beforeDEL() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#destroy}. If this method + * returns a promise then {@link DSHttpAdapter#destroy} will wait for the + * promise to resolve before continuing. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroy}. + * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#destroy}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroy}. + */ + beforeDestroy: function beforeDestroy() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#destroyAll}. If this method + * returns a promise then {@link DSHttpAdapter#destroyAll} will wait for the + * promise to resolve before continuing. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroyAll}. + * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#destroyAll}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroyAll}. + */ + beforeDestroyAll: function beforeDestroyAll() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#find}. If this method + * returns a promise then {@link DSHttpAdapter#find} will wait for the + * promise to resolve before continuing. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#find}. + * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#find}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#find}. + */ + beforeFind: function beforeFind() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#findAll}. If this method + * returns a promise then {@link DSHttpAdapter#findAll} will wait for the + * promise to resolve before continuing. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#findAll}. + * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#findAll}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#findAll}. + */ + beforeFindAll: function beforeFindAll() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#GET}. If this method + * returns a promise then {@link DSHttpAdapter#GET} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#create} + * will resolve with that same value, then the `config` argument passed to + * {@link DSHttpAdapter#GET} will be replaced by the value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#GET}. + * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#GET}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#GET}. + */ + beforeGET: function beforeGET() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#HTTP}. If this method + * returns a promise then {@link DSHttpAdapter#HTTP} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#create} + * will resolve with that same value, then the `config` argument passed to + * {@link DSHttpAdapter#HTTP} will be replaced by the value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#HTTP}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#HTTP}. + */ + beforeHTTP: function beforeHTTP() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#POST}. If this method + * returns a promise then {@link DSHttpAdapter#POST} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#create} + * will resolve with that same value, then the `config` argument passed to + * {@link DSHttpAdapter#POST} will be replaced by the value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#POST}. + * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#POST}. + * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#POST}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#POST}. + */ + beforePOST: function beforePOST() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#PUT}. If this method + * returns a promise then {@link DSHttpAdapter#PUT} will wait for the + * promise to resolve before continuing. If this method returns any other + * value or the promise resolves with a value, then {@link DSHttpAdapter#create} + * will resolve with that same value, then the `config` argument passed to + * {@link DSHttpAdapter#PUT} will be replaced by the value. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#PUT}. + * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#PUT}. + * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#PUT}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#PUT}. + */ + beforePUT: function beforePUT() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#update}. If this method + * returns a promise then {@link DSHttpAdapter#update} will wait for the + * promise to resolve before continuing. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#update}. + * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#update}. + * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#update}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#update}. + */ + beforeUpdate: function beforeUpdate() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#updateAll}. If this method + * returns a promise then {@link DSHttpAdapter#updateAll} will wait for the + * promise to resolve before continuing. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateAll}. + * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#updateAll}. + * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#updateAll}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateAll}. + */ + beforeUpdateAll: function beforeUpdateAll() {}, + + /** + * Lifecycle hook called by {@link DSHttpAdapter#updateMany}. If this method + * returns a promise then {@link DSHttpAdapter#updateMany} will wait for the + * promise to resolve before continuing. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateMany}. + * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#updateMany}. + * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateMany}. + */ + beforeUpdateMany: function beforeUpdateMany() {}, + + /** + * Create a new the entity from the provided `props`. + * + * {@link DSHttpAdapter#beforeCreate} will be called before calling + * {@link DSHttpAdapter#POST}. + * {@link DSHttpAdapter#afterCreate} will be called after calling + * {@link DSHttpAdapter#POST}. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The Model. + * @param {Object} props Properties to send as the payload. + * @param {Object} [opts] Configuration options. + * @param {string} [opts.params] TODO + * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @return {Promise} + */ create: function create(Model, props, opts) { var self = this; opts = opts ? copy(opts) : {}; @@ -194,7 +676,50 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }, - afterCreate: function afterCreate() {}, + + /** + * Create multiple new entities in batch. + * + * {@link DSHttpAdapter#beforeCreateMany} will be called before calling + * {@link DSHttpAdapter#POST}. + * {@link DSHttpAdapter#afterCreateMany} will be called after calling + * {@link DSHttpAdapter#POST}. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The Model. + * @param {Array} models Array of property objects to send as the payload. + * @param {Object} [opts] Configuration options. + * @param {string} [opts.params] TODO + * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @return {Promise} + */ + createMany: function createMany(Model, models, opts) { + var self = this; + opts = opts ? copy(opts) : {}; + opts.params || (opts.params = {}); + opts.params = self.queryTransform(Model, opts.params, opts); + opts.suffix || (opts.suffix = Model.suffix); + opts.op = 'createMany'; + self.dbg(opts.op, Model, models, opts); + return resolve(self.beforeCreateMany(Model, models, opts)).then(function () { + return self.POST(self.getPath('createMany', Model, null, opts), self.serialize(Model, models, opts), opts); + }).then(function (response) { + return self.deserialize(Model, response, opts); + }).then(function (data) { + return resolve(self.afterCreateMany(Model, models, opts, data)).then(function (_data) { + return _data || data; + }); + }); + }, + + /** + * Call {@link DSHttpAdapter#log} at the "debug" level. + * + * @memberof DSHttpAdapter + * @instance + * @param {...*} [args] Args passed to {@link DSHttpAdapter#log}. + */ dbg: function dbg() { for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2]; @@ -202,7 +727,23 @@ return /******/ (function(modules) { // webpackBootstrap this.log.apply(this, ['debug'].concat(args)); }, - beforeDEL: function beforeDEL() {}, + + /** + * Make an Http request to `url` according to the configuration in `config`. + * + * {@link DSHttpAdapter#beforeDEL} will be called before calling + * {@link DSHttpAdapter#HTTP}. + * {@link DSHttpAdapter#afterDEL} will be called after calling + * {@link DSHttpAdapter#HTTP}. + * + * @memberof DSHttpAdapter + * @instance + * @param {string} url Url for the request. + * @param {Object} [config] Http configuration that will be passed to + * {@link DSHttpAdapter#HTTP}. + * @param {Object} [opts] Configuration options. + * @return {Promise} + */ DEL: function DEL(url, config, opts) { var self = this; config || (config = {}); @@ -217,21 +758,49 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }, - afterDEL: function afterDEL() {}, - deserialize: function deserialize(Model, data, opts) { + + /** + * Transform the server response object into the payload that will be returned + * to JSData. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The Model used for the operation. + * @param {Object} response Response object from {@link DSHttpAdapter#HTTP}. + * @param {Object} opts Configuration options. + * @return {(Object|Array)} Deserialized data. + */ + deserialize: function deserialize(Model, response, opts) { opts || (opts = {}); if (isFunction(opts.deserialize)) { - return opts.deserialize(Model, data, opts); + return opts.deserialize(Model, response, opts); } if (isFunction(Model.deserialize)) { - return Model.deserialize(Model, data, opts); + return Model.deserialize(Model, response, opts); } if (opts.raw) { - return data; + return response; } - return data ? 'data' in data ? data.data : data : data; + return response ? 'data' in response ? response.data : response : response; }, - beforeDestroy: function beforeDestroy() {}, + + /** + * Destroy the entity with the given primary key. + * + * {@link DSHttpAdapter#beforeDestroy} will be called before calling + * {@link DSHttpAdapter#DEL}. + * {@link DSHttpAdapter#afterDestroy} will be called after calling + * {@link DSHttpAdapter#DEL}. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The Model. + * @param {(string|number)} id Primary key of the entity to destroy. + * @param {Object} [opts] Configuration options. + * @param {string} [opts.params] TODO + * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @return {Promise} + */ destroy: function destroy(Model, id, opts) { var self = this; opts = opts ? copy(opts) : {}; @@ -250,8 +819,24 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }, - afterDestroy: function afterDestroy() {}, - beforeDestroyAll: function beforeDestroyAll() {}, + + /** + * Destroy the entities that match the selection `query`. + * + * {@link DSHttpAdapter#beforeDestroyAll} will be called before calling + * {@link DSHttpAdapter#DEL}. + * {@link DSHttpAdapter#afterDestroyAll} will be called after calling + * {@link DSHttpAdapter#DEL}. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The Model. + * @param {Object} query Selection query. + * @param {Object} [opts] Configuration options. + * @param {string} [opts.params] TODO + * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @return {Promise} + */ destroyAll: function destroyAll(Model, query, opts) { var self = this; query || (query = {}); @@ -260,10 +845,10 @@ return /******/ (function(modules) { // webpackBootstrap deepMixIn(opts.params, query); opts.params = self.queryTransform(Model, opts.params, opts); opts.suffix || (opts.suffix = Model.suffix); - opts.op = 'destroy'; + opts.op = 'destroyAll'; self.dbg(opts.op, Model, query, opts); return resolve(self.beforeDestroyAll(Model, query, opts)).then(function () { - return self.DEL(self.getPath('destroyAll', Model, opts.params, opts), opts); + return self.DEL(self.getPath('destroyAll', Model, null, opts), opts); }).then(function (response) { return self.deserialize(Model, response, opts); }).then(function (data) { @@ -272,7 +857,14 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }, - afterDestroyAll: function afterDestroyAll() {}, + + /** + * Log an error. + * + * @memberof DSHttpAdapter + * @instance + * @param {...*} [args] Arguments to log. + */ error: function error() { if (console) { var _console; @@ -280,6 +872,20 @@ return /******/ (function(modules) { // webpackBootstrap (_console = console)[typeof console.error === 'function' ? 'error' : 'log'].apply(_console, arguments); } }, + + /** + * Make an Http request using `window.fetch`. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} config Request configuration. + * @param {Object} config.data Payload for the request. + * @param {string} config.method Http method for the request. + * @param {Object} config.headers Headers for the request. + * @param {Object} config.params Querystring for the request. + * @param {string} config.url Url for the request. + * @param {Object} [opts] Configuration options. + */ fetch: function (_fetch) { function fetch(_x, _x2) { return _fetch.apply(this, arguments); @@ -312,7 +918,24 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }), - beforeFind: function beforeFind() {}, + + /** + * Retrieve the entity with the given primary key. + * + * {@link DSHttpAdapter#beforeFind} will be called before calling + * {@link DSHttpAdapter#GET}. + * {@link DSHttpAdapter#afterFind} will be called after calling + * {@link DSHttpAdapter#GET}. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The Model. + * @param {(string|number)} id Primary key of the entity to retrieve. + * @param {Object} [opts] Configuration options. + * @param {string} [opts.params] TODO + * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @return {Promise} + */ find: function find(Model, id, opts) { var self = this; opts = opts ? copy(opts) : {}; @@ -331,8 +954,24 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }, - afterFind: function afterFind() {}, - beforeFindAll: function beforeFindAll() {}, + + /** + * Retrieve the entities that match the selection `query`. + * + * {@link DSHttpAdapter#beforeFindAll} will be called before calling + * {@link DSHttpAdapter#GET}. + * {@link DSHttpAdapter#afterFindAll} will be called after calling + * {@link DSHttpAdapter#GET}. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The Model. + * @param {Object} query Selection query. + * @param {Object} [opts] Configuration options. + * @param {string} [opts.params] TODO + * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @return {Promise} + */ findAll: function findAll(Model, query, opts) { var self = this; query || (query = {}); @@ -353,8 +992,17 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }, - afterFindAll: function afterFindAll() {}, - beforeGET: function beforeGET() {}, + + /** + * { function_description } + * + * @memberof DSHttpAdapter + * @instance + * @param {string} url The url for the request. + * @param {Object} config Request configuration options. + * @param {Object} [opts] Configuration options. + * @return {Promise} + */ GET: function GET(url, config, opts) { var self = this; config || (config = {}); @@ -369,7 +1017,15 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }, - afterGET: function afterGET() {}, + + /** + * @memberof DSHttpAdapter + * @instance + * @param {*} Model { description } + * @param {*} id { description } + * @param {boolean} opts { description } + * @return {string} Full path. + */ getEndpoint: function getEndpoint(Model, id, opts) { var _this = this; @@ -420,6 +1076,15 @@ return /******/ (function(modules) { // webpackBootstrap } } }, + + /** + * @memberof DSHttpAdapter + * @instance + * @param {string} method TODO + * @param {*} Model TODO + * @param {(string|number)?} id TODO + * @param {Object} opts Configuration options. + */ getPath: function getPath(method, Model, id, opts) { var self = this; opts || (opts = {}); @@ -429,7 +1094,16 @@ return /******/ (function(modules) { // webpackBootstrap } return makePath.apply(_jsData.utils, args); }, - beforeHTTP: function beforeHTTP() {}, + + /** + * Make an Http request. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} config Request configuration options. + * @param {Object} [opts] Configuration options. + * @return {Promise} + */ HTTP: function HTTP(config, opts) { var self = this; var start = new Date(); @@ -464,29 +1138,29 @@ return /******/ (function(modules) { // webpackBootstrap throw new Error('You have not configured this adapter with an http library!'); } - return resolve(self.beforeHTTP(config)).then(function (_config) { + return resolve(self.beforeHTTP(config, opts)).then(function (_config) { config = _config || config; if (hasFetch && (self.useFetch || opts.useFetch || !self.http)) { return self.fetch(config, opts).then(logResponse, logResponse); } - return self.http(config).then(logResponse, logResponse); + return self.http(config).then(logResponse, logResponse).catch(function (err) { + return self.responseError(err, config, opts); + }); }).then(function (response) { - return resolve(self.afterHTTP(config, response)).then(function (_response) { + return resolve(self.afterHTTP(config, opts, response)).then(function (_response) { return _response || response; }); }); }, - afterHTTP: function afterHTTP() {}, - queryTransform: function queryTransform(Model, params, opts) { - return params; - }, - serialize: function serialize(Model, data, opts) { - opts || (opts = {}); - if (isFunction(opts.serialize)) { - return opts.serialize(Model, data, opts); - } - return data; - }, + + /** + * Log the provided arguments at the specified leve. + * + * @memberof DSHttpAdapter + * @instance + * @param {string} level Log level. + * @param {...*} [args] Arguments to log. + */ log: function log(level) { for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { args[_key3 - 1] = arguments[_key3]; @@ -510,7 +1184,18 @@ return /******/ (function(modules) { // webpackBootstrap (_console3 = console).log.apply(_console3, [prefix].concat(args)); } }, - beforePOST: function beforePOST() {}, + + /** + * { function_description } + * + * @memberof DSHttpAdapter + * @instance + * @param {*} url { description } + * @param {*} data { description } + * @param {*} config { description } + * @param {Object} [opts] Configuration options. + * @return {Promise} + */ POST: function POST(url, data, config, opts) { var self = this; config || (config = {}); @@ -526,8 +1211,18 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }, - afterPOST: function afterPOST() {}, - beforePUT: function beforePUT() {}, + + /** + * { function_description } + * + * @memberof DSHttpAdapter + * @instance + * @param {*} url { description } + * @param {*} data { description } + * @param {*} config { description } + * @param {Object} [opts] Configuration options. + * @return {Promise} + */ PUT: function PUT(url, data, config, opts) { var self = this; config || (config = {}); @@ -543,8 +1238,77 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }, - afterPUT: function afterPUT() {}, - beforeUpdate: function beforeUpdate() {}, + + /** + * { function_description } + * + * @memberof DSHttpAdapter + * @instance + * @param {*} Model { description } + * @param {*} params { description } + * @param {*} opts { description } + * @return {*} Transformed params. + */ + queryTransform: function queryTransform(Model, params, opts) { + opts || (opts = {}); + if (isFunction(opts.queryTransform)) { + return opts.queryTransform(Model, params, opts); + } + if (isFunction(Model.queryTransform)) { + return Model.queryTransform(Model, params, opts); + } + return params; + }, + + /** + * Error handler invoked when the promise returned by {@link DSHttpAdapter#http} + * is rejected. Default implementation is to just return the error wrapped in + * a rejected Promise, aka rethrow the error. {@link DSHttpAdapter#http} is + * called by {@link DSHttpAdapter#HTTP}. + * + * @memberof DSHttpAdapter + * @instance + * @param {*} err The error that {@link DSHttpAdapter#http} rejected with. + * @param {*} config The `config` argument that was passed to {@link DSHttpAdapter#HTTP}. + * @param {*} opts The `opts` argument that was passed to {@link DSHttpAdapter#HTTP}. + * @return {Promise} + */ + responseError: function responseError(err, config, opts) { + return reject(err); + }, + + /** + * { function_description } + * + * @memberof DSHttpAdapter + * @instance + * @param {*} Model { description } + * @param {*} data { description } + * @param {*} opts { description } + * @return {*} Serialized data. + */ + serialize: function serialize(Model, data, opts) { + opts || (opts = {}); + if (isFunction(opts.serialize)) { + return opts.serialize(Model, data, opts); + } + if (isFunction(Model.serialize)) { + return Model.serialize(Model, data, opts); + } + return data; + }, + + /** + * { function_description } + * + * @memberof DSHttpAdapter + * @instance + * @param {*} Model { description } + * @param {*} id { description } + * @param {*} props { description } + * @param {Object} [opts] Configuration options. + * @return {Promise} + */ update: function update(Model, id, props, opts) { var self = this; opts = opts ? copy(opts) : {}; @@ -563,8 +1327,18 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }, - afterUpdate: function afterUpdate() {}, - beforeUpdateAll: function beforeUpdateAll() {}, + + /** + * { function_description } + * + * @memberof DSHttpAdapter + * @instance + * @param {*} Model { description } + * @param {*} props { description } + * @param {*} query { description } + * @param {Object} [opts] Configuration options. + * @return {Promise} + */ updateAll: function updateAll(Model, props, query, opts) { var self = this; query || (query = {}); @@ -576,7 +1350,7 @@ return /******/ (function(modules) { // webpackBootstrap opts.op = 'updateAll'; self.dbg(opts.op, Model, props, query, opts); return resolve(self.beforeUpdateAll(Model, props, query, opts)).then(function () { - return self.PUT(self.getPath('updateAll', Model, opts.params, opts), self.serialize(Model, props, opts), opts); + return self.PUT(self.getPath('updateAll', Model, null, opts), self.serialize(Model, props, opts), opts); }).then(function (response) { return self.deserialize(Model, response, opts); }).then(function (data) { @@ -585,15 +1359,65 @@ return /******/ (function(modules) { // webpackBootstrap }); }); }, - afterUpdateAll: function afterUpdateAll() {} + + /** + * Update multiple entities in batch. + * + * {@link DSHttpAdapter#beforeUpdateMany} will be called before calling + * {@link DSHttpAdapter#PUT}. + * {@link DSHttpAdapter#afterUpdateMany} will be called after calling + * {@link DSHttpAdapter#PUT}. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} Model The Model. + * @param {Array} models Array of property objects to send as the payload. + * @param {Object} [opts] Configuration options. + * @param {string} [opts.params] TODO + * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @return {Promise} + */ + updateMany: function updateMany(Model, models, opts) { + var self = this; + opts = opts ? copy(opts) : {}; + opts.params || (opts.params = {}); + opts.params = self.queryTransform(Model, opts.params, opts); + opts.suffix || (opts.suffix = Model.suffix); + opts.op = 'updateMany'; + self.dbg(opts.op, Model, models, opts); + return resolve(self.beforeUpdateMany(Model, models, opts)).then(function () { + return self.PUT(self.getPath('updateMany', Model, null, opts), self.serialize(Model, models, opts), opts); + }).then(function (response) { + return self.deserialize(Model, response, opts); + }).then(function (data) { + return resolve(self.afterUpdateMany(Model, models, opts, data)).then(function (_data) { + return _data || data; + }); + }); + } }); + /** + * Add an Http actions to a Model. + * + * @name DSHttpAdapter.addAction + * @method + * @param {string} name Name of the new action. + * @param {Object} [opts] Action configuration + * @param {string} [opts.adapter] + * @param {string} [opts.pathname] + * @param {Function} [opts.request] + * @param {Function} [opts.response] + * @param {Function} [opts.responseError] + * @return {Function} Decoration function, which should be passed the Model to + * decorate when invoked. + */ DSHttpAdapter.addAction = function (name, opts) { if (!name || !isString(name)) { throw new TypeError('action(name[, opts]): Expected: string, Found: ' + (typeof name === 'undefined' ? 'undefined' : _typeof(name))); } - return function (target) { - if (target[name]) { + return function (Model) { + if (Model[name]) { throw new Error('action(name[, opts]): ' + name + ' already exists on target!'); } opts.request = opts.request || function (config) { @@ -605,7 +1429,7 @@ return /******/ (function(modules) { // webpackBootstrap opts.responseError = opts.responseError || function (err) { return reject(err); }; - target[name] = function (id, _opts) { + Model[name] = function (id, _opts) { if (isObject(id)) { _opts = id; } @@ -638,31 +1462,128 @@ return /******/ (function(modules) { // webpackBootstrap return data; }).then(_opts.response || opts.response, _opts.responseError || opts.responseError); }; - return target; + return Model; }; }; + /** + * Add multiple Http actions to a Model. See {@link DSHttpAdapter.addAction} for + * action configuration options. + * + * @name DSHttpAdapter.addActions + * @method + * @param {Object.} opts Object where the key is an action name + * and the value is the configuration for the action. + * @return {Function} Decoration function, which should be passed the Model to + * decorate when invoked. + */ DSHttpAdapter.addActions = function (opts) { opts || (opts = {}); - return function (target) { - forOwn(target, function (value, key) { - DSHttpAdapter.addAction(key, value)(target); + return function (Model) { + forOwn(Model, function (value, key) { + DSHttpAdapter.addAction(key, value)(Model); }); - return target; + return Model; }; }; + /** + * Alternative to ES6 class syntax for extending `DSHttpAdapter`. + * + * __ES6__: + * ```javascript + * class MyHttpAdapter extends DSHttpAdapter { + * deserialize (Model, data, opts) { + * const data = super.deserialize(Model, data, opts) + * data.foo = 'bar' + * return data + * } + * } + * ``` + * + * __ES5__: + * ```javascript + * var instanceProps = { + * // override deserialize + * deserialize: function (Model, data, opts) { + * var Ctor = this.constructor + * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize + * // call the super deserialize + * var data = superDeserialize(Model, data, opts) + * data.foo = 'bar' + * return data + * }, + * say: function () { return 'hi' } + * } + * var classProps = { + * yell: function () { return 'HI' } + * } + * + * var MyHttpAdapter = DSHttpAdapter.extend(instanceProps, classProps) + * var adapter = new MyHttpAdapter() + * adapter.say() // "hi" + * MyHttpAdapter.yell() // "HI" + * ``` + * + * @name DSHttpAdapter.extend + * @method + * @param {Object} [instanceProps] Properties that will be added to the + * prototype of the subclass. + * @param {Object} [classProps] Properties that will be added as static + * properties to the subclass itself. + * @return {Object} Subclass of `DSHttpAdapter`. + */ DSHttpAdapter.extend = extend; + /** + * Details of the current version of the `js-data-http` module. + * + * @name DSHttpAdapter.version + * @type {Object} + * @property {string} version.full The full semver value. + * @property {number} version.major The major version number. + * @property {number} version.minor The minor version number. + * @property {number} version.patch The patch version number. + * @property {(string|boolean)} version.alpha The alpha version value, + * otherwise `false` if the current version is not alpha. + * @property {(string|boolean)} version.beta The beta version value, + * otherwise `false` if the current version is not beta. + */ DSHttpAdapter.version = { - full: '3.0.0-alpha.2', + full: '3.0.0-alpha.3', major: parseInt('3', 10), minor: parseInt('0', 10), patch: parseInt('0', 10), - alpha: true ? '2' : false, + alpha: true ? '3' : false, beta: true ? 'false' : false }; + /** + * Registered as `js-data-http` in NPM and Bower. The build of `js-data-http` + * that works on Node.js is registered in NPM as `js-data-http-node`. The build + * of `js-data-http` that does not bundle `axios` is registered in NPM and Bower + * as `js-data-fetch`. + * + * __Script tag__: + * ```javascript + * window.DSHttpAdapter + * ``` + * __CommonJS__: + * ```javascript + * var DSHttpAdapter = require('js-data-http') + * ``` + * __ES6 Modules__: + * ```javascript + * import DSHttpAdapter from 'js-data-http' + * ``` + * __AMD__: + * ```javascript + * define('myApp', ['js-data-http'], function (DSHttpAdapter) { ... }) + * ``` + * + * @module js-data-http + */ + module.exports = DSHttpAdapter; /***/ }, diff --git a/node/dist/js-data-http-node.js.map b/node/dist/js-data-http-node.js.map index 2c38488..d385253 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 6b88933e73e00efb3a56","webpack:///C:/Users/jason/Documents/GitHub/js-data-http/src/index.js","webpack:///external \"js-data\"","webpack:///external \"axios\""],"names":[],"mappings":"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","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_2__) {\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 6b88933e73e00efb3a56\n **/","/* global fetch:true Headers:true Request:true */\r\nconst axios = require('axios')\r\nimport {utils} from 'js-data'\r\nconst {\r\n _,\r\n copy,\r\n deepMixIn,\r\n extend,\r\n fillIn,\r\n forOwn,\r\n isArray,\r\n isFunction,\r\n isNumber,\r\n isObject,\r\n isSorN,\r\n isString,\r\n resolve,\r\n reject,\r\n toJson\r\n} = utils\r\n\r\nlet hasFetch = false\r\n\r\ntry {\r\n hasFetch = window && window.fetch\r\n} catch (e) {}\r\n\r\nfunction isValidString (value) {\r\n return (value != null && value !== '')\r\n}\r\nfunction join (items, separator) {\r\n separator || (separator = '')\r\n return items.filter(isValidString).join(separator)\r\n}\r\nfunction makePath (...args) {\r\n let result = join(args, '/')\r\n return result.replace(/([^:\\/]|^)\\/{2,}/g, '$1/')\r\n}\r\n\r\nfunction encode (val) {\r\n return encodeURIComponent(val)\r\n .replace(/%40/gi, '@')\r\n .replace(/%3A/gi, ':')\r\n .replace(/%24/g, '$')\r\n .replace(/%2C/gi, ',')\r\n .replace(/%20/g, '+')\r\n .replace(/%5B/gi, '[')\r\n .replace(/%5D/gi, ']')\r\n}\r\n\r\nfunction buildUrl (url, params) {\r\n if (!params) {\r\n return url\r\n }\r\n\r\n const parts = []\r\n\r\n forOwn(params, function (val, key) {\r\n if (val === null || typeof val === 'undefined') {\r\n return\r\n }\r\n if (!isArray(val)) {\r\n val = [val]\r\n }\r\n\r\n val.forEach(function (v) {\r\n if (window.toString.call(v) === '[object Date]') {\r\n v = v.toISOString()\r\n } else if (isObject(v)) {\r\n v = toJson(v)\r\n }\r\n parts.push(`${encode(key)}=${encode(v)}`)\r\n })\r\n })\r\n\r\n if (parts.length > 0) {\r\n url += (url.indexOf('?') === -1 ? '?' : '&') + parts.join('&')\r\n }\r\n\r\n return url\r\n}\r\n\r\n/**\r\n * DSHttpAdapter class.\r\n * @class DSHttpAdapter\r\n *\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.basePath='']\r\n * @param {boolean} [opts.debug=false]\r\n * @param {boolean} [opts.forceTrailingSlash=false]\r\n * @param {Object} [opts.http=axios]\r\n * @param {Object} [opts.httpConfig={}]\r\n * @param {string} [opts.suffix='']\r\n * @param {boolean} [opts.useFetch=false]\r\n */\r\nfunction DSHttpAdapter (opts) {\r\n const self = this\r\n\r\n // Default values for arguments\r\n opts || (opts = {})\r\n\r\n // Default and user-defined settings\r\n self.basePath = opts.basePath === undefined ? '' : opts.basePath\r\n self.debug = opts.debug === undefined ? false : opts.debug\r\n self.forceTrailingSlash = opts.forceTrailingSlash === undefined ? false : opts.forceTrailingSlash\r\n self.http = opts.http === undefined ? axios : opts.http\r\n self.httpConfig = opts.httpConfig === undefined ? {} : opts.httpConfig\r\n self.suffix = opts.suffix === undefined ? '' : opts.suffix\r\n self.useFetch = opts.useFetch === undefined ? false : opts.useFetch\r\n}\r\n\r\nfillIn(DSHttpAdapter.prototype, {\r\n\r\n beforeCreate () {},\r\n\r\n create (Model, props, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'create'\r\n self.dbg(opts.op, Model, props, opts)\r\n return resolve(self.beforeCreate(Model, props, opts)).then(function () {\r\n return self.POST(\r\n self.getPath('create', Model, props, opts),\r\n self.serialize(Model, props, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterCreate(Model, props, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n afterCreate () {},\r\n\r\n dbg (...args) {\r\n this.log('debug', ...args)\r\n },\r\n\r\n beforeDEL () {},\r\n\r\n DEL (url, config, opts) {\r\n const self = this\r\n config || (config = {})\r\n config.url = url || config.url\r\n config.method = config.method || 'delete'\r\n return resolve(self.beforeDEL(url, config, opts)).then(function (_config) {\r\n config = _config || config\r\n return self.HTTP(config, opts)\r\n }).then(function (response) {\r\n return resolve(self.afterDEL(url, config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n afterDEL () {},\r\n\r\n deserialize (Model, data, opts) {\r\n opts || (opts = {})\r\n if (isFunction(opts.deserialize)) {\r\n return opts.deserialize(Model, data, opts)\r\n }\r\n if (isFunction(Model.deserialize)) {\r\n return Model.deserialize(Model, data, opts)\r\n }\r\n if (opts.raw) {\r\n return data\r\n }\r\n return data ? ('data' in data ? data.data : data) : data\r\n },\r\n\r\n beforeDestroy () {},\r\n\r\n destroy (Model, id, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'destroy'\r\n self.dbg(opts.op, Model, id, opts)\r\n return resolve(self.beforeDestroy(Model, id, opts)).then(function () {\r\n return self.DEL(\r\n self.getPath('destroy', Model, id, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterDestroy(Model, id, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n afterDestroy () {},\r\n\r\n beforeDestroyAll () {},\r\n\r\n destroyAll (Model, query, opts) {\r\n const self = this\r\n query || (query = {})\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n deepMixIn(opts.params, query)\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'destroy'\r\n self.dbg(opts.op, Model, query, opts)\r\n return resolve(self.beforeDestroyAll(Model, query, opts)).then(function () {\r\n return self.DEL(\r\n self.getPath('destroyAll', Model, opts.params, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterDestroyAll(Model, query, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n afterDestroyAll () {},\r\n\r\n error (...args) {\r\n if (console) {\r\n console[typeof console.error === 'function' ? 'error' : 'log'](...args)\r\n }\r\n },\r\n\r\n fetch (config, opts) {\r\n const requestConfig = {\r\n method: config.method,\r\n // turn the plain headers object into the Fetch Headers object\r\n headers: new Headers(config.headers)\r\n }\r\n\r\n if (config.data) {\r\n requestConfig.body = toJson(config.data)\r\n }\r\n\r\n return fetch(new Request(buildUrl(config.url, config.params), requestConfig)).then(function (response) {\r\n response.config = {\r\n method: config.method,\r\n url: config.url\r\n }\r\n return response.json().then(function (data) {\r\n response.data = data\r\n return response\r\n })\r\n })\r\n },\r\n\r\n beforeFind () {},\r\n\r\n find (Model, id, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'find'\r\n self.dbg(opts.op, Model, id, opts)\r\n return resolve(self.beforeFind(Model, id, opts)).then(function () {\r\n return self.GET(\r\n self.getPath('find', Model, id, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterFind(Model, id, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n afterFind () {},\r\n\r\n beforeFindAll () {},\r\n\r\n findAll (Model, query, opts) {\r\n const self = this\r\n query || (query = {})\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'findAll'\r\n self.dbg(opts.op, Model, query, opts)\r\n deepMixIn(opts.params, query)\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n return resolve(self.beforeFindAll(Model, query, opts)).then(function () {\r\n return self.GET(\r\n self.getPath('findAll', Model, opts.params, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterFindAll(Model, query, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n afterFindAll () {},\r\n\r\n beforeGET () {},\r\n\r\n GET (url, config, opts) {\r\n const self = this\r\n config || (config = {})\r\n config.url = url || config.url\r\n config.method = config.method || 'get'\r\n return resolve(self.beforeGET(url, config, opts)).then(function (_config) {\r\n config = _config || config\r\n return self.HTTP(config, opts)\r\n }).then(function (response) {\r\n return resolve(self.afterGET(url, config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n afterGET () {},\r\n\r\n getEndpoint (Model, id, opts) {\r\n opts || (opts = {})\r\n opts.params || (opts.params = {})\r\n\r\n let item\r\n const parentKey = Model.parentKey\r\n const endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : Model.endpoint\r\n let parentField = Model.parentField\r\n const parentDef = Model.parent ? Model.getResource(Model.parent) : undefined\r\n let parentId = opts.params[parentKey]\r\n\r\n if (parentId === false || !parentKey || !parentDef) {\r\n if (parentId === false) {\r\n delete opts.params[parentKey]\r\n }\r\n return endpoint\r\n } else {\r\n delete opts.params[parentKey]\r\n\r\n if (isString(id) || isNumber(id)) {\r\n item = Model.get(id)\r\n } else if (isObject(id)) {\r\n item = id\r\n }\r\n\r\n if (item) {\r\n parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null)\r\n }\r\n\r\n if (parentId) {\r\n delete opts.endpoint\r\n const _opts = {}\r\n forOwn(opts, function (value, key) {\r\n _opts[key] = value\r\n })\r\n _(_opts, parentDef)\r\n return makePath(this.getEndpoint(parentDef, parentId, _opts, parentId, endpoint))\r\n } else {\r\n return endpoint\r\n }\r\n }\r\n },\r\n\r\n getPath (method, Model, id, opts) {\r\n const self = this\r\n opts || (opts = {})\r\n const args = [\r\n opts.basePath === undefined ? (Model.basePath === undefined ? self.basePath : Model.basePath) : opts.basePath,\r\n self.getEndpoint(Model, (isString(id) || isNumber(id) || method === 'create') ? id : null, opts)\r\n ]\r\n if (method === 'find' || method === 'update' || method === 'destroy') {\r\n args.push(id)\r\n }\r\n return makePath.apply(utils, args)\r\n },\r\n\r\n beforeHTTP () {},\r\n\r\n HTTP (config, opts) {\r\n const self = this\r\n const start = new Date()\r\n opts || (opts = {})\r\n config = copy(config)\r\n config = deepMixIn(config, self.httpConfig)\r\n if (self.forceTrailingSlash && config.url[config.url.length - 1] !== '/') {\r\n config.url += '/'\r\n }\r\n config.method = config.method.toUpperCase()\r\n const suffix = config.suffix || opts.suffix || self.suffix\r\n if (suffix && config.url.substr(config.url.length - suffix.length) !== suffix) {\r\n config.url += suffix\r\n }\r\n\r\n function logResponse (data) {\r\n const str = `${start.toUTCString()} - ${config.method.toUpperCase()} ${config.url} - ${data.status} ${(new Date().getTime() - start.getTime())}ms`\r\n if (data.status >= 200 && data.status < 300) {\r\n if (self.log) {\r\n self.dbg('debug', str, data)\r\n }\r\n return data\r\n } else {\r\n if (self.error) {\r\n self.error(`'FAILED: ${str}`, data)\r\n }\r\n return reject(data)\r\n }\r\n }\r\n\r\n if (!self.http) {\r\n throw new Error('You have not configured this adapter with an http library!')\r\n }\r\n\r\n return resolve(self.beforeHTTP(config)).then(function (_config) {\r\n config = _config || config\r\n if (hasFetch && (self.useFetch || opts.useFetch || !self.http)) {\r\n return self.fetch(config, opts).then(logResponse, logResponse)\r\n }\r\n return self.http(config).then(logResponse, logResponse)\r\n }).then(function (response) {\r\n return resolve(self.afterHTTP(config, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n afterHTTP () {},\r\n\r\n queryTransform (Model, params, opts) {\r\n return params\r\n },\r\n\r\n serialize (Model, data, opts) {\r\n opts || (opts = {})\r\n if (isFunction(opts.serialize)) {\r\n return opts.serialize(Model, data, opts)\r\n }\r\n return data\r\n },\r\n\r\n log (level, ...args) {\r\n if (level && !args.length) {\r\n args.push(level)\r\n level = 'debug'\r\n }\r\n if (level === 'debug' && !this.debug) {\r\n return\r\n }\r\n const prefix = `${level.toUpperCase()}: (${this.name})`\r\n if (console[level]) {\r\n console[level](prefix, ...args)\r\n } else {\r\n console.log(prefix, ...args)\r\n }\r\n },\r\n\r\n beforePOST () {},\r\n\r\n POST (url, data, config, opts) {\r\n const self = this\r\n config || (config = {})\r\n config.url = url || config.url\r\n config.data = data || config.data\r\n config.method = config.method || 'post'\r\n return resolve(self.beforePOST(url, data, config, opts)).then(function (_config) {\r\n config = _config || config\r\n return self.HTTP(config, opts)\r\n }).then(function (response) {\r\n return resolve(self.afterPOST(url, data, config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n afterPOST () {},\r\n\r\n beforePUT () {},\r\n\r\n PUT (url, data, config, opts) {\r\n const self = this\r\n config || (config = {})\r\n config.url = url || config.url\r\n config.data = data || config.data\r\n config.method = config.method || 'put'\r\n return resolve(self.beforePUT(url, data, config, opts)).then(function (_config) {\r\n config = _config || config\r\n return self.HTTP(config, opts)\r\n }).then(function (response) {\r\n return resolve(self.afterPUT(url, data, config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n afterPUT () {},\r\n\r\n beforeUpdate () {},\r\n\r\n update (Model, id, props, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'update'\r\n self.dbg(opts.op, Model, id, props, opts)\r\n return resolve(self.beforeUpdate(Model, id, props, opts)).then(function () {\r\n return self.PUT(\r\n self.getPath('update', Model, id, opts),\r\n self.serialize(Model, props, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterUpdate(Model, id, props, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n afterUpdate () {},\r\n\r\n beforeUpdateAll () {},\r\n\r\n updateAll (Model, props, query, opts) {\r\n const self = this\r\n query || (query = {})\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n deepMixIn(opts.params, query)\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'updateAll'\r\n self.dbg(opts.op, Model, props, query, opts)\r\n return resolve(self.beforeUpdateAll(Model, props, query, opts)).then(function () {\r\n return self.PUT(\r\n self.getPath('updateAll', Model, opts.params, opts),\r\n self.serialize(Model, props, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterUpdateAll(Model, props, query, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n afterUpdateAll () {}\r\n})\r\n\r\nDSHttpAdapter.addAction = function (name, opts) {\r\n if (!name || !isString(name)) {\r\n throw new TypeError('action(name[, opts]): Expected: string, Found: ' + typeof name)\r\n }\r\n return function (target) {\r\n if (target[name]) {\r\n throw new Error('action(name[, opts]): ' + name + ' already exists on target!')\r\n }\r\n opts.request = opts.request || function (config) { return config }\r\n opts.response = opts.response || function (response) { return response }\r\n opts.responseError = opts.responseError || function (err) { return reject(err) }\r\n target[name] = function (id, _opts) {\r\n if (isObject(id)) {\r\n _opts = id\r\n }\r\n _opts = _opts || {}\r\n let adapter = this.getAdapter(opts.adapter || this.defaultAdapter || 'http')\r\n let config = {}\r\n fillIn(config, opts)\r\n if (!_opts.hasOwnProperty('endpoint') && config.endpoint) {\r\n _opts.endpoint = config.endpoint\r\n }\r\n if (typeof _opts.getEndpoint === 'function') {\r\n config.url = _opts.getEndpoint(this, _opts)\r\n } else {\r\n let args = [\r\n _opts.basePath || this.basePath || adapter.defaults.basePath,\r\n adapter.getEndpoint(this, isSorN(id) ? id : null, _opts)\r\n ]\r\n if (isSorN(id)) {\r\n args.push(id)\r\n }\r\n args.push(opts.pathname || name)\r\n config.url = makePath.apply(null, args)\r\n }\r\n config.method = config.method || 'GET'\r\n config.modelName = this.name\r\n deepMixIn(config)(_opts)\r\n return resolve(config)\r\n .then(_opts.request || opts.request)\r\n .then(function (config) { return adapter.HTTP(config) })\r\n .then(function (data) {\r\n if (data && data.config) {\r\n data.config.modelName = this.name\r\n }\r\n return data\r\n })\r\n .then(_opts.response || opts.response, _opts.responseError || opts.responseError)\r\n }\r\n return target\r\n }\r\n}\r\n\r\nDSHttpAdapter.addActions = function (opts) {\r\n opts || (opts = {})\r\n return function (target) {\r\n forOwn(target, function (value, key) {\r\n DSHttpAdapter.addAction(key, value)(target)\r\n })\r\n return target\r\n }\r\n}\r\n\r\nDSHttpAdapter.extend = extend\r\n\r\nDSHttpAdapter.version = {\r\n full: '<%= pkg.version %>',\r\n major: parseInt('<%= major %>', 10),\r\n minor: parseInt('<%= minor %>', 10),\r\n patch: parseInt('<%= patch %>', 10),\r\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\r\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\r\n}\r\n\r\nmodule.exports = DSHttpAdapter\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/jason/Documents/GitHub/js-data-http/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 **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"axios\"\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 8dcb628c6a044555efd7","webpack:///C:/Users/jason/Documents/GitHub/js-data-http/src/index.js","webpack:///external \"js-data\"","webpack:///external \"axios\""],"names":[],"mappings":"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","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_2__) {\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 8dcb628c6a044555efd7\n **/","/* global fetch:true Headers:true Request:true */\r\nconst axios = require('axios')\r\nimport {utils} from 'js-data'\r\nconst {\r\n _,\r\n copy,\r\n deepMixIn,\r\n extend,\r\n fillIn,\r\n forOwn,\r\n isArray,\r\n isFunction,\r\n isNumber,\r\n isObject,\r\n isSorN,\r\n isString,\r\n resolve,\r\n reject,\r\n toJson\r\n} = utils\r\n\r\nlet hasFetch = false\r\n\r\ntry {\r\n hasFetch = window && window.fetch\r\n} catch (e) {}\r\n\r\nfunction isValidString (value) {\r\n return (value != null && value !== '')\r\n}\r\nfunction join (items, separator) {\r\n separator || (separator = '')\r\n return items.filter(isValidString).join(separator)\r\n}\r\nfunction makePath (...args) {\r\n let result = join(args, '/')\r\n return result.replace(/([^:\\/]|^)\\/{2,}/g, '$1/')\r\n}\r\n\r\nfunction encode (val) {\r\n return encodeURIComponent(val)\r\n .replace(/%40/gi, '@')\r\n .replace(/%3A/gi, ':')\r\n .replace(/%24/g, '$')\r\n .replace(/%2C/gi, ',')\r\n .replace(/%20/g, '+')\r\n .replace(/%5B/gi, '[')\r\n .replace(/%5D/gi, ']')\r\n}\r\n\r\nfunction buildUrl (url, params) {\r\n if (!params) {\r\n return url\r\n }\r\n\r\n const parts = []\r\n\r\n forOwn(params, function (val, key) {\r\n if (val === null || typeof val === 'undefined') {\r\n return\r\n }\r\n if (!isArray(val)) {\r\n val = [val]\r\n }\r\n\r\n val.forEach(function (v) {\r\n if (window.toString.call(v) === '[object Date]') {\r\n v = v.toISOString()\r\n } else if (isObject(v)) {\r\n v = toJson(v)\r\n }\r\n parts.push(`${encode(key)}=${encode(v)}`)\r\n })\r\n })\r\n\r\n if (parts.length > 0) {\r\n url += (url.indexOf('?') === -1 ? '?' : '&') + parts.join('&')\r\n }\r\n\r\n return url\r\n}\r\n\r\n/**\r\n * DSHttpAdapter class.\r\n * @class DSHttpAdapter\r\n * @alias DSHttpAdapter\r\n *\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.basePath='']\r\n * @param {boolean} [opts.debug=false]\r\n * @param {boolean} [opts.forceTrailingSlash=false]\r\n * @param {Object} [opts.http=axios]\r\n * @param {Object} [opts.httpConfig={}]\r\n * @param {string} [opts.suffix='']\r\n * @param {boolean} [opts.useFetch=false]\r\n */\r\nfunction DSHttpAdapter (opts) {\r\n const self = this\r\n\r\n // Default values for arguments\r\n opts || (opts = {})\r\n\r\n // Default and user-defined settings\r\n /**\r\n * @name DSHttpAdapter#basePath\r\n * @type {string}\r\n */\r\n self.basePath = opts.basePath === undefined ? '' : opts.basePath\r\n\r\n /**\r\n * @name DSHttpAdapter#debug\r\n * @type {boolean}\r\n * @default false\r\n */\r\n self.debug = opts.debug === undefined ? false : opts.debug\r\n\r\n /**\r\n * @name DSHttpAdapter#forceTrailingSlash\r\n * @type {boolean}\r\n * @default false\r\n */\r\n self.forceTrailingSlash = opts.forceTrailingSlash === undefined ? false : opts.forceTrailingSlash\r\n\r\n /**\r\n * @name DSHttpAdapter#http\r\n * @type {Function}\r\n */\r\n self.http = opts.http === undefined ? axios : opts.http\r\n\r\n /**\r\n * @name DSHttpAdapter#httpConfig\r\n * @type {Object}\r\n */\r\n self.httpConfig = opts.httpConfig === undefined ? {} : opts.httpConfig\r\n\r\n /**\r\n * @name DSHttpAdapter#suffix\r\n * @type {string}\r\n */\r\n self.suffix = opts.suffix === undefined ? '' : opts.suffix\r\n\r\n /**\r\n * @name DSHttpAdapter#useFetch\r\n * @type {boolean}\r\n * @default false\r\n */\r\n self.useFetch = opts.useFetch === undefined ? false : opts.useFetch\r\n}\r\n\r\nfillIn(DSHttpAdapter.prototype, {\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#create}. If this method\r\n * returns a promise then {@link DSHttpAdapter#create} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#create}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#create}.\r\n * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#create}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#create}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#create} will return.\r\n */\r\n afterCreate () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#createMany}. If this method\r\n * returns a promise then {@link DSHttpAdapter#createMany} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#createMany}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#createMany}.\r\n * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#createMany}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#createMany}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#createMany} will return.\r\n */\r\n afterCreateMany () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#DEL}. If this method\r\n * returns a promise then {@link DSHttpAdapter#DEL} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#DEL}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {string} url The `url` argument passed to {@link DSHttpAdapter#DEL}.\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#DEL}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#DEL}.\r\n * @param {Object} response The `response` value that {@link DSHttpAdapter#DEL} will return.\r\n */\r\n afterDEL () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#destroy}. If this method\r\n * returns a promise then {@link DSHttpAdapter#destroy} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#destroy}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroy}.\r\n * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#destroy}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroy}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#destroy} will return.\r\n */\r\n afterDestroy () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#destroyAll}. If this method\r\n * returns a promise then {@link DSHttpAdapter#destroyAll} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#destroyAll}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroyAll}.\r\n * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#destroyAll}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroyAll}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#destroyAll} will return.\r\n */\r\n afterDestroyAll () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#find}. If this method\r\n * returns a promise then {@link DSHttpAdapter#find} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#find}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#find}.\r\n * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#find}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#find}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#find} will return.\r\n */\r\n afterFind () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#findAll}. If this method\r\n * returns a promise then {@link DSHttpAdapter#findAll} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#findAll}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#findAll}.\r\n * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#findAll}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#findAll}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#findAll} will return.\r\n */\r\n afterFindAll () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#GET}. If this method\r\n * returns a promise then {@link DSHttpAdapter#GET} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#GET}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {string} url The `url` argument passed to {@link DSHttpAdapter#GET}.\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#GET}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#GET}.\r\n * @param {Object} response The `response` value that {@link DSHttpAdapter#GET} will return.\r\n */\r\n afterGET () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#HTTP}. If this method\r\n * returns a promise then {@link DSHttpAdapter#HTTP} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#HTTP}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#HTTP}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#HTTP}.\r\n * @param {Object} response The `response` value that {@link DSHttpAdapter#HTTP} will return.\r\n */\r\n afterHTTP () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#POST}. If this method\r\n * returns a promise then {@link DSHttpAdapter#POST} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#POST}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {string} url The `url` argument passed to {@link DSHttpAdapter#POST}.\r\n * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#POST}.\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#POST}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#POST}.\r\n * @param {Object} response The `response` value that {@link DSHttpAdapter#POST} will return.\r\n */\r\n afterPOST () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#PUT}. If this method\r\n * returns a promise then {@link DSHttpAdapter#PUT} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#PUT}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {string} url The `url` argument passed to {@link DSHttpAdapter#PUT}.\r\n * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#PUT}.\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#PUT}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#PUT}.\r\n * @param {Object} response The `response` value that {@link DSHttpAdapter#PUT} will return.\r\n */\r\n afterPUT () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#update}. If this method\r\n * returns a promise then {@link DSHttpAdapter#update} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#update}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#update}.\r\n * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#update}.\r\n * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#update}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#update}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#update} will return.\r\n */\r\n afterUpdate () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#updateAll}. If this method\r\n * returns a promise then {@link DSHttpAdapter#updateAll} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#updateAll}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateAll}.\r\n * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#updateAll}.\r\n * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#updateAll}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateAll}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#updateAll} will return.\r\n */\r\n afterUpdateAll () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#updateMany}. If this method\r\n * returns a promise then {@link DSHttpAdapter#updateMany} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#updateMany}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateMany}.\r\n * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#updateMany}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateMany}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#updateMany} will return.\r\n */\r\n afterUpdateMany () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#create}. If this method\r\n * returns a promise then {@link DSHttpAdapter#create} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#create}.\r\n * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#create}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#create}.\r\n */\r\n beforeCreate () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#createMany}. If this method\r\n * returns a promise then {@link DSHttpAdapter#createMany} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#createMany}.\r\n * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#createMany}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#createMany}.\r\n */\r\n beforeCreateMany () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#DEL}. If this method\r\n * returns a promise then {@link DSHttpAdapter#DEL} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#create}\r\n * will resolve with that same value, then the `config` argument passed to\r\n * {@link DSHttpAdapter#DEL} will be replaced by the value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#DEL}.\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#DEL}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#DEL}.\r\n */\r\n beforeDEL () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#destroy}. If this method\r\n * returns a promise then {@link DSHttpAdapter#destroy} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroy}.\r\n * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#destroy}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroy}.\r\n */\r\n beforeDestroy () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#destroyAll}. If this method\r\n * returns a promise then {@link DSHttpAdapter#destroyAll} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroyAll}.\r\n * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#destroyAll}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroyAll}.\r\n */\r\n beforeDestroyAll () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#find}. If this method\r\n * returns a promise then {@link DSHttpAdapter#find} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#find}.\r\n * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#find}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#find}.\r\n */\r\n beforeFind () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#findAll}. If this method\r\n * returns a promise then {@link DSHttpAdapter#findAll} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#findAll}.\r\n * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#findAll}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#findAll}.\r\n */\r\n beforeFindAll () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#GET}. If this method\r\n * returns a promise then {@link DSHttpAdapter#GET} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#create}\r\n * will resolve with that same value, then the `config` argument passed to\r\n * {@link DSHttpAdapter#GET} will be replaced by the value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#GET}.\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#GET}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#GET}.\r\n */\r\n beforeGET () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#HTTP}. If this method\r\n * returns a promise then {@link DSHttpAdapter#HTTP} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#create}\r\n * will resolve with that same value, then the `config` argument passed to\r\n * {@link DSHttpAdapter#HTTP} will be replaced by the value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#HTTP}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#HTTP}.\r\n */\r\n beforeHTTP () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#POST}. If this method\r\n * returns a promise then {@link DSHttpAdapter#POST} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#create}\r\n * will resolve with that same value, then the `config` argument passed to\r\n * {@link DSHttpAdapter#POST} will be replaced by the value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#POST}.\r\n * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#POST}.\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#POST}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#POST}.\r\n */\r\n beforePOST () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#PUT}. If this method\r\n * returns a promise then {@link DSHttpAdapter#PUT} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#create}\r\n * will resolve with that same value, then the `config` argument passed to\r\n * {@link DSHttpAdapter#PUT} will be replaced by the value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#PUT}.\r\n * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#PUT}.\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#PUT}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#PUT}.\r\n */\r\n beforePUT () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#update}. If this method\r\n * returns a promise then {@link DSHttpAdapter#update} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#update}.\r\n * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#update}.\r\n * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#update}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#update}.\r\n */\r\n beforeUpdate () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#updateAll}. If this method\r\n * returns a promise then {@link DSHttpAdapter#updateAll} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateAll}.\r\n * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#updateAll}.\r\n * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#updateAll}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateAll}.\r\n */\r\n beforeUpdateAll () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#updateMany}. If this method\r\n * returns a promise then {@link DSHttpAdapter#updateMany} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateMany}.\r\n * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#updateMany}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateMany}.\r\n */\r\n beforeUpdateMany () {},\r\n\r\n /**\r\n * Create a new the entity from the provided `props`.\r\n *\r\n * {@link DSHttpAdapter#beforeCreate} will be called before calling\r\n * {@link DSHttpAdapter#POST}.\r\n * {@link DSHttpAdapter#afterCreate} will be called after calling\r\n * {@link DSHttpAdapter#POST}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The Model.\r\n * @param {Object} props Properties to send as the payload.\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.params] TODO\r\n * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO\r\n * @return {Promise}\r\n */\r\n create (Model, props, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'create'\r\n self.dbg(opts.op, Model, props, opts)\r\n return resolve(self.beforeCreate(Model, props, opts)).then(function () {\r\n return self.POST(\r\n self.getPath('create', Model, props, opts),\r\n self.serialize(Model, props, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterCreate(Model, props, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Create multiple new entities in batch.\r\n *\r\n * {@link DSHttpAdapter#beforeCreateMany} will be called before calling\r\n * {@link DSHttpAdapter#POST}.\r\n * {@link DSHttpAdapter#afterCreateMany} will be called after calling\r\n * {@link DSHttpAdapter#POST}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The Model.\r\n * @param {Array} models Array of property objects to send as the payload.\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.params] TODO\r\n * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO\r\n * @return {Promise}\r\n */\r\n createMany (Model, models, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'createMany'\r\n self.dbg(opts.op, Model, models, opts)\r\n return resolve(self.beforeCreateMany(Model, models, opts)).then(function () {\r\n return self.POST(\r\n self.getPath('createMany', Model, null, opts),\r\n self.serialize(Model, models, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterCreateMany(Model, models, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Call {@link DSHttpAdapter#log} at the \"debug\" level.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {...*} [args] Args passed to {@link DSHttpAdapter#log}.\r\n */\r\n dbg (...args) {\r\n this.log('debug', ...args)\r\n },\r\n\r\n /**\r\n * Make an Http request to `url` according to the configuration in `config`.\r\n *\r\n * {@link DSHttpAdapter#beforeDEL} will be called before calling\r\n * {@link DSHttpAdapter#HTTP}.\r\n * {@link DSHttpAdapter#afterDEL} will be called after calling\r\n * {@link DSHttpAdapter#HTTP}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {string} url Url for the request.\r\n * @param {Object} [config] Http configuration that will be passed to\r\n * {@link DSHttpAdapter#HTTP}.\r\n * @param {Object} [opts] Configuration options.\r\n * @return {Promise}\r\n */\r\n DEL (url, config, opts) {\r\n const self = this\r\n config || (config = {})\r\n config.url = url || config.url\r\n config.method = config.method || 'delete'\r\n return resolve(self.beforeDEL(url, config, opts)).then(function (_config) {\r\n config = _config || config\r\n return self.HTTP(config, opts)\r\n }).then(function (response) {\r\n return resolve(self.afterDEL(url, config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Transform the server response object into the payload that will be returned\r\n * to JSData.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The Model used for the operation.\r\n * @param {Object} response Response object from {@link DSHttpAdapter#HTTP}.\r\n * @param {Object} opts Configuration options.\r\n * @return {(Object|Array)} Deserialized data.\r\n */\r\n deserialize (Model, response, opts) {\r\n opts || (opts = {})\r\n if (isFunction(opts.deserialize)) {\r\n return opts.deserialize(Model, response, opts)\r\n }\r\n if (isFunction(Model.deserialize)) {\r\n return Model.deserialize(Model, response, opts)\r\n }\r\n if (opts.raw) {\r\n return response\r\n }\r\n return response ? ('data' in response ? response.data : response) : response\r\n },\r\n\r\n /**\r\n * Destroy the entity with the given primary key.\r\n *\r\n * {@link DSHttpAdapter#beforeDestroy} will be called before calling\r\n * {@link DSHttpAdapter#DEL}.\r\n * {@link DSHttpAdapter#afterDestroy} will be called after calling\r\n * {@link DSHttpAdapter#DEL}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The Model.\r\n * @param {(string|number)} id Primary key of the entity to destroy.\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.params] TODO\r\n * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO\r\n * @return {Promise}\r\n */\r\n destroy (Model, id, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'destroy'\r\n self.dbg(opts.op, Model, id, opts)\r\n return resolve(self.beforeDestroy(Model, id, opts)).then(function () {\r\n return self.DEL(\r\n self.getPath('destroy', Model, id, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterDestroy(Model, id, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Destroy the entities that match the selection `query`.\r\n *\r\n * {@link DSHttpAdapter#beforeDestroyAll} will be called before calling\r\n * {@link DSHttpAdapter#DEL}.\r\n * {@link DSHttpAdapter#afterDestroyAll} will be called after calling\r\n * {@link DSHttpAdapter#DEL}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The Model.\r\n * @param {Object} query Selection query.\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.params] TODO\r\n * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO\r\n * @return {Promise}\r\n */\r\n destroyAll (Model, query, opts) {\r\n const self = this\r\n query || (query = {})\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n deepMixIn(opts.params, query)\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'destroyAll'\r\n self.dbg(opts.op, Model, query, opts)\r\n return resolve(self.beforeDestroyAll(Model, query, opts)).then(function () {\r\n return self.DEL(\r\n self.getPath('destroyAll', Model, null, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterDestroyAll(Model, query, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Log an error.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {...*} [args] Arguments to log.\r\n */\r\n error (...args) {\r\n if (console) {\r\n console[typeof console.error === 'function' ? 'error' : 'log'](...args)\r\n }\r\n },\r\n\r\n /**\r\n * Make an Http request using `window.fetch`.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} config Request configuration.\r\n * @param {Object} config.data Payload for the request.\r\n * @param {string} config.method Http method for the request.\r\n * @param {Object} config.headers Headers for the request.\r\n * @param {Object} config.params Querystring for the request.\r\n * @param {string} config.url Url for the request.\r\n * @param {Object} [opts] Configuration options.\r\n */\r\n fetch (config, opts) {\r\n const requestConfig = {\r\n method: config.method,\r\n // turn the plain headers object into the Fetch Headers object\r\n headers: new Headers(config.headers)\r\n }\r\n\r\n if (config.data) {\r\n requestConfig.body = toJson(config.data)\r\n }\r\n\r\n return fetch(new Request(buildUrl(config.url, config.params), requestConfig)).then(function (response) {\r\n response.config = {\r\n method: config.method,\r\n url: config.url\r\n }\r\n return response.json().then(function (data) {\r\n response.data = data\r\n return response\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Retrieve the entity with the given primary key.\r\n *\r\n * {@link DSHttpAdapter#beforeFind} will be called before calling\r\n * {@link DSHttpAdapter#GET}.\r\n * {@link DSHttpAdapter#afterFind} will be called after calling\r\n * {@link DSHttpAdapter#GET}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The Model.\r\n * @param {(string|number)} id Primary key of the entity to retrieve.\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.params] TODO\r\n * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO\r\n * @return {Promise}\r\n */\r\n find (Model, id, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'find'\r\n self.dbg(opts.op, Model, id, opts)\r\n return resolve(self.beforeFind(Model, id, opts)).then(function () {\r\n return self.GET(\r\n self.getPath('find', Model, id, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterFind(Model, id, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Retrieve the entities that match the selection `query`.\r\n *\r\n * {@link DSHttpAdapter#beforeFindAll} will be called before calling\r\n * {@link DSHttpAdapter#GET}.\r\n * {@link DSHttpAdapter#afterFindAll} will be called after calling\r\n * {@link DSHttpAdapter#GET}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The Model.\r\n * @param {Object} query Selection query.\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.params] TODO\r\n * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO\r\n * @return {Promise}\r\n */\r\n findAll (Model, query, opts) {\r\n const self = this\r\n query || (query = {})\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'findAll'\r\n self.dbg(opts.op, Model, query, opts)\r\n deepMixIn(opts.params, query)\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n return resolve(self.beforeFindAll(Model, query, opts)).then(function () {\r\n return self.GET(\r\n self.getPath('findAll', Model, opts.params, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterFindAll(Model, query, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * { function_description }\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {string} url The url for the request.\r\n * @param {Object} config Request configuration options.\r\n * @param {Object} [opts] Configuration options.\r\n * @return {Promise}\r\n */\r\n GET (url, config, opts) {\r\n const self = this\r\n config || (config = {})\r\n config.url = url || config.url\r\n config.method = config.method || 'get'\r\n return resolve(self.beforeGET(url, config, opts)).then(function (_config) {\r\n config = _config || config\r\n return self.HTTP(config, opts)\r\n }).then(function (response) {\r\n return resolve(self.afterGET(url, config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {*} Model { description }\r\n * @param {*} id { description }\r\n * @param {boolean} opts { description }\r\n * @return {string} Full path.\r\n */\r\n getEndpoint (Model, id, opts) {\r\n opts || (opts = {})\r\n opts.params || (opts.params = {})\r\n\r\n let item\r\n const parentKey = Model.parentKey\r\n const endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : Model.endpoint\r\n let parentField = Model.parentField\r\n const parentDef = Model.parent ? Model.getResource(Model.parent) : undefined\r\n let parentId = opts.params[parentKey]\r\n\r\n if (parentId === false || !parentKey || !parentDef) {\r\n if (parentId === false) {\r\n delete opts.params[parentKey]\r\n }\r\n return endpoint\r\n } else {\r\n delete opts.params[parentKey]\r\n\r\n if (isString(id) || isNumber(id)) {\r\n item = Model.get(id)\r\n } else if (isObject(id)) {\r\n item = id\r\n }\r\n\r\n if (item) {\r\n parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null)\r\n }\r\n\r\n if (parentId) {\r\n delete opts.endpoint\r\n const _opts = {}\r\n forOwn(opts, function (value, key) {\r\n _opts[key] = value\r\n })\r\n _(_opts, parentDef)\r\n return makePath(this.getEndpoint(parentDef, parentId, _opts, parentId, endpoint))\r\n } else {\r\n return endpoint\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {string} method TODO\r\n * @param {*} Model TODO\r\n * @param {(string|number)?} id TODO\r\n * @param {Object} opts Configuration options.\r\n */\r\n getPath (method, Model, id, opts) {\r\n const self = this\r\n opts || (opts = {})\r\n const args = [\r\n opts.basePath === undefined ? (Model.basePath === undefined ? self.basePath : Model.basePath) : opts.basePath,\r\n self.getEndpoint(Model, (isString(id) || isNumber(id) || method === 'create') ? id : null, opts)\r\n ]\r\n if (method === 'find' || method === 'update' || method === 'destroy') {\r\n args.push(id)\r\n }\r\n return makePath.apply(utils, args)\r\n },\r\n\r\n /**\r\n * Make an Http request.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} config Request configuration options.\r\n * @param {Object} [opts] Configuration options.\r\n * @return {Promise}\r\n */\r\n HTTP (config, opts) {\r\n const self = this\r\n const start = new Date()\r\n opts || (opts = {})\r\n config = copy(config)\r\n config = deepMixIn(config, self.httpConfig)\r\n if (self.forceTrailingSlash && config.url[config.url.length - 1] !== '/') {\r\n config.url += '/'\r\n }\r\n config.method = config.method.toUpperCase()\r\n const suffix = config.suffix || opts.suffix || self.suffix\r\n if (suffix && config.url.substr(config.url.length - suffix.length) !== suffix) {\r\n config.url += suffix\r\n }\r\n\r\n function logResponse (data) {\r\n const str = `${start.toUTCString()} - ${config.method.toUpperCase()} ${config.url} - ${data.status} ${(new Date().getTime() - start.getTime())}ms`\r\n if (data.status >= 200 && data.status < 300) {\r\n if (self.log) {\r\n self.dbg('debug', str, data)\r\n }\r\n return data\r\n } else {\r\n if (self.error) {\r\n self.error(`'FAILED: ${str}`, data)\r\n }\r\n return reject(data)\r\n }\r\n }\r\n\r\n if (!self.http) {\r\n throw new Error('You have not configured this adapter with an http library!')\r\n }\r\n\r\n return resolve(self.beforeHTTP(config, opts)).then(function (_config) {\r\n config = _config || config\r\n if (hasFetch && (self.useFetch || opts.useFetch || !self.http)) {\r\n return self.fetch(config, opts).then(logResponse, logResponse)\r\n }\r\n return self.http(config).then(logResponse, logResponse).catch(function (err) {\r\n return self.responseError(err, config, opts)\r\n })\r\n }).then(function (response) {\r\n return resolve(self.afterHTTP(config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Log the provided arguments at the specified leve.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {string} level Log level.\r\n * @param {...*} [args] Arguments to log.\r\n */\r\n log (level, ...args) {\r\n if (level && !args.length) {\r\n args.push(level)\r\n level = 'debug'\r\n }\r\n if (level === 'debug' && !this.debug) {\r\n return\r\n }\r\n const prefix = `${level.toUpperCase()}: (${this.name})`\r\n if (console[level]) {\r\n console[level](prefix, ...args)\r\n } else {\r\n console.log(prefix, ...args)\r\n }\r\n },\r\n\r\n /**\r\n * { function_description }\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {*} url { description }\r\n * @param {*} data { description }\r\n * @param {*} config { description }\r\n * @param {Object} [opts] Configuration options.\r\n * @return {Promise}\r\n */\r\n POST (url, data, config, opts) {\r\n const self = this\r\n config || (config = {})\r\n config.url = url || config.url\r\n config.data = data || config.data\r\n config.method = config.method || 'post'\r\n return resolve(self.beforePOST(url, data, config, opts)).then(function (_config) {\r\n config = _config || config\r\n return self.HTTP(config, opts)\r\n }).then(function (response) {\r\n return resolve(self.afterPOST(url, data, config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * { function_description }\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {*} url { description }\r\n * @param {*} data { description }\r\n * @param {*} config { description }\r\n * @param {Object} [opts] Configuration options.\r\n * @return {Promise}\r\n */\r\n PUT (url, data, config, opts) {\r\n const self = this\r\n config || (config = {})\r\n config.url = url || config.url\r\n config.data = data || config.data\r\n config.method = config.method || 'put'\r\n return resolve(self.beforePUT(url, data, config, opts)).then(function (_config) {\r\n config = _config || config\r\n return self.HTTP(config, opts)\r\n }).then(function (response) {\r\n return resolve(self.afterPUT(url, data, config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * { function_description }\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {*} Model { description }\r\n * @param {*} params { description }\r\n * @param {*} opts { description }\r\n * @return {*} Transformed params.\r\n */\r\n queryTransform (Model, params, opts) {\r\n opts || (opts = {})\r\n if (isFunction(opts.queryTransform)) {\r\n return opts.queryTransform(Model, params, opts)\r\n }\r\n if (isFunction(Model.queryTransform)) {\r\n return Model.queryTransform(Model, params, opts)\r\n }\r\n return params\r\n },\r\n\r\n /**\r\n * Error handler invoked when the promise returned by {@link DSHttpAdapter#http}\r\n * is rejected. Default implementation is to just return the error wrapped in\r\n * a rejected Promise, aka rethrow the error. {@link DSHttpAdapter#http} is\r\n * called by {@link DSHttpAdapter#HTTP}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {*} err The error that {@link DSHttpAdapter#http} rejected with.\r\n * @param {*} config The `config` argument that was passed to {@link DSHttpAdapter#HTTP}.\r\n * @param {*} opts The `opts` argument that was passed to {@link DSHttpAdapter#HTTP}.\r\n * @return {Promise}\r\n */\r\n responseError (err, config, opts) {\r\n return reject(err)\r\n },\r\n\r\n /**\r\n * { function_description }\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {*} Model { description }\r\n * @param {*} data { description }\r\n * @param {*} opts { description }\r\n * @return {*} Serialized data.\r\n */\r\n serialize (Model, data, opts) {\r\n opts || (opts = {})\r\n if (isFunction(opts.serialize)) {\r\n return opts.serialize(Model, data, opts)\r\n }\r\n if (isFunction(Model.serialize)) {\r\n return Model.serialize(Model, data, opts)\r\n }\r\n return data\r\n },\r\n\r\n /**\r\n * { function_description }\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {*} Model { description }\r\n * @param {*} id { description }\r\n * @param {*} props { description }\r\n * @param {Object} [opts] Configuration options.\r\n * @return {Promise}\r\n */\r\n update (Model, id, props, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'update'\r\n self.dbg(opts.op, Model, id, props, opts)\r\n return resolve(self.beforeUpdate(Model, id, props, opts)).then(function () {\r\n return self.PUT(\r\n self.getPath('update', Model, id, opts),\r\n self.serialize(Model, props, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterUpdate(Model, id, props, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * { function_description }\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {*} Model { description }\r\n * @param {*} props { description }\r\n * @param {*} query { description }\r\n * @param {Object} [opts] Configuration options.\r\n * @return {Promise}\r\n */\r\n updateAll (Model, props, query, opts) {\r\n const self = this\r\n query || (query = {})\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n deepMixIn(opts.params, query)\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'updateAll'\r\n self.dbg(opts.op, Model, props, query, opts)\r\n return resolve(self.beforeUpdateAll(Model, props, query, opts)).then(function () {\r\n return self.PUT(\r\n self.getPath('updateAll', Model, null, opts),\r\n self.serialize(Model, props, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterUpdateAll(Model, props, query, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Update multiple entities in batch.\r\n *\r\n * {@link DSHttpAdapter#beforeUpdateMany} will be called before calling\r\n * {@link DSHttpAdapter#PUT}.\r\n * {@link DSHttpAdapter#afterUpdateMany} will be called after calling\r\n * {@link DSHttpAdapter#PUT}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The Model.\r\n * @param {Array} models Array of property objects to send as the payload.\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.params] TODO\r\n * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO\r\n * @return {Promise}\r\n */\r\n updateMany (Model, models, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'updateMany'\r\n self.dbg(opts.op, Model, models, opts)\r\n return resolve(self.beforeUpdateMany(Model, models, opts)).then(function () {\r\n return self.PUT(\r\n self.getPath('updateMany', Model, null, opts),\r\n self.serialize(Model, models, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterUpdateMany(Model, models, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n }\r\n})\r\n\r\n/**\r\n * Add an Http actions to a Model.\r\n *\r\n * @name DSHttpAdapter.addAction\r\n * @method\r\n * @param {string} name Name of the new action.\r\n * @param {Object} [opts] Action configuration\r\n * @param {string} [opts.adapter]\r\n * @param {string} [opts.pathname]\r\n * @param {Function} [opts.request]\r\n * @param {Function} [opts.response]\r\n * @param {Function} [opts.responseError]\r\n * @return {Function} Decoration function, which should be passed the Model to\r\n * decorate when invoked.\r\n */\r\nDSHttpAdapter.addAction = function (name, opts) {\r\n if (!name || !isString(name)) {\r\n throw new TypeError('action(name[, opts]): Expected: string, Found: ' + typeof name)\r\n }\r\n return function (Model) {\r\n if (Model[name]) {\r\n throw new Error('action(name[, opts]): ' + name + ' already exists on target!')\r\n }\r\n opts.request = opts.request || function (config) { return config }\r\n opts.response = opts.response || function (response) { return response }\r\n opts.responseError = opts.responseError || function (err) { return reject(err) }\r\n Model[name] = function (id, _opts) {\r\n if (isObject(id)) {\r\n _opts = id\r\n }\r\n _opts = _opts || {}\r\n let adapter = this.getAdapter(opts.adapter || this.defaultAdapter || 'http')\r\n let config = {}\r\n fillIn(config, opts)\r\n if (!_opts.hasOwnProperty('endpoint') && config.endpoint) {\r\n _opts.endpoint = config.endpoint\r\n }\r\n if (typeof _opts.getEndpoint === 'function') {\r\n config.url = _opts.getEndpoint(this, _opts)\r\n } else {\r\n let args = [\r\n _opts.basePath || this.basePath || adapter.defaults.basePath,\r\n adapter.getEndpoint(this, isSorN(id) ? id : null, _opts)\r\n ]\r\n if (isSorN(id)) {\r\n args.push(id)\r\n }\r\n args.push(opts.pathname || name)\r\n config.url = makePath.apply(null, args)\r\n }\r\n config.method = config.method || 'GET'\r\n config.modelName = this.name\r\n deepMixIn(config)(_opts)\r\n return resolve(config)\r\n .then(_opts.request || opts.request)\r\n .then(function (config) { return adapter.HTTP(config) })\r\n .then(function (data) {\r\n if (data && data.config) {\r\n data.config.modelName = this.name\r\n }\r\n return data\r\n })\r\n .then(_opts.response || opts.response, _opts.responseError || opts.responseError)\r\n }\r\n return Model\r\n }\r\n}\r\n\r\n/**\r\n * Add multiple Http actions to a Model. See {@link DSHttpAdapter.addAction} for\r\n * action configuration options.\r\n *\r\n * @name DSHttpAdapter.addActions\r\n * @method\r\n * @param {Object.} opts Object where the key is an action name\r\n * and the value is the configuration for the action.\r\n * @return {Function} Decoration function, which should be passed the Model to\r\n * decorate when invoked.\r\n */\r\nDSHttpAdapter.addActions = function (opts) {\r\n opts || (opts = {})\r\n return function (Model) {\r\n forOwn(Model, function (value, key) {\r\n DSHttpAdapter.addAction(key, value)(Model)\r\n })\r\n return Model\r\n }\r\n}\r\n\r\n/**\r\n * Alternative to ES6 class syntax for extending `DSHttpAdapter`.\r\n *\r\n * __ES6__:\r\n * ```javascript\r\n * class MyHttpAdapter extends DSHttpAdapter {\r\n * deserialize (Model, data, opts) {\r\n * const data = super.deserialize(Model, data, opts)\r\n * data.foo = 'bar'\r\n * return data\r\n * }\r\n * }\r\n * ```\r\n *\r\n * __ES5__:\r\n * ```javascript\r\n * var instanceProps = {\r\n * // override deserialize\r\n * deserialize: function (Model, data, opts) {\r\n * var Ctor = this.constructor\r\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\r\n * // call the super deserialize\r\n * var data = superDeserialize(Model, data, opts)\r\n * data.foo = 'bar'\r\n * return data\r\n * },\r\n * say: function () { return 'hi' }\r\n * }\r\n * var classProps = {\r\n * yell: function () { return 'HI' }\r\n * }\r\n *\r\n * var MyHttpAdapter = DSHttpAdapter.extend(instanceProps, classProps)\r\n * var adapter = new MyHttpAdapter()\r\n * adapter.say() // \"hi\"\r\n * MyHttpAdapter.yell() // \"HI\"\r\n * ```\r\n *\r\n * @name DSHttpAdapter.extend\r\n * @method\r\n * @param {Object} [instanceProps] Properties that will be added to the\r\n * prototype of the subclass.\r\n * @param {Object} [classProps] Properties that will be added as static\r\n * properties to the subclass itself.\r\n * @return {Object} Subclass of `DSHttpAdapter`.\r\n */\r\nDSHttpAdapter.extend = extend\r\n\r\n/**\r\n * Details of the current version of the `js-data-http` module.\r\n *\r\n * @name DSHttpAdapter.version\r\n * @type {Object}\r\n * @property {string} version.full The full semver value.\r\n * @property {number} version.major The major version number.\r\n * @property {number} version.minor The minor version number.\r\n * @property {number} version.patch The patch version number.\r\n * @property {(string|boolean)} version.alpha The alpha version value,\r\n * otherwise `false` if the current version is not alpha.\r\n * @property {(string|boolean)} version.beta The beta version value,\r\n * otherwise `false` if the current version is not beta.\r\n */\r\nDSHttpAdapter.version = {\r\n full: '<%= pkg.version %>',\r\n major: parseInt('<%= major %>', 10),\r\n minor: parseInt('<%= minor %>', 10),\r\n patch: parseInt('<%= patch %>', 10),\r\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\r\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\r\n}\r\n\r\n/**\r\n * Registered as `js-data-http` in NPM and Bower. The build of `js-data-http`\r\n * that works on Node.js is registered in NPM as `js-data-http-node`. The build\r\n * of `js-data-http` that does not bundle `axios` is registered in NPM and Bower\r\n * as `js-data-fetch`.\r\n *\r\n * __Script tag__:\r\n * ```javascript\r\n * window.DSHttpAdapter\r\n * ```\r\n * __CommonJS__:\r\n * ```javascript\r\n * var DSHttpAdapter = require('js-data-http')\r\n * ```\r\n * __ES6 Modules__:\r\n * ```javascript\r\n * import DSHttpAdapter from 'js-data-http'\r\n * ```\r\n * __AMD__:\r\n * ```javascript\r\n * define('myApp', ['js-data-http'], function (DSHttpAdapter) { ... })\r\n * ```\r\n *\r\n * @module js-data-http\r\n */\r\n\r\nmodule.exports = DSHttpAdapter\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/jason/Documents/GitHub/js-data-http/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 **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"axios\"\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/node/package.json b/node/package.json index 3489949..67fd4c4 100644 --- a/node/package.json +++ b/node/package.json @@ -1,7 +1,7 @@ { "name": "js-data-http-node", "description": "Node.js HTTP adapter for js-data.", - "version": "3.0.0-alpha.2", + "version": "3.0.0-alpha.3", "homepage": "http://www.js-data.io/docs/dshttpadapter", "repository": { "type": "git", diff --git a/src/index.js b/src/index.js index da307f3..731eea5 100644 --- a/src/index.js +++ b/src/index.js @@ -11,6 +11,7 @@ let { deepMixIn, removeCircular, copy, makePath, isString, isNumber } = DSUtils /** * DSHttpAdapter class. * @class DSHttpAdapter + * @alias DSHttpAdapter * * @param {Object} [opts] Configuration options. * @param {string} [opts.basePath=''] @@ -28,12 +29,49 @@ function DSHttpAdapter (opts) { opts || (opts = {}) // Default and user-defined settings + /** + * @name DSHttpAdapter#basePath + * @type {string} + */ self.basePath = opts.basePath === undefined ? '' : opts.basePath + + /** + * @name DSHttpAdapter#debug + * @type {boolean} + * @default false + */ self.debug = opts.debug === undefined ? false : opts.debug + + /** + * @name DSHttpAdapter#forceTrailingSlash + * @type {boolean} + * @default false + */ self.forceTrailingSlash = opts.forceTrailingSlash === undefined ? false : opts.forceTrailingSlash + + /** + * @name DSHttpAdapter#http + * @type {Function} + */ self.http = opts.http === undefined ? axios : opts.http + + /** + * @name DSHttpAdapter#httpConfig + * @type {Object} + */ self.httpConfig = opts.httpConfig === undefined ? {} : opts.httpConfig + + /** + * @name DSHttpAdapter#suffix + * @type {string} + */ self.suffix = opts.suffix === undefined ? '' : opts.suffix + + /** + * @name DSHttpAdapter#useFetch + * @type {boolean} + * @default false + */ self.useFetch = opts.useFetch === undefined ? false : opts.useFetch log () {} @@ -43,8 +81,22 @@ function DSHttpAdapter (opts) { let defaultsPrototype = Defaults.prototype - beforeDEL () {}, - + /** + * Make an Http request to `url` according to the configuration in `config`. + * + * {@link DSHttpAdapter#beforeDEL} will be called before calling + * {@link DSHttpAdapter#HTTP}. + * {@link DSHttpAdapter#afterDEL} will be called after calling + * {@link DSHttpAdapter#HTTP}. + * + * @memberof DSHttpAdapter + * @instance + * @param {string} url Url for the request. + * @param {Object} [config] Http configuration that will be passed to + * {@link DSHttpAdapter#HTTP}. + * @param {Object} [opts] Configuration options. + * @return {Promise} + */ DEL (url, config, opts) { const self = this config || (config = {}) @@ -75,6 +127,19 @@ class DSHttpAdapter { } }, + /** + * Make an Http request using `window.fetch`. + * + * @memberof DSHttpAdapter + * @instance + * @param {Object} config Request configuration. + * @param {Object} config.data Payload for the request. + * @param {string} config.method Http method for the request. + * @param {Object} config.headers Headers for the request. + * @param {Object} config.params Querystring for the request. + * @param {string} config.url Url for the request. + * @param {Object} [opts] Configuration options. + */ fetch (config, opts) { const requestConfig = { method: config.method, @@ -353,8 +418,68 @@ class DSHttpAdapter { } } +/** + * Alternative to ES6 class syntax for extending `DSHttpAdapter`. + * + * __ES6__: + * ```javascript + * class MyHttpAdapter extends DSHttpAdapter { + * deserialize (Model, data, opts) { + * const data = super.deserialize(Model, data, opts) + * data.foo = 'bar' + * return data + * } + * } + * ``` + * + * __ES5__: + * ```javascript + * var instanceProps = { + * // override deserialize + * deserialize: function (Model, data, opts) { + * var Ctor = this.constructor + * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize + * // call the super deserialize + * var data = superDeserialize(Model, data, opts) + * data.foo = 'bar' + * return data + * }, + * say: function () { return 'hi' } + * } + * var classProps = { + * yell: function () { return 'HI' } + * } + * + * var MyHttpAdapter = DSHttpAdapter.extend(instanceProps, classProps) + * var adapter = new MyHttpAdapter() + * adapter.say() // "hi" + * MyHttpAdapter.yell() // "HI" + * ``` + * + * @name DSHttpAdapter.extend + * @method + * @param {Object} [instanceProps] Properties that will be added to the + * prototype of the subclass. + * @param {Object} [classProps] Properties that will be added as static + * properties to the subclass itself. + * @return {Object} Subclass of `DSHttpAdapter`. + */ DSHttpAdapter.extend = extend +/** + * Details of the current version of the `js-data-http` module. + * + * @name DSHttpAdapter.version + * @type {Object} + * @property {string} version.full The full semver value. + * @property {number} version.major The major version number. + * @property {number} version.minor The minor version number. + * @property {number} version.patch The patch version number. + * @property {(string|boolean)} version.alpha The alpha version value, + * otherwise `false` if the current version is not alpha. + * @property {(string|boolean)} version.beta The beta version value, + * otherwise `false` if the current version is not beta. + */ DSHttpAdapter.version = { full: '<%= pkg.version %>', major: parseInt('<%= major %>', 10), @@ -364,4 +489,30 @@ DSHttpAdapter.version = { beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false } +/** + * Registered as `js-data-http` in NPM and Bower. The build of `js-data-http` + * that works on Node.js is registered in NPM as `js-data-http-node`. The build + * of `js-data-http` that does not bundle `axios` is registered in NPM and Bower + * as `js-data-fetch`. + * + * __Script tag__: + * ```javascript + * window.DSHttpAdapter + * ``` + * __CommonJS__: + * ```javascript + * var DSHttpAdapter = require('js-data-http') + * ``` + * __ES6 Modules__: + * ```javascript + * import DSHttpAdapter from 'js-data-http' + * ``` + * __AMD__: + * ```javascript + * define('myApp', ['js-data-http'], function (DSHttpAdapter) { ... }) + * ``` + * + * @module js-data-http + */ + module.exports = DSHttpAdapter diff --git a/test/createMany.test.js b/test/createMany.test.js new file mode 100644 index 0000000..1066bc7 --- /dev/null +++ b/test/createMany.test.js @@ -0,0 +1,3 @@ +describe('createMany', function () { + it('should createMany') +}) diff --git a/test/responseError.test.js b/test/responseError.test.js new file mode 100644 index 0000000..fb0e67b --- /dev/null +++ b/test/responseError.test.js @@ -0,0 +1,3 @@ +describe('responseError', function () { + it('should responseError') +}) diff --git a/test/updateMany.test.js b/test/updateMany.test.js new file mode 100644 index 0000000..c1137a6 --- /dev/null +++ b/test/updateMany.test.js @@ -0,0 +1,3 @@ +describe('updateMany', function () { + it('should updateMany') +}) From 26ceb2ff4e4d56bcc343f1ecc324e16c152b036f Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Wed, 27 Jan 2016 00:16:43 +0000 Subject: [PATCH 09/24] doc config --- conf.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/conf.json b/conf.json index 4a8fb77..b1f4ca6 100644 --- a/conf.json +++ b/conf.json @@ -14,6 +14,10 @@ "templates": { "theme": "lumen", "systemName": "js-data-http", - "copyright": "js-data-http Copyright © 2014-2016 Jason Dobry" + "copyright": "js-data-http Copyright © 2014-2016 Jason Dobry", + "outputSourceFiles": true, + "syntaxTheme": "dark", + "linenums": true, + "footer": "
Back to js-data.io
" } } \ No newline at end of file From ff151747caa30fecd3b4d4cfae48746eedb3eba1 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Fri, 12 Feb 2016 22:08:42 -0800 Subject: [PATCH 10/24] Stable Version 3.0.0-alpha.4. --- README.md | 37 +- build_examples/browserify/app.js | 16 +- build_examples/node/app.js | 14 +- build_examples/r.js/app.js | 14 +- build_examples/webpack/app.js | 16 +- build_examples/webpack_es6/app.js | 16 +- dist/js-data-http.js | 1281 +++++++++++++------------- fetch/dist/js-data-fetch.js | 1365 ++++++++++++++-------------- fetch/dist/js-data-fetch.js.map | 2 +- fetch/dist/js-data-fetch.min.js | 4 +- fetch/dist/js-data-fetch.min.map | 2 +- fetch/karma.start.js | 10 +- fetch/package.json | 2 +- fetch/webpack.config.js | 2 +- karma.start.js | 10 +- node/dist/js-data-http-node.js | 1361 ++++++++++++++------------- node/dist/js-data-http-node.js.map | 2 +- node/mocha.start.js | 8 +- node/package.json | 2 +- src/index.js | 113 ++- test/find.test.js | 4 +- webpack.config.js | 2 +- 22 files changed, 2089 insertions(+), 2194 deletions(-) diff --git a/README.md b/README.md index 9b9533d..25ce7c5 100644 --- a/README.md +++ b/README.md @@ -31,36 +31,21 @@ To get started, visit __[http://js-data.io](http://www.js-data.io)__. __ES6__ ```js -import {Model} from 'js-data' -import DSHttpAdapter from 'js-data-http-node' +// Doesn't make much sense to use DataStore on the server +import {Container} from 'js-data' +import HttpAdapter from 'js-data-http-node' -const adapter = new DSHttpAdapter() +const adapter = new HttpAdapter() +const container = new Container() -class Base extends Model {} -Base.registerAdapter('http', adapter, { default: true }) +container.registerAdapter('http', adapter, { default: true }) -class School extends Model {} -class Student extends Model {} +container.defineMapper('school') +container.defineMapper('student') -// "School" and "Student" will now use the http adapter by default -``` - -__ES5__ - -```js -var JSData = require('js-data') -var Model = JSData.Model -var DSHttpAdapter = require('js-data-http-node') - -var adapter = new DSHttpAdapter() - -var Base = Model.extend({}, { name: 'Base' }) -Base.registerAdapter('http', adapter, { default: true }) - -var School = Base.extend({}, { name: 'School' }) -var Student = Base.extend({}, { name: 'Student' }) - -// "School" and "Student" will now use the http adapter by default +container.find('school', 1).then(function (school) { + // ... +}) ``` ## Guides and Tutorials diff --git a/build_examples/browserify/app.js b/build_examples/browserify/app.js index fa97cd7..1be0455 100644 --- a/build_examples/browserify/app.js +++ b/build_examples/browserify/app.js @@ -1,14 +1,14 @@ var JSData = require('js-data') -// normally this would be "var DSHttpAdapter = require('js-data-http')" -var DSHttpAdapter = require('../../') +// normally this would be "var HttpAdapter = require('js-data-http')" +var HttpAdapter = require('../../') -document.getElementById('main').innerHTML = DSHttpAdapter.version.full +document.getElementById('main').innerHTML = HttpAdapter.version.full -var adapter = new DSHttpAdapter() -var Base = JSData.Model.extend({}, { name: 'Base' }) -Base.registerAdapter('http', adapter, { default: true }) -var User = Base.extend({}, { name: 'User' }) +var adapter = new HttpAdapter() +var store = new JSData.DataStore() +store.registerAdapter('http', adapter, { default: true }) +store.defineMapper('user') -User.find(1).catch(function (err) { +store.find('user', 1).catch(function (err) { console.log(err) }) diff --git a/build_examples/node/app.js b/build_examples/node/app.js index c2a1790..1698d6e 100644 --- a/build_examples/node/app.js +++ b/build_examples/node/app.js @@ -1,12 +1,12 @@ var JSData = require('js-data') -// normally this would be "var DSHttpAdapter = require('js-data-http-node')" -var DSHttpAdapter = require('../../') +// normally this would be "var HttpAdapter = require('js-data-http-node')" +var HttpAdapter = require('../../') -var adapter = new DSHttpAdapter() -var Base = JSData.Model.extend({}, { name: 'Base' }) -Base.registerAdapter('http', adapter, { default: true }) -var User = Base.extend({}, { name: 'User' }) +var adapter = new HttpAdapter() +var store = new JSData.DataStore() +store.registerAdapter('http', adapter, { default: true }) +store.defineMapper('user') -User.find(1).catch(function (err) { +store.find('user', 1).catch(function (err) { console.log(err) }) diff --git a/build_examples/r.js/app.js b/build_examples/r.js/app.js index 2cb1ba8..2a30365 100644 --- a/build_examples/r.js/app.js +++ b/build_examples/r.js/app.js @@ -1,15 +1,15 @@ define('app', [ 'js-data', 'js-data-http' -], function (JSData, DSHttpAdapter) { - document.getElementById('main').innerHTML = DSHttpAdapter.version.full +], function (JSData, HttpAdapter) { + document.getElementById('main').innerHTML = HttpAdapter.version.full - var adapter = new DSHttpAdapter() - var Base = JSData.Model.extend({}, { name: 'Base' }) - Base.registerAdapter('http', adapter, { default: true }) - var User = Base.extend({}, { name: 'User' }) + var adapter = new HttpAdapter() + var store = new DataStore() + store.registerAdapter('http', adapter, { default: true }) + store.defineMapper('user') - User.find(1).catch(function (err) { + store.find('user', 1).catch(function (err) { console.log(err) }) }) diff --git a/build_examples/webpack/app.js b/build_examples/webpack/app.js index fa97cd7..1be0455 100644 --- a/build_examples/webpack/app.js +++ b/build_examples/webpack/app.js @@ -1,14 +1,14 @@ var JSData = require('js-data') -// normally this would be "var DSHttpAdapter = require('js-data-http')" -var DSHttpAdapter = require('../../') +// normally this would be "var HttpAdapter = require('js-data-http')" +var HttpAdapter = require('../../') -document.getElementById('main').innerHTML = DSHttpAdapter.version.full +document.getElementById('main').innerHTML = HttpAdapter.version.full -var adapter = new DSHttpAdapter() -var Base = JSData.Model.extend({}, { name: 'Base' }) -Base.registerAdapter('http', adapter, { default: true }) -var User = Base.extend({}, { name: 'User' }) +var adapter = new HttpAdapter() +var store = new JSData.DataStore() +store.registerAdapter('http', adapter, { default: true }) +store.defineMapper('user') -User.find(1).catch(function (err) { +store.find('user', 1).catch(function (err) { console.log(err) }) diff --git a/build_examples/webpack_es6/app.js b/build_examples/webpack_es6/app.js index 9848d04..d12c6e2 100644 --- a/build_examples/webpack_es6/app.js +++ b/build_examples/webpack_es6/app.js @@ -1,14 +1,14 @@ -import {model} from 'js-data-' +import {DataStore} from 'js-data' // normally this would be "import DSHttpAdatper from 'js-data-http'" -import DSHttpAdapter from '../../'; +import HttpAdapter from '../../'; -document.getElementById('main').innerHTML = DSHttpAdapter.version.full; +document.getElementById('main').innerHTML = HttpAdapter.version.full; -const adapter = new DSHttpAdapter() -class Base extends JSData.Model {} -Base.registerAdapter('http', adapter, { default: true }) -class User extends Base {} +var adapter = new HttpAdapter() +var store = new DataStore() +store.registerAdapter('http', adapter, { default: true }) +store.defineMapper('user') -User.find(1).catch(function (err) { +store.find('user', 1).catch(function (err) { console.log(err) }) \ No newline at end of file diff --git a/dist/js-data-http.js b/dist/js-data-http.js index 389b8aa..f56dfaf 100644 --- a/dist/js-data-http.js +++ b/dist/js-data-http.js @@ -13,9 +13,9 @@ else if(typeof define === 'function' && define.amd) define(["js-data"], factory); else if(typeof exports === 'object') - exports["DSHttpAdapter"] = factory(require("js-data")); + exports["HttpAdapter"] = factory(require("js-data")); else - root["DSHttpAdapter"] = factory(root["JSData"]); + root["HttpAdapter"] = factory(root["JSData"]); })(this, function(__WEBPACK_EXTERNAL_MODULE_1__) { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache @@ -96,618 +96,504 @@ return /******/ (function(modules) { // webpackBootstrap // Default values for arguments opts || (opts = {}); + var opts = args[args.length - 2]; + self.dbg.apply(self, [opts.op].concat(args)); + }; + + var DEFAULTS = { // Default and user-defined settings /** - * @name DSHttpAdapter#basePath + * @name HttpAdapter#basePath * @type {string} */ - self.basePath = opts.basePath === undefined ? '' : opts.basePath; + basePath: '', /** - * @name DSHttpAdapter#debug + * @name HttpAdapter#debug * @type {boolean} * @default false */ - self.debug = opts.debug === undefined ? false : opts.debug; + debug: false, /** - * @name DSHttpAdapter#forceTrailingSlash + * @name HttpAdapter#forceTrailingSlash * @type {boolean} * @default false */ - self.forceTrailingSlash = opts.forceTrailingSlash === undefined ? false : opts.forceTrailingSlash; + forceTrailingSlash: false, /** - * @name DSHttpAdapter#http + * @name HttpAdapter#http * @type {Function} */ - self.http = opts.http === undefined ? axios : opts.http; + http: axios, /** - * @name DSHttpAdapter#httpConfig + * @name HttpAdapter#httpConfig * @type {Object} */ - self.httpConfig = opts.httpConfig === undefined ? {} : opts.httpConfig; + httpConfig: {}, /** - * @name DSHttpAdapter#suffix + * @name HttpAdapter#suffix * @type {string} */ - self.suffix = opts.suffix === undefined ? '' : opts.suffix; + suffix: '', /** - * @name DSHttpAdapter#useFetch + * @name HttpAdapter#useFetch * @type {boolean} * @default false */ - self.useFetch = opts.useFetch === undefined ? false : opts.useFetch; + useFetch: false + }; + + /** + * HttpAdapter class. + * + * @class HttpAdapter + * @param {Object} [opts] Configuration options. + * @param {string} [opts.basePath=''] TODO + * @param {boolean} [opts.debug=false] TODO + * @param {boolean} [opts.forceTrailingSlash=false] TODO + * @param {Object} [opts.http=axios] TODO + * @param {Object} [opts.httpConfig={}] TODO + * @param {string} [opts.suffix=''] TODO + * @param {boolean} [opts.useFetch=false] TODO + */ + function HttpAdapter(opts) { + var self = this; + + // Default values for arguments + opts || (opts = {}); + + fillIn(self, opts); + fillIn(self, DEFAULTS); } - fillIn(DSHttpAdapter.prototype, { + addHiddenPropsToTarget(HttpAdapter.prototype, { /** - * Lifecycle hook called by {@link DSHttpAdapter#create}. If this method - * returns a promise then {@link DSHttpAdapter#create} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#create} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#create}. - * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#create}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#create}. - * @param {Object} data The `data` value that {@link DSHttpAdapter#create} will return. + * @name HttpAdapter#afterCreate + * @method + * @param {Object} mapper + * @param {Object} props + * @param {Object} opts + * @param {Object} data */ - - afterCreate: function afterCreate() {}, + afterCreate: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#createMany}. If this method - * returns a promise then {@link DSHttpAdapter#createMany} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#createMany} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#createMany}. - * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#createMany}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#createMany}. - * @param {Object} data The `data` value that {@link DSHttpAdapter#createMany} will return. + * @name HttpAdapter#afterCreateMany + * @method + * @param {Object} mapper + * @param {Object} records + * @param {Object} opts + * @param {Object} data */ - afterCreateMany: function afterCreateMany() {}, + afterCreateMany: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#DEL}. If this method - * returns a promise then {@link DSHttpAdapter#DEL} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#DEL} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {string} url The `url` argument passed to {@link DSHttpAdapter#DEL}. - * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#DEL}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#DEL}. - * @param {Object} response The `response` value that {@link DSHttpAdapter#DEL} will return. + * @name HttpAdapter#afterDEL + * @method + * @param {string} url + * @param {Object} config + * @param {Object} opts + * @param {Object} response */ - afterDEL: function afterDEL() {}, + afterDEL: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#destroy}. If this method - * returns a promise then {@link DSHttpAdapter#destroy} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#destroy} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroy}. - * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#destroy}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroy}. - * @param {Object} data The `data` value that {@link DSHttpAdapter#destroy} will return. + * @name HttpAdapter#afterDestroy + * @method + * @param {Object} mapper + * @param {(string|number)} id + * @param {Object} opts + * @param {Object} data */ - afterDestroy: function afterDestroy() {}, + afterDestroy: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#destroyAll}. If this method - * returns a promise then {@link DSHttpAdapter#destroyAll} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#destroyAll} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroyAll}. - * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#destroyAll}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroyAll}. - * @param {Object} data The `data` value that {@link DSHttpAdapter#destroyAll} will return. + * @name HttpAdapter#afterDestroyAll + * @method + * @param {Object} mapper + * @param {(string|number)} id + * @param {Object} opts + * @param {Object} data */ - afterDestroyAll: function afterDestroyAll() {}, + afterDestroyAll: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#find}. If this method - * returns a promise then {@link DSHttpAdapter#find} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#find} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#find}. - * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#find}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#find}. - * @param {Object} data The `data` value that {@link DSHttpAdapter#find} will return. + * @name HttpAdapter#afterFind + * @method + * @param {Object} mapper + * @param {(string|number)} id + * @param {Object} opts + * @param {Object} data */ - afterFind: function afterFind() {}, + afterFind: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#findAll}. If this method - * returns a promise then {@link DSHttpAdapter#findAll} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#findAll} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#findAll}. - * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#findAll}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#findAll}. - * @param {Object} data The `data` value that {@link DSHttpAdapter#findAll} will return. + * @name HttpAdapter#afterFindAll + * @method + * @param {Object} mapper + * @param {(string|number)} id + * @param {Object} opts + * @param {Object} data */ - afterFindAll: function afterFindAll() {}, + afterFindAll: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#GET}. If this method - * returns a promise then {@link DSHttpAdapter#GET} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#GET} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {string} url The `url` argument passed to {@link DSHttpAdapter#GET}. - * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#GET}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#GET}. - * @param {Object} response The `response` value that {@link DSHttpAdapter#GET} will return. + * @name HttpAdapter#afterGET + * @method + * @param {string} url + * @param {Object} config + * @param {Object} opts + * @param {Object} response */ - afterGET: function afterGET() {}, + afterGET: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#HTTP}. If this method - * returns a promise then {@link DSHttpAdapter#HTTP} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#HTTP} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#HTTP}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#HTTP}. - * @param {Object} response The `response` value that {@link DSHttpAdapter#HTTP} will return. + * @name HttpAdapter#afterHTTP + * @method + * @param {Object} config + * @param {Object} opts + * @param {Object} response */ - afterHTTP: function afterHTTP() {}, + afterHTTP: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#POST}. If this method - * returns a promise then {@link DSHttpAdapter#POST} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#POST} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {string} url The `url` argument passed to {@link DSHttpAdapter#POST}. - * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#POST}. - * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#POST}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#POST}. - * @param {Object} response The `response` value that {@link DSHttpAdapter#POST} will return. + * @name HttpAdapter#afterPOST + * @method + * @param {string} url + * @param {Object} data + * @param {Object} config + * @param {Object} opts + * @param {Object} response */ - afterPOST: function afterPOST() {}, + afterPOST: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#PUT}. If this method - * returns a promise then {@link DSHttpAdapter#PUT} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#PUT} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {string} url The `url` argument passed to {@link DSHttpAdapter#PUT}. - * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#PUT}. - * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#PUT}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#PUT}. - * @param {Object} response The `response` value that {@link DSHttpAdapter#PUT} will return. + * @name HttpAdapter#afterPUT + * @method + * @param {string} url + * @param {Object} data + * @param {Object} config + * @param {Object} opts + * @param {Object} response */ - afterPUT: function afterPUT() {}, + afterPUT: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#update}. If this method - * returns a promise then {@link DSHttpAdapter#update} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#update} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#update}. - * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#update}. - * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#update}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#update}. - * @param {Object} data The `data` value that {@link DSHttpAdapter#update} will return. + * @name HttpAdapter#afterUpdate + * @method + * @param {Object} mapper + * @param {(string|number)} id + * @param {Object} props + * @param {Object} opts + * @param {Object} data */ - afterUpdate: function afterUpdate() {}, + afterUpdate: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#updateAll}. If this method - * returns a promise then {@link DSHttpAdapter#updateAll} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#updateAll} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateAll}. - * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#updateAll}. - * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#updateAll}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateAll}. - * @param {Object} data The `data` value that {@link DSHttpAdapter#updateAll} will return. + * @name HttpAdapter#afterUpdateAll + * @method + * @param {Object} mapper + * @param {Object} props + * @param {Object} query + * @param {Object} opts + * @param {Object} data */ - afterUpdateAll: function afterUpdateAll() {}, + afterUpdateAll: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#updateMany}. If this method - * returns a promise then {@link DSHttpAdapter#updateMany} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#updateMany} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateMany}. - * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#updateMany}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateMany}. - * @param {Object} data The `data` value that {@link DSHttpAdapter#updateMany} will return. + * @name HttpAdapter#afterUpdateMany + * @method + * @param {Object} mapper + * @param {Object} records + * @param {Object} opts + * @param {Object} data */ - afterUpdateMany: function afterUpdateMany() {}, + afterUpdateMany: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#create}. If this method - * returns a promise then {@link DSHttpAdapter#create} will wait for the - * promise to resolve before continuing. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#create}. - * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#create}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#create}. + * @name HttpAdapter#beforeCreate + * @method + * @param {Object} mapper + * @param {Object} props + * @param {Object} opts */ - beforeCreate: function beforeCreate() {}, + beforeCreate: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#createMany}. If this method - * returns a promise then {@link DSHttpAdapter#createMany} will wait for the - * promise to resolve before continuing. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#createMany}. - * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#createMany}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#createMany}. + * @name HttpAdapter#beforeCreateMany + * @method + * @param {Object} mapper + * @param {Object} records + * @param {Object} opts */ - beforeCreateMany: function beforeCreateMany() {}, + beforeCreateMany: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#DEL}. If this method - * returns a promise then {@link DSHttpAdapter#DEL} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#create} - * will resolve with that same value, then the `config` argument passed to - * {@link DSHttpAdapter#DEL} will be replaced by the value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#DEL}. - * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#DEL}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#DEL}. + * @name HttpAdapter#beforeDEL + * @method + * @param {Object} url + * @param {Object} config + * @param {Object} opts */ - beforeDEL: function beforeDEL() {}, + beforeDEL: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#destroy}. If this method - * returns a promise then {@link DSHttpAdapter#destroy} will wait for the - * promise to resolve before continuing. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroy}. - * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#destroy}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroy}. + * @name HttpAdapter#beforeDestroy + * @method + * @param {Object} mapper + * @param {(string|number)} id + * @param {Object} opts */ - beforeDestroy: function beforeDestroy() {}, + beforeDestroy: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#destroyAll}. If this method - * returns a promise then {@link DSHttpAdapter#destroyAll} will wait for the - * promise to resolve before continuing. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroyAll}. - * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#destroyAll}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroyAll}. + * @name HttpAdapter#beforeDestroyAll + * @method + * @param {Object} mapper + * @param {Object} query + * @param {Object} opts */ - beforeDestroyAll: function beforeDestroyAll() {}, + beforeDestroyAll: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#find}. If this method - * returns a promise then {@link DSHttpAdapter#find} will wait for the - * promise to resolve before continuing. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#find}. - * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#find}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#find}. + * @name HttpAdapter#beforeFind + * @method + * @param {Object} mapper + * @param {(string|number)} id + * @param {Object} opts */ - beforeFind: function beforeFind() {}, + beforeFind: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#findAll}. If this method - * returns a promise then {@link DSHttpAdapter#findAll} will wait for the - * promise to resolve before continuing. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#findAll}. - * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#findAll}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#findAll}. + * @name HttpAdapter#beforeFindAll + * @method + * @param {Object} mapper + * @param {Object} query + * @param {Object} opts */ - beforeFindAll: function beforeFindAll() {}, + beforeFindAll: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#GET}. If this method - * returns a promise then {@link DSHttpAdapter#GET} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#create} - * will resolve with that same value, then the `config` argument passed to - * {@link DSHttpAdapter#GET} will be replaced by the value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#GET}. - * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#GET}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#GET}. + * @name HttpAdapter#beforeGET + * @method + * @param {Object} url + * @param {Object} config + * @param {Object} opts */ - beforeGET: function beforeGET() {}, + beforeGET: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#HTTP}. If this method - * returns a promise then {@link DSHttpAdapter#HTTP} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#create} - * will resolve with that same value, then the `config` argument passed to - * {@link DSHttpAdapter#HTTP} will be replaced by the value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#HTTP}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#HTTP}. + * @name HttpAdapter#beforeHTTP + * @method + * @param {Object} config + * @param {Object} opts */ - beforeHTTP: function beforeHTTP() {}, + beforeHTTP: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#POST}. If this method - * returns a promise then {@link DSHttpAdapter#POST} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#create} - * will resolve with that same value, then the `config` argument passed to - * {@link DSHttpAdapter#POST} will be replaced by the value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#POST}. - * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#POST}. - * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#POST}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#POST}. + * @name HttpAdapter#beforePOST + * @method + * @param {Object} url + * @param {Object} data + * @param {Object} config + * @param {Object} opts */ - beforePOST: function beforePOST() {}, + beforePOST: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#PUT}. If this method - * returns a promise then {@link DSHttpAdapter#PUT} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#create} - * will resolve with that same value, then the `config` argument passed to - * {@link DSHttpAdapter#PUT} will be replaced by the value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#PUT}. - * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#PUT}. - * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#PUT}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#PUT}. + * @name HttpAdapter#beforePUT + * @method + * @param {Object} url + * @param {Object} data + * @param {Object} config + * @param {Object} opts */ - beforePUT: function beforePUT() {}, + beforePUT: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#update}. If this method - * returns a promise then {@link DSHttpAdapter#update} will wait for the - * promise to resolve before continuing. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#update}. - * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#update}. - * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#update}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#update}. + * @name HttpAdapter#beforeUpdate + * @method + * @param {Object} mapper + * @param {(string|number)} id + * @param {Object} props + * @param {Object} opts */ - beforeUpdate: function beforeUpdate() {}, + beforeUpdate: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#updateAll}. If this method - * returns a promise then {@link DSHttpAdapter#updateAll} will wait for the - * promise to resolve before continuing. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateAll}. - * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#updateAll}. - * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#updateAll}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateAll}. + * @name HttpAdapter#beforeUpdateAll + * @method + * @param {Object} mapper + * @param {Object} props + * @param {Object} query + * @param {Object} opts */ - beforeUpdateAll: function beforeUpdateAll() {}, + beforeUpdateAll: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#updateMany}. If this method - * returns a promise then {@link DSHttpAdapter#updateMany} will wait for the - * promise to resolve before continuing. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateMany}. - * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#updateMany}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateMany}. + * @name HttpAdapter#beforeUpdateMany + * @method + * @param {Object} mapper + * @param {Object} records + * @param {Object} opts */ - beforeUpdateMany: function beforeUpdateMany() {}, + beforeUpdateMany: noop, /** - * Create a new the entity from the provided `props`. - * - * {@link DSHttpAdapter#beforeCreate} will be called before calling - * {@link DSHttpAdapter#POST}. - * {@link DSHttpAdapter#afterCreate} will be called after calling - * {@link DSHttpAdapter#POST}. + * Create a new the record from the provided `props`. * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The Model. + * @name HttpAdapter#create + * @method + * @param {Object} mapper The mapper. * @param {Object} props Properties to send as the payload. * @param {Object} [opts] Configuration options. * @param {string} [opts.params] TODO - * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO * @return {Promise} */ - create: function create(Model, props, opts) { + create: function create(mapper, props, opts) { var self = this; + var op = undefined; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); - opts.params = self.queryTransform(Model, opts.params, opts); - opts.suffix || (opts.suffix = Model.suffix); - opts.op = 'create'; - self.dbg(opts.op, Model, props, opts); - return resolve(self.beforeCreate(Model, props, opts)).then(function () { - return self.POST(self.getPath('create', Model, props, opts), self.serialize(Model, props, opts), opts); + opts.params = self.queryTransform(mapper, opts.params, opts); + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; + + // beforeCreate lifecycle hook + op = opts.op = 'beforeCreate'; + return resolve(self[op](mapper, props, opts)).then(function () { + op = opts.op = 'create'; + self.dbg(op, mapper, props, opts); + return self.POST(self.getPath('create', mapper, props, opts), self.serialize(mapper, props, opts), opts); }).then(function (response) { - return self.deserialize(Model, response, opts); + return self.deserialize(mapper, response, opts); }).then(function (data) { - return resolve(self.afterCreate(Model, props, opts, data)).then(function (_data) { - return _data || data; + // afterCreate lifecycle hook + op = opts.op = 'afterCreate'; + return resolve(self[op](mapper, props, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data; }); }); }, + /** - * Create multiple new entities in batch. - * - * {@link DSHttpAdapter#beforeCreateMany} will be called before calling - * {@link DSHttpAdapter#POST}. - * {@link DSHttpAdapter#afterCreateMany} will be called after calling - * {@link DSHttpAdapter#POST}. + * Create multiple new records in batch. * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The Model. - * @param {Array} models Array of property objects to send as the payload. + * @name HttpAdapter#createMany + * @method + * @param {Object} mapper The mapper. + * @param {Array} records Array of property objects to send as the payload. * @param {Object} [opts] Configuration options. * @param {string} [opts.params] TODO - * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO * @return {Promise} */ - createMany: function createMany(Model, models, opts) { + createMany: function createMany(mapper, records, opts) { var self = this; + var op = undefined; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); - opts.params = self.queryTransform(Model, opts.params, opts); - opts.suffix || (opts.suffix = Model.suffix); - opts.op = 'createMany'; - self.dbg(opts.op, Model, models, opts); - return resolve(self.beforeCreateMany(Model, models, opts)).then(function () { - return self.POST(self.getPath('createMany', Model, null, opts), self.serialize(Model, models, opts), opts); + opts.params = self.queryTransform(mapper, opts.params, opts); + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; + + // beforeCreateMany lifecycle hook + op = opts.op = 'beforeCreateMany'; + return resolve(self[op](mapper, records, opts)).then(function () { + op = opts.op = 'createMany'; + self.dbg(op, mapper, records, opts); + return self.POST(self.getPath('createMany', mapper, null, opts), self.serialize(mapper, records, opts), opts); }).then(function (response) { - return self.deserialize(Model, response, opts); + return self.deserialize(mapper, response, opts); }).then(function (data) { - return resolve(self.afterCreateMany(Model, models, opts, data)).then(function (_data) { - return _data || data; + // afterCreateMany lifecycle hook + op = opts.op = 'afterCreateMany'; + return resolve(self[op](mapper, records, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data; }); }); }, + /** - * Call {@link DSHttpAdapter#log} at the "debug" level. + * Call {@link HttpAdapter#log} at the "debug" level. * - * @memberof DSHttpAdapter - * @instance - * @param {...*} [args] Args passed to {@link DSHttpAdapter#log}. + * @name HttpAdapter#dbg + * @method + * @param {...*} [args] Args passed to {@link HttpAdapter#log}. */ dbg: function dbg() { - for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; + for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { + args[_key4] = arguments[_key4]; } this.log.apply(this, ['debug'].concat(args)); }, + /** * Make an Http request to `url` according to the configuration in `config`. * - * {@link DSHttpAdapter#beforeDEL} will be called before calling - * {@link DSHttpAdapter#HTTP}. - * {@link DSHttpAdapter#afterDEL} will be called after calling - * {@link DSHttpAdapter#HTTP}. - * - * @memberof DSHttpAdapter - * @instance + * @name HttpAdapter#DEL + * @method * @param {string} url Url for the request. * @param {Object} [config] Http configuration that will be passed to - * {@link DSHttpAdapter#HTTP}. + * {@link HttpAdapter#HTTP}. * @param {Object} [opts] Configuration options. * @return {Promise} */ DEL: function DEL(url, config, opts) { var self = this; + var op = undefined; config || (config = {}); + opts || (opts = {}); config.url = url || config.url; config.method = config.method || 'delete'; - return resolve(self.beforeDEL(url, config, opts)).then(function (_config) { - config = _config || config; + + // beforeDEL lifecycle hook + op = opts.op = 'beforeDEL'; + return resolve(self[op](url, config, opts)).then(function (_config) { + // Allow re-assignment from lifecycle hook + config = isUndefined(_config) ? config : _config; + op = opts.op = 'DEL'; + self.dbg(op, url, config, opts); return self.HTTP(config, opts); }).then(function (response) { - return resolve(self.afterDEL(url, config, opts, response)).then(function (_response) { - return _response || response; + // afterDEL lifecycle hook + op = opts.op = 'afterDEL'; + return resolve(self[op](url, config, opts, response)).then(function (_response) { + // Allow re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; }); }); }, + /** * Transform the server response object into the payload that will be returned * to JSData. * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The Model used for the operation. - * @param {Object} response Response object from {@link DSHttpAdapter#HTTP}. + * @name HttpAdapter#deserialize + * @method + * @param {Object} mapper The mapper used for the operation. + * @param {Object} response Response object from {@link HttpAdapter#HTTP}. * @param {Object} opts Configuration options. * @return {(Object|Array)} Deserialized data. */ - deserialize: function deserialize(Model, response, opts) { + deserialize: function deserialize(mapper, response, opts) { opts || (opts = {}); if (isFunction(opts.deserialize)) { - return opts.deserialize(Model, response, opts); + return opts.deserialize(mapper, response, opts); } - if (isFunction(Model.deserialize)) { - return Model.deserialize(Model, response, opts); + if (isFunction(mapper.deserialize)) { + return mapper.deserialize(mapper, response, opts); } if (opts.raw) { return response; @@ -733,11 +619,12 @@ return /******/ (function(modules) { // webpackBootstrap } }, + /** * Make an Http request using `window.fetch`. * - * @memberof DSHttpAdapter - * @instance + * @name HttpAdapter + * @method * @param {Object} config Request configuration. * @param {Object} config.data Payload for the request. * @param {string} config.method Http method for the request. @@ -773,85 +660,92 @@ return /******/ (function(modules) { // webpackBootstrap }); }), + /** - * Retrieve the entity with the given primary key. - * - * {@link DSHttpAdapter#beforeFind} will be called before calling - * {@link DSHttpAdapter#GET}. - * {@link DSHttpAdapter#afterFind} will be called after calling - * {@link DSHttpAdapter#GET}. + * Retrieve the record with the given primary key. * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The Model. - * @param {(string|number)} id Primary key of the entity to retrieve. + * @name HttpAdapter#find + * @method + * @param {Object} mapper The mapper. + * @param {(string|number)} id Primary key of the record to retrieve. * @param {Object} [opts] Configuration options. * @param {string} [opts.params] TODO - * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO * @return {Promise} */ - find: function find(Model, id, opts) { + find: function find(mapper, id, opts) { var self = this; + var op = undefined; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); - opts.params = self.queryTransform(Model, opts.params, opts); - opts.suffix || (opts.suffix = Model.suffix); - opts.op = 'find'; - self.dbg(opts.op, Model, id, opts); - return resolve(self.beforeFind(Model, id, opts)).then(function () { - return self.GET(self.getPath('find', Model, id, opts), opts); + opts.params = self.queryTransform(mapper, opts.params, opts); + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; + + // beforeFind lifecycle hook + op = opts.op = 'beforeFind'; + return resolve(self[op](mapper, id, opts)).then(function () { + op = opts.op = 'find'; + self.dbg(op, mapper, id, opts); + return self.GET(self.getPath('find', mapper, id, opts), opts); }).then(function (response) { - return self.deserialize(Model, response, opts); + return self.deserialize(mapper, response, opts); }).then(function (data) { - return resolve(self.afterFind(Model, id, opts, data)).then(function (_data) { - return _data || data; + // afterFind lifecycle hook + op = opts.op = 'afterFind'; + return resolve(self[op](mapper, id, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data; }); }); }, + /** - * Retrieve the entities that match the selection `query`. - * - * {@link DSHttpAdapter#beforeFindAll} will be called before calling - * {@link DSHttpAdapter#GET}. - * {@link DSHttpAdapter#afterFindAll} will be called after calling - * {@link DSHttpAdapter#GET}. + * Retrieve the records that match the selection `query`. * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The Model. + * @name HttpAdapter#findAll + * @method + * @param {Object} mapper The mapper. * @param {Object} query Selection query. * @param {Object} [opts] Configuration options. * @param {string} [opts.params] TODO - * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO * @return {Promise} */ - findAll: function findAll(Model, query, opts) { + findAll: function findAll(mapper, query, opts) { var self = this; + var op = undefined; query || (query = {}); opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); - opts.suffix || (opts.suffix = Model.suffix); - opts.op = 'findAll'; - self.dbg(opts.op, Model, query, opts); + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; deepMixIn(opts.params, query); - opts.params = self.queryTransform(Model, opts.params, opts); - return resolve(self.beforeFindAll(Model, query, opts)).then(function () { - return self.GET(self.getPath('findAll', Model, opts.params, opts), opts); + opts.params = self.queryTransform(mapper, opts.params, opts); + + // beforeFindAll lifecycle hook + op = opts.op = 'beforeFindAll'; + return resolve(self[op](mapper, query, opts)).then(function () { + op = opts.op = 'findAll'; + self.dbg(op, mapper, query, opts); + return self.GET(self.getPath('findAll', mapper, opts.params, opts), opts); }).then(function (response) { - return self.deserialize(Model, response, opts); + return self.deserialize(mapper, response, opts); }).then(function (data) { - return resolve(self.afterFindAll(Model, query, opts, data)).then(function (_data) { - return _data || data; + // afterFindAll lifecycle hook + op = opts.op = 'afterFindAll'; + return resolve(self[op](mapper, query, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data; }); }); }, + /** - * { function_description } + * TODO * - * @memberof DSHttpAdapter - * @instance + * @name HttpAdapter#GET + * @method * @param {string} url The url for the request. * @param {Object} config Request configuration options. * @param {Object} [opts] Configuration options. @@ -859,38 +753,50 @@ return /******/ (function(modules) { // webpackBootstrap */ GET: function GET(url, config, opts) { var self = this; + var op = undefined; config || (config = {}); + opts || (opts = {}); config.url = url || config.url; config.method = config.method || 'get'; - return resolve(self.beforeGET(url, config, opts)).then(function (_config) { - config = _config || config; + + // beforeGET lifecycle hook + op = opts.op = 'beforeGET'; + return resolve(self[op](url, config, opts)).then(function (_config) { + // Allow re-assignment from lifecycle hook + config = isUndefined(_config) ? config : _config; + op = opts.op = 'GET'; + self.dbg(op, url, config, opts); return self.HTTP(config, opts); }).then(function (response) { - return resolve(self.afterGET(url, config, opts, response)).then(function (_response) { - return _response || response; + // afterGET lifecycle hook + op = opts.op = 'afterGET'; + return resolve(self[op](url, config, opts, response)).then(function (_response) { + // Allow re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; }); }); }, + /** - * @memberof DSHttpAdapter - * @instance - * @param {*} Model { description } - * @param {*} id { description } - * @param {boolean} opts { description } + * @name HttpAdapter#getEndpoint + * @method + * @param {Object} mapper TODO + * @param {*} id TODO + * @param {boolean} opts TODO * @return {string} Full path. */ - getEndpoint: function getEndpoint(Model, id, opts) { + getEndpoint: function getEndpoint(mapper, id, opts) { var _this = this; opts || (opts = {}); opts.params || (opts.params = {}); var item = undefined; - var parentKey = Model.parentKey; - var endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : Model.endpoint; - var parentField = Model.parentField; - var parentDef = Model.parent ? Model.getResource(Model.parent) : undefined; + var parentKey = mapper.parentKey; + var endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : mapper.endpoint; + var parentField = mapper.parentField; + var parentDef = mapper.parent ? mapper.getResource(mapper.parent) : undefined; var parentId = opts.params[parentKey]; if (parentId === false || !parentKey || !parentDef) { @@ -1092,7 +998,7 @@ return /******/ (function(modules) { // webpackBootstrap if (level === 'debug' && !this.debug) { return; } - var prefix = level.toUpperCase() + ': (' + this.name + ')'; + var prefix = level.toUpperCase() + ': (HttpAdapter)'; if (console[level]) { var _console2; @@ -1104,177 +1010,220 @@ return /******/ (function(modules) { // webpackBootstrap } }, + /** - * { function_description } + * TODO * - * @memberof DSHttpAdapter - * @instance - * @param {*} url { description } - * @param {*} data { description } - * @param {*} config { description } + * @name HttpAdapter#POST + * @method + * @param {*} url TODO + * @param {Object} data TODO + * @param {Object} config TODO * @param {Object} [opts] Configuration options. * @return {Promise} */ POST: function POST(url, data, config, opts) { var self = this; + var op = undefined; config || (config = {}); + opts || (opts = {}); config.url = url || config.url; config.data = data || config.data; config.method = config.method || 'post'; - return resolve(self.beforePOST(url, data, config, opts)).then(function (_config) { - config = _config || config; + + // beforePOST lifecycle hook + op = opts.op = 'beforePOST'; + return resolve(self[op](url, data, config, opts)).then(function (_config) { + // Allow re-assignment from lifecycle hook + config = isUndefined(_config) ? config : _config; + op = opts.op = 'POST'; + self.dbg(op, url, data, config, opts); return self.HTTP(config, opts); }).then(function (response) { - return resolve(self.afterPOST(url, data, config, opts, response)).then(function (_response) { - return _response || response; + // afterPOST lifecycle hook + op = opts.op = 'afterPOST'; + return resolve(self[op](url, data, config, opts, response)).then(function (_response) { + // Allow re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; }); }); }, + /** - * { function_description } + * TODO * - * @memberof DSHttpAdapter - * @instance - * @param {*} url { description } - * @param {*} data { description } - * @param {*} config { description } + * @name HttpAdapter#PUT + * @method + * @param {*} url TODO + * @param {Object} data TODO + * @param {Object} config TODO * @param {Object} [opts] Configuration options. * @return {Promise} */ PUT: function PUT(url, data, config, opts) { var self = this; + var op = undefined; config || (config = {}); + opts || (opts = {}); config.url = url || config.url; config.data = data || config.data; config.method = config.method || 'put'; - return resolve(self.beforePUT(url, data, config, opts)).then(function (_config) { - config = _config || config; + + // beforePUT lifecycle hook + op = opts.op = 'beforePUT'; + return resolve(self[op](url, data, config, opts)).then(function (_config) { + // Allow re-assignment from lifecycle hook + config = isUndefined(_config) ? config : _config; + op = opts.op = 'PUT'; + self.dbg(op, url, data, config, opts); return self.HTTP(config, opts); }).then(function (response) { - return resolve(self.afterPUT(url, data, config, opts, response)).then(function (_response) { - return _response || response; + // afterPUT lifecycle hook + op = opts.op = 'afterPUT'; + return resolve(self[op](url, data, config, opts, response)).then(function (_response) { + // Allow re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; }); }); }, + /** - * { function_description } + * TODO * - * @memberof DSHttpAdapter - * @instance - * @param {*} Model { description } - * @param {*} params { description } - * @param {*} opts { description } + * @name HttpAdapter#queryTransform + * @method + * @param {Object} mapper TODO + * @param {*} params TODO + * @param {*} opts TODO * @return {*} Transformed params. */ - queryTransform: function queryTransform(Model, params, opts) { + queryTransform: function queryTransform(mapper, params, opts) { opts || (opts = {}); if (isFunction(opts.queryTransform)) { - return opts.queryTransform(Model, params, opts); + return opts.queryTransform(mapper, params, opts); } - if (isFunction(Model.queryTransform)) { - return Model.queryTransform(Model, params, opts); + if (isFunction(mapper.queryTransform)) { + return mapper.queryTransform(mapper, params, opts); } return params; }, + /** - * Error handler invoked when the promise returned by {@link DSHttpAdapter#http} + * Error handler invoked when the promise returned by {@link HttpAdapter#http} * is rejected. Default implementation is to just return the error wrapped in - * a rejected Promise, aka rethrow the error. {@link DSHttpAdapter#http} is - * called by {@link DSHttpAdapter#HTTP}. + * a rejected Promise, aka rethrow the error. {@link HttpAdapter#http} is + * called by {@link HttpAdapter#HTTP}. * - * @memberof DSHttpAdapter - * @instance - * @param {*} err The error that {@link DSHttpAdapter#http} rejected with. - * @param {*} config The `config` argument that was passed to {@link DSHttpAdapter#HTTP}. - * @param {*} opts The `opts` argument that was passed to {@link DSHttpAdapter#HTTP}. + * @name HttpAdapter#responseError + * @method + * @param {*} err The error that {@link HttpAdapter#http} rejected with. + * @param {Object} config The `config` argument that was passed to {@link HttpAdapter#HTTP}. + * @param {*} opts The `opts` argument that was passed to {@link HttpAdapter#HTTP}. * @return {Promise} */ responseError: function responseError(err, config, opts) { return reject(err); }, + /** - * { function_description } + * TODO * - * @memberof DSHttpAdapter - * @instance - * @param {*} Model { description } - * @param {*} data { description } - * @param {*} opts { description } + * @name HttpAdapter#serialize + * @method + * @param {Object} mapper TODO + * @param {Object} data TODO + * @param {*} opts TODO * @return {*} Serialized data. */ - serialize: function serialize(Model, data, opts) { + serialize: function serialize(mapper, data, opts) { opts || (opts = {}); if (isFunction(opts.serialize)) { - return opts.serialize(Model, data, opts); + return opts.serialize(mapper, data, opts); } - if (isFunction(Model.serialize)) { - return Model.serialize(Model, data, opts); + if (isFunction(mapper.serialize)) { + return mapper.serialize(mapper, data, opts); } return data; }, + /** - * { function_description } + * TODO * - * @memberof DSHttpAdapter - * @instance - * @param {*} Model { description } - * @param {*} id { description } - * @param {*} props { description } + * @name HttpAdapter#update + * @method + * @param {Object} mapper TODO + * @param {*} id TODO + * @param {*} props TODO * @param {Object} [opts] Configuration options. * @return {Promise} */ - update: function update(Model, id, props, opts) { + update: function update(mapper, id, props, opts) { var self = this; + var op = undefined; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); - opts.params = self.queryTransform(Model, opts.params, opts); - opts.suffix || (opts.suffix = Model.suffix); - opts.op = 'update'; - self.dbg(opts.op, Model, id, props, opts); - return resolve(self.beforeUpdate(Model, id, props, opts)).then(function () { - return self.PUT(self.getPath('update', Model, id, opts), self.serialize(Model, props, opts), opts); + opts.params = self.queryTransform(mapper, opts.params, opts); + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; + + // beforeUpdate lifecycle hook + op = opts.op = 'beforeUpdate'; + return resolve(self[op](mapper, id, props, opts)).then(function () { + op = opts.op = 'update'; + self.dbg(op, mapper, id, props, opts); + return self.PUT(self.getPath('update', mapper, id, opts), self.serialize(mapper, props, opts), opts); }).then(function (response) { - return self.deserialize(Model, response, opts); + return self.deserialize(mapper, response, opts); }).then(function (data) { - return resolve(self.afterUpdate(Model, id, props, opts, data)).then(function (_data) { - return _data || data; + // afterUpdate lifecycle hook + op = opts.op = 'afterUpdate'; + return resolve(self[op](mapper, id, props, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data; }); }); }, + /** - * { function_description } + * TODO * - * @memberof DSHttpAdapter - * @instance - * @param {*} Model { description } - * @param {*} props { description } - * @param {*} query { description } + * @name HttpAdapter#updateAll + * @method + * @param {Object} mapper TODO + * @param {Object} props TODO + * @param {Object} query TODO * @param {Object} [opts] Configuration options. * @return {Promise} */ - updateAll: function updateAll(Model, props, query, opts) { + updateAll: function updateAll(mapper, props, query, opts) { var self = this; + var op = undefined; query || (query = {}); opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); deepMixIn(opts.params, query); - opts.params = self.queryTransform(Model, opts.params, opts); - opts.suffix || (opts.suffix = Model.suffix); - opts.op = 'updateAll'; - self.dbg(opts.op, Model, props, query, opts); - return resolve(self.beforeUpdateAll(Model, props, query, opts)).then(function () { - return self.PUT(self.getPath('updateAll', Model, null, opts), self.serialize(Model, props, opts), opts); + opts.params = self.queryTransform(mapper, opts.params, opts); + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; + + // beforeUpdateAll lifecycle hook + op = opts.op = 'beforeUpdateAll'; + return resolve(self[op](mapper, props, query, opts)).then(function () { + op = opts.op = 'updateAll'; + self.dbg(op, mapper, props, query, opts); + return self.PUT(self.getPath('updateAll', mapper, null, opts), self.serialize(mapper, props, opts), opts); }).then(function (response) { - return self.deserialize(Model, response, opts); + return self.deserialize(mapper, response, opts); }).then(function (data) { - return resolve(self.afterUpdateAll(Model, props, query, opts, data)).then(function (_data) { - return _data || data; + // afterUpdateAll lifecycle hook + op = opts.op = 'afterUpdateAll'; + return resolve(self[op](mapper, props, query, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data; }); } }]); @@ -1283,11 +1232,11 @@ return /******/ (function(modules) { // webpackBootstrap }(); /** - * Alternative to ES6 class syntax for extending `DSHttpAdapter`. + * Alternative to ES6 class syntax for extending `HttpAdapter`. * * __ES6__: * ```javascript - * class MyHttpAdapter extends DSHttpAdapter { + * class MyHttpAdapter extends HttpAdapter { * deserialize (Model, data, opts) { * const data = super.deserialize(Model, data, opts) * data.foo = 'bar' @@ -1314,26 +1263,26 @@ return /******/ (function(modules) { // webpackBootstrap * yell: function () { return 'HI' } * } * - * var MyHttpAdapter = DSHttpAdapter.extend(instanceProps, classProps) + * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps) * var adapter = new MyHttpAdapter() * adapter.say() // "hi" * MyHttpAdapter.yell() // "HI" * ``` * - * @name DSHttpAdapter.extend + * @name HttpAdapter.extend * @method * @param {Object} [instanceProps] Properties that will be added to the * prototype of the subclass. * @param {Object} [classProps] Properties that will be added as static * properties to the subclass itself. - * @return {Object} Subclass of `DSHttpAdapter`. + * @return {Object} Subclass of `HttpAdapter`. */ - DSHttpAdapter.extend = extend; + HttpAdapter.extend = extend; /** * Details of the current version of the `js-data-http` module. * - * @name DSHttpAdapter.version + * @name HttpAdapter.version * @type {Object} * @property {string} version.full The full semver value. * @property {number} version.major The major version number. @@ -1361,25 +1310,25 @@ return /******/ (function(modules) { // webpackBootstrap * * __Script tag__: * ```javascript - * window.DSHttpAdapter + * window.HttpAdapter * ``` * __CommonJS__: * ```javascript - * var DSHttpAdapter = require('js-data-http') + * var HttpAdapter = require('js-data-http') * ``` * __ES6 Modules__: * ```javascript - * import DSHttpAdapter from 'js-data-http' + * import HttpAdapter from 'js-data-http' * ``` * __AMD__: * ```javascript - * define('myApp', ['js-data-http'], function (DSHttpAdapter) { ... }) + * define('myApp', ['js-data-http'], function (HttpAdapter) { ... }) * ``` * * @module js-data-http */ - module.exports = DSHttpAdapter; + module.exports = HttpAdapter; /***/ }, /* 1 */ @@ -1406,15 +1355,10 @@ return /******/ (function(modules) { // webpackBootstrap var isAbsoluteURL = __webpack_require__(16); var combineURLs = __webpack_require__(17); var bind = __webpack_require__(18); + var transformData = __webpack_require__(11); function Axios(defaultConfig) { - this.defaultConfig = utils.merge({ - headers: {}, - timeout: defaults.timeout, - transformRequest: defaults.transformRequest, - transformResponse: defaults.transformResponse - }, defaultConfig); - + this.defaults = utils.merge({}, defaultConfig); this.interceptors = { request: new InterceptorManager(), response: new InterceptorManager() @@ -1430,14 +1374,36 @@ return /******/ (function(modules) { // webpackBootstrap }, arguments[1]); } - config = utils.merge(this.defaultConfig, { method: 'get' }, config); + config = utils.merge(defaults, this.defaults, { method: 'get' }, config); + // Support baseURL config if (config.baseURL && !isAbsoluteURL(config.url)) { config.url = combineURLs(config.baseURL, config.url); } // Don't allow overriding defaults.withCredentials - config.withCredentials = config.withCredentials || defaults.withCredentials; + config.withCredentials = config.withCredentials || this.defaults.withCredentials; + + // Transform request data + config.data = transformData( + config.data, + config.headers, + config.transformRequest + ); + + // Flatten headers + config.headers = utils.merge( + config.headers.common || {}, + config.headers[config.method] || {}, + config.headers || {} + ); + + utils.forEach( + ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], + function cleanHeaderConfig(method) { + delete config.headers[method]; + } + ); // Hook up interceptors middleware var chain = [dispatchRequest, undefined]; @@ -1458,8 +1424,7 @@ return /******/ (function(modules) { // webpackBootstrap return promise; }; - var defaultInstance = new Axios(); - + var defaultInstance = new Axios(defaults); var axios = module.exports = bind(Axios.prototype.request, defaultInstance); axios.create = function create(defaultConfig) { @@ -1467,7 +1432,7 @@ return /******/ (function(modules) { // webpackBootstrap }; // Expose defaults - axios.defaults = defaults; + axios.defaults = defaultInstance.defaults; // Expose all/spread axios.all = function all(promises) { @@ -1790,7 +1755,11 @@ return /******/ (function(modules) { // webpackBootstrap function merge(/* obj1, obj2, obj3, ... */) { var result = {}; function assignValue(val, key) { - result[key] = val; + if (typeof result[key] === 'object' && typeof val === 'object') { + result[key] = merge(result[key], val); + } else { + result[key] = val; + } } for (var i = 0, l = arguments.length; i < l; i++) { @@ -1834,12 +1803,21 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = function dispatchRequest(config) { return new Promise(function executor(resolve, reject) { try { - if ((typeof XMLHttpRequest !== 'undefined') || (typeof ActiveXObject !== 'undefined')) { + var adapter; + + if (typeof config.adapter === 'function') { + // For custom adapter support + adapter = config.adapter; + } else if (typeof XMLHttpRequest !== 'undefined') { // For browsers use XHR adapter - __webpack_require__(8)(resolve, reject, config); + adapter = __webpack_require__(8); } else if (typeof process !== 'undefined') { // For node use HTTP adapter - __webpack_require__(8)(resolve, reject, config); + adapter = __webpack_require__(8); + } + + if (typeof adapter === 'function') { + adapter(resolve, reject, config); } } catch (e) { reject(e); @@ -1953,9 +1931,6 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - /*global ActiveXObject:true*/ - - var defaults = __webpack_require__(4); var utils = __webpack_require__(5); var buildURL = __webpack_require__(9); var parseHeaders = __webpack_require__(10); @@ -1964,33 +1939,19 @@ return /******/ (function(modules) { // webpackBootstrap var btoa = window.btoa || __webpack_require__(13); module.exports = function xhrAdapter(resolve, reject, config) { - // Transform request data - var data = transformData( - config.data, - config.headers, - config.transformRequest - ); - - // Merge headers - var requestHeaders = utils.merge( - defaults.headers.common, - defaults.headers[config.method] || {}, - config.headers || {} - ); + var requestData = config.data; + var requestHeaders = config.headers; - if (utils.isFormData(data)) { + if (utils.isFormData(requestData)) { delete requestHeaders['Content-Type']; // Let the browser set it } - var Adapter = (XMLHttpRequest || ActiveXObject); - var loadEvent = 'onreadystatechange'; - var xDomain = false; + var request = new XMLHttpRequest(); // For IE 8/9 CORS support - if (!isURLSameOrigin(config.url) && window.XDomainRequest) { - Adapter = window.XDomainRequest; - loadEvent = 'onload'; - xDomain = true; + // Only supports POST and GET calls and doesn't returns the response headers. + if (window.XDomainRequest && !('withCredentials' in request) && !isURLSameOrigin(config.url)) { + request = new window.XDomainRequest(); } // HTTP basic authentication @@ -2000,38 +1961,50 @@ return /******/ (function(modules) { // webpackBootstrap requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password); } - // Create the request - var request = new Adapter('Microsoft.XMLHTTP'); request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true); // Set the request timeout in MS request.timeout = config.timeout; // Listen for ready state - request[loadEvent] = function handleReadyState() { - if (request && (request.readyState === 4 || xDomain)) { - // Prepare the response - var responseHeaders = xDomain ? null : parseHeaders(request.getAllResponseHeaders()); - var responseData = ['text', ''].indexOf(config.responseType || '') !== -1 ? request.responseText : request.response; - var response = { - data: transformData( - responseData, - responseHeaders, - config.transformResponse - ), - status: request.status, - statusText: request.statusText, - headers: responseHeaders, - config: config - }; - // Resolve or reject the Promise based on the status - ((request.status >= 200 && request.status < 300) || (xDomain && request.responseText) ? - resolve : - reject)(response); - - // Clean up request - request = null; + request.onload = function handleLoad() { + if (!request) { + return; } + // Prepare the response + var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null; + var responseData = ['text', ''].indexOf(config.responseType || '') !== -1 ? request.responseText : request.response; + var response = { + data: transformData( + responseData, + responseHeaders, + config.transformResponse + ), + // IE sends 1223 instead of 204 (https://github.com/mzabriskie/axios/issues/201) + status: request.status === 1223 ? 204 : request.status, + statusText: request.status === 1223 ? 'No Content' : request.statusText, + headers: responseHeaders, + config: config + }; + + // Resolve or reject the Promise based on the status + ((response.status >= 200 && response.status < 300) || + (!('status' in request) && response.responseText) ? + resolve : + reject)(response); + + // Clean up request + request = null; + }; + + // Handle low level network errors + request.onerror = function handleError() { + // Real errors are hidden from us by the browser + // onerror should only fire if it's a network error + reject(new Error('Network Error')); + + // Clean up request + request = null; }; // Add xsrf header @@ -2041,19 +2014,19 @@ return /******/ (function(modules) { // webpackBootstrap var cookies = __webpack_require__(14); // Add xsrf header - var xsrfValue = config.withCredentials || isURLSameOrigin(config.url) ? - cookies.read(config.xsrfCookieName || defaults.xsrfCookieName) : + var xsrfValue = config.withCredentials || isURLSameOrigin(config.url) ? + cookies.read(config.xsrfCookieName) : undefined; if (xsrfValue) { - requestHeaders[config.xsrfHeaderName || defaults.xsrfHeaderName] = xsrfValue; + requestHeaders[config.xsrfHeaderName] = xsrfValue; } } // Add headers to the request - if (!xDomain) { + if ('setRequestHeader' in request) { utils.forEach(requestHeaders, function setRequestHeader(val, key) { - if (!data && key.toLowerCase() === 'content-type') { + if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') { // Remove Content-Type if data is undefined delete requestHeaders[key]; } else { @@ -2079,12 +2052,12 @@ return /******/ (function(modules) { // webpackBootstrap } } - if (utils.isArrayBuffer(data)) { - data = new DataView(data); + if (utils.isArrayBuffer(requestData)) { + requestData = new DataView(requestData); } // Send the request - request.send(data); + request.send(requestData); }; diff --git a/fetch/dist/js-data-fetch.js b/fetch/dist/js-data-fetch.js index 871af05..9036bda 100644 --- a/fetch/dist/js-data-fetch.js +++ b/fetch/dist/js-data-fetch.js @@ -1,6 +1,6 @@ /*! * js-data-fetch -* @version 3.0.0-alpha.3 - Homepage +* @version 3.0.0-alpha.4 - Homepage * @author Jason Dobry * @copyright (c) 2014-2016 Jason Dobry * @license MIT @@ -13,9 +13,9 @@ else if(typeof define === 'function' && define.amd) define(["js-data", "undefined"], factory); else if(typeof exports === 'object') - exports["DSHttpAdapter"] = factory(require("js-data"), require("undefined")); + exports["HttpAdapter"] = factory(require("js-data"), require("undefined")); else - root["DSHttpAdapter"] = factory(root["JSData"], root["undefined"]); + root["HttpAdapter"] = factory(root["JSData"], root["undefined"]); })(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_2__) { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache @@ -72,6 +72,7 @@ return /******/ (function(modules) { // webpackBootstrap /* global fetch:true Headers:true Request:true */ var axios = __webpack_require__(2); var _ = _jsData.utils._; + var addHiddenPropsToTarget = _jsData.utils.addHiddenPropsToTarget; var copy = _jsData.utils.copy; var deepMixIn = _jsData.utils.deepMixIn; var extend = _jsData.utils.extend; @@ -83,10 +84,12 @@ return /******/ (function(modules) { // webpackBootstrap var isObject = _jsData.utils.isObject; var isSorN = _jsData.utils.isSorN; var isString = _jsData.utils.isString; + var isUndefined = _jsData.utils.isUndefined; var resolve = _jsData.utils.resolve; var reject = _jsData.utils.reject; var toJson = _jsData.utils.toJson; + var hasFetch = false; try { @@ -145,638 +148,522 @@ return /******/ (function(modules) { // webpackBootstrap return url; } - /** - * DSHttpAdapter class. - * @class DSHttpAdapter - * @alias DSHttpAdapter - * - * @param {Object} [opts] Configuration options. - * @param {string} [opts.basePath=''] - * @param {boolean} [opts.debug=false] - * @param {boolean} [opts.forceTrailingSlash=false] - * @param {Object} [opts.http=axios] - * @param {Object} [opts.httpConfig={}] - * @param {string} [opts.suffix=''] - * @param {boolean} [opts.useFetch=false] - */ - function DSHttpAdapter(opts) { + var noop = function noop() { var self = this; - // Default values for arguments - opts || (opts = {}); + for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + + var opts = args[args.length - 1]; + self.dbg.apply(self, [opts.op].concat(args)); + }; + + var noop2 = function noop2() { + var self = this; + + for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { + args[_key3] = arguments[_key3]; + } + + var opts = args[args.length - 2]; + self.dbg.apply(self, [opts.op].concat(args)); + }; + var DEFAULTS = { // Default and user-defined settings /** - * @name DSHttpAdapter#basePath + * @name HttpAdapter#basePath * @type {string} */ - self.basePath = opts.basePath === undefined ? '' : opts.basePath; + basePath: '', /** - * @name DSHttpAdapter#debug + * @name HttpAdapter#debug * @type {boolean} * @default false */ - self.debug = opts.debug === undefined ? false : opts.debug; + debug: false, /** - * @name DSHttpAdapter#forceTrailingSlash + * @name HttpAdapter#forceTrailingSlash * @type {boolean} * @default false */ - self.forceTrailingSlash = opts.forceTrailingSlash === undefined ? false : opts.forceTrailingSlash; + forceTrailingSlash: false, /** - * @name DSHttpAdapter#http + * @name HttpAdapter#http * @type {Function} */ - self.http = opts.http === undefined ? axios : opts.http; + http: axios, /** - * @name DSHttpAdapter#httpConfig + * @name HttpAdapter#httpConfig * @type {Object} */ - self.httpConfig = opts.httpConfig === undefined ? {} : opts.httpConfig; + httpConfig: {}, /** - * @name DSHttpAdapter#suffix + * @name HttpAdapter#suffix * @type {string} */ - self.suffix = opts.suffix === undefined ? '' : opts.suffix; + suffix: '', /** - * @name DSHttpAdapter#useFetch + * @name HttpAdapter#useFetch * @type {boolean} * @default false */ - self.useFetch = opts.useFetch === undefined ? false : opts.useFetch; + useFetch: false + }; + + /** + * HttpAdapter class. + * + * @class HttpAdapter + * @param {Object} [opts] Configuration options. + * @param {string} [opts.basePath=''] TODO + * @param {boolean} [opts.debug=false] TODO + * @param {boolean} [opts.forceTrailingSlash=false] TODO + * @param {Object} [opts.http=axios] TODO + * @param {Object} [opts.httpConfig={}] TODO + * @param {string} [opts.suffix=''] TODO + * @param {boolean} [opts.useFetch=false] TODO + */ + function HttpAdapter(opts) { + var self = this; + + // Default values for arguments + opts || (opts = {}); + + fillIn(self, opts); + fillIn(self, DEFAULTS); } - fillIn(DSHttpAdapter.prototype, { + addHiddenPropsToTarget(HttpAdapter.prototype, { /** - * Lifecycle hook called by {@link DSHttpAdapter#create}. If this method - * returns a promise then {@link DSHttpAdapter#create} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#create} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#create}. - * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#create}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#create}. - * @param {Object} data The `data` value that {@link DSHttpAdapter#create} will return. + * @name HttpAdapter#afterCreate + * @method + * @param {Object} mapper + * @param {Object} props + * @param {Object} opts + * @param {Object} data */ - - afterCreate: function afterCreate() {}, + afterCreate: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#createMany}. If this method - * returns a promise then {@link DSHttpAdapter#createMany} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#createMany} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#createMany}. - * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#createMany}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#createMany}. - * @param {Object} data The `data` value that {@link DSHttpAdapter#createMany} will return. + * @name HttpAdapter#afterCreateMany + * @method + * @param {Object} mapper + * @param {Object} records + * @param {Object} opts + * @param {Object} data */ - afterCreateMany: function afterCreateMany() {}, + afterCreateMany: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#DEL}. If this method - * returns a promise then {@link DSHttpAdapter#DEL} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#DEL} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {string} url The `url` argument passed to {@link DSHttpAdapter#DEL}. - * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#DEL}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#DEL}. - * @param {Object} response The `response` value that {@link DSHttpAdapter#DEL} will return. + * @name HttpAdapter#afterDEL + * @method + * @param {string} url + * @param {Object} config + * @param {Object} opts + * @param {Object} response */ - afterDEL: function afterDEL() {}, + afterDEL: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#destroy}. If this method - * returns a promise then {@link DSHttpAdapter#destroy} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#destroy} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroy}. - * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#destroy}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroy}. - * @param {Object} data The `data` value that {@link DSHttpAdapter#destroy} will return. + * @name HttpAdapter#afterDestroy + * @method + * @param {Object} mapper + * @param {(string|number)} id + * @param {Object} opts + * @param {Object} data */ - afterDestroy: function afterDestroy() {}, + afterDestroy: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#destroyAll}. If this method - * returns a promise then {@link DSHttpAdapter#destroyAll} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#destroyAll} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroyAll}. - * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#destroyAll}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroyAll}. - * @param {Object} data The `data` value that {@link DSHttpAdapter#destroyAll} will return. + * @name HttpAdapter#afterDestroyAll + * @method + * @param {Object} mapper + * @param {(string|number)} id + * @param {Object} opts + * @param {Object} data */ - afterDestroyAll: function afterDestroyAll() {}, + afterDestroyAll: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#find}. If this method - * returns a promise then {@link DSHttpAdapter#find} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#find} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#find}. - * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#find}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#find}. - * @param {Object} data The `data` value that {@link DSHttpAdapter#find} will return. + * @name HttpAdapter#afterFind + * @method + * @param {Object} mapper + * @param {(string|number)} id + * @param {Object} opts + * @param {Object} data */ - afterFind: function afterFind() {}, + afterFind: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#findAll}. If this method - * returns a promise then {@link DSHttpAdapter#findAll} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#findAll} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#findAll}. - * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#findAll}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#findAll}. - * @param {Object} data The `data` value that {@link DSHttpAdapter#findAll} will return. + * @name HttpAdapter#afterFindAll + * @method + * @param {Object} mapper + * @param {(string|number)} id + * @param {Object} opts + * @param {Object} data */ - afterFindAll: function afterFindAll() {}, + afterFindAll: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#GET}. If this method - * returns a promise then {@link DSHttpAdapter#GET} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#GET} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {string} url The `url` argument passed to {@link DSHttpAdapter#GET}. - * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#GET}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#GET}. - * @param {Object} response The `response` value that {@link DSHttpAdapter#GET} will return. + * @name HttpAdapter#afterGET + * @method + * @param {string} url + * @param {Object} config + * @param {Object} opts + * @param {Object} response */ - afterGET: function afterGET() {}, + afterGET: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#HTTP}. If this method - * returns a promise then {@link DSHttpAdapter#HTTP} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#HTTP} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#HTTP}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#HTTP}. - * @param {Object} response The `response` value that {@link DSHttpAdapter#HTTP} will return. + * @name HttpAdapter#afterHTTP + * @method + * @param {Object} config + * @param {Object} opts + * @param {Object} response */ - afterHTTP: function afterHTTP() {}, + afterHTTP: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#POST}. If this method - * returns a promise then {@link DSHttpAdapter#POST} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#POST} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {string} url The `url` argument passed to {@link DSHttpAdapter#POST}. - * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#POST}. - * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#POST}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#POST}. - * @param {Object} response The `response` value that {@link DSHttpAdapter#POST} will return. + * @name HttpAdapter#afterPOST + * @method + * @param {string} url + * @param {Object} data + * @param {Object} config + * @param {Object} opts + * @param {Object} response */ - afterPOST: function afterPOST() {}, + afterPOST: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#PUT}. If this method - * returns a promise then {@link DSHttpAdapter#PUT} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#PUT} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {string} url The `url` argument passed to {@link DSHttpAdapter#PUT}. - * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#PUT}. - * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#PUT}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#PUT}. - * @param {Object} response The `response` value that {@link DSHttpAdapter#PUT} will return. + * @name HttpAdapter#afterPUT + * @method + * @param {string} url + * @param {Object} data + * @param {Object} config + * @param {Object} opts + * @param {Object} response */ - afterPUT: function afterPUT() {}, + afterPUT: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#update}. If this method - * returns a promise then {@link DSHttpAdapter#update} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#update} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#update}. - * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#update}. - * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#update}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#update}. - * @param {Object} data The `data` value that {@link DSHttpAdapter#update} will return. + * @name HttpAdapter#afterUpdate + * @method + * @param {Object} mapper + * @param {(string|number)} id + * @param {Object} props + * @param {Object} opts + * @param {Object} data */ - afterUpdate: function afterUpdate() {}, + afterUpdate: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#updateAll}. If this method - * returns a promise then {@link DSHttpAdapter#updateAll} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#updateAll} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateAll}. - * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#updateAll}. - * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#updateAll}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateAll}. - * @param {Object} data The `data` value that {@link DSHttpAdapter#updateAll} will return. + * @name HttpAdapter#afterUpdateAll + * @method + * @param {Object} mapper + * @param {Object} props + * @param {Object} query + * @param {Object} opts + * @param {Object} data */ - afterUpdateAll: function afterUpdateAll() {}, + afterUpdateAll: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#updateMany}. If this method - * returns a promise then {@link DSHttpAdapter#updateMany} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#updateMany} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateMany}. - * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#updateMany}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateMany}. - * @param {Object} data The `data` value that {@link DSHttpAdapter#updateMany} will return. + * @name HttpAdapter#afterUpdateMany + * @method + * @param {Object} mapper + * @param {Object} records + * @param {Object} opts + * @param {Object} data */ - afterUpdateMany: function afterUpdateMany() {}, + afterUpdateMany: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#create}. If this method - * returns a promise then {@link DSHttpAdapter#create} will wait for the - * promise to resolve before continuing. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#create}. - * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#create}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#create}. + * @name HttpAdapter#beforeCreate + * @method + * @param {Object} mapper + * @param {Object} props + * @param {Object} opts */ - beforeCreate: function beforeCreate() {}, + beforeCreate: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#createMany}. If this method - * returns a promise then {@link DSHttpAdapter#createMany} will wait for the - * promise to resolve before continuing. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#createMany}. - * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#createMany}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#createMany}. + * @name HttpAdapter#beforeCreateMany + * @method + * @param {Object} mapper + * @param {Object} records + * @param {Object} opts */ - beforeCreateMany: function beforeCreateMany() {}, + beforeCreateMany: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#DEL}. If this method - * returns a promise then {@link DSHttpAdapter#DEL} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#create} - * will resolve with that same value, then the `config` argument passed to - * {@link DSHttpAdapter#DEL} will be replaced by the value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#DEL}. - * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#DEL}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#DEL}. + * @name HttpAdapter#beforeDEL + * @method + * @param {Object} url + * @param {Object} config + * @param {Object} opts */ - beforeDEL: function beforeDEL() {}, + beforeDEL: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#destroy}. If this method - * returns a promise then {@link DSHttpAdapter#destroy} will wait for the - * promise to resolve before continuing. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroy}. - * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#destroy}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroy}. + * @name HttpAdapter#beforeDestroy + * @method + * @param {Object} mapper + * @param {(string|number)} id + * @param {Object} opts */ - beforeDestroy: function beforeDestroy() {}, + beforeDestroy: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#destroyAll}. If this method - * returns a promise then {@link DSHttpAdapter#destroyAll} will wait for the - * promise to resolve before continuing. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroyAll}. - * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#destroyAll}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroyAll}. + * @name HttpAdapter#beforeDestroyAll + * @method + * @param {Object} mapper + * @param {Object} query + * @param {Object} opts */ - beforeDestroyAll: function beforeDestroyAll() {}, + beforeDestroyAll: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#find}. If this method - * returns a promise then {@link DSHttpAdapter#find} will wait for the - * promise to resolve before continuing. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#find}. - * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#find}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#find}. + * @name HttpAdapter#beforeFind + * @method + * @param {Object} mapper + * @param {(string|number)} id + * @param {Object} opts */ - beforeFind: function beforeFind() {}, + beforeFind: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#findAll}. If this method - * returns a promise then {@link DSHttpAdapter#findAll} will wait for the - * promise to resolve before continuing. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#findAll}. - * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#findAll}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#findAll}. + * @name HttpAdapter#beforeFindAll + * @method + * @param {Object} mapper + * @param {Object} query + * @param {Object} opts */ - beforeFindAll: function beforeFindAll() {}, + beforeFindAll: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#GET}. If this method - * returns a promise then {@link DSHttpAdapter#GET} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#create} - * will resolve with that same value, then the `config` argument passed to - * {@link DSHttpAdapter#GET} will be replaced by the value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#GET}. - * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#GET}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#GET}. + * @name HttpAdapter#beforeGET + * @method + * @param {Object} url + * @param {Object} config + * @param {Object} opts */ - beforeGET: function beforeGET() {}, + beforeGET: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#HTTP}. If this method - * returns a promise then {@link DSHttpAdapter#HTTP} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#create} - * will resolve with that same value, then the `config` argument passed to - * {@link DSHttpAdapter#HTTP} will be replaced by the value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#HTTP}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#HTTP}. + * @name HttpAdapter#beforeHTTP + * @method + * @param {Object} config + * @param {Object} opts */ - beforeHTTP: function beforeHTTP() {}, + beforeHTTP: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#POST}. If this method - * returns a promise then {@link DSHttpAdapter#POST} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#create} - * will resolve with that same value, then the `config` argument passed to - * {@link DSHttpAdapter#POST} will be replaced by the value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#POST}. - * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#POST}. - * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#POST}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#POST}. + * @name HttpAdapter#beforePOST + * @method + * @param {Object} url + * @param {Object} data + * @param {Object} config + * @param {Object} opts */ - beforePOST: function beforePOST() {}, + beforePOST: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#PUT}. If this method - * returns a promise then {@link DSHttpAdapter#PUT} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#create} - * will resolve with that same value, then the `config` argument passed to - * {@link DSHttpAdapter#PUT} will be replaced by the value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#PUT}. - * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#PUT}. - * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#PUT}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#PUT}. + * @name HttpAdapter#beforePUT + * @method + * @param {Object} url + * @param {Object} data + * @param {Object} config + * @param {Object} opts */ - beforePUT: function beforePUT() {}, + beforePUT: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#update}. If this method - * returns a promise then {@link DSHttpAdapter#update} will wait for the - * promise to resolve before continuing. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#update}. - * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#update}. - * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#update}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#update}. + * @name HttpAdapter#beforeUpdate + * @method + * @param {Object} mapper + * @param {(string|number)} id + * @param {Object} props + * @param {Object} opts */ - beforeUpdate: function beforeUpdate() {}, + beforeUpdate: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#updateAll}. If this method - * returns a promise then {@link DSHttpAdapter#updateAll} will wait for the - * promise to resolve before continuing. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateAll}. - * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#updateAll}. - * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#updateAll}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateAll}. + * @name HttpAdapter#beforeUpdateAll + * @method + * @param {Object} mapper + * @param {Object} props + * @param {Object} query + * @param {Object} opts */ - beforeUpdateAll: function beforeUpdateAll() {}, + beforeUpdateAll: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#updateMany}. If this method - * returns a promise then {@link DSHttpAdapter#updateMany} will wait for the - * promise to resolve before continuing. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateMany}. - * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#updateMany}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateMany}. + * @name HttpAdapter#beforeUpdateMany + * @method + * @param {Object} mapper + * @param {Object} records + * @param {Object} opts */ - beforeUpdateMany: function beforeUpdateMany() {}, + beforeUpdateMany: noop, /** - * Create a new the entity from the provided `props`. - * - * {@link DSHttpAdapter#beforeCreate} will be called before calling - * {@link DSHttpAdapter#POST}. - * {@link DSHttpAdapter#afterCreate} will be called after calling - * {@link DSHttpAdapter#POST}. + * Create a new the record from the provided `props`. * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The Model. + * @name HttpAdapter#create + * @method + * @param {Object} mapper The mapper. * @param {Object} props Properties to send as the payload. * @param {Object} [opts] Configuration options. * @param {string} [opts.params] TODO - * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO * @return {Promise} */ - create: function create(Model, props, opts) { + create: function create(mapper, props, opts) { var self = this; + var op = undefined; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); - opts.params = self.queryTransform(Model, opts.params, opts); - opts.suffix || (opts.suffix = Model.suffix); - opts.op = 'create'; - self.dbg(opts.op, Model, props, opts); - return resolve(self.beforeCreate(Model, props, opts)).then(function () { - return self.POST(self.getPath('create', Model, props, opts), self.serialize(Model, props, opts), opts); + opts.params = self.queryTransform(mapper, opts.params, opts); + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; + + // beforeCreate lifecycle hook + op = opts.op = 'beforeCreate'; + return resolve(self[op](mapper, props, opts)).then(function () { + op = opts.op = 'create'; + self.dbg(op, mapper, props, opts); + return self.POST(self.getPath('create', mapper, props, opts), self.serialize(mapper, props, opts), opts); }).then(function (response) { - return self.deserialize(Model, response, opts); + return self.deserialize(mapper, response, opts); }).then(function (data) { - return resolve(self.afterCreate(Model, props, opts, data)).then(function (_data) { - return _data || data; + // afterCreate lifecycle hook + op = opts.op = 'afterCreate'; + return resolve(self[op](mapper, props, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data; }); }); }, + /** - * Create multiple new entities in batch. + * Create multiple new records in batch. * - * {@link DSHttpAdapter#beforeCreateMany} will be called before calling - * {@link DSHttpAdapter#POST}. - * {@link DSHttpAdapter#afterCreateMany} will be called after calling - * {@link DSHttpAdapter#POST}. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The Model. - * @param {Array} models Array of property objects to send as the payload. + * @name HttpAdapter#createMany + * @method + * @param {Object} mapper The mapper. + * @param {Array} records Array of property objects to send as the payload. * @param {Object} [opts] Configuration options. * @param {string} [opts.params] TODO - * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO * @return {Promise} */ - createMany: function createMany(Model, models, opts) { + createMany: function createMany(mapper, records, opts) { var self = this; + var op = undefined; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); - opts.params = self.queryTransform(Model, opts.params, opts); - opts.suffix || (opts.suffix = Model.suffix); - opts.op = 'createMany'; - self.dbg(opts.op, Model, models, opts); - return resolve(self.beforeCreateMany(Model, models, opts)).then(function () { - return self.POST(self.getPath('createMany', Model, null, opts), self.serialize(Model, models, opts), opts); + opts.params = self.queryTransform(mapper, opts.params, opts); + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; + + // beforeCreateMany lifecycle hook + op = opts.op = 'beforeCreateMany'; + return resolve(self[op](mapper, records, opts)).then(function () { + op = opts.op = 'createMany'; + self.dbg(op, mapper, records, opts); + return self.POST(self.getPath('createMany', mapper, null, opts), self.serialize(mapper, records, opts), opts); }).then(function (response) { - return self.deserialize(Model, response, opts); + return self.deserialize(mapper, response, opts); }).then(function (data) { - return resolve(self.afterCreateMany(Model, models, opts, data)).then(function (_data) { - return _data || data; + // afterCreateMany lifecycle hook + op = opts.op = 'afterCreateMany'; + return resolve(self[op](mapper, records, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data; }); }); }, + /** - * Call {@link DSHttpAdapter#log} at the "debug" level. + * Call {@link HttpAdapter#log} at the "debug" level. * - * @memberof DSHttpAdapter - * @instance - * @param {...*} [args] Args passed to {@link DSHttpAdapter#log}. + * @name HttpAdapter#dbg + * @method + * @param {...*} [args] Args passed to {@link HttpAdapter#log}. */ dbg: function dbg() { - for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; + for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { + args[_key4] = arguments[_key4]; } this.log.apply(this, ['debug'].concat(args)); }, + /** * Make an Http request to `url` according to the configuration in `config`. * - * {@link DSHttpAdapter#beforeDEL} will be called before calling - * {@link DSHttpAdapter#HTTP}. - * {@link DSHttpAdapter#afterDEL} will be called after calling - * {@link DSHttpAdapter#HTTP}. - * - * @memberof DSHttpAdapter - * @instance + * @name HttpAdapter#DEL + * @method * @param {string} url Url for the request. * @param {Object} [config] Http configuration that will be passed to - * {@link DSHttpAdapter#HTTP}. + * {@link HttpAdapter#HTTP}. * @param {Object} [opts] Configuration options. * @return {Promise} */ DEL: function DEL(url, config, opts) { var self = this; + var op = undefined; config || (config = {}); + opts || (opts = {}); config.url = url || config.url; config.method = config.method || 'delete'; - return resolve(self.beforeDEL(url, config, opts)).then(function (_config) { - config = _config || config; + + // beforeDEL lifecycle hook + op = opts.op = 'beforeDEL'; + return resolve(self[op](url, config, opts)).then(function (_config) { + // Allow re-assignment from lifecycle hook + config = isUndefined(_config) ? config : _config; + op = opts.op = 'DEL'; + self.dbg(op, url, config, opts); return self.HTTP(config, opts); }).then(function (response) { - return resolve(self.afterDEL(url, config, opts, response)).then(function (_response) { - return _response || response; + // afterDEL lifecycle hook + op = opts.op = 'afterDEL'; + return resolve(self[op](url, config, opts, response)).then(function (_response) { + // Allow re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; }); }); }, + /** * Transform the server response object into the payload that will be returned * to JSData. * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The Model used for the operation. - * @param {Object} response Response object from {@link DSHttpAdapter#HTTP}. + * @name HttpAdapter#deserialize + * @method + * @param {Object} mapper The mapper used for the operation. + * @param {Object} response Response object from {@link HttpAdapter#HTTP}. * @param {Object} opts Configuration options. * @return {(Object|Array)} Deserialized data. */ - deserialize: function deserialize(Model, response, opts) { + deserialize: function deserialize(mapper, response, opts) { opts || (opts = {}); if (isFunction(opts.deserialize)) { - return opts.deserialize(Model, response, opts); + return opts.deserialize(mapper, response, opts); } - if (isFunction(Model.deserialize)) { - return Model.deserialize(Model, response, opts); + if (isFunction(mapper.deserialize)) { + return mapper.deserialize(mapper, response, opts); } if (opts.raw) { return response; @@ -784,85 +671,92 @@ return /******/ (function(modules) { // webpackBootstrap return response ? 'data' in response ? response.data : response : response; }, + /** - * Destroy the entity with the given primary key. + * Destroy the record with the given primary key. * - * {@link DSHttpAdapter#beforeDestroy} will be called before calling - * {@link DSHttpAdapter#DEL}. - * {@link DSHttpAdapter#afterDestroy} will be called after calling - * {@link DSHttpAdapter#DEL}. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The Model. - * @param {(string|number)} id Primary key of the entity to destroy. + * @name HttpAdapter#destroy + * @method + * @param {Object} mapper The mapper. + * @param {(string|number)} id Primary key of the record to destroy. * @param {Object} [opts] Configuration options. * @param {string} [opts.params] TODO - * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO * @return {Promise} */ - destroy: function destroy(Model, id, opts) { + destroy: function destroy(mapper, id, opts) { var self = this; + var op = undefined; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); - opts.params = self.queryTransform(Model, opts.params, opts); - opts.suffix || (opts.suffix = Model.suffix); - opts.op = 'destroy'; - self.dbg(opts.op, Model, id, opts); - return resolve(self.beforeDestroy(Model, id, opts)).then(function () { - return self.DEL(self.getPath('destroy', Model, id, opts), opts); + opts.params = self.queryTransform(mapper, opts.params, opts); + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; + + // beforeDestroy lifecycle hook + op = opts.op = 'beforeDestroy'; + return resolve(self[op](mapper, id, opts)).then(function () { + op = opts.op = 'destroy'; + self.dbg(op, mapper, id, opts); + return self.DEL(self.getPath('destroy', mapper, id, opts), opts); }).then(function (response) { - return self.deserialize(Model, response, opts); + return self.deserialize(mapper, response, opts); }).then(function (data) { - return resolve(self.afterDestroy(Model, id, opts, data)).then(function (_data) { - return _data || data; + // afterDestroy lifecycle hook + op = opts.op = 'afterDestroy'; + return resolve(self[op](mapper, id, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data; }); }); }, + /** - * Destroy the entities that match the selection `query`. - * - * {@link DSHttpAdapter#beforeDestroyAll} will be called before calling - * {@link DSHttpAdapter#DEL}. - * {@link DSHttpAdapter#afterDestroyAll} will be called after calling - * {@link DSHttpAdapter#DEL}. + * Destroy the records that match the selection `query`. * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The Model. + * @name HttpAdapter#destroyAll + * @method + * @param {Object} mapper The mapper. * @param {Object} query Selection query. * @param {Object} [opts] Configuration options. * @param {string} [opts.params] TODO - * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO * @return {Promise} */ - destroyAll: function destroyAll(Model, query, opts) { + destroyAll: function destroyAll(mapper, query, opts) { var self = this; + var op = undefined; query || (query = {}); opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); deepMixIn(opts.params, query); - opts.params = self.queryTransform(Model, opts.params, opts); - opts.suffix || (opts.suffix = Model.suffix); - opts.op = 'destroyAll'; - self.dbg(opts.op, Model, query, opts); - return resolve(self.beforeDestroyAll(Model, query, opts)).then(function () { - return self.DEL(self.getPath('destroyAll', Model, null, opts), opts); + opts.params = self.queryTransform(mapper, opts.params, opts); + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; + + // beforeDestroyAll lifecycle hook + op = opts.op = 'beforeDestroyAll'; + return resolve(self.beforeDestroyAll(mapper, query, opts)).then(function () { + op = opts.op = 'destroyAll'; + self.dbg(op, mapper, query, opts); + return self.DEL(self.getPath('destroyAll', mapper, null, opts), opts); }).then(function (response) { - return self.deserialize(Model, response, opts); + return self.deserialize(mapper, response, opts); }).then(function (data) { - return resolve(self.afterDestroyAll(Model, query, opts, data)).then(function (_data) { - return _data || data; + // afterDestroyAll lifecycle hook + op = opts.op = 'afterDestroyAll'; + return resolve(self[op](mapper, query, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data; }); }); }, + /** * Log an error. * - * @memberof DSHttpAdapter - * @instance + * @name HttpAdapter + * @method * @param {...*} [args] Arguments to log. */ error: function error() { @@ -873,11 +767,12 @@ return /******/ (function(modules) { // webpackBootstrap } }, + /** * Make an Http request using `window.fetch`. * - * @memberof DSHttpAdapter - * @instance + * @name HttpAdapter + * @method * @param {Object} config Request configuration. * @param {Object} config.data Payload for the request. * @param {string} config.method Http method for the request. @@ -919,85 +814,92 @@ return /******/ (function(modules) { // webpackBootstrap }); }), + /** - * Retrieve the entity with the given primary key. + * Retrieve the record with the given primary key. * - * {@link DSHttpAdapter#beforeFind} will be called before calling - * {@link DSHttpAdapter#GET}. - * {@link DSHttpAdapter#afterFind} will be called after calling - * {@link DSHttpAdapter#GET}. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The Model. - * @param {(string|number)} id Primary key of the entity to retrieve. + * @name HttpAdapter#find + * @method + * @param {Object} mapper The mapper. + * @param {(string|number)} id Primary key of the record to retrieve. * @param {Object} [opts] Configuration options. * @param {string} [opts.params] TODO - * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO * @return {Promise} */ - find: function find(Model, id, opts) { + find: function find(mapper, id, opts) { var self = this; + var op = undefined; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); - opts.params = self.queryTransform(Model, opts.params, opts); - opts.suffix || (opts.suffix = Model.suffix); - opts.op = 'find'; - self.dbg(opts.op, Model, id, opts); - return resolve(self.beforeFind(Model, id, opts)).then(function () { - return self.GET(self.getPath('find', Model, id, opts), opts); + opts.params = self.queryTransform(mapper, opts.params, opts); + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; + + // beforeFind lifecycle hook + op = opts.op = 'beforeFind'; + return resolve(self[op](mapper, id, opts)).then(function () { + op = opts.op = 'find'; + self.dbg(op, mapper, id, opts); + return self.GET(self.getPath('find', mapper, id, opts), opts); }).then(function (response) { - return self.deserialize(Model, response, opts); + return self.deserialize(mapper, response, opts); }).then(function (data) { - return resolve(self.afterFind(Model, id, opts, data)).then(function (_data) { - return _data || data; + // afterFind lifecycle hook + op = opts.op = 'afterFind'; + return resolve(self[op](mapper, id, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data; }); }); }, + /** - * Retrieve the entities that match the selection `query`. - * - * {@link DSHttpAdapter#beforeFindAll} will be called before calling - * {@link DSHttpAdapter#GET}. - * {@link DSHttpAdapter#afterFindAll} will be called after calling - * {@link DSHttpAdapter#GET}. + * Retrieve the records that match the selection `query`. * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The Model. + * @name HttpAdapter#findAll + * @method + * @param {Object} mapper The mapper. * @param {Object} query Selection query. * @param {Object} [opts] Configuration options. * @param {string} [opts.params] TODO - * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO * @return {Promise} */ - findAll: function findAll(Model, query, opts) { + findAll: function findAll(mapper, query, opts) { var self = this; + var op = undefined; query || (query = {}); opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); - opts.suffix || (opts.suffix = Model.suffix); - opts.op = 'findAll'; - self.dbg(opts.op, Model, query, opts); + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; deepMixIn(opts.params, query); - opts.params = self.queryTransform(Model, opts.params, opts); - return resolve(self.beforeFindAll(Model, query, opts)).then(function () { - return self.GET(self.getPath('findAll', Model, opts.params, opts), opts); + opts.params = self.queryTransform(mapper, opts.params, opts); + + // beforeFindAll lifecycle hook + op = opts.op = 'beforeFindAll'; + return resolve(self[op](mapper, query, opts)).then(function () { + op = opts.op = 'findAll'; + self.dbg(op, mapper, query, opts); + return self.GET(self.getPath('findAll', mapper, opts.params, opts), opts); }).then(function (response) { - return self.deserialize(Model, response, opts); + return self.deserialize(mapper, response, opts); }).then(function (data) { - return resolve(self.afterFindAll(Model, query, opts, data)).then(function (_data) { - return _data || data; + // afterFindAll lifecycle hook + op = opts.op = 'afterFindAll'; + return resolve(self[op](mapper, query, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data; }); }); }, + /** - * { function_description } + * TODO * - * @memberof DSHttpAdapter - * @instance + * @name HttpAdapter#GET + * @method * @param {string} url The url for the request. * @param {Object} config Request configuration options. * @param {Object} [opts] Configuration options. @@ -1005,38 +907,50 @@ return /******/ (function(modules) { // webpackBootstrap */ GET: function GET(url, config, opts) { var self = this; + var op = undefined; config || (config = {}); + opts || (opts = {}); config.url = url || config.url; config.method = config.method || 'get'; - return resolve(self.beforeGET(url, config, opts)).then(function (_config) { - config = _config || config; + + // beforeGET lifecycle hook + op = opts.op = 'beforeGET'; + return resolve(self[op](url, config, opts)).then(function (_config) { + // Allow re-assignment from lifecycle hook + config = isUndefined(_config) ? config : _config; + op = opts.op = 'GET'; + self.dbg(op, url, config, opts); return self.HTTP(config, opts); }).then(function (response) { - return resolve(self.afterGET(url, config, opts, response)).then(function (_response) { - return _response || response; + // afterGET lifecycle hook + op = opts.op = 'afterGET'; + return resolve(self[op](url, config, opts, response)).then(function (_response) { + // Allow re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; }); }); }, + /** - * @memberof DSHttpAdapter - * @instance - * @param {*} Model { description } - * @param {*} id { description } - * @param {boolean} opts { description } + * @name HttpAdapter#getEndpoint + * @method + * @param {Object} mapper TODO + * @param {*} id TODO + * @param {boolean} opts TODO * @return {string} Full path. */ - getEndpoint: function getEndpoint(Model, id, opts) { + getEndpoint: function getEndpoint(mapper, id, opts) { var _this = this; opts || (opts = {}); opts.params || (opts.params = {}); var item = undefined; - var parentKey = Model.parentKey; - var endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : Model.endpoint; - var parentField = Model.parentField; - var parentDef = Model.parent ? Model.getResource(Model.parent) : undefined; + var parentKey = mapper.parentKey; + var endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : mapper.endpoint; + var parentField = mapper.parentField; + var parentDef = mapper.parent ? mapper.getResource(mapper.parent) : undefined; var parentId = opts.params[parentKey]; if (parentId === false || !parentKey || !parentDef) { @@ -1048,7 +962,7 @@ return /******/ (function(modules) { // webpackBootstrap delete opts.params[parentKey]; if (isString(id) || isNumber(id)) { - item = Model.get(id); + item = mapper.get(id); } else if (isObject(id)) { item = id; } @@ -1077,29 +991,31 @@ return /******/ (function(modules) { // webpackBootstrap } }, + /** - * @memberof DSHttpAdapter - * @instance + * @name HttpAdapter#getPath + * @method * @param {string} method TODO - * @param {*} Model TODO + * @param {Object} mapper TODO * @param {(string|number)?} id TODO * @param {Object} opts Configuration options. */ - getPath: function getPath(method, Model, id, opts) { + getPath: function getPath(method, mapper, id, opts) { var self = this; opts || (opts = {}); - var args = [opts.basePath === undefined ? Model.basePath === undefined ? self.basePath : Model.basePath : opts.basePath, self.getEndpoint(Model, isString(id) || isNumber(id) || method === 'create' ? id : null, opts)]; + var args = [opts.basePath === undefined ? mapper.basePath === undefined ? self.basePath : mapper.basePath : opts.basePath, self.getEndpoint(mapper, isString(id) || isNumber(id) || method === 'create' ? id : null, opts)]; if (method === 'find' || method === 'update' || method === 'destroy') { args.push(id); } return makePath.apply(_jsData.utils, args); }, + /** * Make an Http request. * - * @memberof DSHttpAdapter - * @instance + * @name HttpAdapter#HTTP + * @method * @param {Object} config Request configuration options. * @param {Object} [opts] Configuration options. * @return {Promise} @@ -1153,17 +1069,18 @@ return /******/ (function(modules) { // webpackBootstrap }); }, + /** * Log the provided arguments at the specified leve. * - * @memberof DSHttpAdapter - * @instance + * @name HttpAdapter#log + * @method * @param {string} level Log level. * @param {...*} [args] Arguments to log. */ log: function log(level) { - for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { - args[_key3 - 1] = arguments[_key3]; + for (var _len5 = arguments.length, args = Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) { + args[_key5 - 1] = arguments[_key5]; } if (level && !args.length) { @@ -1173,7 +1090,7 @@ return /******/ (function(modules) { // webpackBootstrap if (level === 'debug' && !this.debug) { return; } - var prefix = level.toUpperCase() + ': (' + this.name + ')'; + var prefix = level.toUpperCase() + ': (HttpAdapter)'; if (console[level]) { var _console2; @@ -1185,222 +1102,273 @@ return /******/ (function(modules) { // webpackBootstrap } }, + /** - * { function_description } + * TODO * - * @memberof DSHttpAdapter - * @instance - * @param {*} url { description } - * @param {*} data { description } - * @param {*} config { description } + * @name HttpAdapter#POST + * @method + * @param {*} url TODO + * @param {Object} data TODO + * @param {Object} config TODO * @param {Object} [opts] Configuration options. * @return {Promise} */ POST: function POST(url, data, config, opts) { var self = this; + var op = undefined; config || (config = {}); + opts || (opts = {}); config.url = url || config.url; config.data = data || config.data; config.method = config.method || 'post'; - return resolve(self.beforePOST(url, data, config, opts)).then(function (_config) { - config = _config || config; + + // beforePOST lifecycle hook + op = opts.op = 'beforePOST'; + return resolve(self[op](url, data, config, opts)).then(function (_config) { + // Allow re-assignment from lifecycle hook + config = isUndefined(_config) ? config : _config; + op = opts.op = 'POST'; + self.dbg(op, url, data, config, opts); return self.HTTP(config, opts); }).then(function (response) { - return resolve(self.afterPOST(url, data, config, opts, response)).then(function (_response) { - return _response || response; + // afterPOST lifecycle hook + op = opts.op = 'afterPOST'; + return resolve(self[op](url, data, config, opts, response)).then(function (_response) { + // Allow re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; }); }); }, + /** - * { function_description } + * TODO * - * @memberof DSHttpAdapter - * @instance - * @param {*} url { description } - * @param {*} data { description } - * @param {*} config { description } + * @name HttpAdapter#PUT + * @method + * @param {*} url TODO + * @param {Object} data TODO + * @param {Object} config TODO * @param {Object} [opts] Configuration options. * @return {Promise} */ PUT: function PUT(url, data, config, opts) { var self = this; + var op = undefined; config || (config = {}); + opts || (opts = {}); config.url = url || config.url; config.data = data || config.data; config.method = config.method || 'put'; - return resolve(self.beforePUT(url, data, config, opts)).then(function (_config) { - config = _config || config; + + // beforePUT lifecycle hook + op = opts.op = 'beforePUT'; + return resolve(self[op](url, data, config, opts)).then(function (_config) { + // Allow re-assignment from lifecycle hook + config = isUndefined(_config) ? config : _config; + op = opts.op = 'PUT'; + self.dbg(op, url, data, config, opts); return self.HTTP(config, opts); }).then(function (response) { - return resolve(self.afterPUT(url, data, config, opts, response)).then(function (_response) { - return _response || response; + // afterPUT lifecycle hook + op = opts.op = 'afterPUT'; + return resolve(self[op](url, data, config, opts, response)).then(function (_response) { + // Allow re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; }); }); }, + /** - * { function_description } + * TODO * - * @memberof DSHttpAdapter - * @instance - * @param {*} Model { description } - * @param {*} params { description } - * @param {*} opts { description } + * @name HttpAdapter#queryTransform + * @method + * @param {Object} mapper TODO + * @param {*} params TODO + * @param {*} opts TODO * @return {*} Transformed params. */ - queryTransform: function queryTransform(Model, params, opts) { + queryTransform: function queryTransform(mapper, params, opts) { opts || (opts = {}); if (isFunction(opts.queryTransform)) { - return opts.queryTransform(Model, params, opts); + return opts.queryTransform(mapper, params, opts); } - if (isFunction(Model.queryTransform)) { - return Model.queryTransform(Model, params, opts); + if (isFunction(mapper.queryTransform)) { + return mapper.queryTransform(mapper, params, opts); } return params; }, + /** - * Error handler invoked when the promise returned by {@link DSHttpAdapter#http} + * Error handler invoked when the promise returned by {@link HttpAdapter#http} * is rejected. Default implementation is to just return the error wrapped in - * a rejected Promise, aka rethrow the error. {@link DSHttpAdapter#http} is - * called by {@link DSHttpAdapter#HTTP}. + * a rejected Promise, aka rethrow the error. {@link HttpAdapter#http} is + * called by {@link HttpAdapter#HTTP}. * - * @memberof DSHttpAdapter - * @instance - * @param {*} err The error that {@link DSHttpAdapter#http} rejected with. - * @param {*} config The `config` argument that was passed to {@link DSHttpAdapter#HTTP}. - * @param {*} opts The `opts` argument that was passed to {@link DSHttpAdapter#HTTP}. + * @name HttpAdapter#responseError + * @method + * @param {*} err The error that {@link HttpAdapter#http} rejected with. + * @param {Object} config The `config` argument that was passed to {@link HttpAdapter#HTTP}. + * @param {*} opts The `opts` argument that was passed to {@link HttpAdapter#HTTP}. * @return {Promise} */ responseError: function responseError(err, config, opts) { return reject(err); }, + /** - * { function_description } + * TODO * - * @memberof DSHttpAdapter - * @instance - * @param {*} Model { description } - * @param {*} data { description } - * @param {*} opts { description } + * @name HttpAdapter#serialize + * @method + * @param {Object} mapper TODO + * @param {Object} data TODO + * @param {*} opts TODO * @return {*} Serialized data. */ - serialize: function serialize(Model, data, opts) { + serialize: function serialize(mapper, data, opts) { opts || (opts = {}); if (isFunction(opts.serialize)) { - return opts.serialize(Model, data, opts); + return opts.serialize(mapper, data, opts); } - if (isFunction(Model.serialize)) { - return Model.serialize(Model, data, opts); + if (isFunction(mapper.serialize)) { + return mapper.serialize(mapper, data, opts); } return data; }, + /** - * { function_description } + * TODO * - * @memberof DSHttpAdapter - * @instance - * @param {*} Model { description } - * @param {*} id { description } - * @param {*} props { description } + * @name HttpAdapter#update + * @method + * @param {Object} mapper TODO + * @param {*} id TODO + * @param {*} props TODO * @param {Object} [opts] Configuration options. * @return {Promise} */ - update: function update(Model, id, props, opts) { + update: function update(mapper, id, props, opts) { var self = this; + var op = undefined; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); - opts.params = self.queryTransform(Model, opts.params, opts); - opts.suffix || (opts.suffix = Model.suffix); - opts.op = 'update'; - self.dbg(opts.op, Model, id, props, opts); - return resolve(self.beforeUpdate(Model, id, props, opts)).then(function () { - return self.PUT(self.getPath('update', Model, id, opts), self.serialize(Model, props, opts), opts); + opts.params = self.queryTransform(mapper, opts.params, opts); + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; + + // beforeUpdate lifecycle hook + op = opts.op = 'beforeUpdate'; + return resolve(self[op](mapper, id, props, opts)).then(function () { + op = opts.op = 'update'; + self.dbg(op, mapper, id, props, opts); + return self.PUT(self.getPath('update', mapper, id, opts), self.serialize(mapper, props, opts), opts); }).then(function (response) { - return self.deserialize(Model, response, opts); + return self.deserialize(mapper, response, opts); }).then(function (data) { - return resolve(self.afterUpdate(Model, id, props, opts, data)).then(function (_data) { - return _data || data; + // afterUpdate lifecycle hook + op = opts.op = 'afterUpdate'; + return resolve(self[op](mapper, id, props, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data; }); }); }, + /** - * { function_description } + * TODO * - * @memberof DSHttpAdapter - * @instance - * @param {*} Model { description } - * @param {*} props { description } - * @param {*} query { description } + * @name HttpAdapter#updateAll + * @method + * @param {Object} mapper TODO + * @param {Object} props TODO + * @param {Object} query TODO * @param {Object} [opts] Configuration options. * @return {Promise} */ - updateAll: function updateAll(Model, props, query, opts) { + updateAll: function updateAll(mapper, props, query, opts) { var self = this; + var op = undefined; query || (query = {}); opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); deepMixIn(opts.params, query); - opts.params = self.queryTransform(Model, opts.params, opts); - opts.suffix || (opts.suffix = Model.suffix); - opts.op = 'updateAll'; - self.dbg(opts.op, Model, props, query, opts); - return resolve(self.beforeUpdateAll(Model, props, query, opts)).then(function () { - return self.PUT(self.getPath('updateAll', Model, null, opts), self.serialize(Model, props, opts), opts); + opts.params = self.queryTransform(mapper, opts.params, opts); + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; + + // beforeUpdateAll lifecycle hook + op = opts.op = 'beforeUpdateAll'; + return resolve(self[op](mapper, props, query, opts)).then(function () { + op = opts.op = 'updateAll'; + self.dbg(op, mapper, props, query, opts); + return self.PUT(self.getPath('updateAll', mapper, null, opts), self.serialize(mapper, props, opts), opts); }).then(function (response) { - return self.deserialize(Model, response, opts); + return self.deserialize(mapper, response, opts); }).then(function (data) { - return resolve(self.afterUpdateAll(Model, props, query, opts, data)).then(function (_data) { - return _data || data; + // afterUpdateAll lifecycle hook + op = opts.op = 'afterUpdateAll'; + return resolve(self[op](mapper, props, query, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data; }); }); }, + /** - * Update multiple entities in batch. + * Update multiple records in batch. * - * {@link DSHttpAdapter#beforeUpdateMany} will be called before calling - * {@link DSHttpAdapter#PUT}. - * {@link DSHttpAdapter#afterUpdateMany} will be called after calling - * {@link DSHttpAdapter#PUT}. + * {@link HttpAdapter#beforeUpdateMany} will be called before calling + * {@link HttpAdapter#PUT}. + * {@link HttpAdapter#afterUpdateMany} will be called after calling + * {@link HttpAdapter#PUT}. * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The Model. - * @param {Array} models Array of property objects to send as the payload. + * @name HttpAdapter + * @method + * @param {Object} mapper The mapper. + * @param {Array} records Array of property objects to send as the payload. * @param {Object} [opts] Configuration options. * @param {string} [opts.params] TODO - * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO * @return {Promise} */ - updateMany: function updateMany(Model, models, opts) { + updateMany: function updateMany(mapper, records, opts) { var self = this; + var op = undefined; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); - opts.params = self.queryTransform(Model, opts.params, opts); - opts.suffix || (opts.suffix = Model.suffix); - opts.op = 'updateMany'; - self.dbg(opts.op, Model, models, opts); - return resolve(self.beforeUpdateMany(Model, models, opts)).then(function () { - return self.PUT(self.getPath('updateMany', Model, null, opts), self.serialize(Model, models, opts), opts); + opts.params = self.queryTransform(mapper, opts.params, opts); + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; + + // beforeUpdateMany lifecycle hook + op = opts.op = 'beforeUpdateMany'; + return resolve(self[op](mapper, records, opts)).then(function () { + op = opts.op = 'updateMany'; + self.dbg(op, mapper, records, opts); + return self.PUT(self.getPath('updateMany', mapper, null, opts), self.serialize(mapper, records, opts), opts); }).then(function (response) { - return self.deserialize(Model, response, opts); + return self.deserialize(mapper, response, opts); }).then(function (data) { - return resolve(self.afterUpdateMany(Model, models, opts, data)).then(function (_data) { - return _data || data; + // afterUpdateMany lifecycle hook + op = opts.op = 'afterUpdateMany'; + return resolve(self[op](mapper, records, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data; }); }); } }); /** - * Add an Http actions to a Model. + * Add an Http actions to a mapper. * - * @name DSHttpAdapter.addAction + * @name HttpAdapter.addAction * @method * @param {string} name Name of the new action. * @param {Object} [opts] Action configuration @@ -1409,15 +1377,15 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Function} [opts.request] * @param {Function} [opts.response] * @param {Function} [opts.responseError] - * @return {Function} Decoration function, which should be passed the Model to + * @return {Function} Decoration function, which should be passed the mapper to * decorate when invoked. */ - DSHttpAdapter.addAction = function (name, opts) { + HttpAdapter.addAction = function (name, opts) { if (!name || !isString(name)) { throw new TypeError('action(name[, opts]): Expected: string, Found: ' + (typeof name === 'undefined' ? 'undefined' : _typeof(name))); } - return function (Model) { - if (Model[name]) { + return function (mapper) { + if (mapper[name]) { throw new Error('action(name[, opts]): ' + name + ' already exists on target!'); } opts.request = opts.request || function (config) { @@ -1429,21 +1397,22 @@ return /******/ (function(modules) { // webpackBootstrap opts.responseError = opts.responseError || function (err) { return reject(err); }; - Model[name] = function (id, _opts) { + mapper[name] = function (id, _opts) { + var self = this; if (isObject(id)) { _opts = id; } _opts = _opts || {}; - var adapter = this.getAdapter(opts.adapter || this.defaultAdapter || 'http'); + var adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http'); var config = {}; fillIn(config, opts); if (!_opts.hasOwnProperty('endpoint') && config.endpoint) { _opts.endpoint = config.endpoint; } if (typeof _opts.getEndpoint === 'function') { - config.url = _opts.getEndpoint(this, _opts); + config.url = _opts.getEndpoint(self, _opts); } else { - var _args = [_opts.basePath || this.basePath || adapter.defaults.basePath, adapter.getEndpoint(this, isSorN(id) ? id : null, _opts)]; + var _args = [_opts.basePath || self.basePath || adapter.defaults.basePath, adapter.getEndpoint(self, isSorN(id) ? id : null, _opts)]; if (isSorN(id)) { _args.push(id); } @@ -1451,48 +1420,48 @@ return /******/ (function(modules) { // webpackBootstrap config.url = makePath.apply(null, _args); } config.method = config.method || 'GET'; - config.modelName = this.name; + config.mapper = self.name; deepMixIn(config)(_opts); return resolve(config).then(_opts.request || opts.request).then(function (config) { return adapter.HTTP(config); }).then(function (data) { if (data && data.config) { - data.config.modelName = this.name; + data.config.mapper = self.name; } return data; }).then(_opts.response || opts.response, _opts.responseError || opts.responseError); }; - return Model; + return mapper; }; }; /** - * Add multiple Http actions to a Model. See {@link DSHttpAdapter.addAction} for + * Add multiple Http actions to a mapper. See {@link HttpAdapter.addAction} for * action configuration options. * - * @name DSHttpAdapter.addActions + * @name HttpAdapter.addActions * @method * @param {Object.} opts Object where the key is an action name * and the value is the configuration for the action. - * @return {Function} Decoration function, which should be passed the Model to + * @return {Function} Decoration function, which should be passed the mapper to * decorate when invoked. */ - DSHttpAdapter.addActions = function (opts) { + HttpAdapter.addActions = function (opts) { opts || (opts = {}); - return function (Model) { - forOwn(Model, function (value, key) { - DSHttpAdapter.addAction(key, value)(Model); + return function (mapper) { + forOwn(mapper, function (value, key) { + HttpAdapter.addAction(key, value)(mapper); }); - return Model; + return mapper; }; }; /** - * Alternative to ES6 class syntax for extending `DSHttpAdapter`. + * Alternative to ES6 class syntax for extending `HttpAdapter`. * * __ES6__: * ```javascript - * class MyHttpAdapter extends DSHttpAdapter { + * class MyHttpAdapter extends HttpAdapter { * deserialize (Model, data, opts) { * const data = super.deserialize(Model, data, opts) * data.foo = 'bar' @@ -1519,26 +1488,26 @@ return /******/ (function(modules) { // webpackBootstrap * yell: function () { return 'HI' } * } * - * var MyHttpAdapter = DSHttpAdapter.extend(instanceProps, classProps) + * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps) * var adapter = new MyHttpAdapter() * adapter.say() // "hi" * MyHttpAdapter.yell() // "HI" * ``` * - * @name DSHttpAdapter.extend + * @name HttpAdapter.extend * @method * @param {Object} [instanceProps] Properties that will be added to the * prototype of the subclass. * @param {Object} [classProps] Properties that will be added as static * properties to the subclass itself. - * @return {Object} Subclass of `DSHttpAdapter`. + * @return {Object} Subclass of `HttpAdapter`. */ - DSHttpAdapter.extend = extend; + HttpAdapter.extend = extend; /** * Details of the current version of the `js-data-http` module. * - * @name DSHttpAdapter.version + * @name HttpAdapter.version * @type {Object} * @property {string} version.full The full semver value. * @property {number} version.major The major version number. @@ -1549,12 +1518,12 @@ return /******/ (function(modules) { // webpackBootstrap * @property {(string|boolean)} version.beta The beta version value, * otherwise `false` if the current version is not beta. */ - DSHttpAdapter.version = { - full: '3.0.0-alpha.3', + HttpAdapter.version = { + full: '3.0.0-alpha.4', major: parseInt('3', 10), minor: parseInt('0', 10), patch: parseInt('0', 10), - alpha: true ? '3' : false, + alpha: true ? '4' : false, beta: true ? 'false' : false }; @@ -1566,25 +1535,25 @@ return /******/ (function(modules) { // webpackBootstrap * * __Script tag__: * ```javascript - * window.DSHttpAdapter + * window.HttpAdapter * ``` * __CommonJS__: * ```javascript - * var DSHttpAdapter = require('js-data-http') + * var HttpAdapter = require('js-data-http') * ``` * __ES6 Modules__: * ```javascript - * import DSHttpAdapter from 'js-data-http' + * import HttpAdapter from 'js-data-http' * ``` * __AMD__: * ```javascript - * define('myApp', ['js-data-http'], function (DSHttpAdapter) { ... }) + * define('myApp', ['js-data-http'], function (HttpAdapter) { ... }) * ``` * * @module js-data-http */ - module.exports = DSHttpAdapter; + module.exports = HttpAdapter; /***/ }, /* 1 */ diff --git a/fetch/dist/js-data-fetch.js.map b/fetch/dist/js-data-fetch.js.map index ff5b4e4..82bcdb3 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 4996488950a92853cf94","webpack:///C:/Users/jason/Documents/GitHub/js-data-http/src/index.js","webpack:///external {\"amd\":\"js-data\",\"commonjs\":\"js-data\",\"commonjs2\":\"js-data\",\"root\":\"JSData\"}","webpack:///external \"undefined\""],"names":[],"mappings":"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","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[\"DSHttpAdapter\"] = factory(require(\"js-data\"), require(\"undefined\"));\n\telse\n\t\troot[\"DSHttpAdapter\"] = factory(root[\"JSData\"], root[\"undefined\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_2__) {\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 4996488950a92853cf94\n **/","/* global fetch:true Headers:true Request:true */\r\nconst axios = require('axios')\r\nimport {utils} from 'js-data'\r\nconst {\r\n _,\r\n copy,\r\n deepMixIn,\r\n extend,\r\n fillIn,\r\n forOwn,\r\n isArray,\r\n isFunction,\r\n isNumber,\r\n isObject,\r\n isSorN,\r\n isString,\r\n resolve,\r\n reject,\r\n toJson\r\n} = utils\r\n\r\nlet hasFetch = false\r\n\r\ntry {\r\n hasFetch = window && window.fetch\r\n} catch (e) {}\r\n\r\nfunction isValidString (value) {\r\n return (value != null && value !== '')\r\n}\r\nfunction join (items, separator) {\r\n separator || (separator = '')\r\n return items.filter(isValidString).join(separator)\r\n}\r\nfunction makePath (...args) {\r\n let result = join(args, '/')\r\n return result.replace(/([^:\\/]|^)\\/{2,}/g, '$1/')\r\n}\r\n\r\nfunction encode (val) {\r\n return encodeURIComponent(val)\r\n .replace(/%40/gi, '@')\r\n .replace(/%3A/gi, ':')\r\n .replace(/%24/g, '$')\r\n .replace(/%2C/gi, ',')\r\n .replace(/%20/g, '+')\r\n .replace(/%5B/gi, '[')\r\n .replace(/%5D/gi, ']')\r\n}\r\n\r\nfunction buildUrl (url, params) {\r\n if (!params) {\r\n return url\r\n }\r\n\r\n const parts = []\r\n\r\n forOwn(params, function (val, key) {\r\n if (val === null || typeof val === 'undefined') {\r\n return\r\n }\r\n if (!isArray(val)) {\r\n val = [val]\r\n }\r\n\r\n val.forEach(function (v) {\r\n if (window.toString.call(v) === '[object Date]') {\r\n v = v.toISOString()\r\n } else if (isObject(v)) {\r\n v = toJson(v)\r\n }\r\n parts.push(`${encode(key)}=${encode(v)}`)\r\n })\r\n })\r\n\r\n if (parts.length > 0) {\r\n url += (url.indexOf('?') === -1 ? '?' : '&') + parts.join('&')\r\n }\r\n\r\n return url\r\n}\r\n\r\n/**\r\n * DSHttpAdapter class.\r\n * @class DSHttpAdapter\r\n * @alias DSHttpAdapter\r\n *\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.basePath='']\r\n * @param {boolean} [opts.debug=false]\r\n * @param {boolean} [opts.forceTrailingSlash=false]\r\n * @param {Object} [opts.http=axios]\r\n * @param {Object} [opts.httpConfig={}]\r\n * @param {string} [opts.suffix='']\r\n * @param {boolean} [opts.useFetch=false]\r\n */\r\nfunction DSHttpAdapter (opts) {\r\n const self = this\r\n\r\n // Default values for arguments\r\n opts || (opts = {})\r\n\r\n // Default and user-defined settings\r\n /**\r\n * @name DSHttpAdapter#basePath\r\n * @type {string}\r\n */\r\n self.basePath = opts.basePath === undefined ? '' : opts.basePath\r\n\r\n /**\r\n * @name DSHttpAdapter#debug\r\n * @type {boolean}\r\n * @default false\r\n */\r\n self.debug = opts.debug === undefined ? false : opts.debug\r\n\r\n /**\r\n * @name DSHttpAdapter#forceTrailingSlash\r\n * @type {boolean}\r\n * @default false\r\n */\r\n self.forceTrailingSlash = opts.forceTrailingSlash === undefined ? false : opts.forceTrailingSlash\r\n\r\n /**\r\n * @name DSHttpAdapter#http\r\n * @type {Function}\r\n */\r\n self.http = opts.http === undefined ? axios : opts.http\r\n\r\n /**\r\n * @name DSHttpAdapter#httpConfig\r\n * @type {Object}\r\n */\r\n self.httpConfig = opts.httpConfig === undefined ? {} : opts.httpConfig\r\n\r\n /**\r\n * @name DSHttpAdapter#suffix\r\n * @type {string}\r\n */\r\n self.suffix = opts.suffix === undefined ? '' : opts.suffix\r\n\r\n /**\r\n * @name DSHttpAdapter#useFetch\r\n * @type {boolean}\r\n * @default false\r\n */\r\n self.useFetch = opts.useFetch === undefined ? false : opts.useFetch\r\n}\r\n\r\nfillIn(DSHttpAdapter.prototype, {\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#create}. If this method\r\n * returns a promise then {@link DSHttpAdapter#create} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#create}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#create}.\r\n * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#create}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#create}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#create} will return.\r\n */\r\n afterCreate () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#createMany}. If this method\r\n * returns a promise then {@link DSHttpAdapter#createMany} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#createMany}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#createMany}.\r\n * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#createMany}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#createMany}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#createMany} will return.\r\n */\r\n afterCreateMany () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#DEL}. If this method\r\n * returns a promise then {@link DSHttpAdapter#DEL} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#DEL}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {string} url The `url` argument passed to {@link DSHttpAdapter#DEL}.\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#DEL}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#DEL}.\r\n * @param {Object} response The `response` value that {@link DSHttpAdapter#DEL} will return.\r\n */\r\n afterDEL () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#destroy}. If this method\r\n * returns a promise then {@link DSHttpAdapter#destroy} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#destroy}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroy}.\r\n * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#destroy}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroy}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#destroy} will return.\r\n */\r\n afterDestroy () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#destroyAll}. If this method\r\n * returns a promise then {@link DSHttpAdapter#destroyAll} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#destroyAll}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroyAll}.\r\n * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#destroyAll}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroyAll}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#destroyAll} will return.\r\n */\r\n afterDestroyAll () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#find}. If this method\r\n * returns a promise then {@link DSHttpAdapter#find} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#find}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#find}.\r\n * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#find}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#find}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#find} will return.\r\n */\r\n afterFind () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#findAll}. If this method\r\n * returns a promise then {@link DSHttpAdapter#findAll} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#findAll}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#findAll}.\r\n * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#findAll}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#findAll}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#findAll} will return.\r\n */\r\n afterFindAll () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#GET}. If this method\r\n * returns a promise then {@link DSHttpAdapter#GET} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#GET}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {string} url The `url` argument passed to {@link DSHttpAdapter#GET}.\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#GET}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#GET}.\r\n * @param {Object} response The `response` value that {@link DSHttpAdapter#GET} will return.\r\n */\r\n afterGET () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#HTTP}. If this method\r\n * returns a promise then {@link DSHttpAdapter#HTTP} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#HTTP}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#HTTP}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#HTTP}.\r\n * @param {Object} response The `response` value that {@link DSHttpAdapter#HTTP} will return.\r\n */\r\n afterHTTP () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#POST}. If this method\r\n * returns a promise then {@link DSHttpAdapter#POST} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#POST}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {string} url The `url` argument passed to {@link DSHttpAdapter#POST}.\r\n * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#POST}.\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#POST}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#POST}.\r\n * @param {Object} response The `response` value that {@link DSHttpAdapter#POST} will return.\r\n */\r\n afterPOST () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#PUT}. If this method\r\n * returns a promise then {@link DSHttpAdapter#PUT} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#PUT}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {string} url The `url` argument passed to {@link DSHttpAdapter#PUT}.\r\n * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#PUT}.\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#PUT}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#PUT}.\r\n * @param {Object} response The `response` value that {@link DSHttpAdapter#PUT} will return.\r\n */\r\n afterPUT () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#update}. If this method\r\n * returns a promise then {@link DSHttpAdapter#update} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#update}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#update}.\r\n * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#update}.\r\n * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#update}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#update}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#update} will return.\r\n */\r\n afterUpdate () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#updateAll}. If this method\r\n * returns a promise then {@link DSHttpAdapter#updateAll} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#updateAll}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateAll}.\r\n * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#updateAll}.\r\n * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#updateAll}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateAll}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#updateAll} will return.\r\n */\r\n afterUpdateAll () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#updateMany}. If this method\r\n * returns a promise then {@link DSHttpAdapter#updateMany} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#updateMany}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateMany}.\r\n * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#updateMany}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateMany}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#updateMany} will return.\r\n */\r\n afterUpdateMany () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#create}. If this method\r\n * returns a promise then {@link DSHttpAdapter#create} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#create}.\r\n * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#create}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#create}.\r\n */\r\n beforeCreate () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#createMany}. If this method\r\n * returns a promise then {@link DSHttpAdapter#createMany} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#createMany}.\r\n * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#createMany}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#createMany}.\r\n */\r\n beforeCreateMany () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#DEL}. If this method\r\n * returns a promise then {@link DSHttpAdapter#DEL} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#create}\r\n * will resolve with that same value, then the `config` argument passed to\r\n * {@link DSHttpAdapter#DEL} will be replaced by the value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#DEL}.\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#DEL}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#DEL}.\r\n */\r\n beforeDEL () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#destroy}. If this method\r\n * returns a promise then {@link DSHttpAdapter#destroy} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroy}.\r\n * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#destroy}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroy}.\r\n */\r\n beforeDestroy () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#destroyAll}. If this method\r\n * returns a promise then {@link DSHttpAdapter#destroyAll} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroyAll}.\r\n * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#destroyAll}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroyAll}.\r\n */\r\n beforeDestroyAll () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#find}. If this method\r\n * returns a promise then {@link DSHttpAdapter#find} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#find}.\r\n * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#find}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#find}.\r\n */\r\n beforeFind () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#findAll}. If this method\r\n * returns a promise then {@link DSHttpAdapter#findAll} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#findAll}.\r\n * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#findAll}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#findAll}.\r\n */\r\n beforeFindAll () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#GET}. If this method\r\n * returns a promise then {@link DSHttpAdapter#GET} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#create}\r\n * will resolve with that same value, then the `config` argument passed to\r\n * {@link DSHttpAdapter#GET} will be replaced by the value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#GET}.\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#GET}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#GET}.\r\n */\r\n beforeGET () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#HTTP}. If this method\r\n * returns a promise then {@link DSHttpAdapter#HTTP} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#create}\r\n * will resolve with that same value, then the `config` argument passed to\r\n * {@link DSHttpAdapter#HTTP} will be replaced by the value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#HTTP}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#HTTP}.\r\n */\r\n beforeHTTP () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#POST}. If this method\r\n * returns a promise then {@link DSHttpAdapter#POST} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#create}\r\n * will resolve with that same value, then the `config` argument passed to\r\n * {@link DSHttpAdapter#POST} will be replaced by the value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#POST}.\r\n * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#POST}.\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#POST}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#POST}.\r\n */\r\n beforePOST () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#PUT}. If this method\r\n * returns a promise then {@link DSHttpAdapter#PUT} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#create}\r\n * will resolve with that same value, then the `config` argument passed to\r\n * {@link DSHttpAdapter#PUT} will be replaced by the value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#PUT}.\r\n * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#PUT}.\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#PUT}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#PUT}.\r\n */\r\n beforePUT () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#update}. If this method\r\n * returns a promise then {@link DSHttpAdapter#update} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#update}.\r\n * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#update}.\r\n * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#update}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#update}.\r\n */\r\n beforeUpdate () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#updateAll}. If this method\r\n * returns a promise then {@link DSHttpAdapter#updateAll} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateAll}.\r\n * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#updateAll}.\r\n * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#updateAll}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateAll}.\r\n */\r\n beforeUpdateAll () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#updateMany}. If this method\r\n * returns a promise then {@link DSHttpAdapter#updateMany} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateMany}.\r\n * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#updateMany}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateMany}.\r\n */\r\n beforeUpdateMany () {},\r\n\r\n /**\r\n * Create a new the entity from the provided `props`.\r\n *\r\n * {@link DSHttpAdapter#beforeCreate} will be called before calling\r\n * {@link DSHttpAdapter#POST}.\r\n * {@link DSHttpAdapter#afterCreate} will be called after calling\r\n * {@link DSHttpAdapter#POST}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The Model.\r\n * @param {Object} props Properties to send as the payload.\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.params] TODO\r\n * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO\r\n * @return {Promise}\r\n */\r\n create (Model, props, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'create'\r\n self.dbg(opts.op, Model, props, opts)\r\n return resolve(self.beforeCreate(Model, props, opts)).then(function () {\r\n return self.POST(\r\n self.getPath('create', Model, props, opts),\r\n self.serialize(Model, props, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterCreate(Model, props, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Create multiple new entities in batch.\r\n *\r\n * {@link DSHttpAdapter#beforeCreateMany} will be called before calling\r\n * {@link DSHttpAdapter#POST}.\r\n * {@link DSHttpAdapter#afterCreateMany} will be called after calling\r\n * {@link DSHttpAdapter#POST}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The Model.\r\n * @param {Array} models Array of property objects to send as the payload.\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.params] TODO\r\n * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO\r\n * @return {Promise}\r\n */\r\n createMany (Model, models, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'createMany'\r\n self.dbg(opts.op, Model, models, opts)\r\n return resolve(self.beforeCreateMany(Model, models, opts)).then(function () {\r\n return self.POST(\r\n self.getPath('createMany', Model, null, opts),\r\n self.serialize(Model, models, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterCreateMany(Model, models, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Call {@link DSHttpAdapter#log} at the \"debug\" level.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {...*} [args] Args passed to {@link DSHttpAdapter#log}.\r\n */\r\n dbg (...args) {\r\n this.log('debug', ...args)\r\n },\r\n\r\n /**\r\n * Make an Http request to `url` according to the configuration in `config`.\r\n *\r\n * {@link DSHttpAdapter#beforeDEL} will be called before calling\r\n * {@link DSHttpAdapter#HTTP}.\r\n * {@link DSHttpAdapter#afterDEL} will be called after calling\r\n * {@link DSHttpAdapter#HTTP}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {string} url Url for the request.\r\n * @param {Object} [config] Http configuration that will be passed to\r\n * {@link DSHttpAdapter#HTTP}.\r\n * @param {Object} [opts] Configuration options.\r\n * @return {Promise}\r\n */\r\n DEL (url, config, opts) {\r\n const self = this\r\n config || (config = {})\r\n config.url = url || config.url\r\n config.method = config.method || 'delete'\r\n return resolve(self.beforeDEL(url, config, opts)).then(function (_config) {\r\n config = _config || config\r\n return self.HTTP(config, opts)\r\n }).then(function (response) {\r\n return resolve(self.afterDEL(url, config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Transform the server response object into the payload that will be returned\r\n * to JSData.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The Model used for the operation.\r\n * @param {Object} response Response object from {@link DSHttpAdapter#HTTP}.\r\n * @param {Object} opts Configuration options.\r\n * @return {(Object|Array)} Deserialized data.\r\n */\r\n deserialize (Model, response, opts) {\r\n opts || (opts = {})\r\n if (isFunction(opts.deserialize)) {\r\n return opts.deserialize(Model, response, opts)\r\n }\r\n if (isFunction(Model.deserialize)) {\r\n return Model.deserialize(Model, response, opts)\r\n }\r\n if (opts.raw) {\r\n return response\r\n }\r\n return response ? ('data' in response ? response.data : response) : response\r\n },\r\n\r\n /**\r\n * Destroy the entity with the given primary key.\r\n *\r\n * {@link DSHttpAdapter#beforeDestroy} will be called before calling\r\n * {@link DSHttpAdapter#DEL}.\r\n * {@link DSHttpAdapter#afterDestroy} will be called after calling\r\n * {@link DSHttpAdapter#DEL}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The Model.\r\n * @param {(string|number)} id Primary key of the entity to destroy.\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.params] TODO\r\n * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO\r\n * @return {Promise}\r\n */\r\n destroy (Model, id, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'destroy'\r\n self.dbg(opts.op, Model, id, opts)\r\n return resolve(self.beforeDestroy(Model, id, opts)).then(function () {\r\n return self.DEL(\r\n self.getPath('destroy', Model, id, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterDestroy(Model, id, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Destroy the entities that match the selection `query`.\r\n *\r\n * {@link DSHttpAdapter#beforeDestroyAll} will be called before calling\r\n * {@link DSHttpAdapter#DEL}.\r\n * {@link DSHttpAdapter#afterDestroyAll} will be called after calling\r\n * {@link DSHttpAdapter#DEL}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The Model.\r\n * @param {Object} query Selection query.\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.params] TODO\r\n * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO\r\n * @return {Promise}\r\n */\r\n destroyAll (Model, query, opts) {\r\n const self = this\r\n query || (query = {})\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n deepMixIn(opts.params, query)\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'destroyAll'\r\n self.dbg(opts.op, Model, query, opts)\r\n return resolve(self.beforeDestroyAll(Model, query, opts)).then(function () {\r\n return self.DEL(\r\n self.getPath('destroyAll', Model, null, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterDestroyAll(Model, query, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Log an error.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {...*} [args] Arguments to log.\r\n */\r\n error (...args) {\r\n if (console) {\r\n console[typeof console.error === 'function' ? 'error' : 'log'](...args)\r\n }\r\n },\r\n\r\n /**\r\n * Make an Http request using `window.fetch`.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} config Request configuration.\r\n * @param {Object} config.data Payload for the request.\r\n * @param {string} config.method Http method for the request.\r\n * @param {Object} config.headers Headers for the request.\r\n * @param {Object} config.params Querystring for the request.\r\n * @param {string} config.url Url for the request.\r\n * @param {Object} [opts] Configuration options.\r\n */\r\n fetch (config, opts) {\r\n const requestConfig = {\r\n method: config.method,\r\n // turn the plain headers object into the Fetch Headers object\r\n headers: new Headers(config.headers)\r\n }\r\n\r\n if (config.data) {\r\n requestConfig.body = toJson(config.data)\r\n }\r\n\r\n return fetch(new Request(buildUrl(config.url, config.params), requestConfig)).then(function (response) {\r\n response.config = {\r\n method: config.method,\r\n url: config.url\r\n }\r\n return response.json().then(function (data) {\r\n response.data = data\r\n return response\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Retrieve the entity with the given primary key.\r\n *\r\n * {@link DSHttpAdapter#beforeFind} will be called before calling\r\n * {@link DSHttpAdapter#GET}.\r\n * {@link DSHttpAdapter#afterFind} will be called after calling\r\n * {@link DSHttpAdapter#GET}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The Model.\r\n * @param {(string|number)} id Primary key of the entity to retrieve.\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.params] TODO\r\n * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO\r\n * @return {Promise}\r\n */\r\n find (Model, id, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'find'\r\n self.dbg(opts.op, Model, id, opts)\r\n return resolve(self.beforeFind(Model, id, opts)).then(function () {\r\n return self.GET(\r\n self.getPath('find', Model, id, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterFind(Model, id, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Retrieve the entities that match the selection `query`.\r\n *\r\n * {@link DSHttpAdapter#beforeFindAll} will be called before calling\r\n * {@link DSHttpAdapter#GET}.\r\n * {@link DSHttpAdapter#afterFindAll} will be called after calling\r\n * {@link DSHttpAdapter#GET}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The Model.\r\n * @param {Object} query Selection query.\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.params] TODO\r\n * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO\r\n * @return {Promise}\r\n */\r\n findAll (Model, query, opts) {\r\n const self = this\r\n query || (query = {})\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'findAll'\r\n self.dbg(opts.op, Model, query, opts)\r\n deepMixIn(opts.params, query)\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n return resolve(self.beforeFindAll(Model, query, opts)).then(function () {\r\n return self.GET(\r\n self.getPath('findAll', Model, opts.params, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterFindAll(Model, query, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * { function_description }\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {string} url The url for the request.\r\n * @param {Object} config Request configuration options.\r\n * @param {Object} [opts] Configuration options.\r\n * @return {Promise}\r\n */\r\n GET (url, config, opts) {\r\n const self = this\r\n config || (config = {})\r\n config.url = url || config.url\r\n config.method = config.method || 'get'\r\n return resolve(self.beforeGET(url, config, opts)).then(function (_config) {\r\n config = _config || config\r\n return self.HTTP(config, opts)\r\n }).then(function (response) {\r\n return resolve(self.afterGET(url, config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {*} Model { description }\r\n * @param {*} id { description }\r\n * @param {boolean} opts { description }\r\n * @return {string} Full path.\r\n */\r\n getEndpoint (Model, id, opts) {\r\n opts || (opts = {})\r\n opts.params || (opts.params = {})\r\n\r\n let item\r\n const parentKey = Model.parentKey\r\n const endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : Model.endpoint\r\n let parentField = Model.parentField\r\n const parentDef = Model.parent ? Model.getResource(Model.parent) : undefined\r\n let parentId = opts.params[parentKey]\r\n\r\n if (parentId === false || !parentKey || !parentDef) {\r\n if (parentId === false) {\r\n delete opts.params[parentKey]\r\n }\r\n return endpoint\r\n } else {\r\n delete opts.params[parentKey]\r\n\r\n if (isString(id) || isNumber(id)) {\r\n item = Model.get(id)\r\n } else if (isObject(id)) {\r\n item = id\r\n }\r\n\r\n if (item) {\r\n parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null)\r\n }\r\n\r\n if (parentId) {\r\n delete opts.endpoint\r\n const _opts = {}\r\n forOwn(opts, function (value, key) {\r\n _opts[key] = value\r\n })\r\n _(_opts, parentDef)\r\n return makePath(this.getEndpoint(parentDef, parentId, _opts, parentId, endpoint))\r\n } else {\r\n return endpoint\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {string} method TODO\r\n * @param {*} Model TODO\r\n * @param {(string|number)?} id TODO\r\n * @param {Object} opts Configuration options.\r\n */\r\n getPath (method, Model, id, opts) {\r\n const self = this\r\n opts || (opts = {})\r\n const args = [\r\n opts.basePath === undefined ? (Model.basePath === undefined ? self.basePath : Model.basePath) : opts.basePath,\r\n self.getEndpoint(Model, (isString(id) || isNumber(id) || method === 'create') ? id : null, opts)\r\n ]\r\n if (method === 'find' || method === 'update' || method === 'destroy') {\r\n args.push(id)\r\n }\r\n return makePath.apply(utils, args)\r\n },\r\n\r\n /**\r\n * Make an Http request.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} config Request configuration options.\r\n * @param {Object} [opts] Configuration options.\r\n * @return {Promise}\r\n */\r\n HTTP (config, opts) {\r\n const self = this\r\n const start = new Date()\r\n opts || (opts = {})\r\n config = copy(config)\r\n config = deepMixIn(config, self.httpConfig)\r\n if (self.forceTrailingSlash && config.url[config.url.length - 1] !== '/') {\r\n config.url += '/'\r\n }\r\n config.method = config.method.toUpperCase()\r\n const suffix = config.suffix || opts.suffix || self.suffix\r\n if (suffix && config.url.substr(config.url.length - suffix.length) !== suffix) {\r\n config.url += suffix\r\n }\r\n\r\n function logResponse (data) {\r\n const str = `${start.toUTCString()} - ${config.method.toUpperCase()} ${config.url} - ${data.status} ${(new Date().getTime() - start.getTime())}ms`\r\n if (data.status >= 200 && data.status < 300) {\r\n if (self.log) {\r\n self.dbg('debug', str, data)\r\n }\r\n return data\r\n } else {\r\n if (self.error) {\r\n self.error(`'FAILED: ${str}`, data)\r\n }\r\n return reject(data)\r\n }\r\n }\r\n\r\n if (!self.http) {\r\n throw new Error('You have not configured this adapter with an http library!')\r\n }\r\n\r\n return resolve(self.beforeHTTP(config, opts)).then(function (_config) {\r\n config = _config || config\r\n if (hasFetch && (self.useFetch || opts.useFetch || !self.http)) {\r\n return self.fetch(config, opts).then(logResponse, logResponse)\r\n }\r\n return self.http(config).then(logResponse, logResponse).catch(function (err) {\r\n return self.responseError(err, config, opts)\r\n })\r\n }).then(function (response) {\r\n return resolve(self.afterHTTP(config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Log the provided arguments at the specified leve.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {string} level Log level.\r\n * @param {...*} [args] Arguments to log.\r\n */\r\n log (level, ...args) {\r\n if (level && !args.length) {\r\n args.push(level)\r\n level = 'debug'\r\n }\r\n if (level === 'debug' && !this.debug) {\r\n return\r\n }\r\n const prefix = `${level.toUpperCase()}: (${this.name})`\r\n if (console[level]) {\r\n console[level](prefix, ...args)\r\n } else {\r\n console.log(prefix, ...args)\r\n }\r\n },\r\n\r\n /**\r\n * { function_description }\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {*} url { description }\r\n * @param {*} data { description }\r\n * @param {*} config { description }\r\n * @param {Object} [opts] Configuration options.\r\n * @return {Promise}\r\n */\r\n POST (url, data, config, opts) {\r\n const self = this\r\n config || (config = {})\r\n config.url = url || config.url\r\n config.data = data || config.data\r\n config.method = config.method || 'post'\r\n return resolve(self.beforePOST(url, data, config, opts)).then(function (_config) {\r\n config = _config || config\r\n return self.HTTP(config, opts)\r\n }).then(function (response) {\r\n return resolve(self.afterPOST(url, data, config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * { function_description }\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {*} url { description }\r\n * @param {*} data { description }\r\n * @param {*} config { description }\r\n * @param {Object} [opts] Configuration options.\r\n * @return {Promise}\r\n */\r\n PUT (url, data, config, opts) {\r\n const self = this\r\n config || (config = {})\r\n config.url = url || config.url\r\n config.data = data || config.data\r\n config.method = config.method || 'put'\r\n return resolve(self.beforePUT(url, data, config, opts)).then(function (_config) {\r\n config = _config || config\r\n return self.HTTP(config, opts)\r\n }).then(function (response) {\r\n return resolve(self.afterPUT(url, data, config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * { function_description }\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {*} Model { description }\r\n * @param {*} params { description }\r\n * @param {*} opts { description }\r\n * @return {*} Transformed params.\r\n */\r\n queryTransform (Model, params, opts) {\r\n opts || (opts = {})\r\n if (isFunction(opts.queryTransform)) {\r\n return opts.queryTransform(Model, params, opts)\r\n }\r\n if (isFunction(Model.queryTransform)) {\r\n return Model.queryTransform(Model, params, opts)\r\n }\r\n return params\r\n },\r\n\r\n /**\r\n * Error handler invoked when the promise returned by {@link DSHttpAdapter#http}\r\n * is rejected. Default implementation is to just return the error wrapped in\r\n * a rejected Promise, aka rethrow the error. {@link DSHttpAdapter#http} is\r\n * called by {@link DSHttpAdapter#HTTP}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {*} err The error that {@link DSHttpAdapter#http} rejected with.\r\n * @param {*} config The `config` argument that was passed to {@link DSHttpAdapter#HTTP}.\r\n * @param {*} opts The `opts` argument that was passed to {@link DSHttpAdapter#HTTP}.\r\n * @return {Promise}\r\n */\r\n responseError (err, config, opts) {\r\n return reject(err)\r\n },\r\n\r\n /**\r\n * { function_description }\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {*} Model { description }\r\n * @param {*} data { description }\r\n * @param {*} opts { description }\r\n * @return {*} Serialized data.\r\n */\r\n serialize (Model, data, opts) {\r\n opts || (opts = {})\r\n if (isFunction(opts.serialize)) {\r\n return opts.serialize(Model, data, opts)\r\n }\r\n if (isFunction(Model.serialize)) {\r\n return Model.serialize(Model, data, opts)\r\n }\r\n return data\r\n },\r\n\r\n /**\r\n * { function_description }\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {*} Model { description }\r\n * @param {*} id { description }\r\n * @param {*} props { description }\r\n * @param {Object} [opts] Configuration options.\r\n * @return {Promise}\r\n */\r\n update (Model, id, props, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'update'\r\n self.dbg(opts.op, Model, id, props, opts)\r\n return resolve(self.beforeUpdate(Model, id, props, opts)).then(function () {\r\n return self.PUT(\r\n self.getPath('update', Model, id, opts),\r\n self.serialize(Model, props, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterUpdate(Model, id, props, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * { function_description }\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {*} Model { description }\r\n * @param {*} props { description }\r\n * @param {*} query { description }\r\n * @param {Object} [opts] Configuration options.\r\n * @return {Promise}\r\n */\r\n updateAll (Model, props, query, opts) {\r\n const self = this\r\n query || (query = {})\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n deepMixIn(opts.params, query)\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'updateAll'\r\n self.dbg(opts.op, Model, props, query, opts)\r\n return resolve(self.beforeUpdateAll(Model, props, query, opts)).then(function () {\r\n return self.PUT(\r\n self.getPath('updateAll', Model, null, opts),\r\n self.serialize(Model, props, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterUpdateAll(Model, props, query, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Update multiple entities in batch.\r\n *\r\n * {@link DSHttpAdapter#beforeUpdateMany} will be called before calling\r\n * {@link DSHttpAdapter#PUT}.\r\n * {@link DSHttpAdapter#afterUpdateMany} will be called after calling\r\n * {@link DSHttpAdapter#PUT}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The Model.\r\n * @param {Array} models Array of property objects to send as the payload.\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.params] TODO\r\n * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO\r\n * @return {Promise}\r\n */\r\n updateMany (Model, models, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'updateMany'\r\n self.dbg(opts.op, Model, models, opts)\r\n return resolve(self.beforeUpdateMany(Model, models, opts)).then(function () {\r\n return self.PUT(\r\n self.getPath('updateMany', Model, null, opts),\r\n self.serialize(Model, models, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterUpdateMany(Model, models, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n }\r\n})\r\n\r\n/**\r\n * Add an Http actions to a Model.\r\n *\r\n * @name DSHttpAdapter.addAction\r\n * @method\r\n * @param {string} name Name of the new action.\r\n * @param {Object} [opts] Action configuration\r\n * @param {string} [opts.adapter]\r\n * @param {string} [opts.pathname]\r\n * @param {Function} [opts.request]\r\n * @param {Function} [opts.response]\r\n * @param {Function} [opts.responseError]\r\n * @return {Function} Decoration function, which should be passed the Model to\r\n * decorate when invoked.\r\n */\r\nDSHttpAdapter.addAction = function (name, opts) {\r\n if (!name || !isString(name)) {\r\n throw new TypeError('action(name[, opts]): Expected: string, Found: ' + typeof name)\r\n }\r\n return function (Model) {\r\n if (Model[name]) {\r\n throw new Error('action(name[, opts]): ' + name + ' already exists on target!')\r\n }\r\n opts.request = opts.request || function (config) { return config }\r\n opts.response = opts.response || function (response) { return response }\r\n opts.responseError = opts.responseError || function (err) { return reject(err) }\r\n Model[name] = function (id, _opts) {\r\n if (isObject(id)) {\r\n _opts = id\r\n }\r\n _opts = _opts || {}\r\n let adapter = this.getAdapter(opts.adapter || this.defaultAdapter || 'http')\r\n let config = {}\r\n fillIn(config, opts)\r\n if (!_opts.hasOwnProperty('endpoint') && config.endpoint) {\r\n _opts.endpoint = config.endpoint\r\n }\r\n if (typeof _opts.getEndpoint === 'function') {\r\n config.url = _opts.getEndpoint(this, _opts)\r\n } else {\r\n let args = [\r\n _opts.basePath || this.basePath || adapter.defaults.basePath,\r\n adapter.getEndpoint(this, isSorN(id) ? id : null, _opts)\r\n ]\r\n if (isSorN(id)) {\r\n args.push(id)\r\n }\r\n args.push(opts.pathname || name)\r\n config.url = makePath.apply(null, args)\r\n }\r\n config.method = config.method || 'GET'\r\n config.modelName = this.name\r\n deepMixIn(config)(_opts)\r\n return resolve(config)\r\n .then(_opts.request || opts.request)\r\n .then(function (config) { return adapter.HTTP(config) })\r\n .then(function (data) {\r\n if (data && data.config) {\r\n data.config.modelName = this.name\r\n }\r\n return data\r\n })\r\n .then(_opts.response || opts.response, _opts.responseError || opts.responseError)\r\n }\r\n return Model\r\n }\r\n}\r\n\r\n/**\r\n * Add multiple Http actions to a Model. See {@link DSHttpAdapter.addAction} for\r\n * action configuration options.\r\n *\r\n * @name DSHttpAdapter.addActions\r\n * @method\r\n * @param {Object.} opts Object where the key is an action name\r\n * and the value is the configuration for the action.\r\n * @return {Function} Decoration function, which should be passed the Model to\r\n * decorate when invoked.\r\n */\r\nDSHttpAdapter.addActions = function (opts) {\r\n opts || (opts = {})\r\n return function (Model) {\r\n forOwn(Model, function (value, key) {\r\n DSHttpAdapter.addAction(key, value)(Model)\r\n })\r\n return Model\r\n }\r\n}\r\n\r\n/**\r\n * Alternative to ES6 class syntax for extending `DSHttpAdapter`.\r\n *\r\n * __ES6__:\r\n * ```javascript\r\n * class MyHttpAdapter extends DSHttpAdapter {\r\n * deserialize (Model, data, opts) {\r\n * const data = super.deserialize(Model, data, opts)\r\n * data.foo = 'bar'\r\n * return data\r\n * }\r\n * }\r\n * ```\r\n *\r\n * __ES5__:\r\n * ```javascript\r\n * var instanceProps = {\r\n * // override deserialize\r\n * deserialize: function (Model, data, opts) {\r\n * var Ctor = this.constructor\r\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\r\n * // call the super deserialize\r\n * var data = superDeserialize(Model, data, opts)\r\n * data.foo = 'bar'\r\n * return data\r\n * },\r\n * say: function () { return 'hi' }\r\n * }\r\n * var classProps = {\r\n * yell: function () { return 'HI' }\r\n * }\r\n *\r\n * var MyHttpAdapter = DSHttpAdapter.extend(instanceProps, classProps)\r\n * var adapter = new MyHttpAdapter()\r\n * adapter.say() // \"hi\"\r\n * MyHttpAdapter.yell() // \"HI\"\r\n * ```\r\n *\r\n * @name DSHttpAdapter.extend\r\n * @method\r\n * @param {Object} [instanceProps] Properties that will be added to the\r\n * prototype of the subclass.\r\n * @param {Object} [classProps] Properties that will be added as static\r\n * properties to the subclass itself.\r\n * @return {Object} Subclass of `DSHttpAdapter`.\r\n */\r\nDSHttpAdapter.extend = extend\r\n\r\n/**\r\n * Details of the current version of the `js-data-http` module.\r\n *\r\n * @name DSHttpAdapter.version\r\n * @type {Object}\r\n * @property {string} version.full The full semver value.\r\n * @property {number} version.major The major version number.\r\n * @property {number} version.minor The minor version number.\r\n * @property {number} version.patch The patch version number.\r\n * @property {(string|boolean)} version.alpha The alpha version value,\r\n * otherwise `false` if the current version is not alpha.\r\n * @property {(string|boolean)} version.beta The beta version value,\r\n * otherwise `false` if the current version is not beta.\r\n */\r\nDSHttpAdapter.version = {\r\n full: '<%= pkg.version %>',\r\n major: parseInt('<%= major %>', 10),\r\n minor: parseInt('<%= minor %>', 10),\r\n patch: parseInt('<%= patch %>', 10),\r\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\r\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\r\n}\r\n\r\n/**\r\n * Registered as `js-data-http` in NPM and Bower. The build of `js-data-http`\r\n * that works on Node.js is registered in NPM as `js-data-http-node`. The build\r\n * of `js-data-http` that does not bundle `axios` is registered in NPM and Bower\r\n * as `js-data-fetch`.\r\n *\r\n * __Script tag__:\r\n * ```javascript\r\n * window.DSHttpAdapter\r\n * ```\r\n * __CommonJS__:\r\n * ```javascript\r\n * var DSHttpAdapter = require('js-data-http')\r\n * ```\r\n * __ES6 Modules__:\r\n * ```javascript\r\n * import DSHttpAdapter from 'js-data-http'\r\n * ```\r\n * __AMD__:\r\n * ```javascript\r\n * define('myApp', ['js-data-http'], function (DSHttpAdapter) { ... })\r\n * ```\r\n *\r\n * @module js-data-http\r\n */\r\n\r\nmodule.exports = DSHttpAdapter\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/jason/Documents/GitHub/js-data-http/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 **/","module.exports = undefined;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"undefined\"\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap c3f8834944509f403e4f","webpack:///./src/index.js","webpack:///external {\"amd\":\"js-data\",\"commonjs\":\"js-data\",\"commonjs2\":\"js-data\",\"root\":\"JSData\"}","webpack:///external \"undefined\""],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;;;;;;ACrCA,KAAM,QAAQ,oBAAQ,CAAR,CAAR;KAGJ;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;;;AAGF,KAAI,WAAW,KAAX;;AAEJ,KAAI;AACF,cAAW,UAAU,OAAO,KAAP,CADnB;EAAJ,CAEE,OAAO,CAAP,EAAU,EAAV;;AAEF,UAAS,aAAT,CAAwB,KAAxB,EAA+B;AAC7B,UAAQ,SAAS,IAAT,IAAiB,UAAU,EAAV,CADI;EAA/B;AAGA,UAAS,IAAT,CAAe,KAAf,EAAsB,SAAtB,EAAiC;AAC/B,iBAAc,YAAY,EAAZ,CAAd,CAD+B;AAE/B,UAAO,MAAM,MAAN,CAAa,aAAb,EAA4B,IAA5B,CAAiC,SAAjC,CAAP,CAF+B;EAAjC;AAIA,UAAS,QAAT,GAA4B;qCAAN;;IAAM;;AAC1B,OAAI,SAAS,KAAK,IAAL,EAAW,GAAX,CAAT,CADsB;AAE1B,UAAO,OAAO,OAAP,CAAe,mBAAf,EAAoC,KAApC,CAAP,CAF0B;EAA5B;;AAKA,UAAS,MAAT,CAAiB,GAAjB,EAAsB;AACpB,UAAO,mBAAmB,GAAnB,EACJ,OADI,CACI,OADJ,EACa,GADb,EAEJ,OAFI,CAEI,OAFJ,EAEa,GAFb,EAGJ,OAHI,CAGI,MAHJ,EAGY,GAHZ,EAIJ,OAJI,CAII,OAJJ,EAIa,GAJb,EAKJ,OALI,CAKI,MALJ,EAKY,GALZ,EAMJ,OANI,CAMI,OANJ,EAMa,GANb,EAOJ,OAPI,CAOI,OAPJ,EAOa,GAPb,CAAP,CADoB;EAAtB;;AAWA,UAAS,QAAT,CAAmB,GAAnB,EAAwB,MAAxB,EAAgC;AAC9B,OAAI,CAAC,MAAD,EAAS;AACX,YAAO,GAAP,CADW;IAAb;;AAIA,OAAM,QAAQ,EAAR,CALwB;;AAO9B,UAAO,MAAP,EAAe,UAAU,GAAV,EAAe,GAAf,EAAoB;AACjC,SAAI,QAAQ,IAAR,IAAgB,OAAO,GAAP,KAAe,WAAf,EAA4B;AAC9C,cAD8C;MAAhD;AAGA,SAAI,CAAC,QAAQ,GAAR,CAAD,EAAe;AACjB,aAAM,CAAC,GAAD,CAAN,CADiB;MAAnB;;AAIA,SAAI,OAAJ,CAAY,UAAU,CAAV,EAAa;AACvB,WAAI,OAAO,QAAP,CAAgB,IAAhB,CAAqB,CAArB,MAA4B,eAA5B,EAA6C;AAC/C,aAAI,EAAE,WAAF,EAAJ,CAD+C;QAAjD,MAEO,IAAI,SAAS,CAAT,CAAJ,EAAiB;AACtB,aAAI,OAAO,CAAP,CAAJ,CADsB;QAAjB;AAGP,aAAM,IAAN,CAAc,OAAO,GAAP,UAAe,OAAO,CAAP,CAA7B,EANuB;MAAb,CAAZ,CARiC;IAApB,CAAf,CAP8B;;AAyB9B,OAAI,MAAM,MAAN,GAAe,CAAf,EAAkB;AACpB,YAAO,CAAC,IAAI,OAAJ,CAAY,GAAZ,MAAqB,CAAC,CAAD,GAAK,GAA1B,GAAgC,GAAhC,CAAD,GAAwC,MAAM,IAAN,CAAW,GAAX,CAAxC,CADa;IAAtB;;AAIA,UAAO,GAAP,CA7B8B;EAAhC;;AAgCA,KAAM,OAAO,SAAP,IAAO,GAAmB;AAC9B,OAAM,OAAO,IAAP,CADwB;;sCAAN;;IAAM;;AAE9B,OAAM,OAAO,KAAK,KAAK,MAAL,GAAc,CAAd,CAAZ,CAFwB;AAG9B,QAAK,GAAL,cAAS,KAAK,EAAL,SAAY,KAArB,EAH8B;EAAnB;;AAMb,KAAM,QAAQ,SAAR,KAAQ,GAAmB;AAC/B,OAAM,OAAO,IAAP,CADyB;;sCAAN;;IAAM;;AAE/B,OAAM,OAAO,KAAK,KAAK,MAAL,GAAc,CAAd,CAAZ,CAFyB;AAG/B,QAAK,GAAL,cAAS,KAAK,EAAL,SAAY,KAArB,EAH+B;EAAnB;;AAMd,KAAM,WAAW;;;;;;AAMf,aAAU,EAAV;;;;;;;AAOA,UAAO,KAAP;;;;;;;AAOA,uBAAoB,KAApB;;;;;;AAMA,SAAM,KAAN;;;;;;AAMA,eAAY,EAAZ;;;;;;AAMA,WAAQ,EAAR;;;;;;;AAOA,aAAU,KAAV;EA7CI;;;;;;;;;;;;;;;AA6DN,UAAS,WAAT,CAAsB,IAAtB,EAA4B;AAC1B,OAAM,OAAO,IAAP;;;AADoB,OAI1B,KAAS,OAAO,EAAP,CAAT,CAJ0B;;AAM1B,UAAO,IAAP,EAAa,IAAb,EAN0B;AAO1B,UAAO,IAAP,EAAa,QAAb,EAP0B;EAA5B;;AAUA,wBAAuB,YAAY,SAAZ,EAAuB;;;;;;;;;AAS5C,gBAAa,KAAb;;;;;;;;;;AAUA,oBAAiB,KAAjB;;;;;;;;;;AAUA,aAAU,KAAV;;;;;;;;;;AAUA,iBAAc,KAAd;;;;;;;;;;AAUA,oBAAiB,KAAjB;;;;;;;;;;AAUA,cAAW,KAAX;;;;;;;;;;AAUA,iBAAc,KAAd;;;;;;;;;;AAUA,aAAU,KAAV;;;;;;;;;AASA,cAAW,KAAX;;;;;;;;;;;AAWA,cAAW,KAAX;;;;;;;;;;;AAWA,aAAU,KAAV;;;;;;;;;;;AAWA,gBAAa,KAAb;;;;;;;;;;;AAWA,mBAAgB,KAAhB;;;;;;;;;;AAUA,oBAAiB,KAAjB;;;;;;;;;AASA,iBAAc,IAAd;;;;;;;;;AASA,qBAAkB,IAAlB;;;;;;;;;AASA,cAAW,IAAX;;;;;;;;;AASA,kBAAe,IAAf;;;;;;;;;AASA,qBAAkB,IAAlB;;;;;;;;;AASA,eAAY,IAAZ;;;;;;;;;AASA,kBAAe,IAAf;;;;;;;;;AASA,cAAW,IAAX;;;;;;;;AAQA,eAAY,IAAZ;;;;;;;;;;AAUA,eAAY,IAAZ;;;;;;;;;;AAUA,cAAW,IAAX;;;;;;;;;;AAUA,iBAAc,IAAd;;;;;;;;;;AAUA,oBAAiB,IAAjB;;;;;;;;;AASA,qBAAkB,IAAlB;;;;;;;;;;;;;;AAcA,2BAAQ,QAAQ,OAAO,MAAM;AAC3B,SAAM,OAAO,IAAP,CADqB;AAE3B,SAAI,cAAJ,CAF2B;AAG3B,YAAO,OAAO,KAAK,IAAL,CAAP,GAAoB,EAApB,CAHoB;AAI3B,UAAK,MAAL,KAAgB,KAAK,MAAL,GAAc,EAAd,CAAhB,CAJ2B;AAK3B,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAL2B;AAM3B,UAAK,MAAL,GAAc,YAAY,KAAK,MAAL,CAAZ,GAA2B,OAAO,MAAP,GAAgB,KAAK,MAAL;;;AAN9B,OAS3B,GAAK,KAAK,EAAL,GAAU,cAAV,CATsB;AAU3B,YAAO,QAAQ,KAAK,EAAL,EAAS,MAAT,EAAiB,KAAjB,EAAwB,IAAxB,CAAR,EAAuC,IAAvC,CAA4C,YAAY;AAC7D,YAAK,KAAK,EAAL,GAAU,QAAV,CADwD;AAE7D,YAAK,GAAL,CAAS,EAAT,EAAa,MAAb,EAAqB,KAArB,EAA4B,IAA5B,EAF6D;AAG7D,cAAO,KAAK,IAAL,CACL,KAAK,OAAL,CAAa,QAAb,EAAuB,MAAvB,EAA+B,KAA/B,EAAsC,IAAtC,CADK,EAEL,KAAK,SAAL,CAAe,MAAf,EAAuB,KAAvB,EAA8B,IAA9B,CAFK,EAGL,IAHK,CAAP,CAH6D;MAAZ,CAA5C,CAQJ,IARI,CAQC,UAAU,QAAV,EAAoB;AAC1B,cAAO,KAAK,WAAL,CAAiB,MAAjB,EAAyB,QAAzB,EAAmC,IAAnC,CAAP,CAD0B;MAApB,CARD,CAUJ,IAVI,CAUC,UAAU,IAAV,EAAgB;;AAEtB,YAAK,KAAK,EAAL,GAAU,aAAV,CAFiB;AAGtB,cAAO,QAAQ,KAAK,EAAL,EAAS,MAAT,EAAiB,KAAjB,EAAwB,IAAxB,EAA8B,IAA9B,CAAR,EAA6C,IAA7C,CAAkD,UAAU,KAAV,EAAiB;;AAExE,gBAAO,YAAY,KAAZ,IAAqB,IAArB,GAA4B,KAA5B,CAFiE;QAAjB,CAAzD,CAHsB;MAAhB,CAVR,CAV2B;IA7Re;;;;;;;;;;;;;;;AAuU5C,mCAAY,QAAQ,SAAS,MAAM;AACjC,SAAM,OAAO,IAAP,CAD2B;AAEjC,SAAI,cAAJ,CAFiC;AAGjC,YAAO,OAAO,KAAK,IAAL,CAAP,GAAoB,EAApB,CAH0B;AAIjC,UAAK,MAAL,KAAgB,KAAK,MAAL,GAAc,EAAd,CAAhB,CAJiC;AAKjC,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CALiC;AAMjC,UAAK,MAAL,GAAc,YAAY,KAAK,MAAL,CAAZ,GAA2B,OAAO,MAAP,GAAgB,KAAK,MAAL;;;AANxB,OASjC,GAAK,KAAK,EAAL,GAAU,kBAAV,CAT4B;AAUjC,YAAO,QAAQ,KAAK,EAAL,EAAS,MAAT,EAAiB,OAAjB,EAA0B,IAA1B,CAAR,EAAyC,IAAzC,CAA8C,YAAY;AAC/D,YAAK,KAAK,EAAL,GAAU,YAAV,CAD0D;AAE/D,YAAK,GAAL,CAAS,EAAT,EAAa,MAAb,EAAqB,OAArB,EAA8B,IAA9B,EAF+D;AAG/D,cAAO,KAAK,IAAL,CACL,KAAK,OAAL,CAAa,YAAb,EAA2B,MAA3B,EAAmC,IAAnC,EAAyC,IAAzC,CADK,EAEL,KAAK,SAAL,CAAe,MAAf,EAAuB,OAAvB,EAAgC,IAAhC,CAFK,EAGL,IAHK,CAAP,CAH+D;MAAZ,CAA9C,CAQJ,IARI,CAQC,UAAU,QAAV,EAAoB;AAC1B,cAAO,KAAK,WAAL,CAAiB,MAAjB,EAAyB,QAAzB,EAAmC,IAAnC,CAAP,CAD0B;MAApB,CARD,CAUJ,IAVI,CAUC,UAAU,IAAV,EAAgB;;AAEtB,YAAK,KAAK,EAAL,GAAU,iBAAV,CAFiB;AAGtB,cAAO,QAAQ,KAAK,EAAL,EAAS,MAAT,EAAiB,OAAjB,EAA0B,IAA1B,EAAgC,IAAhC,CAAR,EAA+C,IAA/C,CAAoD,UAAU,KAAV,EAAiB;;AAE1E,gBAAO,YAAY,KAAZ,IAAqB,IAArB,GAA4B,KAA5B,CAFmE;QAAjB,CAA3D,CAHsB;MAAhB,CAVR,CAViC;IAvUS;;;;;;;;;;AA4W5C,uBAAc;wCAAN;;MAAM;;AACZ,UAAK,GAAL,cAAS,gBAAY,KAArB,EADY;IA5W8B;;;;;;;;;;;;;;AA2X5C,qBAAK,KAAK,QAAQ,MAAM;AACtB,SAAM,OAAO,IAAP,CADgB;AAEtB,SAAI,cAAJ,CAFsB;AAGtB,gBAAW,SAAS,EAAT,CAAX,CAHsB;AAItB,cAAS,OAAO,EAAP,CAAT,CAJsB;AAKtB,YAAO,GAAP,GAAa,OAAO,OAAO,GAAP,CALE;AAMtB,YAAO,MAAP,GAAgB,OAAO,MAAP,IAAiB,QAAjB;;;AANM,OAStB,GAAK,KAAK,EAAL,GAAU,WAAV,CATiB;AAUtB,YAAO,QAAQ,KAAK,EAAL,EAAS,GAAT,EAAc,MAAd,EAAsB,IAAtB,CAAR,EAAqC,IAArC,CAA0C,UAAU,OAAV,EAAmB;;AAElE,gBAAS,YAAY,OAAZ,IAAuB,MAAvB,GAAgC,OAAhC,CAFyD;AAGlE,YAAK,KAAK,EAAL,GAAU,KAAV,CAH6D;AAIlE,YAAK,GAAL,CAAS,EAAT,EAAa,GAAb,EAAkB,MAAlB,EAA0B,IAA1B,EAJkE;AAKlE,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,CAAP,CALkE;MAAnB,CAA1C,CAMJ,IANI,CAMC,UAAU,QAAV,EAAoB;;AAE1B,YAAK,KAAK,EAAL,GAAU,UAAV,CAFqB;AAG1B,cAAO,QAAQ,KAAK,EAAL,EAAS,GAAT,EAAc,MAAd,EAAsB,IAAtB,EAA4B,QAA5B,CAAR,EAA+C,IAA/C,CAAoD,UAAU,SAAV,EAAqB;;AAE9E,gBAAO,YAAY,SAAZ,IAAyB,QAAzB,GAAoC,SAApC,CAFuE;QAArB,CAA3D,CAH0B;MAApB,CANR,CAVsB;IA3XoB;;;;;;;;;;;;;;AAga5C,qCAAa,QAAQ,UAAU,MAAM;AACnC,cAAS,OAAO,EAAP,CAAT,CADmC;AAEnC,SAAI,WAAW,KAAK,WAAL,CAAf,EAAkC;AAChC,cAAO,KAAK,WAAL,CAAiB,MAAjB,EAAyB,QAAzB,EAAmC,IAAnC,CAAP,CADgC;MAAlC;AAGA,SAAI,WAAW,OAAO,WAAP,CAAf,EAAoC;AAClC,cAAO,OAAO,WAAP,CAAmB,MAAnB,EAA2B,QAA3B,EAAqC,IAArC,CAAP,CADkC;MAApC;AAGA,SAAI,KAAK,GAAL,EAAU;AACZ,cAAO,QAAP,CADY;MAAd;AAGA,YAAO,WAAY,UAAU,QAAV,GAAqB,SAAS,IAAT,GAAgB,QAArC,GAAiD,QAA7D,CAX4B;IAhaO;;;;;;;;;;;;;;;AA0b5C,6BAAS,QAAQ,IAAI,MAAM;AACzB,SAAM,OAAO,IAAP,CADmB;AAEzB,SAAI,cAAJ,CAFyB;AAGzB,YAAO,OAAO,KAAK,IAAL,CAAP,GAAoB,EAApB,CAHkB;AAIzB,UAAK,MAAL,KAAgB,KAAK,MAAL,GAAc,EAAd,CAAhB,CAJyB;AAKzB,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CALyB;AAMzB,UAAK,MAAL,GAAc,YAAY,KAAK,MAAL,CAAZ,GAA2B,OAAO,MAAP,GAAgB,KAAK,MAAL;;;AANhC,OASzB,GAAK,KAAK,EAAL,GAAU,eAAV,CAToB;AAUzB,YAAO,QAAQ,KAAK,EAAL,EAAS,MAAT,EAAiB,EAAjB,EAAqB,IAArB,CAAR,EAAoC,IAApC,CAAyC,YAAY;AAC1D,YAAK,KAAK,EAAL,GAAU,SAAV,CADqD;AAE1D,YAAK,GAAL,CAAS,EAAT,EAAa,MAAb,EAAqB,EAArB,EAAyB,IAAzB,EAF0D;AAG1D,cAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,SAAb,EAAwB,MAAxB,EAAgC,EAAhC,EAAoC,IAApC,CADK,EAEL,IAFK,CAAP,CAH0D;MAAZ,CAAzC,CAOJ,IAPI,CAOC,UAAU,QAAV,EAAoB;AAC1B,cAAO,KAAK,WAAL,CAAiB,MAAjB,EAAyB,QAAzB,EAAmC,IAAnC,CAAP,CAD0B;MAApB,CAPD,CASJ,IATI,CASC,UAAU,IAAV,EAAgB;;AAEtB,YAAK,KAAK,EAAL,GAAU,cAAV,CAFiB;AAGtB,cAAO,QAAQ,KAAK,EAAL,EAAS,MAAT,EAAiB,EAAjB,EAAqB,IAArB,EAA2B,IAA3B,CAAR,EAA0C,IAA1C,CAA+C,UAAU,KAAV,EAAiB;;AAErE,gBAAO,YAAY,KAAZ,IAAqB,IAArB,GAA4B,KAA5B,CAF8D;QAAjB,CAAtD,CAHsB;MAAhB,CATR,CAVyB;IA1biB;;;;;;;;;;;;;;;AAme5C,mCAAY,QAAQ,OAAO,MAAM;AAC/B,SAAM,OAAO,IAAP,CADyB;AAE/B,SAAI,cAAJ,CAF+B;AAG/B,eAAU,QAAQ,EAAR,CAAV,CAH+B;AAI/B,YAAO,OAAO,KAAK,IAAL,CAAP,GAAoB,EAApB,CAJwB;AAK/B,UAAK,MAAL,KAAgB,KAAK,MAAL,GAAc,EAAd,CAAhB,CAL+B;AAM/B,eAAU,KAAK,MAAL,EAAa,KAAvB,EAN+B;AAO/B,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAP+B;AAQ/B,UAAK,MAAL,GAAc,YAAY,KAAK,MAAL,CAAZ,GAA2B,OAAO,MAAP,GAAgB,KAAK,MAAL;;;AAR1B,OAW/B,GAAK,KAAK,EAAL,GAAU,kBAAV,CAX0B;AAY/B,YAAO,QAAQ,KAAK,gBAAL,CAAsB,MAAtB,EAA8B,KAA9B,EAAqC,IAArC,CAAR,EAAoD,IAApD,CAAyD,YAAY;AAC1E,YAAK,KAAK,EAAL,GAAU,YAAV,CADqE;AAE1E,YAAK,GAAL,CAAS,EAAT,EAAa,MAAb,EAAqB,KAArB,EAA4B,IAA5B,EAF0E;AAG1E,cAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,YAAb,EAA2B,MAA3B,EAAmC,IAAnC,EAAyC,IAAzC,CADK,EAEL,IAFK,CAAP,CAH0E;MAAZ,CAAzD,CAOJ,IAPI,CAOC,UAAU,QAAV,EAAoB;AAC1B,cAAO,KAAK,WAAL,CAAiB,MAAjB,EAAyB,QAAzB,EAAmC,IAAnC,CAAP,CAD0B;MAApB,CAPD,CASJ,IATI,CASC,UAAU,IAAV,EAAgB;;AAEtB,YAAK,KAAK,EAAL,GAAU,iBAAV,CAFiB;AAGtB,cAAO,QAAQ,KAAK,EAAL,EAAS,MAAT,EAAiB,KAAjB,EAAwB,IAAxB,EAA8B,IAA9B,CAAR,EAA6C,IAA7C,CAAkD,UAAU,KAAV,EAAiB;;AAExE,gBAAO,YAAY,KAAZ,IAAqB,IAArB,GAA4B,KAA5B,CAFiE;QAAjB,CAAzD,CAHsB;MAAhB,CATR,CAZ+B;IAneW;;;;;;;;;;AAygB5C,2BAAgB;AACd,SAAI,OAAJ,EAAa;;;AACX,4BAAQ,OAAO,QAAQ,KAAR,KAAkB,UAAzB,GAAsC,OAAtC,GAAgD,KAAhD,CAAR,4BADW;MAAb;IA1gB0C;;;;;;;;;;;;;;;;AA4hB5C;;;;;;;;;;eAAO,QAAQ,MAAM;AACnB,SAAM,gBAAgB;AACpB,eAAQ,OAAO,MAAP;;AAER,gBAAS,IAAI,OAAJ,CAAY,OAAO,OAAP,CAArB;MAHI,CADa;;AAOnB,SAAI,OAAO,IAAP,EAAa;AACf,qBAAc,IAAd,GAAqB,OAAO,OAAO,IAAP,CAA5B,CADe;MAAjB;;AAIA,YAAO,MAAM,IAAI,OAAJ,CAAY,SAAS,OAAO,GAAP,EAAY,OAAO,MAAP,CAAjC,EAAiD,aAAjD,CAAN,EAAuE,IAAvE,CAA4E,UAAU,QAAV,EAAoB;AACrG,gBAAS,MAAT,GAAkB;AAChB,iBAAQ,OAAO,MAAP;AACR,cAAK,OAAO,GAAP;QAFP,CADqG;AAKrG,cAAO,SAAS,IAAT,GAAgB,IAAhB,CAAqB,UAAU,IAAV,EAAgB;AAC1C,kBAAS,IAAT,GAAgB,IAAhB,CAD0C;AAE1C,gBAAO,QAAP,CAF0C;QAAhB,CAA5B,CALqG;MAApB,CAAnF,CAXmB;KA5hBuB;;;;;;;;;;;;;;;AA+jB5C,uBAAM,QAAQ,IAAI,MAAM;AACtB,SAAM,OAAO,IAAP,CADgB;AAEtB,SAAI,cAAJ,CAFsB;AAGtB,YAAO,OAAO,KAAK,IAAL,CAAP,GAAoB,EAApB,CAHe;AAItB,UAAK,MAAL,KAAgB,KAAK,MAAL,GAAc,EAAd,CAAhB,CAJsB;AAKtB,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CALsB;AAMtB,UAAK,MAAL,GAAc,YAAY,KAAK,MAAL,CAAZ,GAA2B,OAAO,MAAP,GAAgB,KAAK,MAAL;;;AANnC,OAStB,GAAK,KAAK,EAAL,GAAU,YAAV,CATiB;AAUtB,YAAO,QAAQ,KAAK,EAAL,EAAS,MAAT,EAAiB,EAAjB,EAAqB,IAArB,CAAR,EAAoC,IAApC,CAAyC,YAAY;AAC1D,YAAK,KAAK,EAAL,GAAU,MAAV,CADqD;AAE1D,YAAK,GAAL,CAAS,EAAT,EAAa,MAAb,EAAqB,EAArB,EAAyB,IAAzB,EAF0D;AAG1D,cAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,MAAb,EAAqB,MAArB,EAA6B,EAA7B,EAAiC,IAAjC,CADK,EAEL,IAFK,CAAP,CAH0D;MAAZ,CAAzC,CAOJ,IAPI,CAOC,UAAU,QAAV,EAAoB;AAC1B,cAAO,KAAK,WAAL,CAAiB,MAAjB,EAAyB,QAAzB,EAAmC,IAAnC,CAAP,CAD0B;MAApB,CAPD,CASJ,IATI,CASC,UAAU,IAAV,EAAgB;;AAEtB,YAAK,KAAK,EAAL,GAAU,WAAV,CAFiB;AAGtB,cAAO,QAAQ,KAAK,EAAL,EAAS,MAAT,EAAiB,EAAjB,EAAqB,IAArB,EAA2B,IAA3B,CAAR,EAA0C,IAA1C,CAA+C,UAAU,KAAV,EAAiB;;AAErE,gBAAO,YAAY,KAAZ,IAAqB,IAArB,GAA4B,KAA5B,CAF8D;QAAjB,CAAtD,CAHsB;MAAhB,CATR,CAVsB;IA/jBoB;;;;;;;;;;;;;;;AAwmB5C,6BAAS,QAAQ,OAAO,MAAM;AAC5B,SAAM,OAAO,IAAP,CADsB;AAE5B,SAAI,cAAJ,CAF4B;AAG5B,eAAU,QAAQ,EAAR,CAAV,CAH4B;AAI5B,YAAO,OAAO,KAAK,IAAL,CAAP,GAAoB,EAApB,CAJqB;AAK5B,UAAK,MAAL,KAAgB,KAAK,MAAL,GAAc,EAAd,CAAhB,CAL4B;AAM5B,UAAK,MAAL,GAAc,YAAY,KAAK,MAAL,CAAZ,GAA2B,OAAO,MAAP,GAAgB,KAAK,MAAL,CAN7B;AAO5B,eAAU,KAAK,MAAL,EAAa,KAAvB,EAP4B;AAQ5B,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd;;;AAR4B,OAW5B,GAAK,KAAK,EAAL,GAAU,eAAV,CAXuB;AAY5B,YAAO,QAAQ,KAAK,EAAL,EAAS,MAAT,EAAiB,KAAjB,EAAwB,IAAxB,CAAR,EAAuC,IAAvC,CAA4C,YAAY;AAC7D,YAAK,KAAK,EAAL,GAAU,SAAV,CADwD;AAE7D,YAAK,GAAL,CAAS,EAAT,EAAa,MAAb,EAAqB,KAArB,EAA4B,IAA5B,EAF6D;AAG7D,cAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,SAAb,EAAwB,MAAxB,EAAgC,KAAK,MAAL,EAAa,IAA7C,CADK,EAEL,IAFK,CAAP,CAH6D;MAAZ,CAA5C,CAOJ,IAPI,CAOC,UAAU,QAAV,EAAoB;AAC1B,cAAO,KAAK,WAAL,CAAiB,MAAjB,EAAyB,QAAzB,EAAmC,IAAnC,CAAP,CAD0B;MAApB,CAPD,CASJ,IATI,CASC,UAAU,IAAV,EAAgB;;AAEtB,YAAK,KAAK,EAAL,GAAU,cAAV,CAFiB;AAGtB,cAAO,QAAQ,KAAK,EAAL,EAAS,MAAT,EAAiB,KAAjB,EAAwB,IAAxB,EAA8B,IAA9B,CAAR,EAA6C,IAA7C,CAAkD,UAAU,KAAV,EAAiB;;AAExE,gBAAO,YAAY,KAAZ,IAAqB,IAArB,GAA4B,KAA5B,CAFiE;QAAjB,CAAzD,CAHsB;MAAhB,CATR,CAZ4B;IAxmBc;;;;;;;;;;;;;AAipB5C,qBAAK,KAAK,QAAQ,MAAM;AACtB,SAAM,OAAO,IAAP,CADgB;AAEtB,SAAI,cAAJ,CAFsB;AAGtB,gBAAW,SAAS,EAAT,CAAX,CAHsB;AAItB,cAAS,OAAO,EAAP,CAAT,CAJsB;AAKtB,YAAO,GAAP,GAAa,OAAO,OAAO,GAAP,CALE;AAMtB,YAAO,MAAP,GAAgB,OAAO,MAAP,IAAiB,KAAjB;;;AANM,OAStB,GAAK,KAAK,EAAL,GAAU,WAAV,CATiB;AAUtB,YAAO,QAAQ,KAAK,EAAL,EAAS,GAAT,EAAc,MAAd,EAAsB,IAAtB,CAAR,EAAqC,IAArC,CAA0C,UAAU,OAAV,EAAmB;;AAElE,gBAAS,YAAY,OAAZ,IAAuB,MAAvB,GAAgC,OAAhC,CAFyD;AAGlE,YAAK,KAAK,EAAL,GAAU,KAAV,CAH6D;AAIlE,YAAK,GAAL,CAAS,EAAT,EAAa,GAAb,EAAkB,MAAlB,EAA0B,IAA1B,EAJkE;AAKlE,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,CAAP,CALkE;MAAnB,CAA1C,CAMJ,IANI,CAMC,UAAU,QAAV,EAAoB;;AAE1B,YAAK,KAAK,EAAL,GAAU,UAAV,CAFqB;AAG1B,cAAO,QAAQ,KAAK,EAAL,EAAS,GAAT,EAAc,MAAd,EAAsB,IAAtB,EAA4B,QAA5B,CAAR,EAA+C,IAA/C,CAAoD,UAAU,SAAV,EAAqB;;AAE9E,gBAAO,YAAY,SAAZ,IAAyB,QAAzB,GAAoC,SAApC,CAFuE;QAArB,CAA3D,CAH0B;MAApB,CANR,CAVsB;IAjpBoB;;;;;;;;;;;AAmrB5C,qCAAa,QAAQ,IAAI,MAAM;;;AAC7B,cAAS,OAAO,EAAP,CAAT,CAD6B;AAE7B,UAAK,MAAL,KAAgB,KAAK,MAAL,GAAc,EAAd,CAAhB,CAF6B;;AAI7B,SAAI,gBAAJ,CAJ6B;AAK7B,SAAM,YAAY,OAAO,SAAP,CALW;AAM7B,SAAM,WAAW,KAAK,cAAL,CAAoB,UAApB,IAAkC,KAAK,QAAL,GAAgB,OAAO,QAAP,CANtC;AAO7B,SAAI,cAAc,OAAO,WAAP,CAPW;AAQ7B,SAAM,YAAY,OAAO,MAAP,GAAgB,OAAO,WAAP,CAAmB,OAAO,MAAP,CAAnC,GAAoD,SAApD,CARW;AAS7B,SAAI,WAAW,KAAK,MAAL,CAAY,SAAZ,CAAX,CATyB;;AAW7B,SAAI,aAAa,KAAb,IAAsB,CAAC,SAAD,IAAc,CAAC,SAAD,EAAY;AAClD,WAAI,aAAa,KAAb,EAAoB;AACtB,gBAAO,KAAK,MAAL,CAAY,SAAZ,CAAP,CADsB;QAAxB;AAGA,cAAO,QAAP,CAJkD;MAApD,MAKO;AACL,cAAO,KAAK,MAAL,CAAY,SAAZ,CAAP,CADK;;AAGL,WAAI,SAAS,EAAT,KAAgB,SAAS,EAAT,CAAhB,EAA8B;AAChC,gBAAO,OAAO,GAAP,CAAW,EAAX,CAAP,CADgC;QAAlC,MAEO,IAAI,SAAS,EAAT,CAAJ,EAAkB;AACvB,gBAAO,EAAP,CADuB;QAAlB;;AAIP,WAAI,IAAJ,EAAU;AACR,oBAAW,YAAY,KAAK,SAAL,CAAZ,KAAgC,KAAK,WAAL,IAAoB,KAAK,WAAL,EAAkB,UAAU,WAAV,CAAtC,GAA+D,IAA/D,CAAhC,CADH;QAAV;;AAIA,WAAI,QAAJ,EAAc;;AACZ,kBAAO,KAAK,QAAL;AACP,eAAM,QAAQ,EAAR;AACN,kBAAO,IAAP,EAAa,UAAU,KAAV,EAAiB,GAAjB,EAAsB;AACjC,mBAAM,GAAN,IAAa,KAAb,CADiC;YAAtB,CAAb;AAGA,aAAE,KAAF,EAAS,SAAT;AACA;gBAAO,SAAS,MAAK,WAAL,CAAiB,SAAjB,EAA4B,QAA5B,EAAsC,KAAtC,EAA6C,QAA7C,EAAuD,QAAvD,CAAT;YAAP;aAPY;;;QAAd,MAQO;AACL,gBAAO,QAAP,CADK;QARP;MAlBF;IA9rB0C;;;;;;;;;;;AAsuB5C,6BAAS,QAAQ,QAAQ,IAAI,MAAM;AACjC,SAAM,OAAO,IAAP,CAD2B;AAEjC,cAAS,OAAO,EAAP,CAAT,CAFiC;AAGjC,SAAM,OAAO,CACX,KAAK,QAAL,KAAkB,SAAlB,GAA+B,OAAO,QAAP,KAAoB,SAApB,GAAgC,KAAK,QAAL,GAAgB,OAAO,QAAP,GAAmB,KAAK,QAAL,EAClG,KAAK,WAAL,CAAiB,MAAjB,EAAyB,QAAC,CAAS,EAAT,KAAgB,SAAS,EAAT,CAAhB,IAAgC,WAAW,QAAX,GAAuB,EAAxD,GAA6D,IAA7D,EAAmE,IAA5F,CAFW,CAAP,CAH2B;AAOjC,SAAI,WAAW,MAAX,IAAqB,WAAW,QAAX,IAAuB,WAAW,SAAX,EAAsB;AACpE,YAAK,IAAL,CAAU,EAAV,EADoE;MAAtE;AAGA,YAAO,SAAS,KAAT,gBAAsB,IAAtB,CAAP,CAViC;IAtuBS;;;;;;;;;;;;AA4vB5C,uBAAM,QAAQ,MAAM;AAClB,SAAM,OAAO,IAAP,CADY;AAElB,SAAM,QAAQ,IAAI,IAAJ,EAAR,CAFY;AAGlB,cAAS,OAAO,EAAP,CAAT,CAHkB;AAIlB,cAAS,KAAK,MAAL,CAAT,CAJkB;AAKlB,cAAS,UAAU,MAAV,EAAkB,KAAK,UAAL,CAA3B,CALkB;AAMlB,SAAI,KAAK,kBAAL,IAA2B,OAAO,GAAP,CAAW,OAAO,GAAP,CAAW,MAAX,GAAoB,CAApB,CAAX,KAAsC,GAAtC,EAA2C;AACxE,cAAO,GAAP,IAAc,GAAd,CADwE;MAA1E;AAGA,YAAO,MAAP,GAAgB,OAAO,MAAP,CAAc,WAAd,EAAhB,CATkB;AAUlB,SAAM,SAAS,OAAO,MAAP,IAAiB,KAAK,MAAL,IAAe,KAAK,MAAL,CAV7B;AAWlB,SAAI,UAAU,OAAO,GAAP,CAAW,MAAX,CAAkB,OAAO,GAAP,CAAW,MAAX,GAAoB,OAAO,MAAP,CAAtC,KAAyD,MAAzD,EAAiE;AAC7E,cAAO,GAAP,IAAc,MAAd,CAD6E;MAA/E;;AAIA,cAAS,WAAT,CAAsB,IAAtB,EAA4B;AAC1B,WAAM,MAAS,MAAM,WAAN,aAAyB,OAAO,MAAP,CAAc,WAAd,WAA+B,OAAO,GAAP,WAAgB,KAAK,MAAL,UAAgB,IAAI,IAAJ,GAAW,OAAX,KAAuB,MAAM,OAAN,EAAvB,QAAjG,CADoB;AAE1B,WAAI,KAAK,MAAL,IAAe,GAAf,IAAsB,KAAK,MAAL,GAAc,GAAd,EAAmB;AAC3C,aAAI,KAAK,GAAL,EAAU;AACZ,gBAAK,GAAL,CAAS,OAAT,EAAkB,GAAlB,EAAuB,IAAvB,EADY;UAAd;AAGA,gBAAO,IAAP,CAJ2C;QAA7C,MAKO;AACL,aAAI,KAAK,KAAL,EAAY;AACd,gBAAK,KAAL,gBAAuB,GAAvB,EAA8B,IAA9B,EADc;UAAhB;AAGA,gBAAO,OAAO,IAAP,CAAP,CAJK;QALP;MAFF;;AAeA,SAAI,CAAC,KAAK,IAAL,EAAW;AACd,aAAM,IAAI,KAAJ,CAAU,4DAAV,CAAN,CADc;MAAhB;;AAIA,YAAO,QAAQ,KAAK,UAAL,CAAgB,MAAhB,EAAwB,IAAxB,CAAR,EAAuC,IAAvC,CAA4C,UAAU,OAAV,EAAmB;AACpE,gBAAS,WAAW,MAAX,CAD2D;AAEpE,WAAI,aAAa,KAAK,QAAL,IAAiB,KAAK,QAAL,IAAiB,CAAC,KAAK,IAAL,CAAhD,EAA4D;AAC9D,gBAAO,KAAK,KAAL,CAAW,MAAX,EAAmB,IAAnB,EAAyB,IAAzB,CAA8B,WAA9B,EAA2C,WAA3C,CAAP,CAD8D;QAAhE;AAGA,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,CAAuB,WAAvB,EAAoC,WAApC,EAAiD,KAAjD,CAAuD,UAAU,GAAV,EAAe;AAC3E,gBAAO,KAAK,aAAL,CAAmB,GAAnB,EAAwB,MAAxB,EAAgC,IAAhC,CAAP,CAD2E;QAAf,CAA9D,CALoE;MAAnB,CAA5C,CAQJ,IARI,CAQC,UAAU,QAAV,EAAoB;AAC1B,cAAO,QAAQ,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,EAA6B,QAA7B,CAAR,EAAgD,IAAhD,CAAqD,UAAU,SAAV,EAAqB;AAC/E,gBAAO,aAAa,QAAb,CADwE;QAArB,CAA5D,CAD0B;MAApB,CARR,CAlCkB;IA5vBwB;;;;;;;;;;;AAqzB5C,qBAAK,OAAgB;wCAAN;;MAAM;;AACnB,SAAI,SAAS,CAAC,KAAK,MAAL,EAAa;AACzB,YAAK,IAAL,CAAU,KAAV,EADyB;AAEzB,eAAQ,OAAR,CAFyB;MAA3B;AAIA,SAAI,UAAU,OAAV,IAAqB,CAAC,KAAK,KAAL,EAAY;AACpC,cADoC;MAAtC;AAGA,SAAM,SAAY,MAAM,WAAN,sBAAZ,CARa;AASnB,SAAI,QAAQ,KAAR,CAAJ,EAAoB;;;AAClB,6BAAQ,MAAR,mBAAe,eAAW,KAA1B,EADkB;MAApB,MAEO;;;AACL,6BAAQ,GAAR,mBAAY,eAAW,KAAvB,EADK;MAFP;IA9zB0C;;;;;;;;;;;;;;AAg1B5C,uBAAM,KAAK,MAAM,QAAQ,MAAM;AAC7B,SAAM,OAAO,IAAP,CADuB;AAE7B,SAAI,cAAJ,CAF6B;AAG7B,gBAAW,SAAS,EAAT,CAAX,CAH6B;AAI7B,cAAS,OAAO,EAAP,CAAT,CAJ6B;AAK7B,YAAO,GAAP,GAAa,OAAO,OAAO,GAAP,CALS;AAM7B,YAAO,IAAP,GAAc,QAAQ,OAAO,IAAP,CANO;AAO7B,YAAO,MAAP,GAAgB,OAAO,MAAP,IAAiB,MAAjB;;;AAPa,OAU7B,GAAK,KAAK,EAAL,GAAU,YAAV,CAVwB;AAW7B,YAAO,QAAQ,KAAK,EAAL,EAAS,GAAT,EAAc,IAAd,EAAoB,MAApB,EAA4B,IAA5B,CAAR,EAA2C,IAA3C,CAAgD,UAAU,OAAV,EAAmB;;AAExE,gBAAS,YAAY,OAAZ,IAAuB,MAAvB,GAAgC,OAAhC,CAF+D;AAGxE,YAAK,KAAK,EAAL,GAAU,MAAV,CAHmE;AAIxE,YAAK,GAAL,CAAS,EAAT,EAAa,GAAb,EAAkB,IAAlB,EAAwB,MAAxB,EAAgC,IAAhC,EAJwE;AAKxE,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,CAAP,CALwE;MAAnB,CAAhD,CAMJ,IANI,CAMC,UAAU,QAAV,EAAoB;;AAE1B,YAAK,KAAK,EAAL,GAAU,WAAV,CAFqB;AAG1B,cAAO,QAAQ,KAAK,EAAL,EAAS,GAAT,EAAc,IAAd,EAAoB,MAApB,EAA4B,IAA5B,EAAkC,QAAlC,CAAR,EAAqD,IAArD,CAA0D,UAAU,SAAV,EAAqB;;AAEpF,gBAAO,YAAY,SAAZ,IAAyB,QAAzB,GAAoC,SAApC,CAF6E;QAArB,CAAjE,CAH0B;MAApB,CANR,CAX6B;IAh1Ba;;;;;;;;;;;;;;AAs3B5C,qBAAK,KAAK,MAAM,QAAQ,MAAM;AAC5B,SAAM,OAAO,IAAP,CADsB;AAE5B,SAAI,cAAJ,CAF4B;AAG5B,gBAAW,SAAS,EAAT,CAAX,CAH4B;AAI5B,cAAS,OAAO,EAAP,CAAT,CAJ4B;AAK5B,YAAO,GAAP,GAAa,OAAO,OAAO,GAAP,CALQ;AAM5B,YAAO,IAAP,GAAc,QAAQ,OAAO,IAAP,CANM;AAO5B,YAAO,MAAP,GAAgB,OAAO,MAAP,IAAiB,KAAjB;;;AAPY,OAU5B,GAAK,KAAK,EAAL,GAAU,WAAV,CAVuB;AAW5B,YAAO,QAAQ,KAAK,EAAL,EAAS,GAAT,EAAc,IAAd,EAAoB,MAApB,EAA4B,IAA5B,CAAR,EAA2C,IAA3C,CAAgD,UAAU,OAAV,EAAmB;;AAExE,gBAAS,YAAY,OAAZ,IAAuB,MAAvB,GAAgC,OAAhC,CAF+D;AAGxE,YAAK,KAAK,EAAL,GAAU,KAAV,CAHmE;AAIxE,YAAK,GAAL,CAAS,EAAT,EAAa,GAAb,EAAkB,IAAlB,EAAwB,MAAxB,EAAgC,IAAhC,EAJwE;AAKxE,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,CAAP,CALwE;MAAnB,CAAhD,CAMJ,IANI,CAMC,UAAU,QAAV,EAAoB;;AAE1B,YAAK,KAAK,EAAL,GAAU,UAAV,CAFqB;AAG1B,cAAO,QAAQ,KAAK,EAAL,EAAS,GAAT,EAAc,IAAd,EAAoB,MAApB,EAA4B,IAA5B,EAAkC,QAAlC,CAAR,EAAqD,IAArD,CAA0D,UAAU,SAAV,EAAqB;;AAEpF,gBAAO,YAAY,SAAZ,IAAyB,QAAzB,GAAoC,SAApC,CAF6E;QAArB,CAAjE,CAH0B;MAApB,CANR,CAX4B;IAt3Bc;;;;;;;;;;;;;AA25B5C,2CAAgB,QAAQ,QAAQ,MAAM;AACpC,cAAS,OAAO,EAAP,CAAT,CADoC;AAEpC,SAAI,WAAW,KAAK,cAAL,CAAf,EAAqC;AACnC,cAAO,KAAK,cAAL,CAAoB,MAApB,EAA4B,MAA5B,EAAoC,IAApC,CAAP,CADmC;MAArC;AAGA,SAAI,WAAW,OAAO,cAAP,CAAf,EAAuC;AACrC,cAAO,OAAO,cAAP,CAAsB,MAAtB,EAA8B,MAA9B,EAAsC,IAAtC,CAAP,CADqC;MAAvC;AAGA,YAAO,MAAP,CARoC;IA35BM;;;;;;;;;;;;;;;;AAm7B5C,yCAAe,KAAK,QAAQ,MAAM;AAChC,YAAO,OAAO,GAAP,CAAP,CADgC;IAn7BU;;;;;;;;;;;;;AAi8B5C,iCAAW,QAAQ,MAAM,MAAM;AAC7B,cAAS,OAAO,EAAP,CAAT,CAD6B;AAE7B,SAAI,WAAW,KAAK,SAAL,CAAf,EAAgC;AAC9B,cAAO,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,EAA6B,IAA7B,CAAP,CAD8B;MAAhC;AAGA,SAAI,WAAW,OAAO,SAAP,CAAf,EAAkC;AAChC,cAAO,OAAO,SAAP,CAAiB,MAAjB,EAAyB,IAAzB,EAA+B,IAA/B,CAAP,CADgC;MAAlC;AAGA,YAAO,IAAP,CAR6B;IAj8Ba;;;;;;;;;;;;;;AAu9B5C,2BAAQ,QAAQ,IAAI,OAAO,MAAM;AAC/B,SAAM,OAAO,IAAP,CADyB;AAE/B,SAAI,cAAJ,CAF+B;AAG/B,YAAO,OAAO,KAAK,IAAL,CAAP,GAAoB,EAApB,CAHwB;AAI/B,UAAK,MAAL,KAAgB,KAAK,MAAL,GAAc,EAAd,CAAhB,CAJ+B;AAK/B,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAL+B;AAM/B,UAAK,MAAL,GAAc,YAAY,KAAK,MAAL,CAAZ,GAA2B,OAAO,MAAP,GAAgB,KAAK,MAAL;;;AAN1B,OAS/B,GAAK,KAAK,EAAL,GAAU,cAAV,CAT0B;AAU/B,YAAO,QAAQ,KAAK,EAAL,EAAS,MAAT,EAAiB,EAAjB,EAAqB,KAArB,EAA4B,IAA5B,CAAR,EAA2C,IAA3C,CAAgD,YAAY;AACjE,YAAK,KAAK,EAAL,GAAU,QAAV,CAD4D;AAEjE,YAAK,GAAL,CAAS,EAAT,EAAa,MAAb,EAAqB,EAArB,EAAyB,KAAzB,EAAgC,IAAhC,EAFiE;AAGjE,cAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,QAAb,EAAuB,MAAvB,EAA+B,EAA/B,EAAmC,IAAnC,CADK,EAEL,KAAK,SAAL,CAAe,MAAf,EAAuB,KAAvB,EAA8B,IAA9B,CAFK,EAGL,IAHK,CAAP,CAHiE;MAAZ,CAAhD,CAQJ,IARI,CAQC,UAAU,QAAV,EAAoB;AAC1B,cAAO,KAAK,WAAL,CAAiB,MAAjB,EAAyB,QAAzB,EAAmC,IAAnC,CAAP,CAD0B;MAApB,CARD,CAUJ,IAVI,CAUC,UAAU,IAAV,EAAgB;;AAEtB,YAAK,KAAK,EAAL,GAAU,aAAV,CAFiB;AAGtB,cAAO,QAAQ,KAAK,EAAL,EAAS,MAAT,EAAiB,EAAjB,EAAqB,KAArB,EAA4B,IAA5B,EAAkC,IAAlC,CAAR,EAAiD,IAAjD,CAAsD,UAAU,KAAV,EAAiB;;AAE5E,gBAAO,YAAY,KAAZ,IAAqB,IAArB,GAA4B,KAA5B,CAFqE;QAAjB,CAA7D,CAHsB;MAAhB,CAVR,CAV+B;IAv9BW;;;;;;;;;;;;;;AAggC5C,iCAAW,QAAQ,OAAO,OAAO,MAAM;AACrC,SAAM,OAAO,IAAP,CAD+B;AAErC,SAAI,cAAJ,CAFqC;AAGrC,eAAU,QAAQ,EAAR,CAAV,CAHqC;AAIrC,YAAO,OAAO,KAAK,IAAL,CAAP,GAAoB,EAApB,CAJ8B;AAKrC,UAAK,MAAL,KAAgB,KAAK,MAAL,GAAc,EAAd,CAAhB,CALqC;AAMrC,eAAU,KAAK,MAAL,EAAa,KAAvB,EANqC;AAOrC,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAPqC;AAQrC,UAAK,MAAL,GAAc,YAAY,KAAK,MAAL,CAAZ,GAA2B,OAAO,MAAP,GAAgB,KAAK,MAAL;;;AARpB,OAWrC,GAAK,KAAK,EAAL,GAAU,iBAAV,CAXgC;AAYrC,YAAO,QAAQ,KAAK,EAAL,EAAS,MAAT,EAAiB,KAAjB,EAAwB,KAAxB,EAA+B,IAA/B,CAAR,EAA8C,IAA9C,CAAmD,YAAY;AACpE,YAAK,KAAK,EAAL,GAAU,WAAV,CAD+D;AAEpE,YAAK,GAAL,CAAS,EAAT,EAAa,MAAb,EAAqB,KAArB,EAA4B,KAA5B,EAAmC,IAAnC,EAFoE;AAGpE,cAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,WAAb,EAA0B,MAA1B,EAAkC,IAAlC,EAAwC,IAAxC,CADK,EAEL,KAAK,SAAL,CAAe,MAAf,EAAuB,KAAvB,EAA8B,IAA9B,CAFK,EAGL,IAHK,CAAP,CAHoE;MAAZ,CAAnD,CAQJ,IARI,CAQC,UAAU,QAAV,EAAoB;AAC1B,cAAO,KAAK,WAAL,CAAiB,MAAjB,EAAyB,QAAzB,EAAmC,IAAnC,CAAP,CAD0B;MAApB,CARD,CAUJ,IAVI,CAUC,UAAU,IAAV,EAAgB;;AAEtB,YAAK,KAAK,EAAL,GAAU,gBAAV,CAFiB;AAGtB,cAAO,QAAQ,KAAK,EAAL,EAAS,MAAT,EAAiB,KAAjB,EAAwB,KAAxB,EAA+B,IAA/B,EAAqC,IAArC,CAAR,EAAoD,IAApD,CAAyD,UAAU,KAAV,EAAiB;;AAE/E,gBAAO,YAAY,KAAZ,IAAqB,IAArB,GAA4B,KAA5B,CAFwE;QAAjB,CAAhE,CAHsB;MAAhB,CAVR,CAZqC;IAhgCK;;;;;;;;;;;;;;;;;;;;AAijC5C,mCAAY,QAAQ,SAAS,MAAM;AACjC,SAAM,OAAO,IAAP,CAD2B;AAEjC,SAAI,cAAJ,CAFiC;AAGjC,YAAO,OAAO,KAAK,IAAL,CAAP,GAAoB,EAApB,CAH0B;AAIjC,UAAK,MAAL,KAAgB,KAAK,MAAL,GAAc,EAAd,CAAhB,CAJiC;AAKjC,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CALiC;AAMjC,UAAK,MAAL,GAAc,YAAY,KAAK,MAAL,CAAZ,GAA2B,OAAO,MAAP,GAAgB,KAAK,MAAL;;;AANxB,OASjC,GAAK,KAAK,EAAL,GAAU,kBAAV,CAT4B;AAUjC,YAAO,QAAQ,KAAK,EAAL,EAAS,MAAT,EAAiB,OAAjB,EAA0B,IAA1B,CAAR,EAAyC,IAAzC,CAA8C,YAAY;AAC/D,YAAK,KAAK,EAAL,GAAU,YAAV,CAD0D;AAE/D,YAAK,GAAL,CAAS,EAAT,EAAa,MAAb,EAAqB,OAArB,EAA8B,IAA9B,EAF+D;AAG/D,cAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,YAAb,EAA2B,MAA3B,EAAmC,IAAnC,EAAyC,IAAzC,CADK,EAEL,KAAK,SAAL,CAAe,MAAf,EAAuB,OAAvB,EAAgC,IAAhC,CAFK,EAGL,IAHK,CAAP,CAH+D;MAAZ,CAA9C,CAQJ,IARI,CAQC,UAAU,QAAV,EAAoB;AAC1B,cAAO,KAAK,WAAL,CAAiB,MAAjB,EAAyB,QAAzB,EAAmC,IAAnC,CAAP,CAD0B;MAApB,CARD,CAUJ,IAVI,CAUC,UAAU,IAAV,EAAgB;;AAEtB,YAAK,KAAK,EAAL,GAAU,iBAAV,CAFiB;AAGtB,cAAO,QAAQ,KAAK,EAAL,EAAS,MAAT,EAAiB,OAAjB,EAA0B,IAA1B,EAAgC,IAAhC,CAAR,EAA+C,IAA/C,CAAoD,UAAU,KAAV,EAAiB;;AAE1E,gBAAO,YAAY,KAAZ,IAAqB,IAArB,GAA4B,KAA5B,CAFmE;QAAjB,CAA3D,CAHsB;MAAhB,CAVR,CAViC;IAjjCS;EAA9C;;;;;;;;;;;;;;;;;AA+lCA,aAAY,SAAZ,GAAwB,UAAU,IAAV,EAAgB,IAAhB,EAAsB;AAC5C,OAAI,CAAC,IAAD,IAAS,CAAC,SAAS,IAAT,CAAD,EAAiB;AAC5B,WAAM,IAAI,SAAJ,CAAc,4DAA2D,mDAA3D,CAApB,CAD4B;IAA9B;AAGA,UAAO,UAAU,MAAV,EAAkB;AACvB,SAAI,OAAO,IAAP,CAAJ,EAAkB;AAChB,aAAM,IAAI,KAAJ,CAAU,2BAA2B,IAA3B,GAAkC,4BAAlC,CAAhB,CADgB;MAAlB;AAGA,UAAK,OAAL,GAAe,KAAK,OAAL,IAAgB,UAAU,MAAV,EAAkB;AAAE,cAAO,MAAP,CAAF;MAAlB,CAJR;AAKvB,UAAK,QAAL,GAAgB,KAAK,QAAL,IAAiB,UAAU,QAAV,EAAoB;AAAE,cAAO,QAAP,CAAF;MAApB,CALV;AAMvB,UAAK,aAAL,GAAqB,KAAK,aAAL,IAAsB,UAAU,GAAV,EAAe;AAAE,cAAO,OAAO,GAAP,CAAP,CAAF;MAAf,CANpB;AAOvB,YAAO,IAAP,IAAe,UAAU,EAAV,EAAc,KAAd,EAAqB;AAClC,WAAM,OAAO,IAAP,CAD4B;AAElC,WAAI,SAAS,EAAT,CAAJ,EAAkB;AAChB,iBAAQ,EAAR,CADgB;QAAlB;AAGA,eAAQ,SAAS,EAAT,CAL0B;AAMlC,WAAI,UAAU,KAAK,UAAL,CAAgB,KAAK,OAAL,IAAgB,KAAK,cAAL,IAAuB,MAAvC,CAA1B,CAN8B;AAOlC,WAAI,SAAS,EAAT,CAP8B;AAQlC,cAAO,MAAP,EAAe,IAAf,EARkC;AASlC,WAAI,CAAC,MAAM,cAAN,CAAqB,UAArB,CAAD,IAAqC,OAAO,QAAP,EAAiB;AACxD,eAAM,QAAN,GAAiB,OAAO,QAAP,CADuC;QAA1D;AAGA,WAAI,OAAO,MAAM,WAAN,KAAsB,UAA7B,EAAyC;AAC3C,gBAAO,GAAP,GAAa,MAAM,WAAN,CAAkB,IAAlB,EAAwB,KAAxB,CAAb,CAD2C;QAA7C,MAEO;AACL,aAAI,QAAO,CACT,MAAM,QAAN,IAAkB,KAAK,QAAL,IAAiB,QAAQ,QAAR,CAAiB,QAAjB,EACnC,QAAQ,WAAR,CAAoB,IAApB,EAA0B,OAAO,EAAP,IAAa,EAAb,GAAkB,IAAlB,EAAwB,KAAlD,CAFS,CAAP,CADC;AAKL,aAAI,OAAO,EAAP,CAAJ,EAAgB;AACd,iBAAK,IAAL,CAAU,EAAV,EADc;UAAhB;AAGA,eAAK,IAAL,CAAU,KAAK,QAAL,IAAiB,IAAjB,CAAV,CARK;AASL,gBAAO,GAAP,GAAa,SAAS,KAAT,CAAe,IAAf,EAAqB,KAArB,CAAb,CATK;QAFP;AAaA,cAAO,MAAP,GAAgB,OAAO,MAAP,IAAiB,KAAjB,CAzBkB;AA0BlC,cAAO,MAAP,GAAgB,KAAK,IAAL,CA1BkB;AA2BlC,iBAAU,MAAV,EAAkB,KAAlB,EA3BkC;AA4BlC,cAAO,QAAQ,MAAR,EACJ,IADI,CACC,MAAM,OAAN,IAAiB,KAAK,OAAL,CADlB,CAEJ,IAFI,CAEC,UAAU,MAAV,EAAkB;AAAE,gBAAO,QAAQ,IAAR,CAAa,MAAb,CAAP,CAAF;QAAlB,CAFD,CAGJ,IAHI,CAGC,UAAU,IAAV,EAAgB;AACpB,aAAI,QAAQ,KAAK,MAAL,EAAa;AACvB,gBAAK,MAAL,CAAY,MAAZ,GAAqB,KAAK,IAAL,CADE;UAAzB;AAGA,gBAAO,IAAP,CAJoB;QAAhB,CAHD,CASJ,IATI,CASC,MAAM,QAAN,IAAkB,KAAK,QAAL,EAAe,MAAM,aAAN,IAAuB,KAAK,aAAL,CAThE,CA5BkC;MAArB,CAPQ;AA8CvB,YAAO,MAAP,CA9CuB;IAAlB,CAJqC;EAAtB;;;;;;;;;;;;;AAiExB,aAAY,UAAZ,GAAyB,UAAU,IAAV,EAAgB;AACvC,YAAS,OAAO,EAAP,CAAT,CADuC;AAEvC,UAAO,UAAU,MAAV,EAAkB;AACvB,YAAO,MAAP,EAAe,UAAU,KAAV,EAAiB,GAAjB,EAAsB;AACnC,mBAAY,SAAZ,CAAsB,GAAtB,EAA2B,KAA3B,EAAkC,MAAlC,EADmC;MAAtB,CAAf,CADuB;AAIvB,YAAO,MAAP,CAJuB;IAAlB,CAFgC;EAAhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDzB,aAAY,MAAZ,GAAqB,MAArB;;;;;;;;;;;;;;;;AAgBA,aAAY,OAAZ,GAAsB;AACpB,SAAM,oBAAN;AACA,UAAO,SAAS,cAAT,EAAyB,EAAzB,CAAP;AACA,UAAO,SAAS,cAAT,EAAyB,EAAzB,CAAP;AACA,UAAO,SAAS,cAAT,EAAyB,EAAzB,CAAP;AACA,UAAO,QAA6B,cAA7B,GAA8C,KAA9C;AACP,SAAM,QAA4B,aAA5B,GAA4C,KAA5C;EANR;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCA,QAAO,OAAP,GAAiB,WAAjB,C;;;;;;ACl7CA,gD;;;;;;ACAA,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[\"HttpAdapter\"] = factory(require(\"js-data\"), require(\"undefined\"));\n\telse\n\t\troot[\"HttpAdapter\"] = factory(root[\"JSData\"], root[\"undefined\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_2__) {\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 c3f8834944509f403e4f\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nconst {\n _,\n addHiddenPropsToTarget,\n copy,\n deepMixIn,\n extend,\n fillIn,\n forOwn,\n isArray,\n isFunction,\n isNumber,\n isObject,\n isSorN,\n isString,\n isUndefined,\n resolve,\n reject,\n toJson\n} = utils\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 forOwn(params, function (val, key) {\n if (val === null || typeof val === 'undefined') {\n return\n }\n if (!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 (isObject(v)) {\n v = 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 noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n}\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#debug\n * @type {boolean}\n * @default false\n */\n debug: false,\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 * @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\n // Default values for arguments\n opts || (opts = {})\n\n fillIn(self, opts)\n fillIn(self, DEFAULTS)\n}\n\naddHiddenPropsToTarget(HttpAdapter.prototype, {\n /**\n * @name HttpAdapter#afterCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreate: noop2,\n\n /**\n * @name HttpAdapter#afterCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreateMany: noop2,\n\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#afterDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroy: noop2,\n\n /**\n * @name HttpAdapter#afterDestroyAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroyAll: noop2,\n\n /**\n * @name HttpAdapter#afterFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFind: noop2,\n\n /**\n * @name HttpAdapter#afterFindAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFindAll: 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#afterUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdate: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateAll: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateMany: noop2,\n\n /**\n * @name HttpAdapter#beforeCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n */\n beforeCreate: noop,\n\n /**\n * @name HttpAdapter#beforeCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeCreateMany: noop,\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#beforeDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeDestroy: noop,\n\n /**\n * @name HttpAdapter#beforeDestroyAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeDestroyAll: noop,\n\n /**\n * @name HttpAdapter#beforeFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeFind: noop,\n\n /**\n * @name HttpAdapter#beforeFindAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeFindAll: 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 /**\n * @name HttpAdapter#beforeUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n */\n beforeUpdate: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n */\n beforeUpdateAll: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeUpdateMany: noop,\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreate lifecycle hook\n op = opts.op = 'beforeCreate'\n return resolve(self[op](mapper, props, opts)).then(function () {\n op = opts.op = 'create'\n self.dbg(op, mapper, props, opts)\n return self.POST(\n self.getPath('create', mapper, props, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreate lifecycle hook\n op = opts.op = 'afterCreate'\n return resolve(self[op](mapper, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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} 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 createMany (mapper, records, opts) {\n const self = this\n let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreateMany lifecycle hook\n op = opts.op = 'beforeCreateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'createMany'\n self.dbg(op, mapper, records, opts)\n return self.POST(\n self.getPath('createMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreateMany lifecycle hook\n op = opts.op = 'afterCreateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n },\n\n /**\n * Call {@link HttpAdapter#log} at the \"debug\" level.\n *\n * @name HttpAdapter#dbg\n * @method\n * @param {...*} [args] Args passed to {@link HttpAdapter#log}.\n */\n dbg (...args) {\n this.log('debug', ...args)\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.deserialize)) {\n return opts.deserialize(mapper, response, opts)\n }\n if (isFunction(mapper.deserialize)) {\n return mapper.deserialize(mapper, response, opts)\n }\n if (opts.raw) {\n return response\n }\n return response ? ('data' in response ? response.data : response) : 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroy lifecycle hook\n op = opts.op = 'beforeDestroy'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy'\n self.dbg(op, mapper, id, opts)\n return self.DEL(\n self.getPath('destroy', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroy lifecycle hook\n op = opts.op = 'afterDestroy'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroyAll lifecycle hook\n op = opts.op = 'beforeDestroyAll'\n return resolve(self.beforeDestroyAll(mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll'\n self.dbg(op, mapper, query, opts)\n return self.DEL(\n self.getPath('destroyAll', mapper, null, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n },\n\n /**\n * Log an error.\n *\n * @name HttpAdapter\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\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 = 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeFind lifecycle hook\n op = opts.op = 'beforeFind'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find'\n self.dbg(op, mapper, id, opts)\n return self.GET(\n self.getPath('find', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFind lifecycle hook\n op = opts.op = 'afterFind'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll'\n return resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll'\n self.dbg(op, mapper, query, opts)\n return self.GET(\n self.getPath('findAll', mapper, opts.params, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFindAll lifecycle hook\n op = opts.op = 'afterFindAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 opts || (opts = {})\n opts.params || (opts.params = {})\n\n let item\n const parentKey = mapper.parentKey\n const endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : mapper.endpoint\n let parentField = mapper.parentField\n const parentDef = mapper.parent ? mapper.getResource(mapper.parent) : undefined\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 endpoint\n } else {\n delete opts.params[parentKey]\n\n if (isString(id) || isNumber(id)) {\n item = mapper.get(id)\n } else if (isObject(id)) {\n item = id\n }\n\n if (item) {\n parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null)\n }\n\n if (parentId) {\n delete opts.endpoint\n const _opts = {}\n forOwn(opts, function (value, key) {\n _opts[key] = value\n })\n _(_opts, parentDef)\n return makePath(this.getEndpoint(parentDef, parentId, _opts, parentId, endpoint))\n } else {\n return endpoint\n }\n }\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 opts.basePath === undefined ? (mapper.basePath === undefined ? self.basePath : mapper.basePath) : opts.basePath,\n self.getEndpoint(mapper, (isString(id) || 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 /**\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 config = copy(config)\n config = deepMixIn(config, self.httpConfig)\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 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 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 resolve(self.afterHTTP(config, opts, response)).then(function (_response) {\n return _response || response\n })\n })\n },\n\n /**\n * Log the provided arguments at the specified leve.\n *\n * @name HttpAdapter#log\n * @method\n * @param {string} level Log level.\n * @param {...*} [args] Arguments to log.\n */\n log (level, ...args) {\n if (level && !args.length) {\n args.push(level)\n level = 'debug'\n }\n if (level === 'debug' && !this.debug) {\n return\n }\n const prefix = `${level.toUpperCase()}: (HttpAdapter)`\n if (console[level]) {\n console[level](prefix, ...args)\n } else {\n console.log(prefix, ...args)\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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.queryTransform)) {\n return opts.queryTransform(mapper, params, opts)\n }\n if (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 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 (isFunction(opts.serialize)) {\n return opts.serialize(mapper, data, opts)\n }\n if (isFunction(mapper.serialize)) {\n return mapper.serialize(mapper, data, opts)\n }\n return data\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdate lifecycle hook\n op = opts.op = 'beforeUpdate'\n return resolve(self[op](mapper, id, props, opts)).then(function () {\n op = opts.op = 'update'\n self.dbg(op, mapper, id, props, opts)\n return self.PUT(\n self.getPath('update', mapper, id, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdate lifecycle hook\n op = opts.op = 'afterUpdate'\n return resolve(self[op](mapper, id, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateAll lifecycle hook\n op = opts.op = 'beforeUpdateAll'\n return resolve(self[op](mapper, props, query, opts)).then(function () {\n op = opts.op = 'updateAll'\n self.dbg(op, mapper, props, query, opts)\n return self.PUT(\n self.getPath('updateAll', mapper, null, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateAll lifecycle hook\n op = opts.op = 'afterUpdateAll'\n return resolve(self[op](mapper, props, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'updateMany'\n self.dbg(op, mapper, records, opts)\n return self.PUT(\n self.getPath('updateMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateMany lifecycle hook\n op = opts.op = 'afterUpdateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n }\n})\n\n/**\n * Add an Http actions to a mapper.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.addAction = function (name, opts) {\n if (!name || !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 reject(err) }\n mapper[name] = function (id, _opts) {\n const self = this\n if (isObject(id)) {\n _opts = id\n }\n _opts = _opts || {}\n let adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http')\n let config = {}\n 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.defaults.basePath,\n adapter.getEndpoint(self, isSorN(id) ? id : null, _opts)\n ]\n if (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 deepMixIn(config)(_opts)\n return 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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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 = extend\n\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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 **/","module.exports = undefined;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"undefined\"\n ** module id = 2\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 fad6c87..9d15c49 100644 --- a/fetch/dist/js-data-fetch.min.js +++ b/fetch/dist/js-data-fetch.min.js @@ -1,11 +1,11 @@ /*! * js-data-fetch -* @version 3.0.0-alpha.3 - Homepage +* @version 3.0.0-alpha.4 - Homepage * @author Jason Dobry * @copyright (c) 2014-2016 Jason Dobry * @license MIT * * @overview Fetch HTTP (XHR) adapter for js-data in the browser. */ -!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.DSHttpAdapter=t(require("js-data"),require("undefined")):e.DSHttpAdapter=t(e.JSData,e.undefined)}(this,function(e,t){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 u(){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 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 i(e,t){if(!t)return e;var n=[];return y(t,function(e,t){null!==e&&"undefined"!=typeof e&&(b(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():x(e)&&(e=U(e)),n.push(a(t)+"="+a(e))}))}),n.length>0&&(e+=(-1===e.indexOf("?")?"?":"&")+n.join("&")),e}function f(e){var t=this;e||(e={}),t.basePath=void 0===e.basePath?"":e.basePath,t.debug=void 0===e.debug?!1:e.debug,t.forceTrailingSlash=void 0===e.forceTrailingSlash?!1:e.forceTrailingSlash,t.http=void 0===e.http?p:e.http,t.httpConfig=void 0===e.httpConfig?{}:e.httpConfig,t.suffix=void 0===e.suffix?"":e.suffix,t.useFetch=void 0===e.useFetch?!1:e.useFetch}var s="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},c=n(1),p=n(2),d=c.utils._,l=c.utils.copy,h=c.utils.deepMixIn,m=c.utils.extend,g=c.utils.fillIn,y=c.utils.forOwn,b=c.utils.isArray,T=c.utils.isFunction,v=c.utils.isNumber,x=c.utils.isObject,P=c.utils.isSorN,A=c.utils.isString,E=c.utils.resolve,S=c.utils.reject,U=c.utils.toJson,z=!1;try{z=window&&window.fetch}catch(e){}g(f.prototype,{afterCreate:function(){},afterCreateMany:function(){},afterDEL:function(){},afterDestroy:function(){},afterDestroyAll:function(){},afterFind:function(){},afterFindAll:function(){},afterGET:function(){},afterHTTP:function(){},afterPOST:function(){},afterPUT:function(){},afterUpdate:function(){},afterUpdateAll:function(){},afterUpdateMany:function(){},beforeCreate:function(){},beforeCreateMany:function(){},beforeDEL:function(){},beforeDestroy:function(){},beforeDestroyAll:function(){},beforeFind:function(){},beforeFindAll:function(){},beforeGET:function(){},beforeHTTP:function(){},beforePOST:function(){},beforePUT:function(){},beforeUpdate:function(){},beforeUpdateAll:function(){},beforeUpdateMany:function(){},create:function(e,t,n){var r=this;return n=n?l(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix||(n.suffix=e.suffix),n.op="create",r.dbg(n.op,e,t,n),E(r.beforeCreate(e,t,n)).then(function(){return r.POST(r.getPath("create",e,t,n),r.serialize(e,t,n),n)}).then(function(t){return r.deserialize(e,t,n)}).then(function(o){return E(r.afterCreate(e,t,n,o)).then(function(e){return e||o})})},createMany:function(e,t,n){var r=this;return n=n?l(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix||(n.suffix=e.suffix),n.op="createMany",r.dbg(n.op,e,t,n),E(r.beforeCreateMany(e,t,n)).then(function(){return r.POST(r.getPath("createMany",e,null,n),r.serialize(e,t,n),n)}).then(function(t){return r.deserialize(e,t,n)}).then(function(o){return E(r.afterCreateMany(e,t,n,o)).then(function(e){return e||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))},DEL:function(e,t,n){var r=this;return t||(t={}),t.url=e||t.url,t.method=t.method||"delete",E(r.beforeDEL(e,t,n)).then(function(e){return t=e||t,r.HTTP(t,n)}).then(function(o){return E(r.afterDEL(e,t,n,o)).then(function(e){return e||o})})},deserialize:function(e,t,n){return n||(n={}),T(n.deserialize)?n.deserialize(e,t,n):T(e.deserialize)?e.deserialize(e,t,n):n.raw?t:t&&"data"in t?t.data:t},destroy:function(e,t,n){var r=this;return n=n?l(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix||(n.suffix=e.suffix),n.op="destroy",r.dbg(n.op,e,t,n),E(r.beforeDestroy(e,t,n)).then(function(){return r.DEL(r.getPath("destroy",e,t,n),n)}).then(function(t){return r.deserialize(e,t,n)}).then(function(o){return E(r.afterDestroy(e,t,n,o)).then(function(e){return e||o})})},destroyAll:function(e,t,n){var r=this;return t||(t={}),n=n?l(n):{},n.params||(n.params={}),h(n.params,t),n.params=r.queryTransform(e,n.params,n),n.suffix||(n.suffix=e.suffix),n.op="destroyAll",r.dbg(n.op,e,t,n),E(r.beforeDestroyAll(e,t,n)).then(function(){return r.DEL(r.getPath("destroyAll",e,null,n),n)}).then(function(t){return r.deserialize(e,t,n)}).then(function(o){return E(r.afterDestroyAll(e,t,n,o)).then(function(e){return e||o})})},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=U(e.data)),fetch(new Request(i(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?l(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix||(n.suffix=e.suffix),n.op="find",r.dbg(n.op,e,t,n),E(r.beforeFind(e,t,n)).then(function(){return r.GET(r.getPath("find",e,t,n),n)}).then(function(t){return r.deserialize(e,t,n)}).then(function(o){return E(r.afterFind(e,t,n,o)).then(function(e){return e||o})})},findAll:function(e,t,n){var r=this;return t||(t={}),n=n?l(n):{},n.params||(n.params={}),n.suffix||(n.suffix=e.suffix),n.op="findAll",r.dbg(n.op,e,t,n),h(n.params,t),n.params=r.queryTransform(e,n.params,n),E(r.beforeFindAll(e,t,n)).then(function(){return r.GET(r.getPath("findAll",e,n.params,n),n)}).then(function(t){return r.deserialize(e,t,n)}).then(function(o){return E(r.afterFindAll(e,t,n,o)).then(function(e){return e||o})})},GET:function(e,t,n){var r=this;return t||(t={}),t.url=e||t.url,t.method=t.method||"get",E(r.beforeGET(e,t,n)).then(function(e){return t=e||t,r.HTTP(t,n)}).then(function(o){return E(r.afterGET(e,t,n,o)).then(function(e){return e||o})})},getEndpoint:function(e,t,n){var r=this;n||(n={}),n.params||(n.params={});var o=void 0,a=e.parentKey,i=n.hasOwnProperty("endpoint")?n.endpoint:e.endpoint,f=e.parentField,c=e.parent?e.getResource(e.parent):void 0,p=n.params[a];if(p===!1||!a||!c)return p===!1&&delete n.params[a],i;if(delete n.params[a],A(t)||v(t)?o=e.get(t):x(t)&&(o=t),o&&(p=p||o[a]||(o[f]?o[f][c.idAttribute]:null)),!p)return i;var l=function(){delete n.endpoint;var e={};return y(n,function(t,n){e[n]=t}),d(e,c),{v:u(r.getEndpoint(c,p,e,p,i))}}();return"object"===("undefined"==typeof l?"undefined":s(l))?l.v:void 0},getPath:function(e,t,n,r){var o=this;r||(r={});var a=[void 0===r.basePath?void 0===t.basePath?o.basePath:t.basePath:r.basePath,o.getEndpoint(t,A(n)||v(n)||"create"===e?n:null,r)];return("find"===e||"update"===e||"destroy"===e)&&a.push(n),u.apply(c.utils,a)},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),S(t))}var r=this,o=new Date;t||(t={}),e=l(e),e=h(e,r.httpConfig),r.forceTrailingSlash&&"/"!==e.url[e.url.length-1]&&(e.url+="/"),e.method=e.method.toUpperCase();var u=e.suffix||t.suffix||r.suffix;if(u&&e.url.substr(e.url.length-u.length)!==u&&(e.url+=u),!r.http)throw new Error("You have not configured this adapter with an http library!");return E(r.beforeHTTP(e,t)).then(function(o){return e=o||e,z&&(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 E(r.afterHTTP(e,t,n)).then(function(e){return e||n})})},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()+": ("+this.name+")";if(console[e]){var u;(u=console)[e].apply(u,[o].concat(n))}else{var a;(a=console).log.apply(a,[o].concat(n))}}},POST:function(e,t,n,r){var o=this;return n||(n={}),n.url=e||n.url,n.data=t||n.data,n.method=n.method||"post",E(o.beforePOST(e,t,n,r)).then(function(e){return n=e||n,o.HTTP(n,r)}).then(function(u){return E(o.afterPOST(e,t,n,r,u)).then(function(e){return e||u})})},PUT:function(e,t,n,r){var o=this;return n||(n={}),n.url=e||n.url,n.data=t||n.data,n.method=n.method||"put",E(o.beforePUT(e,t,n,r)).then(function(e){return n=e||n,o.HTTP(n,r)}).then(function(u){return E(o.afterPUT(e,t,n,r,u)).then(function(e){return e||u})})},queryTransform:function(e,t,n){return n||(n={}),T(n.queryTransform)?n.queryTransform(e,t,n):T(e.queryTransform)?e.queryTransform(e,t,n):t},responseError:function(e,t,n){return S(e)},serialize:function(e,t,n){return n||(n={}),T(n.serialize)?n.serialize(e,t,n):T(e.serialize)?e.serialize(e,t,n):t},update:function(e,t,n,r){var o=this;return r=r?l(r):{},r.params||(r.params={}),r.params=o.queryTransform(e,r.params,r),r.suffix||(r.suffix=e.suffix),r.op="update",o.dbg(r.op,e,t,n,r),E(o.beforeUpdate(e,t,n,r)).then(function(){return o.PUT(o.getPath("update",e,t,r),o.serialize(e,n,r),r)}).then(function(t){return o.deserialize(e,t,r)}).then(function(u){return E(o.afterUpdate(e,t,n,r,u)).then(function(e){return e||u})})},updateAll:function(e,t,n,r){var o=this;return n||(n={}),r=r?l(r):{},r.params||(r.params={}),h(r.params,n),r.params=o.queryTransform(e,r.params,r),r.suffix||(r.suffix=e.suffix),r.op="updateAll",o.dbg(r.op,e,t,n,r),E(o.beforeUpdateAll(e,t,n,r)).then(function(){return o.PUT(o.getPath("updateAll",e,null,r),o.serialize(e,t,r),r)}).then(function(t){return o.deserialize(e,t,r)}).then(function(u){return E(o.afterUpdateAll(e,t,n,r,u)).then(function(e){return e||u})})},updateMany:function(e,t,n){var r=this;return n=n?l(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix||(n.suffix=e.suffix),n.op="updateMany",r.dbg(n.op,e,t,n),E(r.beforeUpdateMany(e,t,n)).then(function(){return r.PUT(r.getPath("updateMany",e,null,n),r.serialize(e,t,n),n)}).then(function(t){return r.deserialize(e,t,n)}).then(function(o){return E(r.afterUpdateMany(e,t,n,o)).then(function(e){return e||o})})}}),f.addAction=function(e,t){if(!e||!A(e))throw new TypeError("action(name[, opts]): Expected: string, Found: "+("undefined"==typeof e?"undefined":s(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 S(e)},n[e]=function(n,r){x(n)&&(r=n),r=r||{};var o=this.getAdapter(t.adapter||this.defaultAdapter||"http"),a={};if(g(a,t),!r.hasOwnProperty("endpoint")&&a.endpoint&&(r.endpoint=a.endpoint),"function"==typeof r.getEndpoint)a.url=r.getEndpoint(this,r);else{var i=[r.basePath||this.basePath||o.defaults.basePath,o.getEndpoint(this,P(n)?n:null,r)];P(n)&&i.push(n),i.push(t.pathname||e),a.url=u.apply(null,i)}return a.method=a.method||"GET",a.modelName=this.name,h(a)(r),E(a).then(r.request||t.request).then(function(e){return o.HTTP(e)}).then(function(e){return e&&e.config&&(e.config.modelName=this.name),e}).then(r.response||t.response,r.responseError||t.responseError)},n}},f.addActions=function(e){return e||(e={}),function(e){return y(e,function(t,n){f.addAction(n,t)(e)}),e}},f.extend=m,f.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=f},function(t,n){t.exports=e},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.HttpAdapter=t(require("js-data"),require("undefined")):e.HttpAdapter=t(e.JSData,e.undefined)}(this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={exports:{},id:n,loaded:!1};return e[n].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}([function(e,t,r){"use strict";function n(e){return null!=e&&""!==e}function o(e,t){return t||(t=""),e.filter(n).join(t)}function a(){for(var e=arguments.length,t=Array(e),r=0;e>r;r++)t[r]=arguments[r];var n=o(t,"/");return n.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 i(e,t){if(!t)return e;var r=[];return b(t,function(e,t){null!==e&&"undefined"!=typeof e&&(v(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():P(e)&&(e=D(e)),r.push(u(t)+"="+u(e))}))}),r.length>0&&(e+=(-1===e.indexOf("?")?"?":"&")+r.join("&")),e}function f(e){var t=this;e||(e={}),y(t,e),y(t,j)}var s="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},p=r(1),d=r(2),l=p.utils._,c=p.utils.addHiddenPropsToTarget,h=p.utils.copy,m=p.utils.deepMixIn,g=p.utils.extend,y=p.utils.fillIn,b=p.utils.forOwn,v=p.utils.isArray,T=p.utils.isFunction,x=p.utils.isNumber,P=p.utils.isObject,A=p.utils.isSorN,E=p.utils.isString,U=p.utils.isUndefined,z=p.utils.resolve,q=p.utils.reject,D=p.utils.toJson,S=!1;try{S=window&&window.fetch}catch(e){}var w=function(){for(var e=this,t=arguments.length,r=Array(t),n=0;t>n;n++)r[n]=arguments[n];var o=r[r.length-1];e.dbg.apply(e,[o.op].concat(r))},C=function(){for(var e=this,t=arguments.length,r=Array(t),n=0;t>n;n++)r[n]=arguments[n];var o=r[r.length-2];e.dbg.apply(e,[o.op].concat(r))},j={basePath:"",debug:!1,forceTrailingSlash:!1,http:d,httpConfig:{},suffix:"",useFetch:!1};c(f.prototype,{afterCreate:C,afterCreateMany:C,afterDEL:C,afterDestroy:C,afterDestroyAll:C,afterFind:C,afterFindAll:C,afterGET:C,afterHTTP:C,afterPOST:C,afterPUT:C,afterUpdate:C,afterUpdateAll:C,afterUpdateMany:C,beforeCreate:w,beforeCreateMany:w,beforeDEL:w,beforeDestroy:w,beforeDestroyAll:w,beforeFind:w,beforeFindAll:w,beforeGET:w,beforeHTTP:w,beforePOST:w,beforePUT:w,beforeUpdate:w,beforeUpdateAll:w,beforeUpdateMany:w,create:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=U(r.suffix)?e.suffix:r.suffix,o=r.op="beforeCreate",z(n[o](e,t,r)).then(function(){return o=r.op="create",n.dbg(o,e,t,r),n.POST(n.getPath("create",e,t,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterCreate",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})},createMany:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=U(r.suffix)?e.suffix:r.suffix,o=r.op="beforeCreateMany",z(n[o](e,t,r)).then(function(){return o=r.op="createMany",n.dbg(o,e,t,r),n.POST(n.getPath("createMany",e,null,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterCreateMany",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})},dbg:function(){for(var e=arguments.length,t=Array(e),r=0;e>r;r++)t[r]=arguments[r];this.log.apply(this,["debug"].concat(t))},DEL:function(e,t,r){var n=this,o=void 0;return t||(t={}),r||(r={}),t.url=e||t.url,t.method=t.method||"delete",o=r.op="beforeDEL",z(n[o](e,t,r)).then(function(a){return t=U(a)?t:a,o=r.op="DEL",n.dbg(o,e,t,r),n.HTTP(t,r)}).then(function(a){return o=r.op="afterDEL",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})},deserialize:function(e,t,r){return r||(r={}),T(r.deserialize)?r.deserialize(e,t,r):T(e.deserialize)?e.deserialize(e,t,r):r.raw?t:t&&"data"in t?t.data:t},destroy:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=U(r.suffix)?e.suffix:r.suffix,o=r.op="beforeDestroy",z(n[o](e,t,r)).then(function(){return o=r.op="destroy",n.dbg(o,e,t,r),n.DEL(n.getPath("destroy",e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterDestroy",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})},destroyAll:function(e,t,r){var n=this,o=void 0;return t||(t={}),r=r?h(r):{},r.params||(r.params={}),m(r.params,t),r.params=n.queryTransform(e,r.params,r),r.suffix=U(r.suffix)?e.suffix:r.suffix,o=r.op="beforeDestroyAll",z(n.beforeDestroyAll(e,t,r)).then(function(){return o=r.op="destroyAll",n.dbg(o,e,t,r),n.DEL(n.getPath("destroyAll",e,null,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterDestroyAll",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})},error:function(){if(console){var e;(e=console)["function"==typeof console.error?"error":"log"].apply(e,arguments)}},fetch:function(e){function t(t,r){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}(function(e,t){var r={method:e.method,headers:new Headers(e.headers)};return e.data&&(r.body=D(e.data)),fetch(new Request(i(e.url,e.params),r)).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,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=U(r.suffix)?e.suffix:r.suffix,o=r.op="beforeFind",z(n[o](e,t,r)).then(function(){return o=r.op="find",n.dbg(o,e,t,r),n.GET(n.getPath("find",e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterFind",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})},findAll:function(e,t,r){var n=this,o=void 0;return t||(t={}),r=r?h(r):{},r.params||(r.params={}),r.suffix=U(r.suffix)?e.suffix:r.suffix,m(r.params,t),r.params=n.queryTransform(e,r.params,r),o=r.op="beforeFindAll",z(n[o](e,t,r)).then(function(){return o=r.op="findAll",n.dbg(o,e,t,r),n.GET(n.getPath("findAll",e,r.params,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterFindAll",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})},GET:function(e,t,r){var n=this,o=void 0;return t||(t={}),r||(r={}),t.url=e||t.url,t.method=t.method||"get",o=r.op="beforeGET",z(n[o](e,t,r)).then(function(a){return t=U(a)?t:a,o=r.op="GET",n.dbg(o,e,t,r),n.HTTP(t,r)}).then(function(a){return o=r.op="afterGET",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})},getEndpoint:function(e,t,r){var n=this;r||(r={}),r.params||(r.params={});var o=void 0,u=e.parentKey,i=r.hasOwnProperty("endpoint")?r.endpoint:e.endpoint,f=e.parentField,p=e.parent?e.getResource(e.parent):void 0,d=r.params[u];if(d===!1||!u||!p)return d===!1&&delete r.params[u],i;if(delete r.params[u],E(t)||x(t)?o=e.get(t):P(t)&&(o=t),o&&(d=d||o[u]||(o[f]?o[f][p.idAttribute]:null)),!d)return i;var c=function(){delete r.endpoint;var e={};return b(r,function(t,r){e[r]=t}),l(e,p),{v:a(n.getEndpoint(p,d,e,d,i))}}();return"object"===("undefined"==typeof c?"undefined":s(c))?c.v:void 0},getPath:function(e,t,r,n){var o=this;n||(n={});var u=[void 0===n.basePath?void 0===t.basePath?o.basePath:t.basePath:n.basePath,o.getEndpoint(t,E(r)||x(r)||"create"===e?r:null,n)];return("find"===e||"update"===e||"destroy"===e)&&u.push(r),a.apply(p.utils,u)},HTTP:function(e,t){function r(t){var r=o.toUTCString()+" - "+e.method.toUpperCase()+" "+e.url+" - "+t.status+" "+((new Date).getTime()-o.getTime())+"ms";return t.status>=200&&t.status<300?(n.log&&n.dbg("debug",r,t),t):(n.error&&n.error("'FAILED: "+r,t),q(t))}var n=this,o=new Date;t||(t={}),e=h(e),e=m(e,n.httpConfig),n.forceTrailingSlash&&"/"!==e.url[e.url.length-1]&&(e.url+="/"),e.method=e.method.toUpperCase();var a=e.suffix||t.suffix||n.suffix;if(a&&e.url.substr(e.url.length-a.length)!==a&&(e.url+=a),!n.http)throw new Error("You have not configured this adapter with an http library!");return z(n.beforeHTTP(e,t)).then(function(o){return e=o||e,S&&(n.useFetch||t.useFetch||!n.http)?n.fetch(e,t).then(r,r):n.http(e).then(r,r).catch(function(r){return n.responseError(r,e,t)})}).then(function(r){return z(n.afterHTTP(e,t,r)).then(function(e){return e||r})})},log:function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;t>n;n++)r[n-1]=arguments[n];if(e&&!r.length&&(r.push(e),e="debug"),"debug"!==e||this.debug){var o=e.toUpperCase()+": (HttpAdapter)";if(console[e]){var a;(a=console)[e].apply(a,[o].concat(r))}else{var u;(u=console).log.apply(u,[o].concat(r))}}},POST:function(e,t,r,n){var o=this,a=void 0;return r||(r={}),n||(n={}),r.url=e||r.url,r.data=t||r.data,r.method=r.method||"post",a=n.op="beforePOST",z(o[a](e,t,r,n)).then(function(u){return r=U(u)?r:u,a=n.op="POST",o.dbg(a,e,t,r,n),o.HTTP(r,n)}).then(function(u){return a=n.op="afterPOST",z(o[a](e,t,r,n,u)).then(function(e){return U(e)?u:e})})},PUT:function(e,t,r,n){var o=this,a=void 0;return r||(r={}),n||(n={}),r.url=e||r.url,r.data=t||r.data,r.method=r.method||"put",a=n.op="beforePUT",z(o[a](e,t,r,n)).then(function(u){return r=U(u)?r:u,a=n.op="PUT",o.dbg(a,e,t,r,n),o.HTTP(r,n)}).then(function(u){return a=n.op="afterPUT",z(o[a](e,t,r,n,u)).then(function(e){return U(e)?u:e})})},queryTransform:function(e,t,r){return r||(r={}),T(r.queryTransform)?r.queryTransform(e,t,r):T(e.queryTransform)?e.queryTransform(e,t,r):t},responseError:function(e,t,r){return q(e)},serialize:function(e,t,r){return r||(r={}),T(r.serialize)?r.serialize(e,t,r):T(e.serialize)?e.serialize(e,t,r):t},update:function(e,t,r,n){var o=this,a=void 0;return n=n?h(n):{},n.params||(n.params={}),n.params=o.queryTransform(e,n.params,n),n.suffix=U(n.suffix)?e.suffix:n.suffix,a=n.op="beforeUpdate",z(o[a](e,t,r,n)).then(function(){return a=n.op="update",o.dbg(a,e,t,r,n),o.PUT(o.getPath("update",e,t,n),o.serialize(e,r,n),n)}).then(function(t){return o.deserialize(e,t,n)}).then(function(u){return a=n.op="afterUpdate",z(o[a](e,t,r,n,u)).then(function(e){return U(e)?u:e})})},updateAll:function(e,t,r,n){var o=this,a=void 0;return r||(r={}),n=n?h(n):{},n.params||(n.params={}),m(n.params,r),n.params=o.queryTransform(e,n.params,n),n.suffix=U(n.suffix)?e.suffix:n.suffix,a=n.op="beforeUpdateAll",z(o[a](e,t,r,n)).then(function(){return a=n.op="updateAll",o.dbg(a,e,t,r,n),o.PUT(o.getPath("updateAll",e,null,n),o.serialize(e,t,n),n)}).then(function(t){return o.deserialize(e,t,n)}).then(function(u){return a=n.op="afterUpdateAll",z(o[a](e,t,r,n,u)).then(function(e){return U(e)?u:e})})},updateMany:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=U(r.suffix)?e.suffix:r.suffix,o=r.op="beforeUpdateMany",z(n[o](e,t,r)).then(function(){return o=r.op="updateMany",n.dbg(o,e,t,r),n.PUT(n.getPath("updateMany",e,null,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterUpdateMany",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})}}),f.addAction=function(e,t){if(!e||!E(e))throw new TypeError("action(name[, opts]): Expected: string, Found: "+("undefined"==typeof e?"undefined":s(e)));return function(r){if(r[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 q(e)},r[e]=function(r,n){var o=this;P(r)&&(n=r),n=n||{};var u=o.getAdapter(t.adapter||o.defaultAdapter||"http"),i={};if(y(i,t),!n.hasOwnProperty("endpoint")&&i.endpoint&&(n.endpoint=i.endpoint),"function"==typeof n.getEndpoint)i.url=n.getEndpoint(o,n);else{var f=[n.basePath||o.basePath||u.defaults.basePath,u.getEndpoint(o,A(r)?r:null,n)];A(r)&&f.push(r),f.push(t.pathname||e),i.url=a.apply(null,f)}return i.method=i.method||"GET",i.mapper=o.name,m(i)(n),z(i).then(n.request||t.request).then(function(e){return u.HTTP(e)}).then(function(e){return e&&e.config&&(e.config.mapper=o.name),e}).then(n.response||t.response,n.responseError||t.responseError)},r}},f.addActions=function(e){return e||(e={}),function(e){return b(e,function(t,r){f.addAction(r,t)(e)}),e}},f.extend=g,f.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=f},function(t,r){t.exports=e},function(e,t){e.exports=void 0}])}); //# sourceMappingURL=fetch/dist/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 84d4f9e..837f349 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_2__","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","forOwn","key","isArray","forEach","v","window","toString","toISOString","isObject","toJson","push","indexOf","DSHttpAdapter","opts","self","basePath","undefined","debug","forceTrailingSlash","http","axios","httpConfig","suffix","useFetch","_typeof","Symbol","iterator","obj","constructor","_jsData","_","utils","copy","deepMixIn","extend","fillIn","isFunction","isNumber","isSorN","isString","resolve","reject","hasFetch","fetch","e","prototype","afterCreate","afterCreateMany","afterDEL","afterDestroy","afterDestroyAll","afterFind","afterFindAll","afterGET","afterHTTP","afterPOST","afterPUT","afterUpdate","afterUpdateAll","afterUpdateMany","beforeCreate","beforeCreateMany","beforeDEL","beforeDestroy","beforeDestroyAll","beforeFind","beforeFindAll","beforeGET","beforeHTTP","beforePOST","beforePUT","beforeUpdate","beforeUpdateAll","beforeUpdateMany","create","Model","props","queryTransform","op","dbg","then","POST","getPath","serialize","response","deserialize","data","_data","createMany","models","_len2","_key2","log","apply","concat","DEL","config","method","_config","HTTP","_response","raw","destroy","destroyAll","query","error","console","_console","_fetch","_x","_x2","requestConfig","headers","Headers","body","Request","json","find","GET","findAll","getEndpoint","_this","item","parentKey","endpoint","hasOwnProperty","parentField","parentDef","parent","getResource","parentId","get","idAttribute","_ret","_opts","logResponse","str","start","toUTCString","toUpperCase","status","Date","getTime","substr","Error","catch","err","responseError","level","_len3","_key3","prefix","name","_console2","_console3","PUT","update","updateAll","updateMany","addAction","TypeError","request","adapter","getAdapter","defaultAdapter","_args","defaults","pathname","modelName","addActions","version","full","major","parseInt","minor","patch","alpha","beta"],"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_2__","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","forOwn","key","isArray","forEach","v","window","toString","toISOString","isObject","toJson","push","indexOf","HttpAdapter","opts","self","fillIn","DEFAULTS","_typeof","Symbol","iterator","obj","constructor","_jsData","axios","_","utils","addHiddenPropsToTarget","copy","deepMixIn","extend","isFunction","isNumber","isSorN","isString","isUndefined","resolve","reject","hasFetch","fetch","e","noop","_len2","_key2","dbg","apply","op","concat","noop2","_len3","_key3","basePath","debug","forceTrailingSlash","http","httpConfig","suffix","useFetch","prototype","afterCreate","afterCreateMany","afterDEL","afterDestroy","afterDestroyAll","afterFind","afterFindAll","afterGET","afterHTTP","afterPOST","afterPUT","afterUpdate","afterUpdateAll","afterUpdateMany","beforeCreate","beforeCreateMany","beforeDEL","beforeDestroy","beforeDestroyAll","beforeFind","beforeFindAll","beforeGET","beforeHTTP","beforePOST","beforePUT","beforeUpdate","beforeUpdateAll","beforeUpdateMany","create","mapper","props","undefined","queryTransform","then","POST","getPath","serialize","response","deserialize","data","_data","createMany","records","_len4","_key4","log","DEL","config","method","_config","HTTP","_response","raw","destroy","destroyAll","query","error","console","_console","_fetch","_x","_x2","requestConfig","headers","Headers","body","Request","json","find","GET","findAll","getEndpoint","_this","item","parentKey","endpoint","hasOwnProperty","parentField","parentDef","parent","getResource","parentId","get","idAttribute","_ret","_opts","logResponse","str","start","toUTCString","toUpperCase","status","Date","getTime","substr","Error","catch","err","responseError","level","_len5","_key5","prefix","_console2","_console3","PUT","update","updateAll","updateMany","addAction","name","TypeError","request","adapter","getAdapter","defaultAdapter","_args","defaults","pathname","addActions","version","full","major","parseInt","minor","patch","alpha","beta"],"mappings":"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","file":"fetch/dist/js-data-fetch.min.js"} \ No newline at end of file diff --git a/fetch/karma.start.js b/fetch/karma.start.js index f645f58..98e8ce6 100644 --- a/fetch/karma.start.js +++ b/fetch/karma.start.js @@ -1,4 +1,4 @@ -/* global JSData:true, DSHttpAdapter:true, sinon:true, chai:true */ +/* global JSData:true, HttpAdapter:true, sinon:true, chai:true */ before(function () { var Test = this Test.fail = function (msg) { @@ -11,11 +11,11 @@ before(function () { Test.assert = chai.assert Test.sinon = sinon Test.JSData = JSData - Test.DSHttpAdapter = DSHttpAdapter - Test.User = JSData.Model.extend({}, { + Test.HttpAdapter = HttpAdapter + Test.User = new JSData.Mapper({ name: 'user' }) - Test.Post = JSData.Model.extend({}, { + Test.Post = new JSData.Mapper({ name: 'post', endpoint: 'posts', basePath: 'api' @@ -26,7 +26,7 @@ before(function () { beforeEach(function () { var Test = this - Test.adapter = new DSHttpAdapter() + Test.adapter = new HttpAdapter() Test.User.registerAdapter('http', Test.adapter, { default: true }) Test.Post.registerAdapter('http', Test.adapter, { default: true }) diff --git a/fetch/package.json b/fetch/package.json index 188bc1e..f0e57d5 100644 --- a/fetch/package.json +++ b/fetch/package.json @@ -1,7 +1,7 @@ { "name": "js-data-fetch", "description": "HTTP adapter for js-data that uses fetch.", - "version": "3.0.0-alpha.3", + "version": "3.0.0-alpha.4", "homepage": "http://www.js-data.io/docs/dshttpadapter", "repository": { "type": "git", diff --git a/fetch/webpack.config.js b/fetch/webpack.config.js index 85f657e..e4a1806 100644 --- a/fetch/webpack.config.js +++ b/fetch/webpack.config.js @@ -8,7 +8,7 @@ module.exports = { output: { filename: '[name]', libraryTarget: 'umd', - library: 'DSHttpAdapter' + library: 'HttpAdapter' }, externals: [ { diff --git a/karma.start.js b/karma.start.js index cc39e7c..0d78189 100644 --- a/karma.start.js +++ b/karma.start.js @@ -1,4 +1,4 @@ -/* global JSData:true, DSHttpAdapter:true, sinon:true, chai:true */ +/* global JSData:true, HttpAdapter:true, sinon:true, chai:true */ before(function () { var Test = this Test.fail = function (msg) { @@ -11,11 +11,11 @@ before(function () { Test.assert = chai.assert Test.sinon = sinon Test.JSData = JSData - Test.DSHttpAdapter = DSHttpAdapter - Test.User = JSData.Model.extend({}, { + Test.HttpAdapter = HttpAdapter + Test.User = new JSData.Mapper({ name: 'user' }) - Test.Post = JSData.Model.extend({}, { + Test.Post = new JSData.Mapper({ name: 'post', endpoint: 'posts', basePath: 'api' @@ -26,7 +26,7 @@ before(function () { beforeEach(function () { var Test = this - Test.adapter = new DSHttpAdapter() + Test.adapter = new HttpAdapter() Test.User.registerAdapter('http', Test.adapter, { default: true }) Test.Post.registerAdapter('http', Test.adapter, { default: true }) diff --git a/node/dist/js-data-http-node.js b/node/dist/js-data-http-node.js index dd591f5..e6db31d 100644 --- a/node/dist/js-data-http-node.js +++ b/node/dist/js-data-http-node.js @@ -1,6 +1,6 @@ /*! * js-data-http-node -* @version 3.0.0-alpha.3 - Homepage +* @version 3.0.0-alpha.4 - Homepage * @author Jason Dobry * @copyright (c) 2014-2016 Jason Dobry * @license MIT @@ -72,6 +72,7 @@ return /******/ (function(modules) { // webpackBootstrap /* global fetch:true Headers:true Request:true */ var axios = __webpack_require__(2); var _ = _jsData.utils._; + var addHiddenPropsToTarget = _jsData.utils.addHiddenPropsToTarget; var copy = _jsData.utils.copy; var deepMixIn = _jsData.utils.deepMixIn; var extend = _jsData.utils.extend; @@ -83,10 +84,12 @@ return /******/ (function(modules) { // webpackBootstrap var isObject = _jsData.utils.isObject; var isSorN = _jsData.utils.isSorN; var isString = _jsData.utils.isString; + var isUndefined = _jsData.utils.isUndefined; var resolve = _jsData.utils.resolve; var reject = _jsData.utils.reject; var toJson = _jsData.utils.toJson; + var hasFetch = false; try { @@ -145,638 +148,522 @@ return /******/ (function(modules) { // webpackBootstrap return url; } - /** - * DSHttpAdapter class. - * @class DSHttpAdapter - * @alias DSHttpAdapter - * - * @param {Object} [opts] Configuration options. - * @param {string} [opts.basePath=''] - * @param {boolean} [opts.debug=false] - * @param {boolean} [opts.forceTrailingSlash=false] - * @param {Object} [opts.http=axios] - * @param {Object} [opts.httpConfig={}] - * @param {string} [opts.suffix=''] - * @param {boolean} [opts.useFetch=false] - */ - function DSHttpAdapter(opts) { + var noop = function noop() { var self = this; - // Default values for arguments - opts || (opts = {}); + for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + + var opts = args[args.length - 1]; + self.dbg.apply(self, [opts.op].concat(args)); + }; + + var noop2 = function noop2() { + var self = this; + + for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { + args[_key3] = arguments[_key3]; + } + + var opts = args[args.length - 2]; + self.dbg.apply(self, [opts.op].concat(args)); + }; + var DEFAULTS = { // Default and user-defined settings /** - * @name DSHttpAdapter#basePath + * @name HttpAdapter#basePath * @type {string} */ - self.basePath = opts.basePath === undefined ? '' : opts.basePath; + basePath: '', /** - * @name DSHttpAdapter#debug + * @name HttpAdapter#debug * @type {boolean} * @default false */ - self.debug = opts.debug === undefined ? false : opts.debug; + debug: false, /** - * @name DSHttpAdapter#forceTrailingSlash + * @name HttpAdapter#forceTrailingSlash * @type {boolean} * @default false */ - self.forceTrailingSlash = opts.forceTrailingSlash === undefined ? false : opts.forceTrailingSlash; + forceTrailingSlash: false, /** - * @name DSHttpAdapter#http + * @name HttpAdapter#http * @type {Function} */ - self.http = opts.http === undefined ? axios : opts.http; + http: axios, /** - * @name DSHttpAdapter#httpConfig + * @name HttpAdapter#httpConfig * @type {Object} */ - self.httpConfig = opts.httpConfig === undefined ? {} : opts.httpConfig; + httpConfig: {}, /** - * @name DSHttpAdapter#suffix + * @name HttpAdapter#suffix * @type {string} */ - self.suffix = opts.suffix === undefined ? '' : opts.suffix; + suffix: '', /** - * @name DSHttpAdapter#useFetch + * @name HttpAdapter#useFetch * @type {boolean} * @default false */ - self.useFetch = opts.useFetch === undefined ? false : opts.useFetch; + useFetch: false + }; + + /** + * HttpAdapter class. + * + * @class HttpAdapter + * @param {Object} [opts] Configuration options. + * @param {string} [opts.basePath=''] TODO + * @param {boolean} [opts.debug=false] TODO + * @param {boolean} [opts.forceTrailingSlash=false] TODO + * @param {Object} [opts.http=axios] TODO + * @param {Object} [opts.httpConfig={}] TODO + * @param {string} [opts.suffix=''] TODO + * @param {boolean} [opts.useFetch=false] TODO + */ + function HttpAdapter(opts) { + var self = this; + + // Default values for arguments + opts || (opts = {}); + + fillIn(self, opts); + fillIn(self, DEFAULTS); } - fillIn(DSHttpAdapter.prototype, { + addHiddenPropsToTarget(HttpAdapter.prototype, { /** - * Lifecycle hook called by {@link DSHttpAdapter#create}. If this method - * returns a promise then {@link DSHttpAdapter#create} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#create} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#create}. - * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#create}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#create}. - * @param {Object} data The `data` value that {@link DSHttpAdapter#create} will return. + * @name HttpAdapter#afterCreate + * @method + * @param {Object} mapper + * @param {Object} props + * @param {Object} opts + * @param {Object} data */ - - afterCreate: function afterCreate() {}, + afterCreate: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#createMany}. If this method - * returns a promise then {@link DSHttpAdapter#createMany} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#createMany} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#createMany}. - * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#createMany}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#createMany}. - * @param {Object} data The `data` value that {@link DSHttpAdapter#createMany} will return. + * @name HttpAdapter#afterCreateMany + * @method + * @param {Object} mapper + * @param {Object} records + * @param {Object} opts + * @param {Object} data */ - afterCreateMany: function afterCreateMany() {}, + afterCreateMany: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#DEL}. If this method - * returns a promise then {@link DSHttpAdapter#DEL} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#DEL} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {string} url The `url` argument passed to {@link DSHttpAdapter#DEL}. - * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#DEL}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#DEL}. - * @param {Object} response The `response` value that {@link DSHttpAdapter#DEL} will return. + * @name HttpAdapter#afterDEL + * @method + * @param {string} url + * @param {Object} config + * @param {Object} opts + * @param {Object} response */ - afterDEL: function afterDEL() {}, + afterDEL: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#destroy}. If this method - * returns a promise then {@link DSHttpAdapter#destroy} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#destroy} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroy}. - * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#destroy}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroy}. - * @param {Object} data The `data` value that {@link DSHttpAdapter#destroy} will return. + * @name HttpAdapter#afterDestroy + * @method + * @param {Object} mapper + * @param {(string|number)} id + * @param {Object} opts + * @param {Object} data */ - afterDestroy: function afterDestroy() {}, + afterDestroy: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#destroyAll}. If this method - * returns a promise then {@link DSHttpAdapter#destroyAll} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#destroyAll} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroyAll}. - * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#destroyAll}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroyAll}. - * @param {Object} data The `data` value that {@link DSHttpAdapter#destroyAll} will return. + * @name HttpAdapter#afterDestroyAll + * @method + * @param {Object} mapper + * @param {(string|number)} id + * @param {Object} opts + * @param {Object} data */ - afterDestroyAll: function afterDestroyAll() {}, + afterDestroyAll: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#find}. If this method - * returns a promise then {@link DSHttpAdapter#find} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#find} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#find}. - * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#find}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#find}. - * @param {Object} data The `data` value that {@link DSHttpAdapter#find} will return. + * @name HttpAdapter#afterFind + * @method + * @param {Object} mapper + * @param {(string|number)} id + * @param {Object} opts + * @param {Object} data */ - afterFind: function afterFind() {}, + afterFind: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#findAll}. If this method - * returns a promise then {@link DSHttpAdapter#findAll} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#findAll} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#findAll}. - * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#findAll}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#findAll}. - * @param {Object} data The `data` value that {@link DSHttpAdapter#findAll} will return. + * @name HttpAdapter#afterFindAll + * @method + * @param {Object} mapper + * @param {(string|number)} id + * @param {Object} opts + * @param {Object} data */ - afterFindAll: function afterFindAll() {}, + afterFindAll: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#GET}. If this method - * returns a promise then {@link DSHttpAdapter#GET} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#GET} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {string} url The `url` argument passed to {@link DSHttpAdapter#GET}. - * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#GET}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#GET}. - * @param {Object} response The `response` value that {@link DSHttpAdapter#GET} will return. + * @name HttpAdapter#afterGET + * @method + * @param {string} url + * @param {Object} config + * @param {Object} opts + * @param {Object} response */ - afterGET: function afterGET() {}, + afterGET: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#HTTP}. If this method - * returns a promise then {@link DSHttpAdapter#HTTP} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#HTTP} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#HTTP}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#HTTP}. - * @param {Object} response The `response` value that {@link DSHttpAdapter#HTTP} will return. + * @name HttpAdapter#afterHTTP + * @method + * @param {Object} config + * @param {Object} opts + * @param {Object} response */ - afterHTTP: function afterHTTP() {}, + afterHTTP: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#POST}. If this method - * returns a promise then {@link DSHttpAdapter#POST} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#POST} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {string} url The `url` argument passed to {@link DSHttpAdapter#POST}. - * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#POST}. - * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#POST}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#POST}. - * @param {Object} response The `response` value that {@link DSHttpAdapter#POST} will return. + * @name HttpAdapter#afterPOST + * @method + * @param {string} url + * @param {Object} data + * @param {Object} config + * @param {Object} opts + * @param {Object} response */ - afterPOST: function afterPOST() {}, + afterPOST: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#PUT}. If this method - * returns a promise then {@link DSHttpAdapter#PUT} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#PUT} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {string} url The `url` argument passed to {@link DSHttpAdapter#PUT}. - * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#PUT}. - * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#PUT}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#PUT}. - * @param {Object} response The `response` value that {@link DSHttpAdapter#PUT} will return. + * @name HttpAdapter#afterPUT + * @method + * @param {string} url + * @param {Object} data + * @param {Object} config + * @param {Object} opts + * @param {Object} response */ - afterPUT: function afterPUT() {}, + afterPUT: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#update}. If this method - * returns a promise then {@link DSHttpAdapter#update} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#update} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#update}. - * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#update}. - * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#update}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#update}. - * @param {Object} data The `data` value that {@link DSHttpAdapter#update} will return. + * @name HttpAdapter#afterUpdate + * @method + * @param {Object} mapper + * @param {(string|number)} id + * @param {Object} props + * @param {Object} opts + * @param {Object} data */ - afterUpdate: function afterUpdate() {}, + afterUpdate: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#updateAll}. If this method - * returns a promise then {@link DSHttpAdapter#updateAll} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#updateAll} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateAll}. - * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#updateAll}. - * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#updateAll}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateAll}. - * @param {Object} data The `data` value that {@link DSHttpAdapter#updateAll} will return. + * @name HttpAdapter#afterUpdateAll + * @method + * @param {Object} mapper + * @param {Object} props + * @param {Object} query + * @param {Object} opts + * @param {Object} data */ - afterUpdateAll: function afterUpdateAll() {}, + afterUpdateAll: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#updateMany}. If this method - * returns a promise then {@link DSHttpAdapter#updateMany} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#updateMany} - * will resolve with that same value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateMany}. - * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#updateMany}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateMany}. - * @param {Object} data The `data` value that {@link DSHttpAdapter#updateMany} will return. + * @name HttpAdapter#afterUpdateMany + * @method + * @param {Object} mapper + * @param {Object} records + * @param {Object} opts + * @param {Object} data */ - afterUpdateMany: function afterUpdateMany() {}, + afterUpdateMany: noop2, /** - * Lifecycle hook called by {@link DSHttpAdapter#create}. If this method - * returns a promise then {@link DSHttpAdapter#create} will wait for the - * promise to resolve before continuing. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#create}. - * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#create}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#create}. + * @name HttpAdapter#beforeCreate + * @method + * @param {Object} mapper + * @param {Object} props + * @param {Object} opts */ - beforeCreate: function beforeCreate() {}, + beforeCreate: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#createMany}. If this method - * returns a promise then {@link DSHttpAdapter#createMany} will wait for the - * promise to resolve before continuing. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#createMany}. - * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#createMany}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#createMany}. + * @name HttpAdapter#beforeCreateMany + * @method + * @param {Object} mapper + * @param {Object} records + * @param {Object} opts */ - beforeCreateMany: function beforeCreateMany() {}, + beforeCreateMany: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#DEL}. If this method - * returns a promise then {@link DSHttpAdapter#DEL} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#create} - * will resolve with that same value, then the `config` argument passed to - * {@link DSHttpAdapter#DEL} will be replaced by the value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#DEL}. - * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#DEL}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#DEL}. + * @name HttpAdapter#beforeDEL + * @method + * @param {Object} url + * @param {Object} config + * @param {Object} opts */ - beforeDEL: function beforeDEL() {}, + beforeDEL: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#destroy}. If this method - * returns a promise then {@link DSHttpAdapter#destroy} will wait for the - * promise to resolve before continuing. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroy}. - * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#destroy}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroy}. + * @name HttpAdapter#beforeDestroy + * @method + * @param {Object} mapper + * @param {(string|number)} id + * @param {Object} opts */ - beforeDestroy: function beforeDestroy() {}, + beforeDestroy: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#destroyAll}. If this method - * returns a promise then {@link DSHttpAdapter#destroyAll} will wait for the - * promise to resolve before continuing. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroyAll}. - * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#destroyAll}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroyAll}. + * @name HttpAdapter#beforeDestroyAll + * @method + * @param {Object} mapper + * @param {Object} query + * @param {Object} opts */ - beforeDestroyAll: function beforeDestroyAll() {}, + beforeDestroyAll: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#find}. If this method - * returns a promise then {@link DSHttpAdapter#find} will wait for the - * promise to resolve before continuing. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#find}. - * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#find}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#find}. + * @name HttpAdapter#beforeFind + * @method + * @param {Object} mapper + * @param {(string|number)} id + * @param {Object} opts */ - beforeFind: function beforeFind() {}, + beforeFind: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#findAll}. If this method - * returns a promise then {@link DSHttpAdapter#findAll} will wait for the - * promise to resolve before continuing. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#findAll}. - * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#findAll}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#findAll}. + * @name HttpAdapter#beforeFindAll + * @method + * @param {Object} mapper + * @param {Object} query + * @param {Object} opts */ - beforeFindAll: function beforeFindAll() {}, + beforeFindAll: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#GET}. If this method - * returns a promise then {@link DSHttpAdapter#GET} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#create} - * will resolve with that same value, then the `config` argument passed to - * {@link DSHttpAdapter#GET} will be replaced by the value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#GET}. - * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#GET}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#GET}. + * @name HttpAdapter#beforeGET + * @method + * @param {Object} url + * @param {Object} config + * @param {Object} opts */ - beforeGET: function beforeGET() {}, + beforeGET: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#HTTP}. If this method - * returns a promise then {@link DSHttpAdapter#HTTP} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#create} - * will resolve with that same value, then the `config` argument passed to - * {@link DSHttpAdapter#HTTP} will be replaced by the value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#HTTP}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#HTTP}. + * @name HttpAdapter#beforeHTTP + * @method + * @param {Object} config + * @param {Object} opts */ - beforeHTTP: function beforeHTTP() {}, + beforeHTTP: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#POST}. If this method - * returns a promise then {@link DSHttpAdapter#POST} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#create} - * will resolve with that same value, then the `config` argument passed to - * {@link DSHttpAdapter#POST} will be replaced by the value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#POST}. - * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#POST}. - * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#POST}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#POST}. + * @name HttpAdapter#beforePOST + * @method + * @param {Object} url + * @param {Object} data + * @param {Object} config + * @param {Object} opts */ - beforePOST: function beforePOST() {}, + beforePOST: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#PUT}. If this method - * returns a promise then {@link DSHttpAdapter#PUT} will wait for the - * promise to resolve before continuing. If this method returns any other - * value or the promise resolves with a value, then {@link DSHttpAdapter#create} - * will resolve with that same value, then the `config` argument passed to - * {@link DSHttpAdapter#PUT} will be replaced by the value. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#PUT}. - * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#PUT}. - * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#PUT}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#PUT}. + * @name HttpAdapter#beforePUT + * @method + * @param {Object} url + * @param {Object} data + * @param {Object} config + * @param {Object} opts */ - beforePUT: function beforePUT() {}, + beforePUT: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#update}. If this method - * returns a promise then {@link DSHttpAdapter#update} will wait for the - * promise to resolve before continuing. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#update}. - * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#update}. - * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#update}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#update}. + * @name HttpAdapter#beforeUpdate + * @method + * @param {Object} mapper + * @param {(string|number)} id + * @param {Object} props + * @param {Object} opts */ - beforeUpdate: function beforeUpdate() {}, + beforeUpdate: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#updateAll}. If this method - * returns a promise then {@link DSHttpAdapter#updateAll} will wait for the - * promise to resolve before continuing. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateAll}. - * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#updateAll}. - * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#updateAll}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateAll}. + * @name HttpAdapter#beforeUpdateAll + * @method + * @param {Object} mapper + * @param {Object} props + * @param {Object} query + * @param {Object} opts */ - beforeUpdateAll: function beforeUpdateAll() {}, + beforeUpdateAll: noop, /** - * Lifecycle hook called by {@link DSHttpAdapter#updateMany}. If this method - * returns a promise then {@link DSHttpAdapter#updateMany} will wait for the - * promise to resolve before continuing. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateMany}. - * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#updateMany}. - * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateMany}. + * @name HttpAdapter#beforeUpdateMany + * @method + * @param {Object} mapper + * @param {Object} records + * @param {Object} opts */ - beforeUpdateMany: function beforeUpdateMany() {}, + beforeUpdateMany: noop, /** - * Create a new the entity from the provided `props`. - * - * {@link DSHttpAdapter#beforeCreate} will be called before calling - * {@link DSHttpAdapter#POST}. - * {@link DSHttpAdapter#afterCreate} will be called after calling - * {@link DSHttpAdapter#POST}. + * Create a new the record from the provided `props`. * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The Model. + * @name HttpAdapter#create + * @method + * @param {Object} mapper The mapper. * @param {Object} props Properties to send as the payload. * @param {Object} [opts] Configuration options. * @param {string} [opts.params] TODO - * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO * @return {Promise} */ - create: function create(Model, props, opts) { + create: function create(mapper, props, opts) { var self = this; + var op = undefined; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); - opts.params = self.queryTransform(Model, opts.params, opts); - opts.suffix || (opts.suffix = Model.suffix); - opts.op = 'create'; - self.dbg(opts.op, Model, props, opts); - return resolve(self.beforeCreate(Model, props, opts)).then(function () { - return self.POST(self.getPath('create', Model, props, opts), self.serialize(Model, props, opts), opts); + opts.params = self.queryTransform(mapper, opts.params, opts); + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; + + // beforeCreate lifecycle hook + op = opts.op = 'beforeCreate'; + return resolve(self[op](mapper, props, opts)).then(function () { + op = opts.op = 'create'; + self.dbg(op, mapper, props, opts); + return self.POST(self.getPath('create', mapper, props, opts), self.serialize(mapper, props, opts), opts); }).then(function (response) { - return self.deserialize(Model, response, opts); + return self.deserialize(mapper, response, opts); }).then(function (data) { - return resolve(self.afterCreate(Model, props, opts, data)).then(function (_data) { - return _data || data; + // afterCreate lifecycle hook + op = opts.op = 'afterCreate'; + return resolve(self[op](mapper, props, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data; }); }); }, + /** - * Create multiple new entities in batch. + * Create multiple new records in batch. * - * {@link DSHttpAdapter#beforeCreateMany} will be called before calling - * {@link DSHttpAdapter#POST}. - * {@link DSHttpAdapter#afterCreateMany} will be called after calling - * {@link DSHttpAdapter#POST}. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The Model. - * @param {Array} models Array of property objects to send as the payload. + * @name HttpAdapter#createMany + * @method + * @param {Object} mapper The mapper. + * @param {Array} records Array of property objects to send as the payload. * @param {Object} [opts] Configuration options. * @param {string} [opts.params] TODO - * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO * @return {Promise} */ - createMany: function createMany(Model, models, opts) { + createMany: function createMany(mapper, records, opts) { var self = this; + var op = undefined; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); - opts.params = self.queryTransform(Model, opts.params, opts); - opts.suffix || (opts.suffix = Model.suffix); - opts.op = 'createMany'; - self.dbg(opts.op, Model, models, opts); - return resolve(self.beforeCreateMany(Model, models, opts)).then(function () { - return self.POST(self.getPath('createMany', Model, null, opts), self.serialize(Model, models, opts), opts); + opts.params = self.queryTransform(mapper, opts.params, opts); + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; + + // beforeCreateMany lifecycle hook + op = opts.op = 'beforeCreateMany'; + return resolve(self[op](mapper, records, opts)).then(function () { + op = opts.op = 'createMany'; + self.dbg(op, mapper, records, opts); + return self.POST(self.getPath('createMany', mapper, null, opts), self.serialize(mapper, records, opts), opts); }).then(function (response) { - return self.deserialize(Model, response, opts); + return self.deserialize(mapper, response, opts); }).then(function (data) { - return resolve(self.afterCreateMany(Model, models, opts, data)).then(function (_data) { - return _data || data; + // afterCreateMany lifecycle hook + op = opts.op = 'afterCreateMany'; + return resolve(self[op](mapper, records, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data; }); }); }, + /** - * Call {@link DSHttpAdapter#log} at the "debug" level. + * Call {@link HttpAdapter#log} at the "debug" level. * - * @memberof DSHttpAdapter - * @instance - * @param {...*} [args] Args passed to {@link DSHttpAdapter#log}. + * @name HttpAdapter#dbg + * @method + * @param {...*} [args] Args passed to {@link HttpAdapter#log}. */ dbg: function dbg() { - for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; + for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { + args[_key4] = arguments[_key4]; } this.log.apply(this, ['debug'].concat(args)); }, + /** * Make an Http request to `url` according to the configuration in `config`. * - * {@link DSHttpAdapter#beforeDEL} will be called before calling - * {@link DSHttpAdapter#HTTP}. - * {@link DSHttpAdapter#afterDEL} will be called after calling - * {@link DSHttpAdapter#HTTP}. - * - * @memberof DSHttpAdapter - * @instance + * @name HttpAdapter#DEL + * @method * @param {string} url Url for the request. * @param {Object} [config] Http configuration that will be passed to - * {@link DSHttpAdapter#HTTP}. + * {@link HttpAdapter#HTTP}. * @param {Object} [opts] Configuration options. * @return {Promise} */ DEL: function DEL(url, config, opts) { var self = this; + var op = undefined; config || (config = {}); + opts || (opts = {}); config.url = url || config.url; config.method = config.method || 'delete'; - return resolve(self.beforeDEL(url, config, opts)).then(function (_config) { - config = _config || config; + + // beforeDEL lifecycle hook + op = opts.op = 'beforeDEL'; + return resolve(self[op](url, config, opts)).then(function (_config) { + // Allow re-assignment from lifecycle hook + config = isUndefined(_config) ? config : _config; + op = opts.op = 'DEL'; + self.dbg(op, url, config, opts); return self.HTTP(config, opts); }).then(function (response) { - return resolve(self.afterDEL(url, config, opts, response)).then(function (_response) { - return _response || response; + // afterDEL lifecycle hook + op = opts.op = 'afterDEL'; + return resolve(self[op](url, config, opts, response)).then(function (_response) { + // Allow re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; }); }); }, + /** * Transform the server response object into the payload that will be returned * to JSData. * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The Model used for the operation. - * @param {Object} response Response object from {@link DSHttpAdapter#HTTP}. + * @name HttpAdapter#deserialize + * @method + * @param {Object} mapper The mapper used for the operation. + * @param {Object} response Response object from {@link HttpAdapter#HTTP}. * @param {Object} opts Configuration options. * @return {(Object|Array)} Deserialized data. */ - deserialize: function deserialize(Model, response, opts) { + deserialize: function deserialize(mapper, response, opts) { opts || (opts = {}); if (isFunction(opts.deserialize)) { - return opts.deserialize(Model, response, opts); + return opts.deserialize(mapper, response, opts); } - if (isFunction(Model.deserialize)) { - return Model.deserialize(Model, response, opts); + if (isFunction(mapper.deserialize)) { + return mapper.deserialize(mapper, response, opts); } if (opts.raw) { return response; @@ -784,85 +671,92 @@ return /******/ (function(modules) { // webpackBootstrap return response ? 'data' in response ? response.data : response : response; }, + /** - * Destroy the entity with the given primary key. + * Destroy the record with the given primary key. * - * {@link DSHttpAdapter#beforeDestroy} will be called before calling - * {@link DSHttpAdapter#DEL}. - * {@link DSHttpAdapter#afterDestroy} will be called after calling - * {@link DSHttpAdapter#DEL}. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The Model. - * @param {(string|number)} id Primary key of the entity to destroy. + * @name HttpAdapter#destroy + * @method + * @param {Object} mapper The mapper. + * @param {(string|number)} id Primary key of the record to destroy. * @param {Object} [opts] Configuration options. * @param {string} [opts.params] TODO - * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO * @return {Promise} */ - destroy: function destroy(Model, id, opts) { + destroy: function destroy(mapper, id, opts) { var self = this; + var op = undefined; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); - opts.params = self.queryTransform(Model, opts.params, opts); - opts.suffix || (opts.suffix = Model.suffix); - opts.op = 'destroy'; - self.dbg(opts.op, Model, id, opts); - return resolve(self.beforeDestroy(Model, id, opts)).then(function () { - return self.DEL(self.getPath('destroy', Model, id, opts), opts); + opts.params = self.queryTransform(mapper, opts.params, opts); + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; + + // beforeDestroy lifecycle hook + op = opts.op = 'beforeDestroy'; + return resolve(self[op](mapper, id, opts)).then(function () { + op = opts.op = 'destroy'; + self.dbg(op, mapper, id, opts); + return self.DEL(self.getPath('destroy', mapper, id, opts), opts); }).then(function (response) { - return self.deserialize(Model, response, opts); + return self.deserialize(mapper, response, opts); }).then(function (data) { - return resolve(self.afterDestroy(Model, id, opts, data)).then(function (_data) { - return _data || data; + // afterDestroy lifecycle hook + op = opts.op = 'afterDestroy'; + return resolve(self[op](mapper, id, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data; }); }); }, + /** - * Destroy the entities that match the selection `query`. - * - * {@link DSHttpAdapter#beforeDestroyAll} will be called before calling - * {@link DSHttpAdapter#DEL}. - * {@link DSHttpAdapter#afterDestroyAll} will be called after calling - * {@link DSHttpAdapter#DEL}. + * Destroy the records that match the selection `query`. * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The Model. + * @name HttpAdapter#destroyAll + * @method + * @param {Object} mapper The mapper. * @param {Object} query Selection query. * @param {Object} [opts] Configuration options. * @param {string} [opts.params] TODO - * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO * @return {Promise} */ - destroyAll: function destroyAll(Model, query, opts) { + destroyAll: function destroyAll(mapper, query, opts) { var self = this; + var op = undefined; query || (query = {}); opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); deepMixIn(opts.params, query); - opts.params = self.queryTransform(Model, opts.params, opts); - opts.suffix || (opts.suffix = Model.suffix); - opts.op = 'destroyAll'; - self.dbg(opts.op, Model, query, opts); - return resolve(self.beforeDestroyAll(Model, query, opts)).then(function () { - return self.DEL(self.getPath('destroyAll', Model, null, opts), opts); + opts.params = self.queryTransform(mapper, opts.params, opts); + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; + + // beforeDestroyAll lifecycle hook + op = opts.op = 'beforeDestroyAll'; + return resolve(self.beforeDestroyAll(mapper, query, opts)).then(function () { + op = opts.op = 'destroyAll'; + self.dbg(op, mapper, query, opts); + return self.DEL(self.getPath('destroyAll', mapper, null, opts), opts); }).then(function (response) { - return self.deserialize(Model, response, opts); + return self.deserialize(mapper, response, opts); }).then(function (data) { - return resolve(self.afterDestroyAll(Model, query, opts, data)).then(function (_data) { - return _data || data; + // afterDestroyAll lifecycle hook + op = opts.op = 'afterDestroyAll'; + return resolve(self[op](mapper, query, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data; }); }); }, + /** * Log an error. * - * @memberof DSHttpAdapter - * @instance + * @name HttpAdapter + * @method * @param {...*} [args] Arguments to log. */ error: function error() { @@ -873,11 +767,12 @@ return /******/ (function(modules) { // webpackBootstrap } }, + /** * Make an Http request using `window.fetch`. * - * @memberof DSHttpAdapter - * @instance + * @name HttpAdapter + * @method * @param {Object} config Request configuration. * @param {Object} config.data Payload for the request. * @param {string} config.method Http method for the request. @@ -919,85 +814,92 @@ return /******/ (function(modules) { // webpackBootstrap }); }), + /** - * Retrieve the entity with the given primary key. + * Retrieve the record with the given primary key. * - * {@link DSHttpAdapter#beforeFind} will be called before calling - * {@link DSHttpAdapter#GET}. - * {@link DSHttpAdapter#afterFind} will be called after calling - * {@link DSHttpAdapter#GET}. - * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The Model. - * @param {(string|number)} id Primary key of the entity to retrieve. + * @name HttpAdapter#find + * @method + * @param {Object} mapper The mapper. + * @param {(string|number)} id Primary key of the record to retrieve. * @param {Object} [opts] Configuration options. * @param {string} [opts.params] TODO - * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO * @return {Promise} */ - find: function find(Model, id, opts) { + find: function find(mapper, id, opts) { var self = this; + var op = undefined; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); - opts.params = self.queryTransform(Model, opts.params, opts); - opts.suffix || (opts.suffix = Model.suffix); - opts.op = 'find'; - self.dbg(opts.op, Model, id, opts); - return resolve(self.beforeFind(Model, id, opts)).then(function () { - return self.GET(self.getPath('find', Model, id, opts), opts); + opts.params = self.queryTransform(mapper, opts.params, opts); + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; + + // beforeFind lifecycle hook + op = opts.op = 'beforeFind'; + return resolve(self[op](mapper, id, opts)).then(function () { + op = opts.op = 'find'; + self.dbg(op, mapper, id, opts); + return self.GET(self.getPath('find', mapper, id, opts), opts); }).then(function (response) { - return self.deserialize(Model, response, opts); + return self.deserialize(mapper, response, opts); }).then(function (data) { - return resolve(self.afterFind(Model, id, opts, data)).then(function (_data) { - return _data || data; + // afterFind lifecycle hook + op = opts.op = 'afterFind'; + return resolve(self[op](mapper, id, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data; }); }); }, + /** - * Retrieve the entities that match the selection `query`. - * - * {@link DSHttpAdapter#beforeFindAll} will be called before calling - * {@link DSHttpAdapter#GET}. - * {@link DSHttpAdapter#afterFindAll} will be called after calling - * {@link DSHttpAdapter#GET}. + * Retrieve the records that match the selection `query`. * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The Model. + * @name HttpAdapter#findAll + * @method + * @param {Object} mapper The mapper. * @param {Object} query Selection query. * @param {Object} [opts] Configuration options. * @param {string} [opts.params] TODO - * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO * @return {Promise} */ - findAll: function findAll(Model, query, opts) { + findAll: function findAll(mapper, query, opts) { var self = this; + var op = undefined; query || (query = {}); opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); - opts.suffix || (opts.suffix = Model.suffix); - opts.op = 'findAll'; - self.dbg(opts.op, Model, query, opts); + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; deepMixIn(opts.params, query); - opts.params = self.queryTransform(Model, opts.params, opts); - return resolve(self.beforeFindAll(Model, query, opts)).then(function () { - return self.GET(self.getPath('findAll', Model, opts.params, opts), opts); + opts.params = self.queryTransform(mapper, opts.params, opts); + + // beforeFindAll lifecycle hook + op = opts.op = 'beforeFindAll'; + return resolve(self[op](mapper, query, opts)).then(function () { + op = opts.op = 'findAll'; + self.dbg(op, mapper, query, opts); + return self.GET(self.getPath('findAll', mapper, opts.params, opts), opts); }).then(function (response) { - return self.deserialize(Model, response, opts); + return self.deserialize(mapper, response, opts); }).then(function (data) { - return resolve(self.afterFindAll(Model, query, opts, data)).then(function (_data) { - return _data || data; + // afterFindAll lifecycle hook + op = opts.op = 'afterFindAll'; + return resolve(self[op](mapper, query, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data; }); }); }, + /** - * { function_description } + * TODO * - * @memberof DSHttpAdapter - * @instance + * @name HttpAdapter#GET + * @method * @param {string} url The url for the request. * @param {Object} config Request configuration options. * @param {Object} [opts] Configuration options. @@ -1005,38 +907,50 @@ return /******/ (function(modules) { // webpackBootstrap */ GET: function GET(url, config, opts) { var self = this; + var op = undefined; config || (config = {}); + opts || (opts = {}); config.url = url || config.url; config.method = config.method || 'get'; - return resolve(self.beforeGET(url, config, opts)).then(function (_config) { - config = _config || config; + + // beforeGET lifecycle hook + op = opts.op = 'beforeGET'; + return resolve(self[op](url, config, opts)).then(function (_config) { + // Allow re-assignment from lifecycle hook + config = isUndefined(_config) ? config : _config; + op = opts.op = 'GET'; + self.dbg(op, url, config, opts); return self.HTTP(config, opts); }).then(function (response) { - return resolve(self.afterGET(url, config, opts, response)).then(function (_response) { - return _response || response; + // afterGET lifecycle hook + op = opts.op = 'afterGET'; + return resolve(self[op](url, config, opts, response)).then(function (_response) { + // Allow re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; }); }); }, + /** - * @memberof DSHttpAdapter - * @instance - * @param {*} Model { description } - * @param {*} id { description } - * @param {boolean} opts { description } + * @name HttpAdapter#getEndpoint + * @method + * @param {Object} mapper TODO + * @param {*} id TODO + * @param {boolean} opts TODO * @return {string} Full path. */ - getEndpoint: function getEndpoint(Model, id, opts) { + getEndpoint: function getEndpoint(mapper, id, opts) { var _this = this; opts || (opts = {}); opts.params || (opts.params = {}); var item = undefined; - var parentKey = Model.parentKey; - var endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : Model.endpoint; - var parentField = Model.parentField; - var parentDef = Model.parent ? Model.getResource(Model.parent) : undefined; + var parentKey = mapper.parentKey; + var endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : mapper.endpoint; + var parentField = mapper.parentField; + var parentDef = mapper.parent ? mapper.getResource(mapper.parent) : undefined; var parentId = opts.params[parentKey]; if (parentId === false || !parentKey || !parentDef) { @@ -1048,7 +962,7 @@ return /******/ (function(modules) { // webpackBootstrap delete opts.params[parentKey]; if (isString(id) || isNumber(id)) { - item = Model.get(id); + item = mapper.get(id); } else if (isObject(id)) { item = id; } @@ -1077,29 +991,31 @@ return /******/ (function(modules) { // webpackBootstrap } }, + /** - * @memberof DSHttpAdapter - * @instance + * @name HttpAdapter#getPath + * @method * @param {string} method TODO - * @param {*} Model TODO + * @param {Object} mapper TODO * @param {(string|number)?} id TODO * @param {Object} opts Configuration options. */ - getPath: function getPath(method, Model, id, opts) { + getPath: function getPath(method, mapper, id, opts) { var self = this; opts || (opts = {}); - var args = [opts.basePath === undefined ? Model.basePath === undefined ? self.basePath : Model.basePath : opts.basePath, self.getEndpoint(Model, isString(id) || isNumber(id) || method === 'create' ? id : null, opts)]; + var args = [opts.basePath === undefined ? mapper.basePath === undefined ? self.basePath : mapper.basePath : opts.basePath, self.getEndpoint(mapper, isString(id) || isNumber(id) || method === 'create' ? id : null, opts)]; if (method === 'find' || method === 'update' || method === 'destroy') { args.push(id); } return makePath.apply(_jsData.utils, args); }, + /** * Make an Http request. * - * @memberof DSHttpAdapter - * @instance + * @name HttpAdapter#HTTP + * @method * @param {Object} config Request configuration options. * @param {Object} [opts] Configuration options. * @return {Promise} @@ -1153,17 +1069,18 @@ return /******/ (function(modules) { // webpackBootstrap }); }, + /** * Log the provided arguments at the specified leve. * - * @memberof DSHttpAdapter - * @instance + * @name HttpAdapter#log + * @method * @param {string} level Log level. * @param {...*} [args] Arguments to log. */ log: function log(level) { - for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { - args[_key3 - 1] = arguments[_key3]; + for (var _len5 = arguments.length, args = Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) { + args[_key5 - 1] = arguments[_key5]; } if (level && !args.length) { @@ -1173,7 +1090,7 @@ return /******/ (function(modules) { // webpackBootstrap if (level === 'debug' && !this.debug) { return; } - var prefix = level.toUpperCase() + ': (' + this.name + ')'; + var prefix = level.toUpperCase() + ': (HttpAdapter)'; if (console[level]) { var _console2; @@ -1185,222 +1102,273 @@ return /******/ (function(modules) { // webpackBootstrap } }, + /** - * { function_description } + * TODO * - * @memberof DSHttpAdapter - * @instance - * @param {*} url { description } - * @param {*} data { description } - * @param {*} config { description } + * @name HttpAdapter#POST + * @method + * @param {*} url TODO + * @param {Object} data TODO + * @param {Object} config TODO * @param {Object} [opts] Configuration options. * @return {Promise} */ POST: function POST(url, data, config, opts) { var self = this; + var op = undefined; config || (config = {}); + opts || (opts = {}); config.url = url || config.url; config.data = data || config.data; config.method = config.method || 'post'; - return resolve(self.beforePOST(url, data, config, opts)).then(function (_config) { - config = _config || config; + + // beforePOST lifecycle hook + op = opts.op = 'beforePOST'; + return resolve(self[op](url, data, config, opts)).then(function (_config) { + // Allow re-assignment from lifecycle hook + config = isUndefined(_config) ? config : _config; + op = opts.op = 'POST'; + self.dbg(op, url, data, config, opts); return self.HTTP(config, opts); }).then(function (response) { - return resolve(self.afterPOST(url, data, config, opts, response)).then(function (_response) { - return _response || response; + // afterPOST lifecycle hook + op = opts.op = 'afterPOST'; + return resolve(self[op](url, data, config, opts, response)).then(function (_response) { + // Allow re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; }); }); }, + /** - * { function_description } + * TODO * - * @memberof DSHttpAdapter - * @instance - * @param {*} url { description } - * @param {*} data { description } - * @param {*} config { description } + * @name HttpAdapter#PUT + * @method + * @param {*} url TODO + * @param {Object} data TODO + * @param {Object} config TODO * @param {Object} [opts] Configuration options. * @return {Promise} */ PUT: function PUT(url, data, config, opts) { var self = this; + var op = undefined; config || (config = {}); + opts || (opts = {}); config.url = url || config.url; config.data = data || config.data; config.method = config.method || 'put'; - return resolve(self.beforePUT(url, data, config, opts)).then(function (_config) { - config = _config || config; + + // beforePUT lifecycle hook + op = opts.op = 'beforePUT'; + return resolve(self[op](url, data, config, opts)).then(function (_config) { + // Allow re-assignment from lifecycle hook + config = isUndefined(_config) ? config : _config; + op = opts.op = 'PUT'; + self.dbg(op, url, data, config, opts); return self.HTTP(config, opts); }).then(function (response) { - return resolve(self.afterPUT(url, data, config, opts, response)).then(function (_response) { - return _response || response; + // afterPUT lifecycle hook + op = opts.op = 'afterPUT'; + return resolve(self[op](url, data, config, opts, response)).then(function (_response) { + // Allow re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; }); }); }, + /** - * { function_description } + * TODO * - * @memberof DSHttpAdapter - * @instance - * @param {*} Model { description } - * @param {*} params { description } - * @param {*} opts { description } + * @name HttpAdapter#queryTransform + * @method + * @param {Object} mapper TODO + * @param {*} params TODO + * @param {*} opts TODO * @return {*} Transformed params. */ - queryTransform: function queryTransform(Model, params, opts) { + queryTransform: function queryTransform(mapper, params, opts) { opts || (opts = {}); if (isFunction(opts.queryTransform)) { - return opts.queryTransform(Model, params, opts); + return opts.queryTransform(mapper, params, opts); } - if (isFunction(Model.queryTransform)) { - return Model.queryTransform(Model, params, opts); + if (isFunction(mapper.queryTransform)) { + return mapper.queryTransform(mapper, params, opts); } return params; }, + /** - * Error handler invoked when the promise returned by {@link DSHttpAdapter#http} + * Error handler invoked when the promise returned by {@link HttpAdapter#http} * is rejected. Default implementation is to just return the error wrapped in - * a rejected Promise, aka rethrow the error. {@link DSHttpAdapter#http} is - * called by {@link DSHttpAdapter#HTTP}. + * a rejected Promise, aka rethrow the error. {@link HttpAdapter#http} is + * called by {@link HttpAdapter#HTTP}. * - * @memberof DSHttpAdapter - * @instance - * @param {*} err The error that {@link DSHttpAdapter#http} rejected with. - * @param {*} config The `config` argument that was passed to {@link DSHttpAdapter#HTTP}. - * @param {*} opts The `opts` argument that was passed to {@link DSHttpAdapter#HTTP}. + * @name HttpAdapter#responseError + * @method + * @param {*} err The error that {@link HttpAdapter#http} rejected with. + * @param {Object} config The `config` argument that was passed to {@link HttpAdapter#HTTP}. + * @param {*} opts The `opts` argument that was passed to {@link HttpAdapter#HTTP}. * @return {Promise} */ responseError: function responseError(err, config, opts) { return reject(err); }, + /** - * { function_description } + * TODO * - * @memberof DSHttpAdapter - * @instance - * @param {*} Model { description } - * @param {*} data { description } - * @param {*} opts { description } + * @name HttpAdapter#serialize + * @method + * @param {Object} mapper TODO + * @param {Object} data TODO + * @param {*} opts TODO * @return {*} Serialized data. */ - serialize: function serialize(Model, data, opts) { + serialize: function serialize(mapper, data, opts) { opts || (opts = {}); if (isFunction(opts.serialize)) { - return opts.serialize(Model, data, opts); + return opts.serialize(mapper, data, opts); } - if (isFunction(Model.serialize)) { - return Model.serialize(Model, data, opts); + if (isFunction(mapper.serialize)) { + return mapper.serialize(mapper, data, opts); } return data; }, + /** - * { function_description } + * TODO * - * @memberof DSHttpAdapter - * @instance - * @param {*} Model { description } - * @param {*} id { description } - * @param {*} props { description } + * @name HttpAdapter#update + * @method + * @param {Object} mapper TODO + * @param {*} id TODO + * @param {*} props TODO * @param {Object} [opts] Configuration options. * @return {Promise} */ - update: function update(Model, id, props, opts) { + update: function update(mapper, id, props, opts) { var self = this; + var op = undefined; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); - opts.params = self.queryTransform(Model, opts.params, opts); - opts.suffix || (opts.suffix = Model.suffix); - opts.op = 'update'; - self.dbg(opts.op, Model, id, props, opts); - return resolve(self.beforeUpdate(Model, id, props, opts)).then(function () { - return self.PUT(self.getPath('update', Model, id, opts), self.serialize(Model, props, opts), opts); + opts.params = self.queryTransform(mapper, opts.params, opts); + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; + + // beforeUpdate lifecycle hook + op = opts.op = 'beforeUpdate'; + return resolve(self[op](mapper, id, props, opts)).then(function () { + op = opts.op = 'update'; + self.dbg(op, mapper, id, props, opts); + return self.PUT(self.getPath('update', mapper, id, opts), self.serialize(mapper, props, opts), opts); }).then(function (response) { - return self.deserialize(Model, response, opts); + return self.deserialize(mapper, response, opts); }).then(function (data) { - return resolve(self.afterUpdate(Model, id, props, opts, data)).then(function (_data) { - return _data || data; + // afterUpdate lifecycle hook + op = opts.op = 'afterUpdate'; + return resolve(self[op](mapper, id, props, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data; }); }); }, + /** - * { function_description } + * TODO * - * @memberof DSHttpAdapter - * @instance - * @param {*} Model { description } - * @param {*} props { description } - * @param {*} query { description } + * @name HttpAdapter#updateAll + * @method + * @param {Object} mapper TODO + * @param {Object} props TODO + * @param {Object} query TODO * @param {Object} [opts] Configuration options. * @return {Promise} */ - updateAll: function updateAll(Model, props, query, opts) { + updateAll: function updateAll(mapper, props, query, opts) { var self = this; + var op = undefined; query || (query = {}); opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); deepMixIn(opts.params, query); - opts.params = self.queryTransform(Model, opts.params, opts); - opts.suffix || (opts.suffix = Model.suffix); - opts.op = 'updateAll'; - self.dbg(opts.op, Model, props, query, opts); - return resolve(self.beforeUpdateAll(Model, props, query, opts)).then(function () { - return self.PUT(self.getPath('updateAll', Model, null, opts), self.serialize(Model, props, opts), opts); + opts.params = self.queryTransform(mapper, opts.params, opts); + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; + + // beforeUpdateAll lifecycle hook + op = opts.op = 'beforeUpdateAll'; + return resolve(self[op](mapper, props, query, opts)).then(function () { + op = opts.op = 'updateAll'; + self.dbg(op, mapper, props, query, opts); + return self.PUT(self.getPath('updateAll', mapper, null, opts), self.serialize(mapper, props, opts), opts); }).then(function (response) { - return self.deserialize(Model, response, opts); + return self.deserialize(mapper, response, opts); }).then(function (data) { - return resolve(self.afterUpdateAll(Model, props, query, opts, data)).then(function (_data) { - return _data || data; + // afterUpdateAll lifecycle hook + op = opts.op = 'afterUpdateAll'; + return resolve(self[op](mapper, props, query, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data; }); }); }, + /** - * Update multiple entities in batch. + * Update multiple records in batch. * - * {@link DSHttpAdapter#beforeUpdateMany} will be called before calling - * {@link DSHttpAdapter#PUT}. - * {@link DSHttpAdapter#afterUpdateMany} will be called after calling - * {@link DSHttpAdapter#PUT}. + * {@link HttpAdapter#beforeUpdateMany} will be called before calling + * {@link HttpAdapter#PUT}. + * {@link HttpAdapter#afterUpdateMany} will be called after calling + * {@link HttpAdapter#PUT}. * - * @memberof DSHttpAdapter - * @instance - * @param {Object} Model The Model. - * @param {Array} models Array of property objects to send as the payload. + * @name HttpAdapter + * @method + * @param {Object} mapper The mapper. + * @param {Array} records Array of property objects to send as the payload. * @param {Object} [opts] Configuration options. * @param {string} [opts.params] TODO - * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO + * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO * @return {Promise} */ - updateMany: function updateMany(Model, models, opts) { + updateMany: function updateMany(mapper, records, opts) { var self = this; + var op = undefined; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); - opts.params = self.queryTransform(Model, opts.params, opts); - opts.suffix || (opts.suffix = Model.suffix); - opts.op = 'updateMany'; - self.dbg(opts.op, Model, models, opts); - return resolve(self.beforeUpdateMany(Model, models, opts)).then(function () { - return self.PUT(self.getPath('updateMany', Model, null, opts), self.serialize(Model, models, opts), opts); + opts.params = self.queryTransform(mapper, opts.params, opts); + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; + + // beforeUpdateMany lifecycle hook + op = opts.op = 'beforeUpdateMany'; + return resolve(self[op](mapper, records, opts)).then(function () { + op = opts.op = 'updateMany'; + self.dbg(op, mapper, records, opts); + return self.PUT(self.getPath('updateMany', mapper, null, opts), self.serialize(mapper, records, opts), opts); }).then(function (response) { - return self.deserialize(Model, response, opts); + return self.deserialize(mapper, response, opts); }).then(function (data) { - return resolve(self.afterUpdateMany(Model, models, opts, data)).then(function (_data) { - return _data || data; + // afterUpdateMany lifecycle hook + op = opts.op = 'afterUpdateMany'; + return resolve(self[op](mapper, records, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data; }); }); } }); /** - * Add an Http actions to a Model. + * Add an Http actions to a mapper. * - * @name DSHttpAdapter.addAction + * @name HttpAdapter.addAction * @method * @param {string} name Name of the new action. * @param {Object} [opts] Action configuration @@ -1409,15 +1377,15 @@ return /******/ (function(modules) { // webpackBootstrap * @param {Function} [opts.request] * @param {Function} [opts.response] * @param {Function} [opts.responseError] - * @return {Function} Decoration function, which should be passed the Model to + * @return {Function} Decoration function, which should be passed the mapper to * decorate when invoked. */ - DSHttpAdapter.addAction = function (name, opts) { + HttpAdapter.addAction = function (name, opts) { if (!name || !isString(name)) { throw new TypeError('action(name[, opts]): Expected: string, Found: ' + (typeof name === 'undefined' ? 'undefined' : _typeof(name))); } - return function (Model) { - if (Model[name]) { + return function (mapper) { + if (mapper[name]) { throw new Error('action(name[, opts]): ' + name + ' already exists on target!'); } opts.request = opts.request || function (config) { @@ -1429,21 +1397,22 @@ return /******/ (function(modules) { // webpackBootstrap opts.responseError = opts.responseError || function (err) { return reject(err); }; - Model[name] = function (id, _opts) { + mapper[name] = function (id, _opts) { + var self = this; if (isObject(id)) { _opts = id; } _opts = _opts || {}; - var adapter = this.getAdapter(opts.adapter || this.defaultAdapter || 'http'); + var adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http'); var config = {}; fillIn(config, opts); if (!_opts.hasOwnProperty('endpoint') && config.endpoint) { _opts.endpoint = config.endpoint; } if (typeof _opts.getEndpoint === 'function') { - config.url = _opts.getEndpoint(this, _opts); + config.url = _opts.getEndpoint(self, _opts); } else { - var _args = [_opts.basePath || this.basePath || adapter.defaults.basePath, adapter.getEndpoint(this, isSorN(id) ? id : null, _opts)]; + var _args = [_opts.basePath || self.basePath || adapter.defaults.basePath, adapter.getEndpoint(self, isSorN(id) ? id : null, _opts)]; if (isSorN(id)) { _args.push(id); } @@ -1451,48 +1420,48 @@ return /******/ (function(modules) { // webpackBootstrap config.url = makePath.apply(null, _args); } config.method = config.method || 'GET'; - config.modelName = this.name; + config.mapper = self.name; deepMixIn(config)(_opts); return resolve(config).then(_opts.request || opts.request).then(function (config) { return adapter.HTTP(config); }).then(function (data) { if (data && data.config) { - data.config.modelName = this.name; + data.config.mapper = self.name; } return data; }).then(_opts.response || opts.response, _opts.responseError || opts.responseError); }; - return Model; + return mapper; }; }; /** - * Add multiple Http actions to a Model. See {@link DSHttpAdapter.addAction} for + * Add multiple Http actions to a mapper. See {@link HttpAdapter.addAction} for * action configuration options. * - * @name DSHttpAdapter.addActions + * @name HttpAdapter.addActions * @method * @param {Object.} opts Object where the key is an action name * and the value is the configuration for the action. - * @return {Function} Decoration function, which should be passed the Model to + * @return {Function} Decoration function, which should be passed the mapper to * decorate when invoked. */ - DSHttpAdapter.addActions = function (opts) { + HttpAdapter.addActions = function (opts) { opts || (opts = {}); - return function (Model) { - forOwn(Model, function (value, key) { - DSHttpAdapter.addAction(key, value)(Model); + return function (mapper) { + forOwn(mapper, function (value, key) { + HttpAdapter.addAction(key, value)(mapper); }); - return Model; + return mapper; }; }; /** - * Alternative to ES6 class syntax for extending `DSHttpAdapter`. + * Alternative to ES6 class syntax for extending `HttpAdapter`. * * __ES6__: * ```javascript - * class MyHttpAdapter extends DSHttpAdapter { + * class MyHttpAdapter extends HttpAdapter { * deserialize (Model, data, opts) { * const data = super.deserialize(Model, data, opts) * data.foo = 'bar' @@ -1519,26 +1488,26 @@ return /******/ (function(modules) { // webpackBootstrap * yell: function () { return 'HI' } * } * - * var MyHttpAdapter = DSHttpAdapter.extend(instanceProps, classProps) + * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps) * var adapter = new MyHttpAdapter() * adapter.say() // "hi" * MyHttpAdapter.yell() // "HI" * ``` * - * @name DSHttpAdapter.extend + * @name HttpAdapter.extend * @method * @param {Object} [instanceProps] Properties that will be added to the * prototype of the subclass. * @param {Object} [classProps] Properties that will be added as static * properties to the subclass itself. - * @return {Object} Subclass of `DSHttpAdapter`. + * @return {Object} Subclass of `HttpAdapter`. */ - DSHttpAdapter.extend = extend; + HttpAdapter.extend = extend; /** * Details of the current version of the `js-data-http` module. * - * @name DSHttpAdapter.version + * @name HttpAdapter.version * @type {Object} * @property {string} version.full The full semver value. * @property {number} version.major The major version number. @@ -1549,12 +1518,12 @@ return /******/ (function(modules) { // webpackBootstrap * @property {(string|boolean)} version.beta The beta version value, * otherwise `false` if the current version is not beta. */ - DSHttpAdapter.version = { - full: '3.0.0-alpha.3', + HttpAdapter.version = { + full: '3.0.0-alpha.4', major: parseInt('3', 10), minor: parseInt('0', 10), patch: parseInt('0', 10), - alpha: true ? '3' : false, + alpha: true ? '4' : false, beta: true ? 'false' : false }; @@ -1566,25 +1535,25 @@ return /******/ (function(modules) { // webpackBootstrap * * __Script tag__: * ```javascript - * window.DSHttpAdapter + * window.HttpAdapter * ``` * __CommonJS__: * ```javascript - * var DSHttpAdapter = require('js-data-http') + * var HttpAdapter = require('js-data-http') * ``` * __ES6 Modules__: * ```javascript - * import DSHttpAdapter from 'js-data-http' + * import HttpAdapter from 'js-data-http' * ``` * __AMD__: * ```javascript - * define('myApp', ['js-data-http'], function (DSHttpAdapter) { ... }) + * define('myApp', ['js-data-http'], function (HttpAdapter) { ... }) * ``` * * @module js-data-http */ - module.exports = DSHttpAdapter; + module.exports = HttpAdapter; /***/ }, /* 1 */ diff --git a/node/dist/js-data-http-node.js.map b/node/dist/js-data-http-node.js.map index d385253..34c794e 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 8dcb628c6a044555efd7","webpack:///C:/Users/jason/Documents/GitHub/js-data-http/src/index.js","webpack:///external \"js-data\"","webpack:///external \"axios\""],"names":[],"mappings":"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","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_2__) {\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 8dcb628c6a044555efd7\n **/","/* global fetch:true Headers:true Request:true */\r\nconst axios = require('axios')\r\nimport {utils} from 'js-data'\r\nconst {\r\n _,\r\n copy,\r\n deepMixIn,\r\n extend,\r\n fillIn,\r\n forOwn,\r\n isArray,\r\n isFunction,\r\n isNumber,\r\n isObject,\r\n isSorN,\r\n isString,\r\n resolve,\r\n reject,\r\n toJson\r\n} = utils\r\n\r\nlet hasFetch = false\r\n\r\ntry {\r\n hasFetch = window && window.fetch\r\n} catch (e) {}\r\n\r\nfunction isValidString (value) {\r\n return (value != null && value !== '')\r\n}\r\nfunction join (items, separator) {\r\n separator || (separator = '')\r\n return items.filter(isValidString).join(separator)\r\n}\r\nfunction makePath (...args) {\r\n let result = join(args, '/')\r\n return result.replace(/([^:\\/]|^)\\/{2,}/g, '$1/')\r\n}\r\n\r\nfunction encode (val) {\r\n return encodeURIComponent(val)\r\n .replace(/%40/gi, '@')\r\n .replace(/%3A/gi, ':')\r\n .replace(/%24/g, '$')\r\n .replace(/%2C/gi, ',')\r\n .replace(/%20/g, '+')\r\n .replace(/%5B/gi, '[')\r\n .replace(/%5D/gi, ']')\r\n}\r\n\r\nfunction buildUrl (url, params) {\r\n if (!params) {\r\n return url\r\n }\r\n\r\n const parts = []\r\n\r\n forOwn(params, function (val, key) {\r\n if (val === null || typeof val === 'undefined') {\r\n return\r\n }\r\n if (!isArray(val)) {\r\n val = [val]\r\n }\r\n\r\n val.forEach(function (v) {\r\n if (window.toString.call(v) === '[object Date]') {\r\n v = v.toISOString()\r\n } else if (isObject(v)) {\r\n v = toJson(v)\r\n }\r\n parts.push(`${encode(key)}=${encode(v)}`)\r\n })\r\n })\r\n\r\n if (parts.length > 0) {\r\n url += (url.indexOf('?') === -1 ? '?' : '&') + parts.join('&')\r\n }\r\n\r\n return url\r\n}\r\n\r\n/**\r\n * DSHttpAdapter class.\r\n * @class DSHttpAdapter\r\n * @alias DSHttpAdapter\r\n *\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.basePath='']\r\n * @param {boolean} [opts.debug=false]\r\n * @param {boolean} [opts.forceTrailingSlash=false]\r\n * @param {Object} [opts.http=axios]\r\n * @param {Object} [opts.httpConfig={}]\r\n * @param {string} [opts.suffix='']\r\n * @param {boolean} [opts.useFetch=false]\r\n */\r\nfunction DSHttpAdapter (opts) {\r\n const self = this\r\n\r\n // Default values for arguments\r\n opts || (opts = {})\r\n\r\n // Default and user-defined settings\r\n /**\r\n * @name DSHttpAdapter#basePath\r\n * @type {string}\r\n */\r\n self.basePath = opts.basePath === undefined ? '' : opts.basePath\r\n\r\n /**\r\n * @name DSHttpAdapter#debug\r\n * @type {boolean}\r\n * @default false\r\n */\r\n self.debug = opts.debug === undefined ? false : opts.debug\r\n\r\n /**\r\n * @name DSHttpAdapter#forceTrailingSlash\r\n * @type {boolean}\r\n * @default false\r\n */\r\n self.forceTrailingSlash = opts.forceTrailingSlash === undefined ? false : opts.forceTrailingSlash\r\n\r\n /**\r\n * @name DSHttpAdapter#http\r\n * @type {Function}\r\n */\r\n self.http = opts.http === undefined ? axios : opts.http\r\n\r\n /**\r\n * @name DSHttpAdapter#httpConfig\r\n * @type {Object}\r\n */\r\n self.httpConfig = opts.httpConfig === undefined ? {} : opts.httpConfig\r\n\r\n /**\r\n * @name DSHttpAdapter#suffix\r\n * @type {string}\r\n */\r\n self.suffix = opts.suffix === undefined ? '' : opts.suffix\r\n\r\n /**\r\n * @name DSHttpAdapter#useFetch\r\n * @type {boolean}\r\n * @default false\r\n */\r\n self.useFetch = opts.useFetch === undefined ? false : opts.useFetch\r\n}\r\n\r\nfillIn(DSHttpAdapter.prototype, {\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#create}. If this method\r\n * returns a promise then {@link DSHttpAdapter#create} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#create}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#create}.\r\n * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#create}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#create}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#create} will return.\r\n */\r\n afterCreate () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#createMany}. If this method\r\n * returns a promise then {@link DSHttpAdapter#createMany} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#createMany}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#createMany}.\r\n * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#createMany}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#createMany}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#createMany} will return.\r\n */\r\n afterCreateMany () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#DEL}. If this method\r\n * returns a promise then {@link DSHttpAdapter#DEL} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#DEL}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {string} url The `url` argument passed to {@link DSHttpAdapter#DEL}.\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#DEL}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#DEL}.\r\n * @param {Object} response The `response` value that {@link DSHttpAdapter#DEL} will return.\r\n */\r\n afterDEL () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#destroy}. If this method\r\n * returns a promise then {@link DSHttpAdapter#destroy} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#destroy}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroy}.\r\n * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#destroy}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroy}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#destroy} will return.\r\n */\r\n afterDestroy () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#destroyAll}. If this method\r\n * returns a promise then {@link DSHttpAdapter#destroyAll} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#destroyAll}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroyAll}.\r\n * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#destroyAll}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroyAll}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#destroyAll} will return.\r\n */\r\n afterDestroyAll () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#find}. If this method\r\n * returns a promise then {@link DSHttpAdapter#find} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#find}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#find}.\r\n * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#find}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#find}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#find} will return.\r\n */\r\n afterFind () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#findAll}. If this method\r\n * returns a promise then {@link DSHttpAdapter#findAll} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#findAll}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#findAll}.\r\n * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#findAll}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#findAll}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#findAll} will return.\r\n */\r\n afterFindAll () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#GET}. If this method\r\n * returns a promise then {@link DSHttpAdapter#GET} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#GET}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {string} url The `url` argument passed to {@link DSHttpAdapter#GET}.\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#GET}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#GET}.\r\n * @param {Object} response The `response` value that {@link DSHttpAdapter#GET} will return.\r\n */\r\n afterGET () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#HTTP}. If this method\r\n * returns a promise then {@link DSHttpAdapter#HTTP} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#HTTP}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#HTTP}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#HTTP}.\r\n * @param {Object} response The `response` value that {@link DSHttpAdapter#HTTP} will return.\r\n */\r\n afterHTTP () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#POST}. If this method\r\n * returns a promise then {@link DSHttpAdapter#POST} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#POST}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {string} url The `url` argument passed to {@link DSHttpAdapter#POST}.\r\n * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#POST}.\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#POST}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#POST}.\r\n * @param {Object} response The `response` value that {@link DSHttpAdapter#POST} will return.\r\n */\r\n afterPOST () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#PUT}. If this method\r\n * returns a promise then {@link DSHttpAdapter#PUT} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#PUT}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {string} url The `url` argument passed to {@link DSHttpAdapter#PUT}.\r\n * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#PUT}.\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#PUT}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#PUT}.\r\n * @param {Object} response The `response` value that {@link DSHttpAdapter#PUT} will return.\r\n */\r\n afterPUT () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#update}. If this method\r\n * returns a promise then {@link DSHttpAdapter#update} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#update}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#update}.\r\n * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#update}.\r\n * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#update}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#update}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#update} will return.\r\n */\r\n afterUpdate () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#updateAll}. If this method\r\n * returns a promise then {@link DSHttpAdapter#updateAll} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#updateAll}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateAll}.\r\n * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#updateAll}.\r\n * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#updateAll}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateAll}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#updateAll} will return.\r\n */\r\n afterUpdateAll () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#updateMany}. If this method\r\n * returns a promise then {@link DSHttpAdapter#updateMany} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#updateMany}\r\n * will resolve with that same value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateMany}.\r\n * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#updateMany}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateMany}.\r\n * @param {Object} data The `data` value that {@link DSHttpAdapter#updateMany} will return.\r\n */\r\n afterUpdateMany () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#create}. If this method\r\n * returns a promise then {@link DSHttpAdapter#create} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#create}.\r\n * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#create}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#create}.\r\n */\r\n beforeCreate () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#createMany}. If this method\r\n * returns a promise then {@link DSHttpAdapter#createMany} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#createMany}.\r\n * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#createMany}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#createMany}.\r\n */\r\n beforeCreateMany () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#DEL}. If this method\r\n * returns a promise then {@link DSHttpAdapter#DEL} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#create}\r\n * will resolve with that same value, then the `config` argument passed to\r\n * {@link DSHttpAdapter#DEL} will be replaced by the value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#DEL}.\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#DEL}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#DEL}.\r\n */\r\n beforeDEL () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#destroy}. If this method\r\n * returns a promise then {@link DSHttpAdapter#destroy} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroy}.\r\n * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#destroy}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroy}.\r\n */\r\n beforeDestroy () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#destroyAll}. If this method\r\n * returns a promise then {@link DSHttpAdapter#destroyAll} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#destroyAll}.\r\n * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#destroyAll}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#destroyAll}.\r\n */\r\n beforeDestroyAll () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#find}. If this method\r\n * returns a promise then {@link DSHttpAdapter#find} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#find}.\r\n * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#find}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#find}.\r\n */\r\n beforeFind () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#findAll}. If this method\r\n * returns a promise then {@link DSHttpAdapter#findAll} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#findAll}.\r\n * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#findAll}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#findAll}.\r\n */\r\n beforeFindAll () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#GET}. If this method\r\n * returns a promise then {@link DSHttpAdapter#GET} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#create}\r\n * will resolve with that same value, then the `config` argument passed to\r\n * {@link DSHttpAdapter#GET} will be replaced by the value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#GET}.\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#GET}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#GET}.\r\n */\r\n beforeGET () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#HTTP}. If this method\r\n * returns a promise then {@link DSHttpAdapter#HTTP} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#create}\r\n * will resolve with that same value, then the `config` argument passed to\r\n * {@link DSHttpAdapter#HTTP} will be replaced by the value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#HTTP}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#HTTP}.\r\n */\r\n beforeHTTP () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#POST}. If this method\r\n * returns a promise then {@link DSHttpAdapter#POST} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#create}\r\n * will resolve with that same value, then the `config` argument passed to\r\n * {@link DSHttpAdapter#POST} will be replaced by the value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#POST}.\r\n * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#POST}.\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#POST}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#POST}.\r\n */\r\n beforePOST () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#PUT}. If this method\r\n * returns a promise then {@link DSHttpAdapter#PUT} will wait for the\r\n * promise to resolve before continuing. If this method returns any other\r\n * value or the promise resolves with a value, then {@link DSHttpAdapter#create}\r\n * will resolve with that same value, then the `config` argument passed to\r\n * {@link DSHttpAdapter#PUT} will be replaced by the value.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} url The `url` argument passed to {@link DSHttpAdapter#PUT}.\r\n * @param {Object} data The `data` argument passed to {@link DSHttpAdapter#PUT}.\r\n * @param {Object} config The `config` argument passed to {@link DSHttpAdapter#PUT}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#PUT}.\r\n */\r\n beforePUT () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#update}. If this method\r\n * returns a promise then {@link DSHttpAdapter#update} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#update}.\r\n * @param {(string|number)} id The `id` argument passed to {@link DSHttpAdapter#update}.\r\n * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#update}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#update}.\r\n */\r\n beforeUpdate () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#updateAll}. If this method\r\n * returns a promise then {@link DSHttpAdapter#updateAll} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateAll}.\r\n * @param {Object} props The `props` argument passed to {@link DSHttpAdapter#updateAll}.\r\n * @param {Object} query The `query` argument passed to {@link DSHttpAdapter#updateAll}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateAll}.\r\n */\r\n beforeUpdateAll () {},\r\n\r\n /**\r\n * Lifecycle hook called by {@link DSHttpAdapter#updateMany}. If this method\r\n * returns a promise then {@link DSHttpAdapter#updateMany} will wait for the\r\n * promise to resolve before continuing.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The `Model` argument passed to {@link DSHttpAdapter#updateMany}.\r\n * @param {Object} models The `models` argument passed to {@link DSHttpAdapter#updateMany}.\r\n * @param {Object} opts The `opts` argument passed to {@link DSHttpAdapter#updateMany}.\r\n */\r\n beforeUpdateMany () {},\r\n\r\n /**\r\n * Create a new the entity from the provided `props`.\r\n *\r\n * {@link DSHttpAdapter#beforeCreate} will be called before calling\r\n * {@link DSHttpAdapter#POST}.\r\n * {@link DSHttpAdapter#afterCreate} will be called after calling\r\n * {@link DSHttpAdapter#POST}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The Model.\r\n * @param {Object} props Properties to send as the payload.\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.params] TODO\r\n * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO\r\n * @return {Promise}\r\n */\r\n create (Model, props, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'create'\r\n self.dbg(opts.op, Model, props, opts)\r\n return resolve(self.beforeCreate(Model, props, opts)).then(function () {\r\n return self.POST(\r\n self.getPath('create', Model, props, opts),\r\n self.serialize(Model, props, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterCreate(Model, props, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Create multiple new entities in batch.\r\n *\r\n * {@link DSHttpAdapter#beforeCreateMany} will be called before calling\r\n * {@link DSHttpAdapter#POST}.\r\n * {@link DSHttpAdapter#afterCreateMany} will be called after calling\r\n * {@link DSHttpAdapter#POST}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The Model.\r\n * @param {Array} models Array of property objects to send as the payload.\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.params] TODO\r\n * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO\r\n * @return {Promise}\r\n */\r\n createMany (Model, models, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'createMany'\r\n self.dbg(opts.op, Model, models, opts)\r\n return resolve(self.beforeCreateMany(Model, models, opts)).then(function () {\r\n return self.POST(\r\n self.getPath('createMany', Model, null, opts),\r\n self.serialize(Model, models, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterCreateMany(Model, models, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Call {@link DSHttpAdapter#log} at the \"debug\" level.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {...*} [args] Args passed to {@link DSHttpAdapter#log}.\r\n */\r\n dbg (...args) {\r\n this.log('debug', ...args)\r\n },\r\n\r\n /**\r\n * Make an Http request to `url` according to the configuration in `config`.\r\n *\r\n * {@link DSHttpAdapter#beforeDEL} will be called before calling\r\n * {@link DSHttpAdapter#HTTP}.\r\n * {@link DSHttpAdapter#afterDEL} will be called after calling\r\n * {@link DSHttpAdapter#HTTP}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {string} url Url for the request.\r\n * @param {Object} [config] Http configuration that will be passed to\r\n * {@link DSHttpAdapter#HTTP}.\r\n * @param {Object} [opts] Configuration options.\r\n * @return {Promise}\r\n */\r\n DEL (url, config, opts) {\r\n const self = this\r\n config || (config = {})\r\n config.url = url || config.url\r\n config.method = config.method || 'delete'\r\n return resolve(self.beforeDEL(url, config, opts)).then(function (_config) {\r\n config = _config || config\r\n return self.HTTP(config, opts)\r\n }).then(function (response) {\r\n return resolve(self.afterDEL(url, config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Transform the server response object into the payload that will be returned\r\n * to JSData.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The Model used for the operation.\r\n * @param {Object} response Response object from {@link DSHttpAdapter#HTTP}.\r\n * @param {Object} opts Configuration options.\r\n * @return {(Object|Array)} Deserialized data.\r\n */\r\n deserialize (Model, response, opts) {\r\n opts || (opts = {})\r\n if (isFunction(opts.deserialize)) {\r\n return opts.deserialize(Model, response, opts)\r\n }\r\n if (isFunction(Model.deserialize)) {\r\n return Model.deserialize(Model, response, opts)\r\n }\r\n if (opts.raw) {\r\n return response\r\n }\r\n return response ? ('data' in response ? response.data : response) : response\r\n },\r\n\r\n /**\r\n * Destroy the entity with the given primary key.\r\n *\r\n * {@link DSHttpAdapter#beforeDestroy} will be called before calling\r\n * {@link DSHttpAdapter#DEL}.\r\n * {@link DSHttpAdapter#afterDestroy} will be called after calling\r\n * {@link DSHttpAdapter#DEL}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The Model.\r\n * @param {(string|number)} id Primary key of the entity to destroy.\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.params] TODO\r\n * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO\r\n * @return {Promise}\r\n */\r\n destroy (Model, id, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'destroy'\r\n self.dbg(opts.op, Model, id, opts)\r\n return resolve(self.beforeDestroy(Model, id, opts)).then(function () {\r\n return self.DEL(\r\n self.getPath('destroy', Model, id, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterDestroy(Model, id, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Destroy the entities that match the selection `query`.\r\n *\r\n * {@link DSHttpAdapter#beforeDestroyAll} will be called before calling\r\n * {@link DSHttpAdapter#DEL}.\r\n * {@link DSHttpAdapter#afterDestroyAll} will be called after calling\r\n * {@link DSHttpAdapter#DEL}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The Model.\r\n * @param {Object} query Selection query.\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.params] TODO\r\n * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO\r\n * @return {Promise}\r\n */\r\n destroyAll (Model, query, opts) {\r\n const self = this\r\n query || (query = {})\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n deepMixIn(opts.params, query)\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'destroyAll'\r\n self.dbg(opts.op, Model, query, opts)\r\n return resolve(self.beforeDestroyAll(Model, query, opts)).then(function () {\r\n return self.DEL(\r\n self.getPath('destroyAll', Model, null, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterDestroyAll(Model, query, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Log an error.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {...*} [args] Arguments to log.\r\n */\r\n error (...args) {\r\n if (console) {\r\n console[typeof console.error === 'function' ? 'error' : 'log'](...args)\r\n }\r\n },\r\n\r\n /**\r\n * Make an Http request using `window.fetch`.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} config Request configuration.\r\n * @param {Object} config.data Payload for the request.\r\n * @param {string} config.method Http method for the request.\r\n * @param {Object} config.headers Headers for the request.\r\n * @param {Object} config.params Querystring for the request.\r\n * @param {string} config.url Url for the request.\r\n * @param {Object} [opts] Configuration options.\r\n */\r\n fetch (config, opts) {\r\n const requestConfig = {\r\n method: config.method,\r\n // turn the plain headers object into the Fetch Headers object\r\n headers: new Headers(config.headers)\r\n }\r\n\r\n if (config.data) {\r\n requestConfig.body = toJson(config.data)\r\n }\r\n\r\n return fetch(new Request(buildUrl(config.url, config.params), requestConfig)).then(function (response) {\r\n response.config = {\r\n method: config.method,\r\n url: config.url\r\n }\r\n return response.json().then(function (data) {\r\n response.data = data\r\n return response\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Retrieve the entity with the given primary key.\r\n *\r\n * {@link DSHttpAdapter#beforeFind} will be called before calling\r\n * {@link DSHttpAdapter#GET}.\r\n * {@link DSHttpAdapter#afterFind} will be called after calling\r\n * {@link DSHttpAdapter#GET}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The Model.\r\n * @param {(string|number)} id Primary key of the entity to retrieve.\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.params] TODO\r\n * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO\r\n * @return {Promise}\r\n */\r\n find (Model, id, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'find'\r\n self.dbg(opts.op, Model, id, opts)\r\n return resolve(self.beforeFind(Model, id, opts)).then(function () {\r\n return self.GET(\r\n self.getPath('find', Model, id, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterFind(Model, id, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Retrieve the entities that match the selection `query`.\r\n *\r\n * {@link DSHttpAdapter#beforeFindAll} will be called before calling\r\n * {@link DSHttpAdapter#GET}.\r\n * {@link DSHttpAdapter#afterFindAll} will be called after calling\r\n * {@link DSHttpAdapter#GET}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The Model.\r\n * @param {Object} query Selection query.\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.params] TODO\r\n * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO\r\n * @return {Promise}\r\n */\r\n findAll (Model, query, opts) {\r\n const self = this\r\n query || (query = {})\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'findAll'\r\n self.dbg(opts.op, Model, query, opts)\r\n deepMixIn(opts.params, query)\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n return resolve(self.beforeFindAll(Model, query, opts)).then(function () {\r\n return self.GET(\r\n self.getPath('findAll', Model, opts.params, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterFindAll(Model, query, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * { function_description }\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {string} url The url for the request.\r\n * @param {Object} config Request configuration options.\r\n * @param {Object} [opts] Configuration options.\r\n * @return {Promise}\r\n */\r\n GET (url, config, opts) {\r\n const self = this\r\n config || (config = {})\r\n config.url = url || config.url\r\n config.method = config.method || 'get'\r\n return resolve(self.beforeGET(url, config, opts)).then(function (_config) {\r\n config = _config || config\r\n return self.HTTP(config, opts)\r\n }).then(function (response) {\r\n return resolve(self.afterGET(url, config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {*} Model { description }\r\n * @param {*} id { description }\r\n * @param {boolean} opts { description }\r\n * @return {string} Full path.\r\n */\r\n getEndpoint (Model, id, opts) {\r\n opts || (opts = {})\r\n opts.params || (opts.params = {})\r\n\r\n let item\r\n const parentKey = Model.parentKey\r\n const endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : Model.endpoint\r\n let parentField = Model.parentField\r\n const parentDef = Model.parent ? Model.getResource(Model.parent) : undefined\r\n let parentId = opts.params[parentKey]\r\n\r\n if (parentId === false || !parentKey || !parentDef) {\r\n if (parentId === false) {\r\n delete opts.params[parentKey]\r\n }\r\n return endpoint\r\n } else {\r\n delete opts.params[parentKey]\r\n\r\n if (isString(id) || isNumber(id)) {\r\n item = Model.get(id)\r\n } else if (isObject(id)) {\r\n item = id\r\n }\r\n\r\n if (item) {\r\n parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null)\r\n }\r\n\r\n if (parentId) {\r\n delete opts.endpoint\r\n const _opts = {}\r\n forOwn(opts, function (value, key) {\r\n _opts[key] = value\r\n })\r\n _(_opts, parentDef)\r\n return makePath(this.getEndpoint(parentDef, parentId, _opts, parentId, endpoint))\r\n } else {\r\n return endpoint\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {string} method TODO\r\n * @param {*} Model TODO\r\n * @param {(string|number)?} id TODO\r\n * @param {Object} opts Configuration options.\r\n */\r\n getPath (method, Model, id, opts) {\r\n const self = this\r\n opts || (opts = {})\r\n const args = [\r\n opts.basePath === undefined ? (Model.basePath === undefined ? self.basePath : Model.basePath) : opts.basePath,\r\n self.getEndpoint(Model, (isString(id) || isNumber(id) || method === 'create') ? id : null, opts)\r\n ]\r\n if (method === 'find' || method === 'update' || method === 'destroy') {\r\n args.push(id)\r\n }\r\n return makePath.apply(utils, args)\r\n },\r\n\r\n /**\r\n * Make an Http request.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} config Request configuration options.\r\n * @param {Object} [opts] Configuration options.\r\n * @return {Promise}\r\n */\r\n HTTP (config, opts) {\r\n const self = this\r\n const start = new Date()\r\n opts || (opts = {})\r\n config = copy(config)\r\n config = deepMixIn(config, self.httpConfig)\r\n if (self.forceTrailingSlash && config.url[config.url.length - 1] !== '/') {\r\n config.url += '/'\r\n }\r\n config.method = config.method.toUpperCase()\r\n const suffix = config.suffix || opts.suffix || self.suffix\r\n if (suffix && config.url.substr(config.url.length - suffix.length) !== suffix) {\r\n config.url += suffix\r\n }\r\n\r\n function logResponse (data) {\r\n const str = `${start.toUTCString()} - ${config.method.toUpperCase()} ${config.url} - ${data.status} ${(new Date().getTime() - start.getTime())}ms`\r\n if (data.status >= 200 && data.status < 300) {\r\n if (self.log) {\r\n self.dbg('debug', str, data)\r\n }\r\n return data\r\n } else {\r\n if (self.error) {\r\n self.error(`'FAILED: ${str}`, data)\r\n }\r\n return reject(data)\r\n }\r\n }\r\n\r\n if (!self.http) {\r\n throw new Error('You have not configured this adapter with an http library!')\r\n }\r\n\r\n return resolve(self.beforeHTTP(config, opts)).then(function (_config) {\r\n config = _config || config\r\n if (hasFetch && (self.useFetch || opts.useFetch || !self.http)) {\r\n return self.fetch(config, opts).then(logResponse, logResponse)\r\n }\r\n return self.http(config).then(logResponse, logResponse).catch(function (err) {\r\n return self.responseError(err, config, opts)\r\n })\r\n }).then(function (response) {\r\n return resolve(self.afterHTTP(config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Log the provided arguments at the specified leve.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {string} level Log level.\r\n * @param {...*} [args] Arguments to log.\r\n */\r\n log (level, ...args) {\r\n if (level && !args.length) {\r\n args.push(level)\r\n level = 'debug'\r\n }\r\n if (level === 'debug' && !this.debug) {\r\n return\r\n }\r\n const prefix = `${level.toUpperCase()}: (${this.name})`\r\n if (console[level]) {\r\n console[level](prefix, ...args)\r\n } else {\r\n console.log(prefix, ...args)\r\n }\r\n },\r\n\r\n /**\r\n * { function_description }\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {*} url { description }\r\n * @param {*} data { description }\r\n * @param {*} config { description }\r\n * @param {Object} [opts] Configuration options.\r\n * @return {Promise}\r\n */\r\n POST (url, data, config, opts) {\r\n const self = this\r\n config || (config = {})\r\n config.url = url || config.url\r\n config.data = data || config.data\r\n config.method = config.method || 'post'\r\n return resolve(self.beforePOST(url, data, config, opts)).then(function (_config) {\r\n config = _config || config\r\n return self.HTTP(config, opts)\r\n }).then(function (response) {\r\n return resolve(self.afterPOST(url, data, config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * { function_description }\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {*} url { description }\r\n * @param {*} data { description }\r\n * @param {*} config { description }\r\n * @param {Object} [opts] Configuration options.\r\n * @return {Promise}\r\n */\r\n PUT (url, data, config, opts) {\r\n const self = this\r\n config || (config = {})\r\n config.url = url || config.url\r\n config.data = data || config.data\r\n config.method = config.method || 'put'\r\n return resolve(self.beforePUT(url, data, config, opts)).then(function (_config) {\r\n config = _config || config\r\n return self.HTTP(config, opts)\r\n }).then(function (response) {\r\n return resolve(self.afterPUT(url, data, config, opts, response)).then(function (_response) {\r\n return _response || response\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * { function_description }\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {*} Model { description }\r\n * @param {*} params { description }\r\n * @param {*} opts { description }\r\n * @return {*} Transformed params.\r\n */\r\n queryTransform (Model, params, opts) {\r\n opts || (opts = {})\r\n if (isFunction(opts.queryTransform)) {\r\n return opts.queryTransform(Model, params, opts)\r\n }\r\n if (isFunction(Model.queryTransform)) {\r\n return Model.queryTransform(Model, params, opts)\r\n }\r\n return params\r\n },\r\n\r\n /**\r\n * Error handler invoked when the promise returned by {@link DSHttpAdapter#http}\r\n * is rejected. Default implementation is to just return the error wrapped in\r\n * a rejected Promise, aka rethrow the error. {@link DSHttpAdapter#http} is\r\n * called by {@link DSHttpAdapter#HTTP}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {*} err The error that {@link DSHttpAdapter#http} rejected with.\r\n * @param {*} config The `config` argument that was passed to {@link DSHttpAdapter#HTTP}.\r\n * @param {*} opts The `opts` argument that was passed to {@link DSHttpAdapter#HTTP}.\r\n * @return {Promise}\r\n */\r\n responseError (err, config, opts) {\r\n return reject(err)\r\n },\r\n\r\n /**\r\n * { function_description }\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {*} Model { description }\r\n * @param {*} data { description }\r\n * @param {*} opts { description }\r\n * @return {*} Serialized data.\r\n */\r\n serialize (Model, data, opts) {\r\n opts || (opts = {})\r\n if (isFunction(opts.serialize)) {\r\n return opts.serialize(Model, data, opts)\r\n }\r\n if (isFunction(Model.serialize)) {\r\n return Model.serialize(Model, data, opts)\r\n }\r\n return data\r\n },\r\n\r\n /**\r\n * { function_description }\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {*} Model { description }\r\n * @param {*} id { description }\r\n * @param {*} props { description }\r\n * @param {Object} [opts] Configuration options.\r\n * @return {Promise}\r\n */\r\n update (Model, id, props, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'update'\r\n self.dbg(opts.op, Model, id, props, opts)\r\n return resolve(self.beforeUpdate(Model, id, props, opts)).then(function () {\r\n return self.PUT(\r\n self.getPath('update', Model, id, opts),\r\n self.serialize(Model, props, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterUpdate(Model, id, props, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * { function_description }\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {*} Model { description }\r\n * @param {*} props { description }\r\n * @param {*} query { description }\r\n * @param {Object} [opts] Configuration options.\r\n * @return {Promise}\r\n */\r\n updateAll (Model, props, query, opts) {\r\n const self = this\r\n query || (query = {})\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n deepMixIn(opts.params, query)\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'updateAll'\r\n self.dbg(opts.op, Model, props, query, opts)\r\n return resolve(self.beforeUpdateAll(Model, props, query, opts)).then(function () {\r\n return self.PUT(\r\n self.getPath('updateAll', Model, null, opts),\r\n self.serialize(Model, props, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterUpdateAll(Model, props, query, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n },\r\n\r\n /**\r\n * Update multiple entities in batch.\r\n *\r\n * {@link DSHttpAdapter#beforeUpdateMany} will be called before calling\r\n * {@link DSHttpAdapter#PUT}.\r\n * {@link DSHttpAdapter#afterUpdateMany} will be called after calling\r\n * {@link DSHttpAdapter#PUT}.\r\n *\r\n * @memberof DSHttpAdapter\r\n * @instance\r\n * @param {Object} Model The Model.\r\n * @param {Array} models Array of property objects to send as the payload.\r\n * @param {Object} [opts] Configuration options.\r\n * @param {string} [opts.params] TODO\r\n * @param {string} [opts.suffix={@link DSHttpAdapter#suffix}] TODO\r\n * @return {Promise}\r\n */\r\n updateMany (Model, models, opts) {\r\n const self = this\r\n opts = opts ? copy(opts) : {}\r\n opts.params || (opts.params = {})\r\n opts.params = self.queryTransform(Model, opts.params, opts)\r\n opts.suffix || (opts.suffix = Model.suffix)\r\n opts.op = 'updateMany'\r\n self.dbg(opts.op, Model, models, opts)\r\n return resolve(self.beforeUpdateMany(Model, models, opts)).then(function () {\r\n return self.PUT(\r\n self.getPath('updateMany', Model, null, opts),\r\n self.serialize(Model, models, opts),\r\n opts\r\n )\r\n }).then(function (response) {\r\n return self.deserialize(Model, response, opts)\r\n }).then(function (data) {\r\n return resolve(self.afterUpdateMany(Model, models, opts, data)).then(function (_data) {\r\n return _data || data\r\n })\r\n })\r\n }\r\n})\r\n\r\n/**\r\n * Add an Http actions to a Model.\r\n *\r\n * @name DSHttpAdapter.addAction\r\n * @method\r\n * @param {string} name Name of the new action.\r\n * @param {Object} [opts] Action configuration\r\n * @param {string} [opts.adapter]\r\n * @param {string} [opts.pathname]\r\n * @param {Function} [opts.request]\r\n * @param {Function} [opts.response]\r\n * @param {Function} [opts.responseError]\r\n * @return {Function} Decoration function, which should be passed the Model to\r\n * decorate when invoked.\r\n */\r\nDSHttpAdapter.addAction = function (name, opts) {\r\n if (!name || !isString(name)) {\r\n throw new TypeError('action(name[, opts]): Expected: string, Found: ' + typeof name)\r\n }\r\n return function (Model) {\r\n if (Model[name]) {\r\n throw new Error('action(name[, opts]): ' + name + ' already exists on target!')\r\n }\r\n opts.request = opts.request || function (config) { return config }\r\n opts.response = opts.response || function (response) { return response }\r\n opts.responseError = opts.responseError || function (err) { return reject(err) }\r\n Model[name] = function (id, _opts) {\r\n if (isObject(id)) {\r\n _opts = id\r\n }\r\n _opts = _opts || {}\r\n let adapter = this.getAdapter(opts.adapter || this.defaultAdapter || 'http')\r\n let config = {}\r\n fillIn(config, opts)\r\n if (!_opts.hasOwnProperty('endpoint') && config.endpoint) {\r\n _opts.endpoint = config.endpoint\r\n }\r\n if (typeof _opts.getEndpoint === 'function') {\r\n config.url = _opts.getEndpoint(this, _opts)\r\n } else {\r\n let args = [\r\n _opts.basePath || this.basePath || adapter.defaults.basePath,\r\n adapter.getEndpoint(this, isSorN(id) ? id : null, _opts)\r\n ]\r\n if (isSorN(id)) {\r\n args.push(id)\r\n }\r\n args.push(opts.pathname || name)\r\n config.url = makePath.apply(null, args)\r\n }\r\n config.method = config.method || 'GET'\r\n config.modelName = this.name\r\n deepMixIn(config)(_opts)\r\n return resolve(config)\r\n .then(_opts.request || opts.request)\r\n .then(function (config) { return adapter.HTTP(config) })\r\n .then(function (data) {\r\n if (data && data.config) {\r\n data.config.modelName = this.name\r\n }\r\n return data\r\n })\r\n .then(_opts.response || opts.response, _opts.responseError || opts.responseError)\r\n }\r\n return Model\r\n }\r\n}\r\n\r\n/**\r\n * Add multiple Http actions to a Model. See {@link DSHttpAdapter.addAction} for\r\n * action configuration options.\r\n *\r\n * @name DSHttpAdapter.addActions\r\n * @method\r\n * @param {Object.} opts Object where the key is an action name\r\n * and the value is the configuration for the action.\r\n * @return {Function} Decoration function, which should be passed the Model to\r\n * decorate when invoked.\r\n */\r\nDSHttpAdapter.addActions = function (opts) {\r\n opts || (opts = {})\r\n return function (Model) {\r\n forOwn(Model, function (value, key) {\r\n DSHttpAdapter.addAction(key, value)(Model)\r\n })\r\n return Model\r\n }\r\n}\r\n\r\n/**\r\n * Alternative to ES6 class syntax for extending `DSHttpAdapter`.\r\n *\r\n * __ES6__:\r\n * ```javascript\r\n * class MyHttpAdapter extends DSHttpAdapter {\r\n * deserialize (Model, data, opts) {\r\n * const data = super.deserialize(Model, data, opts)\r\n * data.foo = 'bar'\r\n * return data\r\n * }\r\n * }\r\n * ```\r\n *\r\n * __ES5__:\r\n * ```javascript\r\n * var instanceProps = {\r\n * // override deserialize\r\n * deserialize: function (Model, data, opts) {\r\n * var Ctor = this.constructor\r\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\r\n * // call the super deserialize\r\n * var data = superDeserialize(Model, data, opts)\r\n * data.foo = 'bar'\r\n * return data\r\n * },\r\n * say: function () { return 'hi' }\r\n * }\r\n * var classProps = {\r\n * yell: function () { return 'HI' }\r\n * }\r\n *\r\n * var MyHttpAdapter = DSHttpAdapter.extend(instanceProps, classProps)\r\n * var adapter = new MyHttpAdapter()\r\n * adapter.say() // \"hi\"\r\n * MyHttpAdapter.yell() // \"HI\"\r\n * ```\r\n *\r\n * @name DSHttpAdapter.extend\r\n * @method\r\n * @param {Object} [instanceProps] Properties that will be added to the\r\n * prototype of the subclass.\r\n * @param {Object} [classProps] Properties that will be added as static\r\n * properties to the subclass itself.\r\n * @return {Object} Subclass of `DSHttpAdapter`.\r\n */\r\nDSHttpAdapter.extend = extend\r\n\r\n/**\r\n * Details of the current version of the `js-data-http` module.\r\n *\r\n * @name DSHttpAdapter.version\r\n * @type {Object}\r\n * @property {string} version.full The full semver value.\r\n * @property {number} version.major The major version number.\r\n * @property {number} version.minor The minor version number.\r\n * @property {number} version.patch The patch version number.\r\n * @property {(string|boolean)} version.alpha The alpha version value,\r\n * otherwise `false` if the current version is not alpha.\r\n * @property {(string|boolean)} version.beta The beta version value,\r\n * otherwise `false` if the current version is not beta.\r\n */\r\nDSHttpAdapter.version = {\r\n full: '<%= pkg.version %>',\r\n major: parseInt('<%= major %>', 10),\r\n minor: parseInt('<%= minor %>', 10),\r\n patch: parseInt('<%= patch %>', 10),\r\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\r\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\r\n}\r\n\r\n/**\r\n * Registered as `js-data-http` in NPM and Bower. The build of `js-data-http`\r\n * that works on Node.js is registered in NPM as `js-data-http-node`. The build\r\n * of `js-data-http` that does not bundle `axios` is registered in NPM and Bower\r\n * as `js-data-fetch`.\r\n *\r\n * __Script tag__:\r\n * ```javascript\r\n * window.DSHttpAdapter\r\n * ```\r\n * __CommonJS__:\r\n * ```javascript\r\n * var DSHttpAdapter = require('js-data-http')\r\n * ```\r\n * __ES6 Modules__:\r\n * ```javascript\r\n * import DSHttpAdapter from 'js-data-http'\r\n * ```\r\n * __AMD__:\r\n * ```javascript\r\n * define('myApp', ['js-data-http'], function (DSHttpAdapter) { ... })\r\n * ```\r\n *\r\n * @module js-data-http\r\n */\r\n\r\nmodule.exports = DSHttpAdapter\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/jason/Documents/GitHub/js-data-http/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 **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"axios\"\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 018089f84ba9f5391092","webpack:///./src/index.js","webpack:///external \"js-data\"","webpack:///external \"axios\""],"names":[],"mappings":"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","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_2__) {\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 018089f84ba9f5391092\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nconst {\n _,\n addHiddenPropsToTarget,\n copy,\n deepMixIn,\n extend,\n fillIn,\n forOwn,\n isArray,\n isFunction,\n isNumber,\n isObject,\n isSorN,\n isString,\n isUndefined,\n resolve,\n reject,\n toJson\n} = utils\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 forOwn(params, function (val, key) {\n if (val === null || typeof val === 'undefined') {\n return\n }\n if (!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 (isObject(v)) {\n v = 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 noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n}\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#debug\n * @type {boolean}\n * @default false\n */\n debug: false,\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 * @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\n // Default values for arguments\n opts || (opts = {})\n\n fillIn(self, opts)\n fillIn(self, DEFAULTS)\n}\n\naddHiddenPropsToTarget(HttpAdapter.prototype, {\n /**\n * @name HttpAdapter#afterCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreate: noop2,\n\n /**\n * @name HttpAdapter#afterCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreateMany: noop2,\n\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#afterDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroy: noop2,\n\n /**\n * @name HttpAdapter#afterDestroyAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroyAll: noop2,\n\n /**\n * @name HttpAdapter#afterFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFind: noop2,\n\n /**\n * @name HttpAdapter#afterFindAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFindAll: 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#afterUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdate: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateAll: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateMany: noop2,\n\n /**\n * @name HttpAdapter#beforeCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n */\n beforeCreate: noop,\n\n /**\n * @name HttpAdapter#beforeCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeCreateMany: noop,\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#beforeDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeDestroy: noop,\n\n /**\n * @name HttpAdapter#beforeDestroyAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeDestroyAll: noop,\n\n /**\n * @name HttpAdapter#beforeFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeFind: noop,\n\n /**\n * @name HttpAdapter#beforeFindAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeFindAll: 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 /**\n * @name HttpAdapter#beforeUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n */\n beforeUpdate: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n */\n beforeUpdateAll: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeUpdateMany: noop,\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreate lifecycle hook\n op = opts.op = 'beforeCreate'\n return resolve(self[op](mapper, props, opts)).then(function () {\n op = opts.op = 'create'\n self.dbg(op, mapper, props, opts)\n return self.POST(\n self.getPath('create', mapper, props, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreate lifecycle hook\n op = opts.op = 'afterCreate'\n return resolve(self[op](mapper, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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} 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 createMany (mapper, records, opts) {\n const self = this\n let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreateMany lifecycle hook\n op = opts.op = 'beforeCreateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'createMany'\n self.dbg(op, mapper, records, opts)\n return self.POST(\n self.getPath('createMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreateMany lifecycle hook\n op = opts.op = 'afterCreateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n },\n\n /**\n * Call {@link HttpAdapter#log} at the \"debug\" level.\n *\n * @name HttpAdapter#dbg\n * @method\n * @param {...*} [args] Args passed to {@link HttpAdapter#log}.\n */\n dbg (...args) {\n this.log('debug', ...args)\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.deserialize)) {\n return opts.deserialize(mapper, response, opts)\n }\n if (isFunction(mapper.deserialize)) {\n return mapper.deserialize(mapper, response, opts)\n }\n if (opts.raw) {\n return response\n }\n return response ? ('data' in response ? response.data : response) : 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroy lifecycle hook\n op = opts.op = 'beforeDestroy'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy'\n self.dbg(op, mapper, id, opts)\n return self.DEL(\n self.getPath('destroy', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroy lifecycle hook\n op = opts.op = 'afterDestroy'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroyAll lifecycle hook\n op = opts.op = 'beforeDestroyAll'\n return resolve(self.beforeDestroyAll(mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll'\n self.dbg(op, mapper, query, opts)\n return self.DEL(\n self.getPath('destroyAll', mapper, null, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n },\n\n /**\n * Log an error.\n *\n * @name HttpAdapter\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\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 = 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeFind lifecycle hook\n op = opts.op = 'beforeFind'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find'\n self.dbg(op, mapper, id, opts)\n return self.GET(\n self.getPath('find', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFind lifecycle hook\n op = opts.op = 'afterFind'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll'\n return resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll'\n self.dbg(op, mapper, query, opts)\n return self.GET(\n self.getPath('findAll', mapper, opts.params, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFindAll lifecycle hook\n op = opts.op = 'afterFindAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 opts || (opts = {})\n opts.params || (opts.params = {})\n\n let item\n const parentKey = mapper.parentKey\n const endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : mapper.endpoint\n let parentField = mapper.parentField\n const parentDef = mapper.parent ? mapper.getResource(mapper.parent) : undefined\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 endpoint\n } else {\n delete opts.params[parentKey]\n\n if (isString(id) || isNumber(id)) {\n item = mapper.get(id)\n } else if (isObject(id)) {\n item = id\n }\n\n if (item) {\n parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null)\n }\n\n if (parentId) {\n delete opts.endpoint\n const _opts = {}\n forOwn(opts, function (value, key) {\n _opts[key] = value\n })\n _(_opts, parentDef)\n return makePath(this.getEndpoint(parentDef, parentId, _opts, parentId, endpoint))\n } else {\n return endpoint\n }\n }\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 opts.basePath === undefined ? (mapper.basePath === undefined ? self.basePath : mapper.basePath) : opts.basePath,\n self.getEndpoint(mapper, (isString(id) || 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 /**\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 config = copy(config)\n config = deepMixIn(config, self.httpConfig)\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 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 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 resolve(self.afterHTTP(config, opts, response)).then(function (_response) {\n return _response || response\n })\n })\n },\n\n /**\n * Log the provided arguments at the specified leve.\n *\n * @name HttpAdapter#log\n * @method\n * @param {string} level Log level.\n * @param {...*} [args] Arguments to log.\n */\n log (level, ...args) {\n if (level && !args.length) {\n args.push(level)\n level = 'debug'\n }\n if (level === 'debug' && !this.debug) {\n return\n }\n const prefix = `${level.toUpperCase()}: (HttpAdapter)`\n if (console[level]) {\n console[level](prefix, ...args)\n } else {\n console.log(prefix, ...args)\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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.queryTransform)) {\n return opts.queryTransform(mapper, params, opts)\n }\n if (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 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 (isFunction(opts.serialize)) {\n return opts.serialize(mapper, data, opts)\n }\n if (isFunction(mapper.serialize)) {\n return mapper.serialize(mapper, data, opts)\n }\n return data\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdate lifecycle hook\n op = opts.op = 'beforeUpdate'\n return resolve(self[op](mapper, id, props, opts)).then(function () {\n op = opts.op = 'update'\n self.dbg(op, mapper, id, props, opts)\n return self.PUT(\n self.getPath('update', mapper, id, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdate lifecycle hook\n op = opts.op = 'afterUpdate'\n return resolve(self[op](mapper, id, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateAll lifecycle hook\n op = opts.op = 'beforeUpdateAll'\n return resolve(self[op](mapper, props, query, opts)).then(function () {\n op = opts.op = 'updateAll'\n self.dbg(op, mapper, props, query, opts)\n return self.PUT(\n self.getPath('updateAll', mapper, null, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateAll lifecycle hook\n op = opts.op = 'afterUpdateAll'\n return resolve(self[op](mapper, props, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'updateMany'\n self.dbg(op, mapper, records, opts)\n return self.PUT(\n self.getPath('updateMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateMany lifecycle hook\n op = opts.op = 'afterUpdateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n }\n})\n\n/**\n * Add an Http actions to a mapper.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.addAction = function (name, opts) {\n if (!name || !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 reject(err) }\n mapper[name] = function (id, _opts) {\n const self = this\n if (isObject(id)) {\n _opts = id\n }\n _opts = _opts || {}\n let adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http')\n let config = {}\n 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.defaults.basePath,\n adapter.getEndpoint(self, isSorN(id) ? id : null, _opts)\n ]\n if (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 deepMixIn(config)(_opts)\n return 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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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 = extend\n\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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 **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"axios\"\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/node/mocha.start.js b/node/mocha.start.js index 50dd9ea..1c76d20 100644 --- a/node/mocha.start.js +++ b/node/mocha.start.js @@ -14,11 +14,11 @@ before(function () { Test.assert = require('chai').assert Test.sinon = require('sinon') Test.JSData = require('js-data') - Test.DSHttpAdapter = require('./dist/js-data-http-node') - Test.User = Test.JSData.Model.extend({}, { + Test.HttpAdapter = require('./dist/js-data-http-node') + Test.User = new Test.JSData.Mapper({ name: 'user' }) - Test.Post = Test.JSData.Model.extend({}, { + Test.Post = new Test.JSData.Mapper({ name: 'post', endpoint: 'posts', basePath: 'api' @@ -29,7 +29,7 @@ before(function () { beforeEach(function () { var Test = this - Test.adapter = new Test.DSHttpAdapter() + Test.adapter = new Test.HttpAdapter() Test.User.registerAdapter('http', Test.adapter, { default: true }) Test.Post.registerAdapter('http', Test.adapter, { default: true }) diff --git a/node/package.json b/node/package.json index 67fd4c4..c9335ec 100644 --- a/node/package.json +++ b/node/package.json @@ -1,7 +1,7 @@ { "name": "js-data-http-node", "description": "Node.js HTTP adapter for js-data.", - "version": "3.0.0-alpha.3", + "version": "3.0.0-alpha.4", "homepage": "http://www.js-data.io/docs/dshttpadapter", "repository": { "type": "git", diff --git a/src/index.js b/src/index.js index 731eea5..d9a2b11 100644 --- a/src/index.js +++ b/src/index.js @@ -8,67 +8,60 @@ try { let { DSUtils } = JSData let { deepMixIn, removeCircular, copy, makePath, isString, isNumber } = DSUtils -/** - * DSHttpAdapter class. - * @class DSHttpAdapter - * @alias DSHttpAdapter - * - * @param {Object} [opts] Configuration options. - * @param {string} [opts.basePath=''] - * @param {boolean} [opts.debug=false] - * @param {boolean} [opts.forceTrailingSlash=false] - * @param {Object} [opts.http=axios] - * @param {Object} [opts.httpConfig={}] - * @param {string} [opts.suffix=''] - * @param {boolean} [opts.useFetch=false] - */ -function DSHttpAdapter (opts) { +const noop = function (...args) { const self = this + const opts = args[args.length - 1] + self.dbg(opts.op, ...args) +} - // Default values for arguments - opts || (opts = {}) +const noop2 = function (...args) { + const self = this + const opts = args[args.length - 2] + self.dbg(opts.op, ...args) +} +const DEFAULTS = { // Default and user-defined settings /** - * @name DSHttpAdapter#basePath + * @name HttpAdapter#basePath * @type {string} */ - self.basePath = opts.basePath === undefined ? '' : opts.basePath + basePath: '', /** - * @name DSHttpAdapter#debug + * @name HttpAdapter#debug * @type {boolean} * @default false */ - self.debug = opts.debug === undefined ? false : opts.debug + debug: false, /** - * @name DSHttpAdapter#forceTrailingSlash + * @name HttpAdapter#forceTrailingSlash * @type {boolean} * @default false */ - self.forceTrailingSlash = opts.forceTrailingSlash === undefined ? false : opts.forceTrailingSlash + forceTrailingSlash: false, /** - * @name DSHttpAdapter#http + * @name HttpAdapter#http * @type {Function} */ - self.http = opts.http === undefined ? axios : opts.http + http: axios, /** - * @name DSHttpAdapter#httpConfig + * @name HttpAdapter#httpConfig * @type {Object} */ - self.httpConfig = opts.httpConfig === undefined ? {} : opts.httpConfig + httpConfig: {}, /** - * @name DSHttpAdapter#suffix + * @name HttpAdapter#suffix * @type {string} */ - self.suffix = opts.suffix === undefined ? '' : opts.suffix + suffix: '', /** - * @name DSHttpAdapter#useFetch + * @name HttpAdapter#useFetch * @type {boolean} * @default false */ @@ -84,30 +77,36 @@ let defaultsPrototype = Defaults.prototype /** * Make an Http request to `url` according to the configuration in `config`. * - * {@link DSHttpAdapter#beforeDEL} will be called before calling - * {@link DSHttpAdapter#HTTP}. - * {@link DSHttpAdapter#afterDEL} will be called after calling - * {@link DSHttpAdapter#HTTP}. - * - * @memberof DSHttpAdapter - * @instance + * @name HttpAdapter#DEL + * @method * @param {string} url Url for the request. * @param {Object} [config] Http configuration that will be passed to - * {@link DSHttpAdapter#HTTP}. + * {@link HttpAdapter#HTTP}. * @param {Object} [opts] Configuration options. * @return {Promise} */ DEL (url, config, opts) { const self = this + let op config || (config = {}) + opts || (opts = {}) config.url = url || config.url config.method = config.method || 'delete' - return resolve(self.beforeDEL(url, config, opts)).then(function (_config) { - config = _config || config + + // beforeDEL lifecycle hook + op = opts.op = 'beforeDEL' + return resolve(self[op](url, config, opts)).then(function (_config) { + // Allow re-assignment from lifecycle hook + config = isUndefined(_config) ? config : _config + op = opts.op = 'DEL' + self.dbg(op, url, config, opts) return self.HTTP(config, opts) }).then(function (response) { - return resolve(self.afterDEL(url, config, opts, response)).then(function (_response) { - return _response || response + // afterDEL lifecycle hook + op = opts.op = 'afterDEL' + return resolve(self[op](url, config, opts, response)).then(function (_response) { + // Allow re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response }) }) }, @@ -130,8 +129,8 @@ class DSHttpAdapter { /** * Make an Http request using `window.fetch`. * - * @memberof DSHttpAdapter - * @instance + * @name HttpAdapter + * @method * @param {Object} config Request configuration. * @param {Object} config.data Payload for the request. * @param {string} config.method Http method for the request. @@ -419,11 +418,11 @@ class DSHttpAdapter { } /** - * Alternative to ES6 class syntax for extending `DSHttpAdapter`. + * Alternative to ES6 class syntax for extending `HttpAdapter`. * * __ES6__: * ```javascript - * class MyHttpAdapter extends DSHttpAdapter { + * class MyHttpAdapter extends HttpAdapter { * deserialize (Model, data, opts) { * const data = super.deserialize(Model, data, opts) * data.foo = 'bar' @@ -450,26 +449,26 @@ class DSHttpAdapter { * yell: function () { return 'HI' } * } * - * var MyHttpAdapter = DSHttpAdapter.extend(instanceProps, classProps) + * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps) * var adapter = new MyHttpAdapter() * adapter.say() // "hi" * MyHttpAdapter.yell() // "HI" * ``` * - * @name DSHttpAdapter.extend + * @name HttpAdapter.extend * @method * @param {Object} [instanceProps] Properties that will be added to the * prototype of the subclass. * @param {Object} [classProps] Properties that will be added as static * properties to the subclass itself. - * @return {Object} Subclass of `DSHttpAdapter`. + * @return {Object} Subclass of `HttpAdapter`. */ -DSHttpAdapter.extend = extend +HttpAdapter.extend = extend /** * Details of the current version of the `js-data-http` module. * - * @name DSHttpAdapter.version + * @name HttpAdapter.version * @type {Object} * @property {string} version.full The full semver value. * @property {number} version.major The major version number. @@ -480,7 +479,7 @@ DSHttpAdapter.extend = extend * @property {(string|boolean)} version.beta The beta version value, * otherwise `false` if the current version is not beta. */ -DSHttpAdapter.version = { +HttpAdapter.version = { full: '<%= pkg.version %>', major: parseInt('<%= major %>', 10), minor: parseInt('<%= minor %>', 10), @@ -497,22 +496,22 @@ DSHttpAdapter.version = { * * __Script tag__: * ```javascript - * window.DSHttpAdapter + * window.HttpAdapter * ``` * __CommonJS__: * ```javascript - * var DSHttpAdapter = require('js-data-http') + * var HttpAdapter = require('js-data-http') * ``` * __ES6 Modules__: * ```javascript - * import DSHttpAdapter from 'js-data-http' + * import HttpAdapter from 'js-data-http' * ``` * __AMD__: * ```javascript - * define('myApp', ['js-data-http'], function (DSHttpAdapter) { ... }) + * define('myApp', ['js-data-http'], function (HttpAdapter) { ... }) * ``` * * @module js-data-http */ -module.exports = DSHttpAdapter +module.exports = HttpAdapter diff --git a/test/find.test.js b/test/find.test.js index 76288f2..6f8146e 100644 --- a/test/find.test.js +++ b/test/find.test.js @@ -80,13 +80,13 @@ describe('find', function () { it('should use suffixes', function () { var Test = this - var Thing = Test.JSData.Model.extend({}, { + var Thing = new Test.JSData.Mapper({ name: 'thing', endpoint: 'things', suffix: '.xml' }) - var otherAdapter = new Test.DSHttpAdapter({ + var otherAdapter = new Test.HttpAdapter({ suffix: '.json' }) otherAdapter.http = Test.adapter.http diff --git a/webpack.config.js b/webpack.config.js index ac1f7e6..466ab74 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -6,7 +6,7 @@ module.exports = { output: { filename: './dist/js-data-http.js', libraryTarget: 'umd', - library: 'DSHttpAdapter' + library: 'HttpAdapter' }, externals: { 'js-data': { From c4fb0646f59935877a8537ad264717c6cabf0ff3 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Sat, 13 Feb 2016 23:22:01 +0000 Subject: [PATCH 11/24] Some fixes. --- dist/js-data-http.js | 2 +- fetch/dist/js-data-fetch.js | 10 +++++----- fetch/dist/js-data-fetch.js.map | 2 +- fetch/dist/js-data-fetch.min.js | 4 ++-- fetch/dist/js-data-fetch.min.map | 2 +- fetch/package.json | 2 +- node/dist/js-data-http-node.js | 10 +++++----- node/dist/js-data-http-node.js.map | 2 +- node/package.json | 2 +- scripts/cleanup.js | 25 +++++++++++++++++++++++++ src/index.js | 2 +- 11 files changed, 44 insertions(+), 19 deletions(-) create mode 100644 scripts/cleanup.js diff --git a/dist/js-data-http.js b/dist/js-data-http.js index f56dfaf..a0d8465 100644 --- a/dist/js-data-http.js +++ b/dist/js-data-http.js @@ -623,7 +623,7 @@ return /******/ (function(modules) { // webpackBootstrap /** * Make an Http request using `window.fetch`. * - * @name HttpAdapter + * @name HttpAdapter#fetch * @method * @param {Object} config Request configuration. * @param {Object} config.data Payload for the request. diff --git a/fetch/dist/js-data-fetch.js b/fetch/dist/js-data-fetch.js index 9036bda..2cf573d 100644 --- a/fetch/dist/js-data-fetch.js +++ b/fetch/dist/js-data-fetch.js @@ -1,6 +1,6 @@ /*! * js-data-fetch -* @version 3.0.0-alpha.4 - Homepage +* @version 3.0.0-alpha.4 - Homepage * @author Jason Dobry * @copyright (c) 2014-2016 Jason Dobry * @license MIT @@ -755,7 +755,7 @@ return /******/ (function(modules) { // webpackBootstrap /** * Log an error. * - * @name HttpAdapter + * @name HttpAdapter#error * @method * @param {...*} [args] Arguments to log. */ @@ -771,7 +771,7 @@ return /******/ (function(modules) { // webpackBootstrap /** * Make an Http request using `window.fetch`. * - * @name HttpAdapter + * @name HttpAdapter#fetch * @method * @param {Object} config Request configuration. * @param {Object} config.data Payload for the request. @@ -1329,7 +1329,7 @@ return /******/ (function(modules) { // webpackBootstrap * {@link HttpAdapter#afterUpdateMany} will be called after calling * {@link HttpAdapter#PUT}. * - * @name HttpAdapter + * @name HttpAdapter#updateMany * @method * @param {Object} mapper The mapper. * @param {Array} records Array of property objects to send as the payload. @@ -1412,7 +1412,7 @@ return /******/ (function(modules) { // webpackBootstrap if (typeof _opts.getEndpoint === 'function') { config.url = _opts.getEndpoint(self, _opts); } else { - var _args = [_opts.basePath || self.basePath || adapter.defaults.basePath, adapter.getEndpoint(self, isSorN(id) ? id : null, _opts)]; + var _args = [_opts.basePath || self.basePath || adapter.basePath, adapter.getEndpoint(self, isSorN(id) ? id : null, _opts)]; if (isSorN(id)) { _args.push(id); } diff --git a/fetch/dist/js-data-fetch.js.map b/fetch/dist/js-data-fetch.js.map index 82bcdb3..ff236b8 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 c3f8834944509f403e4f","webpack:///./src/index.js","webpack:///external {\"amd\":\"js-data\",\"commonjs\":\"js-data\",\"commonjs2\":\"js-data\",\"root\":\"JSData\"}","webpack:///external \"undefined\""],"names":[],"mappings":"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","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[\"HttpAdapter\"] = factory(require(\"js-data\"), require(\"undefined\"));\n\telse\n\t\troot[\"HttpAdapter\"] = factory(root[\"JSData\"], root[\"undefined\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_2__) {\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 c3f8834944509f403e4f\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nconst {\n _,\n addHiddenPropsToTarget,\n copy,\n deepMixIn,\n extend,\n fillIn,\n forOwn,\n isArray,\n isFunction,\n isNumber,\n isObject,\n isSorN,\n isString,\n isUndefined,\n resolve,\n reject,\n toJson\n} = utils\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 forOwn(params, function (val, key) {\n if (val === null || typeof val === 'undefined') {\n return\n }\n if (!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 (isObject(v)) {\n v = 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 noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n}\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#debug\n * @type {boolean}\n * @default false\n */\n debug: false,\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 * @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\n // Default values for arguments\n opts || (opts = {})\n\n fillIn(self, opts)\n fillIn(self, DEFAULTS)\n}\n\naddHiddenPropsToTarget(HttpAdapter.prototype, {\n /**\n * @name HttpAdapter#afterCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreate: noop2,\n\n /**\n * @name HttpAdapter#afterCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreateMany: noop2,\n\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#afterDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroy: noop2,\n\n /**\n * @name HttpAdapter#afterDestroyAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroyAll: noop2,\n\n /**\n * @name HttpAdapter#afterFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFind: noop2,\n\n /**\n * @name HttpAdapter#afterFindAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFindAll: 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#afterUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdate: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateAll: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateMany: noop2,\n\n /**\n * @name HttpAdapter#beforeCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n */\n beforeCreate: noop,\n\n /**\n * @name HttpAdapter#beforeCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeCreateMany: noop,\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#beforeDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeDestroy: noop,\n\n /**\n * @name HttpAdapter#beforeDestroyAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeDestroyAll: noop,\n\n /**\n * @name HttpAdapter#beforeFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeFind: noop,\n\n /**\n * @name HttpAdapter#beforeFindAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeFindAll: 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 /**\n * @name HttpAdapter#beforeUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n */\n beforeUpdate: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n */\n beforeUpdateAll: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeUpdateMany: noop,\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreate lifecycle hook\n op = opts.op = 'beforeCreate'\n return resolve(self[op](mapper, props, opts)).then(function () {\n op = opts.op = 'create'\n self.dbg(op, mapper, props, opts)\n return self.POST(\n self.getPath('create', mapper, props, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreate lifecycle hook\n op = opts.op = 'afterCreate'\n return resolve(self[op](mapper, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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} 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 createMany (mapper, records, opts) {\n const self = this\n let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreateMany lifecycle hook\n op = opts.op = 'beforeCreateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'createMany'\n self.dbg(op, mapper, records, opts)\n return self.POST(\n self.getPath('createMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreateMany lifecycle hook\n op = opts.op = 'afterCreateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n },\n\n /**\n * Call {@link HttpAdapter#log} at the \"debug\" level.\n *\n * @name HttpAdapter#dbg\n * @method\n * @param {...*} [args] Args passed to {@link HttpAdapter#log}.\n */\n dbg (...args) {\n this.log('debug', ...args)\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.deserialize)) {\n return opts.deserialize(mapper, response, opts)\n }\n if (isFunction(mapper.deserialize)) {\n return mapper.deserialize(mapper, response, opts)\n }\n if (opts.raw) {\n return response\n }\n return response ? ('data' in response ? response.data : response) : 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroy lifecycle hook\n op = opts.op = 'beforeDestroy'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy'\n self.dbg(op, mapper, id, opts)\n return self.DEL(\n self.getPath('destroy', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroy lifecycle hook\n op = opts.op = 'afterDestroy'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroyAll lifecycle hook\n op = opts.op = 'beforeDestroyAll'\n return resolve(self.beforeDestroyAll(mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll'\n self.dbg(op, mapper, query, opts)\n return self.DEL(\n self.getPath('destroyAll', mapper, null, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n },\n\n /**\n * Log an error.\n *\n * @name HttpAdapter\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\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 = 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeFind lifecycle hook\n op = opts.op = 'beforeFind'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find'\n self.dbg(op, mapper, id, opts)\n return self.GET(\n self.getPath('find', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFind lifecycle hook\n op = opts.op = 'afterFind'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll'\n return resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll'\n self.dbg(op, mapper, query, opts)\n return self.GET(\n self.getPath('findAll', mapper, opts.params, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFindAll lifecycle hook\n op = opts.op = 'afterFindAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 opts || (opts = {})\n opts.params || (opts.params = {})\n\n let item\n const parentKey = mapper.parentKey\n const endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : mapper.endpoint\n let parentField = mapper.parentField\n const parentDef = mapper.parent ? mapper.getResource(mapper.parent) : undefined\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 endpoint\n } else {\n delete opts.params[parentKey]\n\n if (isString(id) || isNumber(id)) {\n item = mapper.get(id)\n } else if (isObject(id)) {\n item = id\n }\n\n if (item) {\n parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null)\n }\n\n if (parentId) {\n delete opts.endpoint\n const _opts = {}\n forOwn(opts, function (value, key) {\n _opts[key] = value\n })\n _(_opts, parentDef)\n return makePath(this.getEndpoint(parentDef, parentId, _opts, parentId, endpoint))\n } else {\n return endpoint\n }\n }\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 opts.basePath === undefined ? (mapper.basePath === undefined ? self.basePath : mapper.basePath) : opts.basePath,\n self.getEndpoint(mapper, (isString(id) || 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 /**\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 config = copy(config)\n config = deepMixIn(config, self.httpConfig)\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 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 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 resolve(self.afterHTTP(config, opts, response)).then(function (_response) {\n return _response || response\n })\n })\n },\n\n /**\n * Log the provided arguments at the specified leve.\n *\n * @name HttpAdapter#log\n * @method\n * @param {string} level Log level.\n * @param {...*} [args] Arguments to log.\n */\n log (level, ...args) {\n if (level && !args.length) {\n args.push(level)\n level = 'debug'\n }\n if (level === 'debug' && !this.debug) {\n return\n }\n const prefix = `${level.toUpperCase()}: (HttpAdapter)`\n if (console[level]) {\n console[level](prefix, ...args)\n } else {\n console.log(prefix, ...args)\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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.queryTransform)) {\n return opts.queryTransform(mapper, params, opts)\n }\n if (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 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 (isFunction(opts.serialize)) {\n return opts.serialize(mapper, data, opts)\n }\n if (isFunction(mapper.serialize)) {\n return mapper.serialize(mapper, data, opts)\n }\n return data\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdate lifecycle hook\n op = opts.op = 'beforeUpdate'\n return resolve(self[op](mapper, id, props, opts)).then(function () {\n op = opts.op = 'update'\n self.dbg(op, mapper, id, props, opts)\n return self.PUT(\n self.getPath('update', mapper, id, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdate lifecycle hook\n op = opts.op = 'afterUpdate'\n return resolve(self[op](mapper, id, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateAll lifecycle hook\n op = opts.op = 'beforeUpdateAll'\n return resolve(self[op](mapper, props, query, opts)).then(function () {\n op = opts.op = 'updateAll'\n self.dbg(op, mapper, props, query, opts)\n return self.PUT(\n self.getPath('updateAll', mapper, null, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateAll lifecycle hook\n op = opts.op = 'afterUpdateAll'\n return resolve(self[op](mapper, props, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'updateMany'\n self.dbg(op, mapper, records, opts)\n return self.PUT(\n self.getPath('updateMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateMany lifecycle hook\n op = opts.op = 'afterUpdateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n }\n})\n\n/**\n * Add an Http actions to a mapper.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.addAction = function (name, opts) {\n if (!name || !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 reject(err) }\n mapper[name] = function (id, _opts) {\n const self = this\n if (isObject(id)) {\n _opts = id\n }\n _opts = _opts || {}\n let adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http')\n let config = {}\n 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.defaults.basePath,\n adapter.getEndpoint(self, isSorN(id) ? id : null, _opts)\n ]\n if (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 deepMixIn(config)(_opts)\n return 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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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 = extend\n\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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 **/","module.exports = undefined;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"undefined\"\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap bc8063d879530419e301","webpack:///./src/index.js","webpack:///external {\"amd\":\"js-data\",\"commonjs\":\"js-data\",\"commonjs2\":\"js-data\",\"root\":\"JSData\"}","webpack:///external \"undefined\""],"names":[],"mappings":"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","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[\"HttpAdapter\"] = factory(require(\"js-data\"), require(\"undefined\"));\n\telse\n\t\troot[\"HttpAdapter\"] = factory(root[\"JSData\"], root[\"undefined\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_2__) {\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 bc8063d879530419e301\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nconst {\n _,\n addHiddenPropsToTarget,\n copy,\n deepMixIn,\n extend,\n fillIn,\n forOwn,\n isArray,\n isFunction,\n isNumber,\n isObject,\n isSorN,\n isString,\n isUndefined,\n resolve,\n reject,\n toJson\n} = utils\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 forOwn(params, function (val, key) {\n if (val === null || typeof val === 'undefined') {\n return\n }\n if (!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 (isObject(v)) {\n v = 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 noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n}\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#debug\n * @type {boolean}\n * @default false\n */\n debug: false,\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 * @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\n // Default values for arguments\n opts || (opts = {})\n\n fillIn(self, opts)\n fillIn(self, DEFAULTS)\n}\n\naddHiddenPropsToTarget(HttpAdapter.prototype, {\n /**\n * @name HttpAdapter#afterCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreate: noop2,\n\n /**\n * @name HttpAdapter#afterCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreateMany: noop2,\n\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#afterDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroy: noop2,\n\n /**\n * @name HttpAdapter#afterDestroyAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroyAll: noop2,\n\n /**\n * @name HttpAdapter#afterFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFind: noop2,\n\n /**\n * @name HttpAdapter#afterFindAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFindAll: 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#afterUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdate: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateAll: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateMany: noop2,\n\n /**\n * @name HttpAdapter#beforeCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n */\n beforeCreate: noop,\n\n /**\n * @name HttpAdapter#beforeCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeCreateMany: noop,\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#beforeDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeDestroy: noop,\n\n /**\n * @name HttpAdapter#beforeDestroyAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeDestroyAll: noop,\n\n /**\n * @name HttpAdapter#beforeFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeFind: noop,\n\n /**\n * @name HttpAdapter#beforeFindAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeFindAll: 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 /**\n * @name HttpAdapter#beforeUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n */\n beforeUpdate: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n */\n beforeUpdateAll: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeUpdateMany: noop,\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreate lifecycle hook\n op = opts.op = 'beforeCreate'\n return resolve(self[op](mapper, props, opts)).then(function () {\n op = opts.op = 'create'\n self.dbg(op, mapper, props, opts)\n return self.POST(\n self.getPath('create', mapper, props, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreate lifecycle hook\n op = opts.op = 'afterCreate'\n return resolve(self[op](mapper, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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} 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 createMany (mapper, records, opts) {\n const self = this\n let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreateMany lifecycle hook\n op = opts.op = 'beforeCreateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'createMany'\n self.dbg(op, mapper, records, opts)\n return self.POST(\n self.getPath('createMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreateMany lifecycle hook\n op = opts.op = 'afterCreateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n },\n\n /**\n * Call {@link HttpAdapter#log} at the \"debug\" level.\n *\n * @name HttpAdapter#dbg\n * @method\n * @param {...*} [args] Args passed to {@link HttpAdapter#log}.\n */\n dbg (...args) {\n this.log('debug', ...args)\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.deserialize)) {\n return opts.deserialize(mapper, response, opts)\n }\n if (isFunction(mapper.deserialize)) {\n return mapper.deserialize(mapper, response, opts)\n }\n if (opts.raw) {\n return response\n }\n return response ? ('data' in response ? response.data : response) : 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroy lifecycle hook\n op = opts.op = 'beforeDestroy'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy'\n self.dbg(op, mapper, id, opts)\n return self.DEL(\n self.getPath('destroy', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroy lifecycle hook\n op = opts.op = 'afterDestroy'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroyAll lifecycle hook\n op = opts.op = 'beforeDestroyAll'\n return resolve(self.beforeDestroyAll(mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll'\n self.dbg(op, mapper, query, opts)\n return self.DEL(\n self.getPath('destroyAll', mapper, null, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 = 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeFind lifecycle hook\n op = opts.op = 'beforeFind'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find'\n self.dbg(op, mapper, id, opts)\n return self.GET(\n self.getPath('find', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFind lifecycle hook\n op = opts.op = 'afterFind'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll'\n return resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll'\n self.dbg(op, mapper, query, opts)\n return self.GET(\n self.getPath('findAll', mapper, opts.params, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFindAll lifecycle hook\n op = opts.op = 'afterFindAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 opts || (opts = {})\n opts.params || (opts.params = {})\n\n let item\n const parentKey = mapper.parentKey\n const endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : mapper.endpoint\n let parentField = mapper.parentField\n const parentDef = mapper.parent ? mapper.getResource(mapper.parent) : undefined\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 endpoint\n } else {\n delete opts.params[parentKey]\n\n if (isString(id) || isNumber(id)) {\n item = mapper.get(id)\n } else if (isObject(id)) {\n item = id\n }\n\n if (item) {\n parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null)\n }\n\n if (parentId) {\n delete opts.endpoint\n const _opts = {}\n forOwn(opts, function (value, key) {\n _opts[key] = value\n })\n _(_opts, parentDef)\n return makePath(this.getEndpoint(parentDef, parentId, _opts, parentId, endpoint))\n } else {\n return endpoint\n }\n }\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 opts.basePath === undefined ? (mapper.basePath === undefined ? self.basePath : mapper.basePath) : opts.basePath,\n self.getEndpoint(mapper, (isString(id) || 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 /**\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 config = copy(config)\n config = deepMixIn(config, self.httpConfig)\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 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 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 resolve(self.afterHTTP(config, opts, response)).then(function (_response) {\n return _response || response\n })\n })\n },\n\n /**\n * Log the provided arguments at the specified leve.\n *\n * @name HttpAdapter#log\n * @method\n * @param {string} level Log level.\n * @param {...*} [args] Arguments to log.\n */\n log (level, ...args) {\n if (level && !args.length) {\n args.push(level)\n level = 'debug'\n }\n if (level === 'debug' && !this.debug) {\n return\n }\n const prefix = `${level.toUpperCase()}: (HttpAdapter)`\n if (console[level]) {\n console[level](prefix, ...args)\n } else {\n console.log(prefix, ...args)\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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.queryTransform)) {\n return opts.queryTransform(mapper, params, opts)\n }\n if (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 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 (isFunction(opts.serialize)) {\n return opts.serialize(mapper, data, opts)\n }\n if (isFunction(mapper.serialize)) {\n return mapper.serialize(mapper, data, opts)\n }\n return data\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdate lifecycle hook\n op = opts.op = 'beforeUpdate'\n return resolve(self[op](mapper, id, props, opts)).then(function () {\n op = opts.op = 'update'\n self.dbg(op, mapper, id, props, opts)\n return self.PUT(\n self.getPath('update', mapper, id, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdate lifecycle hook\n op = opts.op = 'afterUpdate'\n return resolve(self[op](mapper, id, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateAll lifecycle hook\n op = opts.op = 'beforeUpdateAll'\n return resolve(self[op](mapper, props, query, opts)).then(function () {\n op = opts.op = 'updateAll'\n self.dbg(op, mapper, props, query, opts)\n return self.PUT(\n self.getPath('updateAll', mapper, null, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateAll lifecycle hook\n op = opts.op = 'afterUpdateAll'\n return resolve(self[op](mapper, props, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'updateMany'\n self.dbg(op, mapper, records, opts)\n return self.PUT(\n self.getPath('updateMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateMany lifecycle hook\n op = opts.op = 'afterUpdateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n }\n})\n\n/**\n * Add an Http actions to a mapper.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.addAction = function (name, opts) {\n if (!name || !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 reject(err) }\n mapper[name] = function (id, _opts) {\n const self = this\n if (isObject(id)) {\n _opts = id\n }\n _opts = _opts || {}\n let adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http')\n let config = {}\n 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, isSorN(id) ? id : null, _opts)\n ]\n if (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 deepMixIn(config)(_opts)\n return 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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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 = extend\n\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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 **/","module.exports = undefined;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"undefined\"\n ** module id = 2\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 9d15c49..4e50c8d 100644 --- a/fetch/dist/js-data-fetch.min.js +++ b/fetch/dist/js-data-fetch.min.js @@ -1,11 +1,11 @@ /*! * js-data-fetch -* @version 3.0.0-alpha.4 - Homepage +* @version 3.0.0-alpha.4 - Homepage * @author Jason Dobry * @copyright (c) 2014-2016 Jason Dobry * @license MIT * * @overview Fetch HTTP (XHR) adapter for js-data in the browser. */ -!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.HttpAdapter=t(require("js-data"),require("undefined")):e.HttpAdapter=t(e.JSData,e.undefined)}(this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={exports:{},id:n,loaded:!1};return e[n].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}([function(e,t,r){"use strict";function n(e){return null!=e&&""!==e}function o(e,t){return t||(t=""),e.filter(n).join(t)}function a(){for(var e=arguments.length,t=Array(e),r=0;e>r;r++)t[r]=arguments[r];var n=o(t,"/");return n.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 i(e,t){if(!t)return e;var r=[];return b(t,function(e,t){null!==e&&"undefined"!=typeof e&&(v(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():P(e)&&(e=D(e)),r.push(u(t)+"="+u(e))}))}),r.length>0&&(e+=(-1===e.indexOf("?")?"?":"&")+r.join("&")),e}function f(e){var t=this;e||(e={}),y(t,e),y(t,j)}var s="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},p=r(1),d=r(2),l=p.utils._,c=p.utils.addHiddenPropsToTarget,h=p.utils.copy,m=p.utils.deepMixIn,g=p.utils.extend,y=p.utils.fillIn,b=p.utils.forOwn,v=p.utils.isArray,T=p.utils.isFunction,x=p.utils.isNumber,P=p.utils.isObject,A=p.utils.isSorN,E=p.utils.isString,U=p.utils.isUndefined,z=p.utils.resolve,q=p.utils.reject,D=p.utils.toJson,S=!1;try{S=window&&window.fetch}catch(e){}var w=function(){for(var e=this,t=arguments.length,r=Array(t),n=0;t>n;n++)r[n]=arguments[n];var o=r[r.length-1];e.dbg.apply(e,[o.op].concat(r))},C=function(){for(var e=this,t=arguments.length,r=Array(t),n=0;t>n;n++)r[n]=arguments[n];var o=r[r.length-2];e.dbg.apply(e,[o.op].concat(r))},j={basePath:"",debug:!1,forceTrailingSlash:!1,http:d,httpConfig:{},suffix:"",useFetch:!1};c(f.prototype,{afterCreate:C,afterCreateMany:C,afterDEL:C,afterDestroy:C,afterDestroyAll:C,afterFind:C,afterFindAll:C,afterGET:C,afterHTTP:C,afterPOST:C,afterPUT:C,afterUpdate:C,afterUpdateAll:C,afterUpdateMany:C,beforeCreate:w,beforeCreateMany:w,beforeDEL:w,beforeDestroy:w,beforeDestroyAll:w,beforeFind:w,beforeFindAll:w,beforeGET:w,beforeHTTP:w,beforePOST:w,beforePUT:w,beforeUpdate:w,beforeUpdateAll:w,beforeUpdateMany:w,create:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=U(r.suffix)?e.suffix:r.suffix,o=r.op="beforeCreate",z(n[o](e,t,r)).then(function(){return o=r.op="create",n.dbg(o,e,t,r),n.POST(n.getPath("create",e,t,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterCreate",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})},createMany:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=U(r.suffix)?e.suffix:r.suffix,o=r.op="beforeCreateMany",z(n[o](e,t,r)).then(function(){return o=r.op="createMany",n.dbg(o,e,t,r),n.POST(n.getPath("createMany",e,null,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterCreateMany",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})},dbg:function(){for(var e=arguments.length,t=Array(e),r=0;e>r;r++)t[r]=arguments[r];this.log.apply(this,["debug"].concat(t))},DEL:function(e,t,r){var n=this,o=void 0;return t||(t={}),r||(r={}),t.url=e||t.url,t.method=t.method||"delete",o=r.op="beforeDEL",z(n[o](e,t,r)).then(function(a){return t=U(a)?t:a,o=r.op="DEL",n.dbg(o,e,t,r),n.HTTP(t,r)}).then(function(a){return o=r.op="afterDEL",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})},deserialize:function(e,t,r){return r||(r={}),T(r.deserialize)?r.deserialize(e,t,r):T(e.deserialize)?e.deserialize(e,t,r):r.raw?t:t&&"data"in t?t.data:t},destroy:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=U(r.suffix)?e.suffix:r.suffix,o=r.op="beforeDestroy",z(n[o](e,t,r)).then(function(){return o=r.op="destroy",n.dbg(o,e,t,r),n.DEL(n.getPath("destroy",e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterDestroy",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})},destroyAll:function(e,t,r){var n=this,o=void 0;return t||(t={}),r=r?h(r):{},r.params||(r.params={}),m(r.params,t),r.params=n.queryTransform(e,r.params,r),r.suffix=U(r.suffix)?e.suffix:r.suffix,o=r.op="beforeDestroyAll",z(n.beforeDestroyAll(e,t,r)).then(function(){return o=r.op="destroyAll",n.dbg(o,e,t,r),n.DEL(n.getPath("destroyAll",e,null,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterDestroyAll",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})},error:function(){if(console){var e;(e=console)["function"==typeof console.error?"error":"log"].apply(e,arguments)}},fetch:function(e){function t(t,r){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}(function(e,t){var r={method:e.method,headers:new Headers(e.headers)};return e.data&&(r.body=D(e.data)),fetch(new Request(i(e.url,e.params),r)).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,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=U(r.suffix)?e.suffix:r.suffix,o=r.op="beforeFind",z(n[o](e,t,r)).then(function(){return o=r.op="find",n.dbg(o,e,t,r),n.GET(n.getPath("find",e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterFind",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})},findAll:function(e,t,r){var n=this,o=void 0;return t||(t={}),r=r?h(r):{},r.params||(r.params={}),r.suffix=U(r.suffix)?e.suffix:r.suffix,m(r.params,t),r.params=n.queryTransform(e,r.params,r),o=r.op="beforeFindAll",z(n[o](e,t,r)).then(function(){return o=r.op="findAll",n.dbg(o,e,t,r),n.GET(n.getPath("findAll",e,r.params,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterFindAll",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})},GET:function(e,t,r){var n=this,o=void 0;return t||(t={}),r||(r={}),t.url=e||t.url,t.method=t.method||"get",o=r.op="beforeGET",z(n[o](e,t,r)).then(function(a){return t=U(a)?t:a,o=r.op="GET",n.dbg(o,e,t,r),n.HTTP(t,r)}).then(function(a){return o=r.op="afterGET",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})},getEndpoint:function(e,t,r){var n=this;r||(r={}),r.params||(r.params={});var o=void 0,u=e.parentKey,i=r.hasOwnProperty("endpoint")?r.endpoint:e.endpoint,f=e.parentField,p=e.parent?e.getResource(e.parent):void 0,d=r.params[u];if(d===!1||!u||!p)return d===!1&&delete r.params[u],i;if(delete r.params[u],E(t)||x(t)?o=e.get(t):P(t)&&(o=t),o&&(d=d||o[u]||(o[f]?o[f][p.idAttribute]:null)),!d)return i;var c=function(){delete r.endpoint;var e={};return b(r,function(t,r){e[r]=t}),l(e,p),{v:a(n.getEndpoint(p,d,e,d,i))}}();return"object"===("undefined"==typeof c?"undefined":s(c))?c.v:void 0},getPath:function(e,t,r,n){var o=this;n||(n={});var u=[void 0===n.basePath?void 0===t.basePath?o.basePath:t.basePath:n.basePath,o.getEndpoint(t,E(r)||x(r)||"create"===e?r:null,n)];return("find"===e||"update"===e||"destroy"===e)&&u.push(r),a.apply(p.utils,u)},HTTP:function(e,t){function r(t){var r=o.toUTCString()+" - "+e.method.toUpperCase()+" "+e.url+" - "+t.status+" "+((new Date).getTime()-o.getTime())+"ms";return t.status>=200&&t.status<300?(n.log&&n.dbg("debug",r,t),t):(n.error&&n.error("'FAILED: "+r,t),q(t))}var n=this,o=new Date;t||(t={}),e=h(e),e=m(e,n.httpConfig),n.forceTrailingSlash&&"/"!==e.url[e.url.length-1]&&(e.url+="/"),e.method=e.method.toUpperCase();var a=e.suffix||t.suffix||n.suffix;if(a&&e.url.substr(e.url.length-a.length)!==a&&(e.url+=a),!n.http)throw new Error("You have not configured this adapter with an http library!");return z(n.beforeHTTP(e,t)).then(function(o){return e=o||e,S&&(n.useFetch||t.useFetch||!n.http)?n.fetch(e,t).then(r,r):n.http(e).then(r,r).catch(function(r){return n.responseError(r,e,t)})}).then(function(r){return z(n.afterHTTP(e,t,r)).then(function(e){return e||r})})},log:function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;t>n;n++)r[n-1]=arguments[n];if(e&&!r.length&&(r.push(e),e="debug"),"debug"!==e||this.debug){var o=e.toUpperCase()+": (HttpAdapter)";if(console[e]){var a;(a=console)[e].apply(a,[o].concat(r))}else{var u;(u=console).log.apply(u,[o].concat(r))}}},POST:function(e,t,r,n){var o=this,a=void 0;return r||(r={}),n||(n={}),r.url=e||r.url,r.data=t||r.data,r.method=r.method||"post",a=n.op="beforePOST",z(o[a](e,t,r,n)).then(function(u){return r=U(u)?r:u,a=n.op="POST",o.dbg(a,e,t,r,n),o.HTTP(r,n)}).then(function(u){return a=n.op="afterPOST",z(o[a](e,t,r,n,u)).then(function(e){return U(e)?u:e})})},PUT:function(e,t,r,n){var o=this,a=void 0;return r||(r={}),n||(n={}),r.url=e||r.url,r.data=t||r.data,r.method=r.method||"put",a=n.op="beforePUT",z(o[a](e,t,r,n)).then(function(u){return r=U(u)?r:u,a=n.op="PUT",o.dbg(a,e,t,r,n),o.HTTP(r,n)}).then(function(u){return a=n.op="afterPUT",z(o[a](e,t,r,n,u)).then(function(e){return U(e)?u:e})})},queryTransform:function(e,t,r){return r||(r={}),T(r.queryTransform)?r.queryTransform(e,t,r):T(e.queryTransform)?e.queryTransform(e,t,r):t},responseError:function(e,t,r){return q(e)},serialize:function(e,t,r){return r||(r={}),T(r.serialize)?r.serialize(e,t,r):T(e.serialize)?e.serialize(e,t,r):t},update:function(e,t,r,n){var o=this,a=void 0;return n=n?h(n):{},n.params||(n.params={}),n.params=o.queryTransform(e,n.params,n),n.suffix=U(n.suffix)?e.suffix:n.suffix,a=n.op="beforeUpdate",z(o[a](e,t,r,n)).then(function(){return a=n.op="update",o.dbg(a,e,t,r,n),o.PUT(o.getPath("update",e,t,n),o.serialize(e,r,n),n)}).then(function(t){return o.deserialize(e,t,n)}).then(function(u){return a=n.op="afterUpdate",z(o[a](e,t,r,n,u)).then(function(e){return U(e)?u:e})})},updateAll:function(e,t,r,n){var o=this,a=void 0;return r||(r={}),n=n?h(n):{},n.params||(n.params={}),m(n.params,r),n.params=o.queryTransform(e,n.params,n),n.suffix=U(n.suffix)?e.suffix:n.suffix,a=n.op="beforeUpdateAll",z(o[a](e,t,r,n)).then(function(){return a=n.op="updateAll",o.dbg(a,e,t,r,n),o.PUT(o.getPath("updateAll",e,null,n),o.serialize(e,t,n),n)}).then(function(t){return o.deserialize(e,t,n)}).then(function(u){return a=n.op="afterUpdateAll",z(o[a](e,t,r,n,u)).then(function(e){return U(e)?u:e})})},updateMany:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=U(r.suffix)?e.suffix:r.suffix,o=r.op="beforeUpdateMany",z(n[o](e,t,r)).then(function(){return o=r.op="updateMany",n.dbg(o,e,t,r),n.PUT(n.getPath("updateMany",e,null,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterUpdateMany",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})}}),f.addAction=function(e,t){if(!e||!E(e))throw new TypeError("action(name[, opts]): Expected: string, Found: "+("undefined"==typeof e?"undefined":s(e)));return function(r){if(r[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 q(e)},r[e]=function(r,n){var o=this;P(r)&&(n=r),n=n||{};var u=o.getAdapter(t.adapter||o.defaultAdapter||"http"),i={};if(y(i,t),!n.hasOwnProperty("endpoint")&&i.endpoint&&(n.endpoint=i.endpoint),"function"==typeof n.getEndpoint)i.url=n.getEndpoint(o,n);else{var f=[n.basePath||o.basePath||u.defaults.basePath,u.getEndpoint(o,A(r)?r:null,n)];A(r)&&f.push(r),f.push(t.pathname||e),i.url=a.apply(null,f)}return i.method=i.method||"GET",i.mapper=o.name,m(i)(n),z(i).then(n.request||t.request).then(function(e){return u.HTTP(e)}).then(function(e){return e&&e.config&&(e.config.mapper=o.name),e}).then(n.response||t.response,n.responseError||t.responseError)},r}},f.addActions=function(e){return e||(e={}),function(e){return b(e,function(t,r){f.addAction(r,t)(e)}),e}},f.extend=g,f.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=f},function(t,r){t.exports=e},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.HttpAdapter=t(require("js-data"),require("undefined")):e.HttpAdapter=t(e.JSData,e.undefined)}(this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={exports:{},id:n,loaded:!1};return e[n].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}([function(e,t,r){"use strict";function n(e){return null!=e&&""!==e}function o(e,t){return t||(t=""),e.filter(n).join(t)}function a(){for(var e=arguments.length,t=Array(e),r=0;e>r;r++)t[r]=arguments[r];var n=o(t,"/");return n.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 i(e,t){if(!t)return e;var r=[];return b(t,function(e,t){null!==e&&"undefined"!=typeof e&&(v(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():P(e)&&(e=D(e)),r.push(u(t)+"="+u(e))}))}),r.length>0&&(e+=(-1===e.indexOf("?")?"?":"&")+r.join("&")),e}function f(e){var t=this;e||(e={}),y(t,e),y(t,j)}var s="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},p=r(1),d=r(2),l=p.utils._,c=p.utils.addHiddenPropsToTarget,h=p.utils.copy,m=p.utils.deepMixIn,g=p.utils.extend,y=p.utils.fillIn,b=p.utils.forOwn,v=p.utils.isArray,T=p.utils.isFunction,x=p.utils.isNumber,P=p.utils.isObject,A=p.utils.isSorN,E=p.utils.isString,U=p.utils.isUndefined,z=p.utils.resolve,q=p.utils.reject,D=p.utils.toJson,S=!1;try{S=window&&window.fetch}catch(e){}var w=function(){for(var e=this,t=arguments.length,r=Array(t),n=0;t>n;n++)r[n]=arguments[n];var o=r[r.length-1];e.dbg.apply(e,[o.op].concat(r))},C=function(){for(var e=this,t=arguments.length,r=Array(t),n=0;t>n;n++)r[n]=arguments[n];var o=r[r.length-2];e.dbg.apply(e,[o.op].concat(r))},j={basePath:"",debug:!1,forceTrailingSlash:!1,http:d,httpConfig:{},suffix:"",useFetch:!1};c(f.prototype,{afterCreate:C,afterCreateMany:C,afterDEL:C,afterDestroy:C,afterDestroyAll:C,afterFind:C,afterFindAll:C,afterGET:C,afterHTTP:C,afterPOST:C,afterPUT:C,afterUpdate:C,afterUpdateAll:C,afterUpdateMany:C,beforeCreate:w,beforeCreateMany:w,beforeDEL:w,beforeDestroy:w,beforeDestroyAll:w,beforeFind:w,beforeFindAll:w,beforeGET:w,beforeHTTP:w,beforePOST:w,beforePUT:w,beforeUpdate:w,beforeUpdateAll:w,beforeUpdateMany:w,create:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=U(r.suffix)?e.suffix:r.suffix,o=r.op="beforeCreate",z(n[o](e,t,r)).then(function(){return o=r.op="create",n.dbg(o,e,t,r),n.POST(n.getPath("create",e,t,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterCreate",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})},createMany:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=U(r.suffix)?e.suffix:r.suffix,o=r.op="beforeCreateMany",z(n[o](e,t,r)).then(function(){return o=r.op="createMany",n.dbg(o,e,t,r),n.POST(n.getPath("createMany",e,null,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterCreateMany",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})},dbg:function(){for(var e=arguments.length,t=Array(e),r=0;e>r;r++)t[r]=arguments[r];this.log.apply(this,["debug"].concat(t))},DEL:function(e,t,r){var n=this,o=void 0;return t||(t={}),r||(r={}),t.url=e||t.url,t.method=t.method||"delete",o=r.op="beforeDEL",z(n[o](e,t,r)).then(function(a){return t=U(a)?t:a,o=r.op="DEL",n.dbg(o,e,t,r),n.HTTP(t,r)}).then(function(a){return o=r.op="afterDEL",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})},deserialize:function(e,t,r){return r||(r={}),T(r.deserialize)?r.deserialize(e,t,r):T(e.deserialize)?e.deserialize(e,t,r):r.raw?t:t&&"data"in t?t.data:t},destroy:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=U(r.suffix)?e.suffix:r.suffix,o=r.op="beforeDestroy",z(n[o](e,t,r)).then(function(){return o=r.op="destroy",n.dbg(o,e,t,r),n.DEL(n.getPath("destroy",e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterDestroy",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})},destroyAll:function(e,t,r){var n=this,o=void 0;return t||(t={}),r=r?h(r):{},r.params||(r.params={}),m(r.params,t),r.params=n.queryTransform(e,r.params,r),r.suffix=U(r.suffix)?e.suffix:r.suffix,o=r.op="beforeDestroyAll",z(n.beforeDestroyAll(e,t,r)).then(function(){return o=r.op="destroyAll",n.dbg(o,e,t,r),n.DEL(n.getPath("destroyAll",e,null,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterDestroyAll",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})},error:function(){if(console){var e;(e=console)["function"==typeof console.error?"error":"log"].apply(e,arguments)}},fetch:function(e){function t(t,r){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}(function(e,t){var r={method:e.method,headers:new Headers(e.headers)};return e.data&&(r.body=D(e.data)),fetch(new Request(i(e.url,e.params),r)).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,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=U(r.suffix)?e.suffix:r.suffix,o=r.op="beforeFind",z(n[o](e,t,r)).then(function(){return o=r.op="find",n.dbg(o,e,t,r),n.GET(n.getPath("find",e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterFind",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})},findAll:function(e,t,r){var n=this,o=void 0;return t||(t={}),r=r?h(r):{},r.params||(r.params={}),r.suffix=U(r.suffix)?e.suffix:r.suffix,m(r.params,t),r.params=n.queryTransform(e,r.params,r),o=r.op="beforeFindAll",z(n[o](e,t,r)).then(function(){return o=r.op="findAll",n.dbg(o,e,t,r),n.GET(n.getPath("findAll",e,r.params,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterFindAll",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})},GET:function(e,t,r){var n=this,o=void 0;return t||(t={}),r||(r={}),t.url=e||t.url,t.method=t.method||"get",o=r.op="beforeGET",z(n[o](e,t,r)).then(function(a){return t=U(a)?t:a,o=r.op="GET",n.dbg(o,e,t,r),n.HTTP(t,r)}).then(function(a){return o=r.op="afterGET",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})},getEndpoint:function(e,t,r){var n=this;r||(r={}),r.params||(r.params={});var o=void 0,u=e.parentKey,i=r.hasOwnProperty("endpoint")?r.endpoint:e.endpoint,f=e.parentField,p=e.parent?e.getResource(e.parent):void 0,d=r.params[u];if(d===!1||!u||!p)return d===!1&&delete r.params[u],i;if(delete r.params[u],E(t)||x(t)?o=e.get(t):P(t)&&(o=t),o&&(d=d||o[u]||(o[f]?o[f][p.idAttribute]:null)),!d)return i;var c=function(){delete r.endpoint;var e={};return b(r,function(t,r){e[r]=t}),l(e,p),{v:a(n.getEndpoint(p,d,e,d,i))}}();return"object"===("undefined"==typeof c?"undefined":s(c))?c.v:void 0},getPath:function(e,t,r,n){var o=this;n||(n={});var u=[void 0===n.basePath?void 0===t.basePath?o.basePath:t.basePath:n.basePath,o.getEndpoint(t,E(r)||x(r)||"create"===e?r:null,n)];return("find"===e||"update"===e||"destroy"===e)&&u.push(r),a.apply(p.utils,u)},HTTP:function(e,t){function r(t){var r=o.toUTCString()+" - "+e.method.toUpperCase()+" "+e.url+" - "+t.status+" "+((new Date).getTime()-o.getTime())+"ms";return t.status>=200&&t.status<300?(n.log&&n.dbg("debug",r,t),t):(n.error&&n.error("'FAILED: "+r,t),q(t))}var n=this,o=new Date;t||(t={}),e=h(e),e=m(e,n.httpConfig),n.forceTrailingSlash&&"/"!==e.url[e.url.length-1]&&(e.url+="/"),e.method=e.method.toUpperCase();var a=e.suffix||t.suffix||n.suffix;if(a&&e.url.substr(e.url.length-a.length)!==a&&(e.url+=a),!n.http)throw new Error("You have not configured this adapter with an http library!");return z(n.beforeHTTP(e,t)).then(function(o){return e=o||e,S&&(n.useFetch||t.useFetch||!n.http)?n.fetch(e,t).then(r,r):n.http(e).then(r,r).catch(function(r){return n.responseError(r,e,t)})}).then(function(r){return z(n.afterHTTP(e,t,r)).then(function(e){return e||r})})},log:function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;t>n;n++)r[n-1]=arguments[n];if(e&&!r.length&&(r.push(e),e="debug"),"debug"!==e||this.debug){var o=e.toUpperCase()+": (HttpAdapter)";if(console[e]){var a;(a=console)[e].apply(a,[o].concat(r))}else{var u;(u=console).log.apply(u,[o].concat(r))}}},POST:function(e,t,r,n){var o=this,a=void 0;return r||(r={}),n||(n={}),r.url=e||r.url,r.data=t||r.data,r.method=r.method||"post",a=n.op="beforePOST",z(o[a](e,t,r,n)).then(function(u){return r=U(u)?r:u,a=n.op="POST",o.dbg(a,e,t,r,n),o.HTTP(r,n)}).then(function(u){return a=n.op="afterPOST",z(o[a](e,t,r,n,u)).then(function(e){return U(e)?u:e})})},PUT:function(e,t,r,n){var o=this,a=void 0;return r||(r={}),n||(n={}),r.url=e||r.url,r.data=t||r.data,r.method=r.method||"put",a=n.op="beforePUT",z(o[a](e,t,r,n)).then(function(u){return r=U(u)?r:u,a=n.op="PUT",o.dbg(a,e,t,r,n),o.HTTP(r,n)}).then(function(u){return a=n.op="afterPUT",z(o[a](e,t,r,n,u)).then(function(e){return U(e)?u:e})})},queryTransform:function(e,t,r){return r||(r={}),T(r.queryTransform)?r.queryTransform(e,t,r):T(e.queryTransform)?e.queryTransform(e,t,r):t},responseError:function(e,t,r){return q(e)},serialize:function(e,t,r){return r||(r={}),T(r.serialize)?r.serialize(e,t,r):T(e.serialize)?e.serialize(e,t,r):t},update:function(e,t,r,n){var o=this,a=void 0;return n=n?h(n):{},n.params||(n.params={}),n.params=o.queryTransform(e,n.params,n),n.suffix=U(n.suffix)?e.suffix:n.suffix,a=n.op="beforeUpdate",z(o[a](e,t,r,n)).then(function(){return a=n.op="update",o.dbg(a,e,t,r,n),o.PUT(o.getPath("update",e,t,n),o.serialize(e,r,n),n)}).then(function(t){return o.deserialize(e,t,n)}).then(function(u){return a=n.op="afterUpdate",z(o[a](e,t,r,n,u)).then(function(e){return U(e)?u:e})})},updateAll:function(e,t,r,n){var o=this,a=void 0;return r||(r={}),n=n?h(n):{},n.params||(n.params={}),m(n.params,r),n.params=o.queryTransform(e,n.params,n),n.suffix=U(n.suffix)?e.suffix:n.suffix,a=n.op="beforeUpdateAll",z(o[a](e,t,r,n)).then(function(){return a=n.op="updateAll",o.dbg(a,e,t,r,n),o.PUT(o.getPath("updateAll",e,null,n),o.serialize(e,t,n),n)}).then(function(t){return o.deserialize(e,t,n)}).then(function(u){return a=n.op="afterUpdateAll",z(o[a](e,t,r,n,u)).then(function(e){return U(e)?u:e})})},updateMany:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=U(r.suffix)?e.suffix:r.suffix,o=r.op="beforeUpdateMany",z(n[o](e,t,r)).then(function(){return o=r.op="updateMany",n.dbg(o,e,t,r),n.PUT(n.getPath("updateMany",e,null,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterUpdateMany",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})}}),f.addAction=function(e,t){if(!e||!E(e))throw new TypeError("action(name[, opts]): Expected: string, Found: "+("undefined"==typeof e?"undefined":s(e)));return function(r){if(r[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 q(e)},r[e]=function(r,n){var o=this;P(r)&&(n=r),n=n||{};var u=o.getAdapter(t.adapter||o.defaultAdapter||"http"),i={};if(y(i,t),!n.hasOwnProperty("endpoint")&&i.endpoint&&(n.endpoint=i.endpoint),"function"==typeof n.getEndpoint)i.url=n.getEndpoint(o,n);else{var f=[n.basePath||o.basePath||u.basePath,u.getEndpoint(o,A(r)?r:null,n)];A(r)&&f.push(r),f.push(t.pathname||e),i.url=a.apply(null,f)}return i.method=i.method||"GET",i.mapper=o.name,m(i)(n),z(i).then(n.request||t.request).then(function(e){return u.HTTP(e)}).then(function(e){return e&&e.config&&(e.config.mapper=o.name),e}).then(n.response||t.response,n.responseError||t.responseError)},r}},f.addActions=function(e){return e||(e={}),function(e){return b(e,function(t,r){f.addAction(r,t)(e)}),e}},f.extend=g,f.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=f},function(t,r){t.exports=e},function(e,t){e.exports=void 0}])}); //# sourceMappingURL=fetch/dist/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 837f349..b6db9a9 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_2__","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","forOwn","key","isArray","forEach","v","window","toString","toISOString","isObject","toJson","push","indexOf","HttpAdapter","opts","self","fillIn","DEFAULTS","_typeof","Symbol","iterator","obj","constructor","_jsData","axios","_","utils","addHiddenPropsToTarget","copy","deepMixIn","extend","isFunction","isNumber","isSorN","isString","isUndefined","resolve","reject","hasFetch","fetch","e","noop","_len2","_key2","dbg","apply","op","concat","noop2","_len3","_key3","basePath","debug","forceTrailingSlash","http","httpConfig","suffix","useFetch","prototype","afterCreate","afterCreateMany","afterDEL","afterDestroy","afterDestroyAll","afterFind","afterFindAll","afterGET","afterHTTP","afterPOST","afterPUT","afterUpdate","afterUpdateAll","afterUpdateMany","beforeCreate","beforeCreateMany","beforeDEL","beforeDestroy","beforeDestroyAll","beforeFind","beforeFindAll","beforeGET","beforeHTTP","beforePOST","beforePUT","beforeUpdate","beforeUpdateAll","beforeUpdateMany","create","mapper","props","undefined","queryTransform","then","POST","getPath","serialize","response","deserialize","data","_data","createMany","records","_len4","_key4","log","DEL","config","method","_config","HTTP","_response","raw","destroy","destroyAll","query","error","console","_console","_fetch","_x","_x2","requestConfig","headers","Headers","body","Request","json","find","GET","findAll","getEndpoint","_this","item","parentKey","endpoint","hasOwnProperty","parentField","parentDef","parent","getResource","parentId","get","idAttribute","_ret","_opts","logResponse","str","start","toUTCString","toUpperCase","status","Date","getTime","substr","Error","catch","err","responseError","level","_len5","_key5","prefix","_console2","_console3","PUT","update","updateAll","updateMany","addAction","name","TypeError","request","adapter","getAdapter","defaultAdapter","_args","defaults","pathname","addActions","version","full","major","parseInt","minor","patch","alpha","beta"],"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_2__","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","forOwn","key","isArray","forEach","v","window","toString","toISOString","isObject","toJson","push","indexOf","HttpAdapter","opts","self","fillIn","DEFAULTS","_typeof","Symbol","iterator","obj","constructor","_jsData","axios","_","utils","addHiddenPropsToTarget","copy","deepMixIn","extend","isFunction","isNumber","isSorN","isString","isUndefined","resolve","reject","hasFetch","fetch","e","noop","_len2","_key2","dbg","apply","op","concat","noop2","_len3","_key3","basePath","debug","forceTrailingSlash","http","httpConfig","suffix","useFetch","prototype","afterCreate","afterCreateMany","afterDEL","afterDestroy","afterDestroyAll","afterFind","afterFindAll","afterGET","afterHTTP","afterPOST","afterPUT","afterUpdate","afterUpdateAll","afterUpdateMany","beforeCreate","beforeCreateMany","beforeDEL","beforeDestroy","beforeDestroyAll","beforeFind","beforeFindAll","beforeGET","beforeHTTP","beforePOST","beforePUT","beforeUpdate","beforeUpdateAll","beforeUpdateMany","create","mapper","props","undefined","queryTransform","then","POST","getPath","serialize","response","deserialize","data","_data","createMany","records","_len4","_key4","log","DEL","config","method","_config","HTTP","_response","raw","destroy","destroyAll","query","error","console","_console","_fetch","_x","_x2","requestConfig","headers","Headers","body","Request","json","find","GET","findAll","getEndpoint","_this","item","parentKey","endpoint","hasOwnProperty","parentField","parentDef","parent","getResource","parentId","get","idAttribute","_ret","_opts","logResponse","str","start","toUTCString","toUpperCase","status","Date","getTime","substr","Error","catch","err","responseError","level","_len5","_key5","prefix","_console2","_console3","PUT","update","updateAll","updateMany","addAction","name","TypeError","request","adapter","getAdapter","defaultAdapter","_args","pathname","addActions","version","full","major","parseInt","minor","patch","alpha","beta"],"mappings":"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","file":"fetch/dist/js-data-fetch.min.js"} \ No newline at end of file diff --git a/fetch/package.json b/fetch/package.json index f0e57d5..2c801d6 100644 --- a/fetch/package.json +++ b/fetch/package.json @@ -2,7 +2,7 @@ "name": "js-data-fetch", "description": "HTTP adapter for js-data that uses fetch.", "version": "3.0.0-alpha.4", - "homepage": "http://www.js-data.io/docs/dshttpadapter", + "homepage": "https://github.com/js-data/js-data-http", "repository": { "type": "git", "url": "https://github.com/js-data/js-data-http.git" diff --git a/node/dist/js-data-http-node.js b/node/dist/js-data-http-node.js index e6db31d..a642350 100644 --- a/node/dist/js-data-http-node.js +++ b/node/dist/js-data-http-node.js @@ -1,6 +1,6 @@ /*! * js-data-http-node -* @version 3.0.0-alpha.4 - Homepage +* @version 3.0.0-alpha.4 - Homepage * @author Jason Dobry * @copyright (c) 2014-2016 Jason Dobry * @license MIT @@ -755,7 +755,7 @@ return /******/ (function(modules) { // webpackBootstrap /** * Log an error. * - * @name HttpAdapter + * @name HttpAdapter#error * @method * @param {...*} [args] Arguments to log. */ @@ -771,7 +771,7 @@ return /******/ (function(modules) { // webpackBootstrap /** * Make an Http request using `window.fetch`. * - * @name HttpAdapter + * @name HttpAdapter#fetch * @method * @param {Object} config Request configuration. * @param {Object} config.data Payload for the request. @@ -1329,7 +1329,7 @@ return /******/ (function(modules) { // webpackBootstrap * {@link HttpAdapter#afterUpdateMany} will be called after calling * {@link HttpAdapter#PUT}. * - * @name HttpAdapter + * @name HttpAdapter#updateMany * @method * @param {Object} mapper The mapper. * @param {Array} records Array of property objects to send as the payload. @@ -1412,7 +1412,7 @@ return /******/ (function(modules) { // webpackBootstrap if (typeof _opts.getEndpoint === 'function') { config.url = _opts.getEndpoint(self, _opts); } else { - var _args = [_opts.basePath || self.basePath || adapter.defaults.basePath, adapter.getEndpoint(self, isSorN(id) ? id : null, _opts)]; + var _args = [_opts.basePath || self.basePath || adapter.basePath, adapter.getEndpoint(self, isSorN(id) ? id : null, _opts)]; if (isSorN(id)) { _args.push(id); } diff --git a/node/dist/js-data-http-node.js.map b/node/dist/js-data-http-node.js.map index 34c794e..ac14657 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 018089f84ba9f5391092","webpack:///./src/index.js","webpack:///external \"js-data\"","webpack:///external \"axios\""],"names":[],"mappings":"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","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_2__) {\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 018089f84ba9f5391092\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nconst {\n _,\n addHiddenPropsToTarget,\n copy,\n deepMixIn,\n extend,\n fillIn,\n forOwn,\n isArray,\n isFunction,\n isNumber,\n isObject,\n isSorN,\n isString,\n isUndefined,\n resolve,\n reject,\n toJson\n} = utils\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 forOwn(params, function (val, key) {\n if (val === null || typeof val === 'undefined') {\n return\n }\n if (!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 (isObject(v)) {\n v = 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 noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n}\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#debug\n * @type {boolean}\n * @default false\n */\n debug: false,\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 * @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\n // Default values for arguments\n opts || (opts = {})\n\n fillIn(self, opts)\n fillIn(self, DEFAULTS)\n}\n\naddHiddenPropsToTarget(HttpAdapter.prototype, {\n /**\n * @name HttpAdapter#afterCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreate: noop2,\n\n /**\n * @name HttpAdapter#afterCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreateMany: noop2,\n\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#afterDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroy: noop2,\n\n /**\n * @name HttpAdapter#afterDestroyAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroyAll: noop2,\n\n /**\n * @name HttpAdapter#afterFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFind: noop2,\n\n /**\n * @name HttpAdapter#afterFindAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFindAll: 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#afterUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdate: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateAll: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateMany: noop2,\n\n /**\n * @name HttpAdapter#beforeCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n */\n beforeCreate: noop,\n\n /**\n * @name HttpAdapter#beforeCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeCreateMany: noop,\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#beforeDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeDestroy: noop,\n\n /**\n * @name HttpAdapter#beforeDestroyAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeDestroyAll: noop,\n\n /**\n * @name HttpAdapter#beforeFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeFind: noop,\n\n /**\n * @name HttpAdapter#beforeFindAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeFindAll: 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 /**\n * @name HttpAdapter#beforeUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n */\n beforeUpdate: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n */\n beforeUpdateAll: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeUpdateMany: noop,\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreate lifecycle hook\n op = opts.op = 'beforeCreate'\n return resolve(self[op](mapper, props, opts)).then(function () {\n op = opts.op = 'create'\n self.dbg(op, mapper, props, opts)\n return self.POST(\n self.getPath('create', mapper, props, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreate lifecycle hook\n op = opts.op = 'afterCreate'\n return resolve(self[op](mapper, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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} 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 createMany (mapper, records, opts) {\n const self = this\n let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreateMany lifecycle hook\n op = opts.op = 'beforeCreateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'createMany'\n self.dbg(op, mapper, records, opts)\n return self.POST(\n self.getPath('createMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreateMany lifecycle hook\n op = opts.op = 'afterCreateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n },\n\n /**\n * Call {@link HttpAdapter#log} at the \"debug\" level.\n *\n * @name HttpAdapter#dbg\n * @method\n * @param {...*} [args] Args passed to {@link HttpAdapter#log}.\n */\n dbg (...args) {\n this.log('debug', ...args)\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.deserialize)) {\n return opts.deserialize(mapper, response, opts)\n }\n if (isFunction(mapper.deserialize)) {\n return mapper.deserialize(mapper, response, opts)\n }\n if (opts.raw) {\n return response\n }\n return response ? ('data' in response ? response.data : response) : 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroy lifecycle hook\n op = opts.op = 'beforeDestroy'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy'\n self.dbg(op, mapper, id, opts)\n return self.DEL(\n self.getPath('destroy', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroy lifecycle hook\n op = opts.op = 'afterDestroy'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroyAll lifecycle hook\n op = opts.op = 'beforeDestroyAll'\n return resolve(self.beforeDestroyAll(mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll'\n self.dbg(op, mapper, query, opts)\n return self.DEL(\n self.getPath('destroyAll', mapper, null, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n },\n\n /**\n * Log an error.\n *\n * @name HttpAdapter\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\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 = 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeFind lifecycle hook\n op = opts.op = 'beforeFind'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find'\n self.dbg(op, mapper, id, opts)\n return self.GET(\n self.getPath('find', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFind lifecycle hook\n op = opts.op = 'afterFind'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll'\n return resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll'\n self.dbg(op, mapper, query, opts)\n return self.GET(\n self.getPath('findAll', mapper, opts.params, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFindAll lifecycle hook\n op = opts.op = 'afterFindAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 opts || (opts = {})\n opts.params || (opts.params = {})\n\n let item\n const parentKey = mapper.parentKey\n const endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : mapper.endpoint\n let parentField = mapper.parentField\n const parentDef = mapper.parent ? mapper.getResource(mapper.parent) : undefined\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 endpoint\n } else {\n delete opts.params[parentKey]\n\n if (isString(id) || isNumber(id)) {\n item = mapper.get(id)\n } else if (isObject(id)) {\n item = id\n }\n\n if (item) {\n parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null)\n }\n\n if (parentId) {\n delete opts.endpoint\n const _opts = {}\n forOwn(opts, function (value, key) {\n _opts[key] = value\n })\n _(_opts, parentDef)\n return makePath(this.getEndpoint(parentDef, parentId, _opts, parentId, endpoint))\n } else {\n return endpoint\n }\n }\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 opts.basePath === undefined ? (mapper.basePath === undefined ? self.basePath : mapper.basePath) : opts.basePath,\n self.getEndpoint(mapper, (isString(id) || 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 /**\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 config = copy(config)\n config = deepMixIn(config, self.httpConfig)\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 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 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 resolve(self.afterHTTP(config, opts, response)).then(function (_response) {\n return _response || response\n })\n })\n },\n\n /**\n * Log the provided arguments at the specified leve.\n *\n * @name HttpAdapter#log\n * @method\n * @param {string} level Log level.\n * @param {...*} [args] Arguments to log.\n */\n log (level, ...args) {\n if (level && !args.length) {\n args.push(level)\n level = 'debug'\n }\n if (level === 'debug' && !this.debug) {\n return\n }\n const prefix = `${level.toUpperCase()}: (HttpAdapter)`\n if (console[level]) {\n console[level](prefix, ...args)\n } else {\n console.log(prefix, ...args)\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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.queryTransform)) {\n return opts.queryTransform(mapper, params, opts)\n }\n if (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 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 (isFunction(opts.serialize)) {\n return opts.serialize(mapper, data, opts)\n }\n if (isFunction(mapper.serialize)) {\n return mapper.serialize(mapper, data, opts)\n }\n return data\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdate lifecycle hook\n op = opts.op = 'beforeUpdate'\n return resolve(self[op](mapper, id, props, opts)).then(function () {\n op = opts.op = 'update'\n self.dbg(op, mapper, id, props, opts)\n return self.PUT(\n self.getPath('update', mapper, id, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdate lifecycle hook\n op = opts.op = 'afterUpdate'\n return resolve(self[op](mapper, id, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateAll lifecycle hook\n op = opts.op = 'beforeUpdateAll'\n return resolve(self[op](mapper, props, query, opts)).then(function () {\n op = opts.op = 'updateAll'\n self.dbg(op, mapper, props, query, opts)\n return self.PUT(\n self.getPath('updateAll', mapper, null, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateAll lifecycle hook\n op = opts.op = 'afterUpdateAll'\n return resolve(self[op](mapper, props, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'updateMany'\n self.dbg(op, mapper, records, opts)\n return self.PUT(\n self.getPath('updateMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateMany lifecycle hook\n op = opts.op = 'afterUpdateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n }\n})\n\n/**\n * Add an Http actions to a mapper.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.addAction = function (name, opts) {\n if (!name || !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 reject(err) }\n mapper[name] = function (id, _opts) {\n const self = this\n if (isObject(id)) {\n _opts = id\n }\n _opts = _opts || {}\n let adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http')\n let config = {}\n 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.defaults.basePath,\n adapter.getEndpoint(self, isSorN(id) ? id : null, _opts)\n ]\n if (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 deepMixIn(config)(_opts)\n return 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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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 = extend\n\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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 **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"axios\"\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 6f49bab2f976606648e0","webpack:///./src/index.js","webpack:///external \"js-data\"","webpack:///external \"axios\""],"names":[],"mappings":"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","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_2__) {\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 6f49bab2f976606648e0\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nconst {\n _,\n addHiddenPropsToTarget,\n copy,\n deepMixIn,\n extend,\n fillIn,\n forOwn,\n isArray,\n isFunction,\n isNumber,\n isObject,\n isSorN,\n isString,\n isUndefined,\n resolve,\n reject,\n toJson\n} = utils\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 forOwn(params, function (val, key) {\n if (val === null || typeof val === 'undefined') {\n return\n }\n if (!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 (isObject(v)) {\n v = 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 noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n}\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#debug\n * @type {boolean}\n * @default false\n */\n debug: false,\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 * @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\n // Default values for arguments\n opts || (opts = {})\n\n fillIn(self, opts)\n fillIn(self, DEFAULTS)\n}\n\naddHiddenPropsToTarget(HttpAdapter.prototype, {\n /**\n * @name HttpAdapter#afterCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreate: noop2,\n\n /**\n * @name HttpAdapter#afterCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreateMany: noop2,\n\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#afterDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroy: noop2,\n\n /**\n * @name HttpAdapter#afterDestroyAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroyAll: noop2,\n\n /**\n * @name HttpAdapter#afterFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFind: noop2,\n\n /**\n * @name HttpAdapter#afterFindAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFindAll: 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#afterUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdate: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateAll: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateMany: noop2,\n\n /**\n * @name HttpAdapter#beforeCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n */\n beforeCreate: noop,\n\n /**\n * @name HttpAdapter#beforeCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeCreateMany: noop,\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#beforeDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeDestroy: noop,\n\n /**\n * @name HttpAdapter#beforeDestroyAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeDestroyAll: noop,\n\n /**\n * @name HttpAdapter#beforeFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeFind: noop,\n\n /**\n * @name HttpAdapter#beforeFindAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeFindAll: 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 /**\n * @name HttpAdapter#beforeUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n */\n beforeUpdate: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n */\n beforeUpdateAll: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeUpdateMany: noop,\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreate lifecycle hook\n op = opts.op = 'beforeCreate'\n return resolve(self[op](mapper, props, opts)).then(function () {\n op = opts.op = 'create'\n self.dbg(op, mapper, props, opts)\n return self.POST(\n self.getPath('create', mapper, props, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreate lifecycle hook\n op = opts.op = 'afterCreate'\n return resolve(self[op](mapper, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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} 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 createMany (mapper, records, opts) {\n const self = this\n let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreateMany lifecycle hook\n op = opts.op = 'beforeCreateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'createMany'\n self.dbg(op, mapper, records, opts)\n return self.POST(\n self.getPath('createMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreateMany lifecycle hook\n op = opts.op = 'afterCreateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n },\n\n /**\n * Call {@link HttpAdapter#log} at the \"debug\" level.\n *\n * @name HttpAdapter#dbg\n * @method\n * @param {...*} [args] Args passed to {@link HttpAdapter#log}.\n */\n dbg (...args) {\n this.log('debug', ...args)\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.deserialize)) {\n return opts.deserialize(mapper, response, opts)\n }\n if (isFunction(mapper.deserialize)) {\n return mapper.deserialize(mapper, response, opts)\n }\n if (opts.raw) {\n return response\n }\n return response ? ('data' in response ? response.data : response) : 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroy lifecycle hook\n op = opts.op = 'beforeDestroy'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy'\n self.dbg(op, mapper, id, opts)\n return self.DEL(\n self.getPath('destroy', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroy lifecycle hook\n op = opts.op = 'afterDestroy'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroyAll lifecycle hook\n op = opts.op = 'beforeDestroyAll'\n return resolve(self.beforeDestroyAll(mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll'\n self.dbg(op, mapper, query, opts)\n return self.DEL(\n self.getPath('destroyAll', mapper, null, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 = 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeFind lifecycle hook\n op = opts.op = 'beforeFind'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find'\n self.dbg(op, mapper, id, opts)\n return self.GET(\n self.getPath('find', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFind lifecycle hook\n op = opts.op = 'afterFind'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll'\n return resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll'\n self.dbg(op, mapper, query, opts)\n return self.GET(\n self.getPath('findAll', mapper, opts.params, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFindAll lifecycle hook\n op = opts.op = 'afterFindAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 opts || (opts = {})\n opts.params || (opts.params = {})\n\n let item\n const parentKey = mapper.parentKey\n const endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : mapper.endpoint\n let parentField = mapper.parentField\n const parentDef = mapper.parent ? mapper.getResource(mapper.parent) : undefined\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 endpoint\n } else {\n delete opts.params[parentKey]\n\n if (isString(id) || isNumber(id)) {\n item = mapper.get(id)\n } else if (isObject(id)) {\n item = id\n }\n\n if (item) {\n parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null)\n }\n\n if (parentId) {\n delete opts.endpoint\n const _opts = {}\n forOwn(opts, function (value, key) {\n _opts[key] = value\n })\n _(_opts, parentDef)\n return makePath(this.getEndpoint(parentDef, parentId, _opts, parentId, endpoint))\n } else {\n return endpoint\n }\n }\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 opts.basePath === undefined ? (mapper.basePath === undefined ? self.basePath : mapper.basePath) : opts.basePath,\n self.getEndpoint(mapper, (isString(id) || 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 /**\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 config = copy(config)\n config = deepMixIn(config, self.httpConfig)\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 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 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 resolve(self.afterHTTP(config, opts, response)).then(function (_response) {\n return _response || response\n })\n })\n },\n\n /**\n * Log the provided arguments at the specified leve.\n *\n * @name HttpAdapter#log\n * @method\n * @param {string} level Log level.\n * @param {...*} [args] Arguments to log.\n */\n log (level, ...args) {\n if (level && !args.length) {\n args.push(level)\n level = 'debug'\n }\n if (level === 'debug' && !this.debug) {\n return\n }\n const prefix = `${level.toUpperCase()}: (HttpAdapter)`\n if (console[level]) {\n console[level](prefix, ...args)\n } else {\n console.log(prefix, ...args)\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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.queryTransform)) {\n return opts.queryTransform(mapper, params, opts)\n }\n if (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 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 (isFunction(opts.serialize)) {\n return opts.serialize(mapper, data, opts)\n }\n if (isFunction(mapper.serialize)) {\n return mapper.serialize(mapper, data, opts)\n }\n return data\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdate lifecycle hook\n op = opts.op = 'beforeUpdate'\n return resolve(self[op](mapper, id, props, opts)).then(function () {\n op = opts.op = 'update'\n self.dbg(op, mapper, id, props, opts)\n return self.PUT(\n self.getPath('update', mapper, id, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdate lifecycle hook\n op = opts.op = 'afterUpdate'\n return resolve(self[op](mapper, id, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateAll lifecycle hook\n op = opts.op = 'beforeUpdateAll'\n return resolve(self[op](mapper, props, query, opts)).then(function () {\n op = opts.op = 'updateAll'\n self.dbg(op, mapper, props, query, opts)\n return self.PUT(\n self.getPath('updateAll', mapper, null, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateAll lifecycle hook\n op = opts.op = 'afterUpdateAll'\n return resolve(self[op](mapper, props, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'updateMany'\n self.dbg(op, mapper, records, opts)\n return self.PUT(\n self.getPath('updateMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateMany lifecycle hook\n op = opts.op = 'afterUpdateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n }\n})\n\n/**\n * Add an Http actions to a mapper.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.addAction = function (name, opts) {\n if (!name || !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 reject(err) }\n mapper[name] = function (id, _opts) {\n const self = this\n if (isObject(id)) {\n _opts = id\n }\n _opts = _opts || {}\n let adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http')\n let config = {}\n 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, isSorN(id) ? id : null, _opts)\n ]\n if (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 deepMixIn(config)(_opts)\n return 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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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 = extend\n\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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 **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"axios\"\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/node/package.json b/node/package.json index c9335ec..d8fbcf6 100644 --- a/node/package.json +++ b/node/package.json @@ -2,7 +2,7 @@ "name": "js-data-http-node", "description": "Node.js HTTP adapter for js-data.", "version": "3.0.0-alpha.4", - "homepage": "http://www.js-data.io/docs/dshttpadapter", + "homepage": "https://github.com/js-data/js-data-http", "repository": { "type": "git", "url": "https://github.com/js-data/js-data-http.git" diff --git a/scripts/cleanup.js b/scripts/cleanup.js new file mode 100644 index 0000000..692ec4e --- /dev/null +++ b/scripts/cleanup.js @@ -0,0 +1,25 @@ +var fs = require('fs') + +var pkg = require('../package.json') + +var path = './doc/js-data-http/' + pkg.version + '/styles/' + +var files = fs.readdirSync(path) +files.forEach(function (file) { + if (file.indexOf('site') === 0) { + if (file.indexOf('lumen') === -1 && file.indexOf('dibs') === -1) { + fs.unlinkSync(path + file) + } + } +}) + +path = './doc/js-data-http/' + pkg.version + +files = fs.readdirSync(path) +files.forEach(function (file) { + if (file.indexOf('.html') === file.length - 5) { + var content = fs.readFileSync(path + '/' + file, { encoding: 'utf8' }) + content = content.replace(/\/home\/ubuntu\/workspace\//gi, '') + fs.writeFileSync(path + '/' + file, content, { encoding: 'utf8' }) + } +}) diff --git a/src/index.js b/src/index.js index d9a2b11..7e188c8 100644 --- a/src/index.js +++ b/src/index.js @@ -129,7 +129,7 @@ class DSHttpAdapter { /** * Make an Http request using `window.fetch`. * - * @name HttpAdapter + * @name HttpAdapter#fetch * @method * @param {Object} config Request configuration. * @param {Object} config.data Payload for the request. From 2cf30160e77226553e97988a45f3fcb29165092c Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Tue, 23 Feb 2016 13:19:26 -0800 Subject: [PATCH 12/24] Rebase --- .gitignore | 4 +- CONTRIBUTORS | 2 +- README.md | 20 +- bower.json | 12 +- dist/js-data-http.js | 1903 +++++++--------------------- dist/js-data-http.js.map | 2 +- dist/js-data-http.min.js | 13 +- dist/js-data-http.min.map | 6 +- fetch/AUTHORS | 12 + fetch/CONTRIBUTORS | 11 + fetch/dist/js-data-fetch.js | 142 ++- fetch/dist/js-data-fetch.js.map | 2 +- fetch/dist/js-data-fetch.min.js | 11 +- fetch/dist/js-data-fetch.min.map | 2 +- fetch/package.json | 6 +- karma.conf.js | 98 +- node/AUTHORS | 12 + node/CONTRIBUTORS | 11 + node/dist/js-data-http-node.js | 142 ++- node/dist/js-data-http-node.js.map | 2 +- node/package.json | 6 +- package.json | 54 +- scripts/authors.js | 12 + src/index.js | 1397 ++++++++++++++++---- webpack.config.js | 12 +- 25 files changed, 1993 insertions(+), 1901 deletions(-) create mode 100644 fetch/AUTHORS create mode 100644 fetch/CONTRIBUTORS create mode 100644 node/AUTHORS create mode 100644 node/CONTRIBUTORS diff --git a/.gitignore b/.gitignore index 815fef0..8b9948d 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,6 @@ bower_components/ *.iml coverage/ -junit/ \ No newline at end of file +junit/ +doc/ +node_modules/ \ No newline at end of file diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 9cf3079..3398b84 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -6,7 +6,7 @@ # [commit count] Name 1 InternalFX 1 Ivan Voznyakovsky - 56 Jason Dobry + 66 Jason Dobry 1 Josh Drake 1 RobertHerhold 3 Tomás Fox diff --git a/README.md b/README.md index 25ce7c5..358c764 100644 --- a/README.md +++ b/README.md @@ -9,13 +9,24 @@ [![Coverage Status][cov_b]][cov_l] [![Codacy][cod_b]][cod_l] -HTTP adapter for [js-data](http://www.js-data.io/). +This repo contains HTTP adapters for [js-data](http://www.js-data.io/): + +- js-data-http - HTTP (XHR, includes [axios][axios]) adapter for js-data in the +browser. Capable of using `window.fetch` instead of axios. +- js-data-fetch - Same as js-data-http but doesn't include axios and will use +`window.fetch` if available and if you don't provide your own http library. +- js-data-http-node - Same as js-data-http but runs on Node.js. Depends on axios +and will use axios unless you provide a different http library. + +Tested on IE9, Chrome 46, Firefox 41 & Safari 7.1 using +bs logo To get started, visit __[http://js-data.io](http://www.js-data.io)__. ## Table of contents * [Quick start](#quick-start) +* [Dependencies](#dependencies) * [Guides and Tutorials](#guides-and-tutorials) * [API Reference Docs](#api-reference-docs) * [Community](#community) @@ -48,6 +59,13 @@ container.find('school', 1).then(function (school) { }) ``` +## Dependencies + +`js-data-http` bundles axios and depends on `js-data`. `js-data-fetch` depends +on `js-data`. `js-data-http-node` depends on `js-data` and optionally axios. + +See [JSData's dependencies](https://github.com/js-data/js-data/blob/master/README.md#dependencies). + ## Guides and Tutorials [Get started at http://js-data.io](http://js-data.io) diff --git a/bower.json b/bower.json index d6ec02a..e5a1550 100644 --- a/bower.json +++ b/bower.json @@ -1,16 +1,12 @@ { "name": "js-data-http", - "description": "HTTP adapter for js-data.", - "homepage": "http://www.js-data.io/docs/dshttpadapter", + "description": "HTTP (XHR) adapter for js-data in the browser.", + "homepage": "https://github.com/js-data/js-data-http", "repository": { "type": "git", "url": "https://github.com/js-data/js-data-http.git" }, - "author": { - "name": "Jason Dobry", - "url": "http://www.pseudobry.com", - "email": "jason.dobry@gmail.com" - }, + "author": "js-data-http project authors", "main": "./dist/js-data-http.js", "ignore": [ ".idea/", @@ -31,6 +27,6 @@ "karma.start.js" ], "dependencies": { - "js-data": ">=3.0.0-alpha.8" + "js-data": ">=3.0.0-alpha.15" } } diff --git a/dist/js-data-http.js b/dist/js-data-http.js index a0d8465..3ef2051 100644 --- a/dist/js-data-http.js +++ b/dist/js-data-http.js @@ -1,12 +1,3 @@ -/*! -* js-data-http -* @version 2.2.1 - Homepage -* @author Jason Dobry -* @copyright (c) 2014-2016 Jason Dobry -* @license MIT -* -* @overview HTTP adapter for js-data. -*/ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(require("js-data")); @@ -67,34 +58,106 @@ return /******/ (function(modules) { // webpackBootstrap var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; - var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + var _jsData = __webpack_require__(1); function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - - var JSData = __webpack_require__(1); - var axios = null; + /* global fetch:true Headers:true Request:true */ + var axios = __webpack_require__(2); + var _ = _jsData.utils._; + var addHiddenPropsToTarget = _jsData.utils.addHiddenPropsToTarget; + var copy = _jsData.utils.copy; + var deepMixIn = _jsData.utils.deepMixIn; + var extend = _jsData.utils.extend; + var fillIn = _jsData.utils.fillIn; + var forOwn = _jsData.utils.forOwn; + var isArray = _jsData.utils.isArray; + var isFunction = _jsData.utils.isFunction; + var isNumber = _jsData.utils.isNumber; + var isObject = _jsData.utils.isObject; + var isSorN = _jsData.utils.isSorN; + var isString = _jsData.utils.isString; + var isUndefined = _jsData.utils.isUndefined; + var resolve = _jsData.utils.resolve; + var reject = _jsData.utils.reject; + var toJson = _jsData.utils.toJson; + + + var hasFetch = false; try { - axios = __webpack_require__(2); + hasFetch = window && window.fetch; } catch (e) {} - var DSUtils = JSData.DSUtils; - var deepMixIn = DSUtils.deepMixIn; - var removeCircular = DSUtils.removeCircular; - var copy = DSUtils.copy; - var makePath = DSUtils.makePath; - var isString = DSUtils.isString; - var isNumber = DSUtils.isNumber; - - var Defaults = function () { - function Defaults() { - _classCallCheck(this, Defaults); + function isValidString(value) { + return value != null && value !== ''; + } + function join(items, separator) { + separator || (separator = ''); + return items.filter(isValidString).join(separator); + } + function makePath() { + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; } - // Default values for arguments - opts || (opts = {}); + var result = join(args, '/'); + return result.replace(/([^:\/]|^)\/{2,}/g, '$1/'); + } + + function encode(val) { + return encodeURIComponent(val).replace(/%40/gi, '@').replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+').replace(/%5B/gi, '[').replace(/%5D/gi, ']'); + } + + function buildUrl(url, params) { + if (!params) { + return url; + } + + var parts = []; + + forOwn(params, function (val, key) { + if (val === null || typeof val === 'undefined') { + return; + } + if (!isArray(val)) { + val = [val]; + } + + val.forEach(function (v) { + if (window.toString.call(v) === '[object Date]') { + v = v.toISOString(); + } else if (isObject(v)) { + v = toJson(v); + } + parts.push(encode(key) + '=' + encode(v)); + }); + }); + + if (parts.length > 0) { + url += (url.indexOf('?') === -1 ? '?' : '&') + parts.join('&'); + } + + return url; + } + + var noop = function noop() { + var self = this; + + for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + + var opts = args[args.length - 1]; + self.dbg.apply(self, [opts.op].concat(args)); + }; + + var noop2 = function noop2() { + var self = this; + + for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { + args[_key3] = arguments[_key3]; + } var opts = args[args.length - 2]; self.dbg.apply(self, [opts.op].concat(args)); @@ -458,7 +521,7 @@ return /******/ (function(modules) { // webpackBootstrap */ create: function create(mapper, props, opts) { var self = this; - var op = undefined; + var op = void 0; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(mapper, opts.params, opts); @@ -497,7 +560,7 @@ return /******/ (function(modules) { // webpackBootstrap */ createMany: function createMany(mapper, records, opts) { var self = this; - var op = undefined; + var op = void 0; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(mapper, opts.params, opts); @@ -551,7 +614,7 @@ return /******/ (function(modules) { // webpackBootstrap */ DEL: function DEL(url, config, opts) { var self = this; - var op = undefined; + var op = void 0; config || (config = {}); opts || (opts = {}); config.url = url || config.url; @@ -598,22 +661,100 @@ return /******/ (function(modules) { // webpackBootstrap if (opts.raw) { return response; } - }, { - key: 'log', - value: function log() {} - }, { - key: 'error', - value: function error() {} - }]); + return response ? 'data' in response ? response.data : response : response; + }, + + + /** + * Destroy the record with the given primary key. + * + * @name HttpAdapter#destroy + * @method + * @param {Object} mapper The mapper. + * @param {(string|number)} id Primary key of the record to destroy. + * @param {Object} [opts] Configuration options. + * @param {string} [opts.params] TODO + * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO + * @return {Promise} + */ + destroy: function destroy(mapper, id, opts) { + var self = this; + var op = void 0; + opts = opts ? copy(opts) : {}; + opts.params || (opts.params = {}); + opts.params = self.queryTransform(mapper, opts.params, opts); + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; + + // beforeDestroy lifecycle hook + op = opts.op = 'beforeDestroy'; + return resolve(self[op](mapper, id, opts)).then(function () { + op = opts.op = 'destroy'; + self.dbg(op, mapper, id, opts); + return self.DEL(self.getPath('destroy', mapper, id, opts), opts); + }).then(function (response) { + return self.deserialize(mapper, response, opts); + }).then(function (data) { + // afterDestroy lifecycle hook + op = opts.op = 'afterDestroy'; + return resolve(self[op](mapper, id, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data; + }); + }); + }, + - return Defaults; - }(); + /** + * Destroy the records that match the selection `query`. + * + * @name HttpAdapter#destroyAll + * @method + * @param {Object} mapper The mapper. + * @param {Object} query Selection query. + * @param {Object} [opts] Configuration options. + * @param {string} [opts.params] TODO + * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO + * @return {Promise} + */ + destroyAll: function destroyAll(mapper, query, opts) { + var self = this; + var op = void 0; + query || (query = {}); + opts = opts ? copy(opts) : {}; + opts.params || (opts.params = {}); + deepMixIn(opts.params, query); + opts.params = self.queryTransform(mapper, opts.params, opts); + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; - var defaultsPrototype = Defaults.prototype; + // beforeDestroyAll lifecycle hook + op = opts.op = 'beforeDestroyAll'; + return resolve(self.beforeDestroyAll(mapper, query, opts)).then(function () { + op = opts.op = 'destroyAll'; + self.dbg(op, mapper, query, opts); + return self.DEL(self.getPath('destroyAll', mapper, null, opts), opts); + }).then(function (response) { + return self.deserialize(mapper, response, opts); + }).then(function (data) { + // afterDestroyAll lifecycle hook + op = opts.op = 'afterDestroyAll'; + return resolve(self[op](mapper, query, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data; + }); + }); + }, - defaultsPrototype.basePath = ''; - defaultsPrototype.forceTrailingSlash = ''; + /** + * Log an error. + * + * @name HttpAdapter#error + * @method + * @param {...*} [args] Arguments to log. + */ + error: function error() { + if (console) { + var _console; (_console = console)[typeof console.error === 'function' ? 'error' : 'log'].apply(_console, arguments); } @@ -638,11 +779,17 @@ return /******/ (function(modules) { // webpackBootstrap return _fetch.apply(this, arguments); } - defaultsPrototype.verbsUseBasePath = false; + fetch.toString = function () { + return _fetch.toString(); + }; - var DSHttpAdapter = function () { - function DSHttpAdapter(options) { - _classCallCheck(this, DSHttpAdapter); + return fetch; + }(function (config, opts) { + var requestConfig = { + method: config.method, + // turn the plain headers object into the Fetch Headers object + headers: new Headers(config.headers) + }; if (config.data) { requestConfig.body = toJson(config.data); @@ -675,7 +822,7 @@ return /******/ (function(modules) { // webpackBootstrap */ find: function find(mapper, id, opts) { var self = this; - var op = undefined; + var op = void 0; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(mapper, opts.params, opts); @@ -714,7 +861,7 @@ return /******/ (function(modules) { // webpackBootstrap */ findAll: function findAll(mapper, query, opts) { var self = this; - var op = undefined; + var op = void 0; query || (query = {}); opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); @@ -753,7 +900,7 @@ return /******/ (function(modules) { // webpackBootstrap */ GET: function GET(url, config, opts) { var self = this; - var op = undefined; + var op = void 0; config || (config = {}); opts || (opts = {}); config.url = url || config.url; @@ -787,154 +934,118 @@ return /******/ (function(modules) { // webpackBootstrap * @return {string} Full path. */ getEndpoint: function getEndpoint(mapper, id, opts) { - var _this = this; - + var self = this; opts || (opts = {}); opts.params || (opts.params = {}); - var item = undefined; - var parentKey = mapper.parentKey; var endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : mapper.endpoint; - var parentField = mapper.parentField; - var parentDef = mapper.parent ? mapper.getResource(mapper.parent) : undefined; - var parentId = opts.params[parentKey]; - - if (parentId === false || !parentKey || !parentDef) { - if (parentId === false) { + var parents = mapper.parents || (mapper.parent ? _defineProperty({}, mapper.parent, { + key: mapper.parentKey, + field: mapper.parentField + }) : {}); + + forOwn(parents, function (parent, parentName) { + var item = void 0; + var parentKey = parent.key; + var parentField = parent.field; + var parentDef = mapper.getResource(parentName); + var parentId = opts.params[parentKey]; + + if (parentId === false || !parentKey || !parentDef) { + if (parentId === false) { + delete opts.params[parentKey]; + } + return false; + } else { delete opts.params[parentKey]; - } - return endpoint; - } else { - delete opts.params[parentKey]; - - _createClass(DSHttpAdapter, [{ - key: 'getEndpoint', - value: function getEndpoint(resourceConfig, id, options) { - options = options || {}; - options.params = options.params || {}; - - var endpoint = options.hasOwnProperty('endpoint') ? options.endpoint : resourceConfig.endpoint; - var parents = resourceConfig.parents || (resourceConfig.parent ? _defineProperty({}, resourceConfig.parent, { - key: resourceConfig.parentKey, - field: resourceConfig.parentField - }) : {}); - - DSUtils.forOwn(parents, function (parent, parentName) { - var _this2 = this; - - var item = void 0; - var parentKey = parent.key; - var parentField = parent.field; - var parentDef = resourceConfig.getResource(parentName); - var parentId = options.params[parentKey]; - - if (parentId === false || !parentKey || !parentDef) { - if (parentId === false) { - delete options.params[parentKey]; - } - } else { - delete options.params[parentKey]; - - if (DSUtils._sn(id)) { - item = resourceConfig.get(id); - } else if (DSUtils._o(id)) { - item = id; - } - console.log('item', item); - if (item) { - parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null); - } + if (isString(id) || isNumber(id)) { + item = mapper.get(id); + } else if (isObject(id)) { + item = id; + } - if (parentId) { - (function () { - delete options.endpoint; - var _options = {}; - DSUtils.forOwn(options, function (value, key) { - _options[key] = value; - }); - endpoint = DSUtils.makePath(_this2.getEndpoint(parentDef, parentId, DSUtils._(parentDef, _options)), parentId, endpoint); - })(); - } + if (item) { + parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null); } - }, this); - return endpoint; - } - }, { - key: 'getPath', - value: function getPath(method, resourceConfig, id, options) { - var _this = this; - options = options || {}; - if (isString(options.urlPath)) { - return makePath.apply(DSUtils, [options.basePath || _this.defaults.basePath || resourceConfig.basePath, options.urlPath]); - } else { - var args = [options.basePath || _this.defaults.basePath || resourceConfig.basePath, this.getEndpoint(resourceConfig, isString(id) || isNumber(id) || method === 'create' ? id : null, options)]; - if (method === 'find' || method === 'update' || method === 'destroy') { - args.push(id); + if (parentId) { + var _ret = function () { + delete opts.endpoint; + var _opts = {}; + forOwn(opts, function (value, key) { + _opts[key] = value; + }); + _(_opts, parentDef); + endpoint = makePath(self.getEndpoint(parentDef, parentId, _opts, parentId, endpoint)); + return { + v: false + }; + }(); + + if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v; } - return makePath.apply(DSUtils, args); } + }); + + return endpoint; + }, + + + /** + * @name HttpAdapter#getPath + * @method + * @param {string} method TODO + * @param {Object} mapper TODO + * @param {(string|number)?} id TODO + * @param {Object} opts Configuration options. + */ + getPath: function getPath(method, mapper, id, opts) { + var self = this; + opts || (opts = {}); + var args = [opts.basePath === undefined ? mapper.basePath === undefined ? self.basePath : mapper.basePath : opts.basePath, self.getEndpoint(mapper, isString(id) || isNumber(id) || method === 'create' ? id : null, opts)]; + if (method === 'find' || method === 'update' || method === 'destroy') { + args.push(id); } - }, { - key: 'HTTP', - value: function HTTP(config) { - var _this = this; - var start = new Date(); - - // blacklist `data` as it can be large and will take a lot of time to copy - var payload = config.data; - var cache = config.cache; - var timeout = config.timeout; - config = copy(config, null, null, null, ['data', 'cache', 'timeout']); - config = deepMixIn(config, _this.defaults.httpConfig); - config.data = payload; - config.cache = cache; - config.timeout = timeout; - if (!('verbsUseBasePath' in config)) { - config.verbsUseBasePath = _this.defaults.verbsUseBasePath; - } - if (!config.urlOverride && config.verbsUseBasePath) { - config.url = makePath(config.basePath || _this.defaults.basePath, config.url); - } - if (_this.defaults.forceTrailingSlash && config.url[config.url.length - 1] !== '/' && !config.urlOverride) { - config.url += '/'; - } - // if (typeof config.data === 'object') { - // config.data = removeCircular(config.data) - // } - config.method = config.method.toUpperCase(); - var suffix = config.suffix || _this.defaults.suffix; - if (suffix && config.url.substr(config.url.length - suffix.length) !== suffix && !config.urlOverride) { - config.url += suffix; - } + return makePath.apply(_jsData.utils, args); + }, - // logs the HTTP response - function logResponse(data, isRejection) { - data = data || {}; - // examine the data object - if (data instanceof Error) { - // log the Error object - _this.defaults.error('FAILED: ' + (data.message || 'Unknown Error'), data); - return DSUtils.Promise.reject(data); - } else if ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) === 'object') { - var str = start.toUTCString() + ' - ' + config.method + ' ' + config.url + ' - ' + data.status + ' ' + (new Date().getTime() - start.getTime()) + 'ms'; - - if (data.status >= 200 && data.status < 300 && !isRejection) { - if (_this.defaults.log) { - _this.defaults.log(str, data); - } - return data; - } else { - if (_this.defaults.error) { - _this.defaults.error('FAILED: ' + str, data); - } - return DSUtils.Promise.reject(data); - } - } else { - // unknown type for 'data' that is not an Object or Error - _this.defaults.error('FAILED', data); - return DSUtils.Promise.reject(data); + + /** + * Make an Http request. + * + * @name HttpAdapter#HTTP + * @method + * @param {Object} config Request configuration options. + * @param {Object} [opts] Configuration options. + * @return {Promise} + */ + HTTP: function HTTP(config, opts) { + var self = this; + var start = new Date(); + opts || (opts = {}); + var payload = config.data; + var cache = config.cache; + var timeout = config.timeout; + config = copy(config, null, null, null, ['data', 'cache', 'timeout']); + config = deepMixIn(config, self.httpConfig); + config.data = payload; + config.cache = cache; + config.timeout = timeout; + if (self.forceTrailingSlash && config.url[config.url.length - 1] !== '/') { + config.url += '/'; + } + config.method = config.method.toUpperCase(); + var suffix = config.suffix || opts.suffix || self.suffix; + if (suffix && config.url.substr(config.url.length - suffix.length) !== suffix) { + config.url += suffix; + } + + function logResponse(data) { + var str = start.toUTCString() + ' - ' + config.method.toUpperCase() + ' ' + config.url + ' - ' + data.status + ' ' + (new Date().getTime() - start.getTime()) + 'ms'; + if (data.status >= 200 && data.status < 300) { + if (self.log) { + self.dbg('debug', str, data); } return data; } else { @@ -943,52 +1054,39 @@ return /******/ (function(modules) { // webpackBootstrap } return reject(data); } + } - if (!this.http) { - throw new Error('You have not configured this adapter with an http library!'); - } + if (!self.http) { + throw new Error('You have not configured this adapter with an http library!'); + } - return this.http(config).then(logResponse, function (data) { - return logResponse(data, true); + return resolve(self.beforeHTTP(config, opts)).then(function (_config) { + config = _config || config; + if (hasFetch && (self.useFetch || opts.useFetch || !self.http)) { + return self.fetch(config, opts).then(logResponse, logResponse); + } + return self.http(config).then(logResponse, logResponse).catch(function (err) { + return self.responseError(err, config, opts); }); - } - }, { - key: 'GET', - value: function GET(url, config) { - config = config || {}; - config.method = config.method || 'get'; - config.urlOverride = !!config.url; - config.url = config.url || url; - return this.HTTP(config); - } - }, { - key: 'POST', - value: function POST(url, attrs, config) { - config = config || {}; - config.method = config.method || 'post'; - config.urlOverride = !!config.url; - config.url = config.url || url; - config.data = config.data || attrs; - return this.HTTP(config); - } - }, { - key: 'PUT', - value: function PUT(url, attrs, config) { - config = config || {}; - config.method = config.method || 'put'; - config.urlOverride = !!config.url; - config.url = config.url || url; - config.data = config.data || attrs; - return this.HTTP(config); - } - }, { - key: 'DEL', - value: function DEL(url, config) { - config = config || {}; - config.method = config.method || 'delete'; - config.urlOverride = !!config.url; - config.url = config.url || url; - return this.HTTP(config); + }).then(function (response) { + return resolve(self.afterHTTP(config, opts, response)).then(function (_response) { + return _response || response; + }); + }); + }, + + + /** + * Log the provided arguments at the specified leve. + * + * @name HttpAdapter#log + * @method + * @param {string} level Log level. + * @param {...*} [args] Arguments to log. + */ + log: function log(level) { + for (var _len5 = arguments.length, args = Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) { + args[_key5 - 1] = arguments[_key5]; } if (level && !args.length) { @@ -1024,7 +1122,7 @@ return /******/ (function(modules) { // webpackBootstrap */ POST: function POST(url, data, config, opts) { var self = this; - var op = undefined; + var op = void 0; config || (config = {}); opts || (opts = {}); config.url = url || config.url; @@ -1063,7 +1161,7 @@ return /******/ (function(modules) { // webpackBootstrap */ PUT: function PUT(url, data, config, opts) { var self = this; - var op = undefined; + var op = void 0; config || (config = {}); opts || (opts = {}); config.url = url || config.url; @@ -1164,7 +1262,7 @@ return /******/ (function(modules) { // webpackBootstrap */ update: function update(mapper, id, props, opts) { var self = this; - var op = undefined; + var op = void 0; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(mapper, opts.params, opts); @@ -1202,7 +1300,7 @@ return /******/ (function(modules) { // webpackBootstrap */ updateAll: function updateAll(mapper, props, query, opts) { var self = this; - var op = undefined; + var op = void 0; query || (query = {}); opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); @@ -1225,11 +1323,144 @@ return /******/ (function(modules) { // webpackBootstrap // Allow re-assignment from lifecycle hook return isUndefined(_data) ? data : _data; }); + }); + }, + + + /** + * Update multiple records in batch. + * + * {@link HttpAdapter#beforeUpdateMany} will be called before calling + * {@link HttpAdapter#PUT}. + * {@link HttpAdapter#afterUpdateMany} will be called after calling + * {@link HttpAdapter#PUT}. + * + * @name HttpAdapter#updateMany + * @method + * @param {Object} mapper The mapper. + * @param {Array} records Array of property objects to send as the payload. + * @param {Object} [opts] Configuration options. + * @param {string} [opts.params] TODO + * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO + * @return {Promise} + */ + updateMany: function updateMany(mapper, records, opts) { + var self = this; + var op = void 0; + opts = opts ? copy(opts) : {}; + opts.params || (opts.params = {}); + opts.params = self.queryTransform(mapper, opts.params, opts); + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; + + // beforeUpdateMany lifecycle hook + op = opts.op = 'beforeUpdateMany'; + return resolve(self[op](mapper, records, opts)).then(function () { + op = opts.op = 'updateMany'; + self.dbg(op, mapper, records, opts); + return self.PUT(self.getPath('updateMany', mapper, null, opts), self.serialize(mapper, records, opts), opts); + }).then(function (response) { + return self.deserialize(mapper, response, opts); + }).then(function (data) { + // afterUpdateMany lifecycle hook + op = opts.op = 'afterUpdateMany'; + return resolve(self[op](mapper, records, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data; + }); + }); + } + }); + + /** + * Add an Http actions to a mapper. + * + * @name HttpAdapter.addAction + * @method + * @param {string} name Name of the new action. + * @param {Object} [opts] Action configuration + * @param {string} [opts.adapter] + * @param {string} [opts.pathname] + * @param {Function} [opts.request] + * @param {Function} [opts.response] + * @param {Function} [opts.responseError] + * @return {Function} Decoration function, which should be passed the mapper to + * decorate when invoked. + */ + HttpAdapter.addAction = function (name, opts) { + if (!name || !isString(name)) { + throw new TypeError('action(name[, opts]): Expected: string, Found: ' + (typeof name === 'undefined' ? 'undefined' : _typeof(name))); + } + return function (mapper) { + if (mapper[name]) { + throw new Error('action(name[, opts]): ' + name + ' already exists on target!'); } - }]); + opts.request = opts.request || function (config) { + return config; + }; + opts.response = opts.response || function (response) { + return response; + }; + opts.responseError = opts.responseError || function (err) { + return reject(err); + }; + mapper[name] = function (id, _opts) { + var self = this; + if (isObject(id)) { + _opts = id; + } + _opts = _opts || {}; + var adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http'); + var config = {}; + fillIn(config, opts); + if (!_opts.hasOwnProperty('endpoint') && config.endpoint) { + _opts.endpoint = config.endpoint; + } + if (typeof _opts.getEndpoint === 'function') { + config.url = _opts.getEndpoint(self, _opts); + } else { + var _args = [_opts.basePath || self.basePath || adapter.basePath, adapter.getEndpoint(self, isSorN(id) ? id : null, _opts)]; + if (isSorN(id)) { + _args.push(id); + } + _args.push(opts.pathname || name); + config.url = makePath.apply(null, _args); + } + config.method = config.method || 'GET'; + config.mapper = self.name; + deepMixIn(config)(_opts); + return resolve(config).then(_opts.request || opts.request).then(function (config) { + return adapter.HTTP(config); + }).then(function (data) { + if (data && data.config) { + data.config.mapper = self.name; + } + return data; + }).then(_opts.response || opts.response, _opts.responseError || opts.responseError); + }; + return mapper; + }; + }; - return DSHttpAdapter; - }(); + /** + * Add multiple Http actions to a mapper. See {@link HttpAdapter.addAction} for + * action configuration options. + * + * @name HttpAdapter.addActions + * @method + * @param {Object.} opts Object where the key is an action name + * and the value is the configuration for the action. + * @return {Function} Decoration function, which should be passed the mapper to + * decorate when invoked. + */ + HttpAdapter.addActions = function (opts) { + opts || (opts = {}); + return function (mapper) { + forOwn(mapper, function (value, key) { + HttpAdapter.addAction(key, value)(mapper); + }); + return mapper; + }; + }; /** * Alternative to ES6 class syntax for extending `HttpAdapter`. @@ -1293,13 +1524,13 @@ return /******/ (function(modules) { // webpackBootstrap * @property {(string|boolean)} version.beta The beta version value, * otherwise `false` if the current version is not beta. */ - DSHttpAdapter.version = { - full: '2.2.1', - major: parseInt('2', 10), - minor: parseInt('2', 10), - patch: parseInt('1', 10), - alpha: true ? 'false' : false, - beta: true ? 'false' : false + HttpAdapter.version = { + full: '<%= pkg.version %>', + major: parseInt('<%= major %>', 10), + minor: parseInt('<%= minor %>', 10), + patch: parseInt('<%= patch %>', 10), + alpha: true ? '<%= alpha %>' : false, + beta: true ? '<%= beta %>' : false }; /** @@ -2524,1194 +2755,6 @@ return /******/ (function(modules) { // webpackBootstrap }; -/***/ }, -/* 2 */ -/***/ function(module, exports, __webpack_require__) { - - module.exports = __webpack_require__(3); - -/***/ }, -/* 3 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var defaults = __webpack_require__(4); - var utils = __webpack_require__(5); - var dispatchRequest = __webpack_require__(6); - var InterceptorManager = __webpack_require__(15); - var isAbsoluteURL = __webpack_require__(16); - var combineURLs = __webpack_require__(17); - var bind = __webpack_require__(18); - var transformData = __webpack_require__(11); - - function Axios(defaultConfig) { - this.defaults = utils.merge({}, defaultConfig); - this.interceptors = { - request: new InterceptorManager(), - response: new InterceptorManager() - }; - } - - Axios.prototype.request = function request(config) { - /*eslint no-param-reassign:0*/ - // Allow for axios('example/url'[, config]) a la fetch API - if (typeof config === 'string') { - config = utils.merge({ - url: arguments[0] - }, arguments[1]); - } - - config = utils.merge(defaults, this.defaults, { method: 'get' }, config); - - // Support baseURL config - if (config.baseURL && !isAbsoluteURL(config.url)) { - config.url = combineURLs(config.baseURL, config.url); - } - - // Don't allow overriding defaults.withCredentials - config.withCredentials = config.withCredentials || this.defaults.withCredentials; - - // Transform request data - config.data = transformData( - config.data, - config.headers, - config.transformRequest - ); - - // Flatten headers - config.headers = utils.merge( - config.headers.common || {}, - config.headers[config.method] || {}, - config.headers || {} - ); - - utils.forEach( - ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], - function cleanHeaderConfig(method) { - delete config.headers[method]; - } - ); - - // Hook up interceptors middleware - var chain = [dispatchRequest, undefined]; - var promise = Promise.resolve(config); - - this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { - chain.unshift(interceptor.fulfilled, interceptor.rejected); - }); - - this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { - chain.push(interceptor.fulfilled, interceptor.rejected); - }); - - while (chain.length) { - promise = promise.then(chain.shift(), chain.shift()); - } - - return promise; - }; - - var defaultInstance = new Axios(defaults); - var axios = module.exports = bind(Axios.prototype.request, defaultInstance); - - axios.create = function create(defaultConfig) { - return new Axios(defaultConfig); - }; - - // Expose defaults - axios.defaults = defaultInstance.defaults; - - // Expose all/spread - axios.all = function all(promises) { - return Promise.all(promises); - }; - axios.spread = __webpack_require__(19); - - // Expose interceptors - axios.interceptors = defaultInstance.interceptors; - - // Provide aliases for supported request methods - utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) { - /*eslint func-names:0*/ - Axios.prototype[method] = function(url, config) { - return this.request(utils.merge(config || {}, { - method: method, - url: url - })); - }; - axios[method] = bind(Axios.prototype[method], defaultInstance); - }); - - utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { - /*eslint func-names:0*/ - Axios.prototype[method] = function(url, data, config) { - return this.request(utils.merge(config || {}, { - method: method, - url: url, - data: data - })); - }; - axios[method] = bind(Axios.prototype[method], defaultInstance); - }); - - -/***/ }, -/* 4 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var utils = __webpack_require__(5); - - var PROTECTION_PREFIX = /^\)\]\}',?\n/; - var DEFAULT_CONTENT_TYPE = { - 'Content-Type': 'application/x-www-form-urlencoded' - }; - - module.exports = { - transformRequest: [function transformResponseJSON(data, headers) { - if (utils.isFormData(data)) { - return data; - } - if (utils.isArrayBuffer(data)) { - return data; - } - if (utils.isArrayBufferView(data)) { - return data.buffer; - } - if (utils.isObject(data) && !utils.isFile(data) && !utils.isBlob(data)) { - // Set application/json if no Content-Type has been specified - if (!utils.isUndefined(headers)) { - utils.forEach(headers, function processContentTypeHeader(val, key) { - if (key.toLowerCase() === 'content-type') { - headers['Content-Type'] = val; - } - }); - - if (utils.isUndefined(headers['Content-Type'])) { - headers['Content-Type'] = 'application/json;charset=utf-8'; - } - } - return JSON.stringify(data); - } - return data; - }], - - transformResponse: [function transformResponseJSON(data) { - /*eslint no-param-reassign:0*/ - if (typeof data === 'string') { - data = data.replace(PROTECTION_PREFIX, ''); - try { - data = JSON.parse(data); - } catch (e) { /* Ignore */ } - } - return data; - }], - - headers: { - common: { - 'Accept': 'application/json, text/plain, */*' - }, - patch: utils.merge(DEFAULT_CONTENT_TYPE), - post: utils.merge(DEFAULT_CONTENT_TYPE), - put: utils.merge(DEFAULT_CONTENT_TYPE) - }, - - timeout: 0, - - xsrfCookieName: 'XSRF-TOKEN', - xsrfHeaderName: 'X-XSRF-TOKEN' - }; - - -/***/ }, -/* 5 */ -/***/ function(module, exports) { - - 'use strict'; - - /*global toString:true*/ - - // utils is a library of generic helper functions non-specific to axios - - var toString = Object.prototype.toString; - - /** - * Determine if a value is an Array - * - * @param {Object} val The value to test - * @returns {boolean} True if value is an Array, otherwise false - */ - function isArray(val) { - return toString.call(val) === '[object Array]'; - } - - /** - * Determine if a value is an ArrayBuffer - * - * @param {Object} val The value to test - * @returns {boolean} True if value is an ArrayBuffer, otherwise false - */ - function isArrayBuffer(val) { - return toString.call(val) === '[object ArrayBuffer]'; - } - - /** - * Determine if a value is a FormData - * - * @param {Object} val The value to test - * @returns {boolean} True if value is an FormData, otherwise false - */ - function isFormData(val) { - return toString.call(val) === '[object FormData]'; - } - - /** - * Determine if a value is a view on an ArrayBuffer - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false - */ - function isArrayBufferView(val) { - var result; - if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { - result = ArrayBuffer.isView(val); - } else { - result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer); - } - return result; - } - - /** - * Determine if a value is a String - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a String, otherwise false - */ - function isString(val) { - return typeof val === 'string'; - } - - /** - * Determine if a value is a Number - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a Number, otherwise false - */ - function isNumber(val) { - return typeof val === 'number'; - } - - /** - * Determine if a value is undefined - * - * @param {Object} val The value to test - * @returns {boolean} True if the value is undefined, otherwise false - */ - function isUndefined(val) { - return typeof val === 'undefined'; - } - - /** - * Determine if a value is an Object - * - * @param {Object} val The value to test - * @returns {boolean} True if value is an Object, otherwise false - */ - function isObject(val) { - return val !== null && typeof val === 'object'; - } - - /** - * Determine if a value is a Date - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a Date, otherwise false - */ - function isDate(val) { - return toString.call(val) === '[object Date]'; - } - - /** - * Determine if a value is a File - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a File, otherwise false - */ - function isFile(val) { - return toString.call(val) === '[object File]'; - } - - /** - * Determine if a value is a Blob - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a Blob, otherwise false - */ - function isBlob(val) { - return toString.call(val) === '[object Blob]'; - } - - /** - * Trim excess whitespace off the beginning and end of a string - * - * @param {String} str The String to trim - * @returns {String} The String freed of excess whitespace - */ - function trim(str) { - return str.replace(/^\s*/, '').replace(/\s*$/, ''); - } - - /** - * Determine if we're running in a standard browser environment - * - * This allows axios to run in a web worker, and react-native. - * Both environments support XMLHttpRequest, but not fully standard globals. - * - * web workers: - * typeof window -> undefined - * typeof document -> undefined - * - * react-native: - * typeof document.createElement -> undefined - */ - function isStandardBrowserEnv() { - return ( - typeof window !== 'undefined' && - typeof document !== 'undefined' && - typeof document.createElement === 'function' - ); - } - - /** - * Iterate over an Array or an Object invoking a function for each item. - * - * If `obj` is an Array callback will be called passing - * the value, index, and complete array for each item. - * - * If 'obj' is an Object callback will be called passing - * the value, key, and complete object for each property. - * - * @param {Object|Array} obj The object to iterate - * @param {Function} fn The callback to invoke for each item - */ - function forEach(obj, fn) { - // Don't bother if no value provided - if (obj === null || typeof obj === 'undefined') { - return; - } - - // Force an array if not already something iterable - if (typeof obj !== 'object' && !isArray(obj)) { - /*eslint no-param-reassign:0*/ - obj = [obj]; - } - - if (isArray(obj)) { - // Iterate over array values - for (var i = 0, l = obj.length; i < l; i++) { - fn.call(null, obj[i], i, obj); - } - } else { - // Iterate over object keys - for (var key in obj) { - if (obj.hasOwnProperty(key)) { - fn.call(null, obj[key], key, obj); - } - } - } - } - - /** - * Accepts varargs expecting each argument to be an object, then - * immutably merges the properties of each object and returns result. - * - * When multiple objects contain the same key the later object in - * the arguments list will take precedence. - * - * Example: - * - * ```js - * var result = merge({foo: 123}, {foo: 456}); - * console.log(result.foo); // outputs 456 - * ``` - * - * @param {Object} obj1 Object to merge - * @returns {Object} Result of all merge properties - */ - function merge(/* obj1, obj2, obj3, ... */) { - var result = {}; - function assignValue(val, key) { - if (typeof result[key] === 'object' && typeof val === 'object') { - result[key] = merge(result[key], val); - } else { - result[key] = val; - } - } - - for (var i = 0, l = arguments.length; i < l; i++) { - forEach(arguments[i], assignValue); - } - return result; - } - - module.exports = { - isArray: isArray, - isArrayBuffer: isArrayBuffer, - isFormData: isFormData, - isArrayBufferView: isArrayBufferView, - isString: isString, - isNumber: isNumber, - isObject: isObject, - isUndefined: isUndefined, - isDate: isDate, - isFile: isFile, - isBlob: isBlob, - isStandardBrowserEnv: isStandardBrowserEnv, - forEach: forEach, - merge: merge, - trim: trim - }; - - -/***/ }, -/* 6 */ -/***/ function(module, exports, __webpack_require__) { - - /* WEBPACK VAR INJECTION */(function(process) {'use strict'; - - /** - * Dispatch a request to the server using whichever adapter - * is supported by the current environment. - * - * @param {object} config The config that is to be used for the request - * @returns {Promise} The Promise to be fulfilled - */ - module.exports = function dispatchRequest(config) { - return new Promise(function executor(resolve, reject) { - try { - var adapter; - - if (typeof config.adapter === 'function') { - // For custom adapter support - adapter = config.adapter; - } else if (typeof XMLHttpRequest !== 'undefined') { - // For browsers use XHR adapter - adapter = __webpack_require__(8); - } else if (typeof process !== 'undefined') { - // For node use HTTP adapter - adapter = __webpack_require__(8); - } - - if (typeof adapter === 'function') { - adapter(resolve, reject, config); - } - } catch (e) { - reject(e); - } - }); - }; - - - /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7))) - -/***/ }, -/* 7 */ -/***/ function(module, exports) { - - // shim for using process in browser - - var process = module.exports = {}; - var queue = []; - var draining = false; - var currentQueue; - var queueIndex = -1; - - function cleanUpNextTick() { - draining = false; - if (currentQueue.length) { - queue = currentQueue.concat(queue); - } else { - queueIndex = -1; - } - if (queue.length) { - drainQueue(); - } - } - - function drainQueue() { - if (draining) { - return; - } - var timeout = setTimeout(cleanUpNextTick); - draining = true; - - var len = queue.length; - while(len) { - currentQueue = queue; - queue = []; - while (++queueIndex < len) { - if (currentQueue) { - currentQueue[queueIndex].run(); - } - } - queueIndex = -1; - len = queue.length; - } - currentQueue = null; - draining = false; - clearTimeout(timeout); - } - - process.nextTick = function (fun) { - var args = new Array(arguments.length - 1); - if (arguments.length > 1) { - for (var i = 1; i < arguments.length; i++) { - args[i - 1] = arguments[i]; - } - } - queue.push(new Item(fun, args)); - if (queue.length === 1 && !draining) { - setTimeout(drainQueue, 0); - } - }; - - // v8 likes predictible objects - function Item(fun, array) { - this.fun = fun; - this.array = array; - } - Item.prototype.run = function () { - this.fun.apply(null, this.array); - }; - process.title = 'browser'; - process.browser = true; - process.env = {}; - process.argv = []; - process.version = ''; // empty string to avoid regexp issues - process.versions = {}; - - function noop() {} - - process.on = noop; - process.addListener = noop; - process.once = noop; - process.off = noop; - process.removeListener = noop; - process.removeAllListeners = noop; - process.emit = noop; - - process.binding = function (name) { - throw new Error('process.binding is not supported'); - }; - - process.cwd = function () { return '/' }; - process.chdir = function (dir) { - throw new Error('process.chdir is not supported'); - }; - process.umask = function() { return 0; }; - - -/***/ }, -/* 8 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var utils = __webpack_require__(5); - var buildURL = __webpack_require__(9); - var parseHeaders = __webpack_require__(10); - var transformData = __webpack_require__(11); - var isURLSameOrigin = __webpack_require__(12); - var btoa = window.btoa || __webpack_require__(13); - - module.exports = function xhrAdapter(resolve, reject, config) { - var requestData = config.data; - var requestHeaders = config.headers; - - if (utils.isFormData(requestData)) { - delete requestHeaders['Content-Type']; // Let the browser set it - } - - var request = new XMLHttpRequest(); - - // For IE 8/9 CORS support - // Only supports POST and GET calls and doesn't returns the response headers. - if (window.XDomainRequest && !('withCredentials' in request) && !isURLSameOrigin(config.url)) { - request = new window.XDomainRequest(); - } - - // HTTP basic authentication - if (config.auth) { - var username = config.auth.username || ''; - var password = config.auth.password || ''; - requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password); - } - - request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true); - - // Set the request timeout in MS - request.timeout = config.timeout; - - // Listen for ready state - request.onload = function handleLoad() { - if (!request) { - return; - } - // Prepare the response - var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null; - var responseData = ['text', ''].indexOf(config.responseType || '') !== -1 ? request.responseText : request.response; - var response = { - data: transformData( - responseData, - responseHeaders, - config.transformResponse - ), - // IE sends 1223 instead of 204 (https://github.com/mzabriskie/axios/issues/201) - status: request.status === 1223 ? 204 : request.status, - statusText: request.status === 1223 ? 'No Content' : request.statusText, - headers: responseHeaders, - config: config - }; - - // Resolve or reject the Promise based on the status - ((response.status >= 200 && response.status < 300) || - (!('status' in request) && response.responseText) ? - resolve : - reject)(response); - - // Clean up request - request = null; - }; - - // Handle low level network errors - request.onerror = function handleError() { - // Real errors are hidden from us by the browser - // onerror should only fire if it's a network error - reject(new Error('Network Error')); - - // Clean up request - request = null; - }; - - // Add xsrf header - // This is only done if running in a standard browser environment. - // Specifically not if we're in a web worker, or react-native. - if (utils.isStandardBrowserEnv()) { - var cookies = __webpack_require__(14); - - // Add xsrf header - var xsrfValue = config.withCredentials || isURLSameOrigin(config.url) ? - cookies.read(config.xsrfCookieName) : - undefined; - - if (xsrfValue) { - requestHeaders[config.xsrfHeaderName] = xsrfValue; - } - } - - // Add headers to the request - if ('setRequestHeader' in request) { - utils.forEach(requestHeaders, function setRequestHeader(val, key) { - if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') { - // Remove Content-Type if data is undefined - delete requestHeaders[key]; - } else { - // Otherwise add header to the request - request.setRequestHeader(key, val); - } - }); - } - - // Add withCredentials to request if needed - if (config.withCredentials) { - request.withCredentials = true; - } - - // Add responseType to request if needed - if (config.responseType) { - try { - request.responseType = config.responseType; - } catch (e) { - if (request.responseType !== 'json') { - throw e; - } - } - } - - if (utils.isArrayBuffer(requestData)) { - requestData = new DataView(requestData); - } - - // Send the request - request.send(requestData); - }; - - -/***/ }, -/* 9 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var utils = __webpack_require__(5); - - function encode(val) { - return encodeURIComponent(val). - replace(/%40/gi, '@'). - replace(/%3A/gi, ':'). - replace(/%24/g, '$'). - replace(/%2C/gi, ','). - replace(/%20/g, '+'). - replace(/%5B/gi, '['). - replace(/%5D/gi, ']'); - } - - /** - * Build a URL by appending params to the end - * - * @param {string} url The base of the url (e.g., http://www.google.com) - * @param {object} [params] The params to be appended - * @returns {string} The formatted url - */ - module.exports = function buildURL(url, params, paramsSerializer) { - /*eslint no-param-reassign:0*/ - if (!params) { - return url; - } - - var serializedParams; - if (paramsSerializer) { - serializedParams = paramsSerializer(params); - } else { - var parts = []; - - utils.forEach(params, function serialize(val, key) { - if (val === null || typeof val === 'undefined') { - return; - } - - if (utils.isArray(val)) { - key = key + '[]'; - } - - if (!utils.isArray(val)) { - val = [val]; - } - - utils.forEach(val, function parseValue(v) { - if (utils.isDate(v)) { - v = v.toISOString(); - } else if (utils.isObject(v)) { - v = JSON.stringify(v); - } - parts.push(encode(key) + '=' + encode(v)); - }); - }); - - serializedParams = parts.join('&'); - } - - if (serializedParams) { - url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; - } - - return url; - }; - - - -/***/ }, -/* 10 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var utils = __webpack_require__(5); - - /** - * Parse headers into an object - * - * ``` - * Date: Wed, 27 Aug 2014 08:58:49 GMT - * Content-Type: application/json - * Connection: keep-alive - * Transfer-Encoding: chunked - * ``` - * - * @param {String} headers Headers needing to be parsed - * @returns {Object} Headers parsed into an object - */ - module.exports = function parseHeaders(headers) { - var parsed = {}; - var key; - var val; - var i; - - if (!headers) { return parsed; } - - utils.forEach(headers.split('\n'), function parser(line) { - i = line.indexOf(':'); - key = utils.trim(line.substr(0, i)).toLowerCase(); - val = utils.trim(line.substr(i + 1)); - - if (key) { - parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; - } - }); - - return parsed; - }; - - -/***/ }, -/* 11 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var utils = __webpack_require__(5); - - /** - * Transform the data for a request or a response - * - * @param {Object|String} data The data to be transformed - * @param {Array} headers The headers for the request or response - * @param {Array|Function} fns A single function or Array of functions - * @returns {*} The resulting transformed data - */ - module.exports = function transformData(data, headers, fns) { - /*eslint no-param-reassign:0*/ - utils.forEach(fns, function transform(fn) { - data = fn(data, headers); - }); - - return data; - }; - - -/***/ }, -/* 12 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var utils = __webpack_require__(5); - - module.exports = ( - utils.isStandardBrowserEnv() ? - - // Standard browser envs have full support of the APIs needed to test - // whether the request URL is of the same origin as current location. - (function standardBrowserEnv() { - var msie = /(msie|trident)/i.test(navigator.userAgent); - var urlParsingNode = document.createElement('a'); - var originURL; - - /** - * Parse a URL to discover it's components - * - * @param {String} url The URL to be parsed - * @returns {Object} - */ - function resolveURL(url) { - var href = url; - - if (msie) { - // IE needs attribute set twice to normalize properties - urlParsingNode.setAttribute('href', href); - href = urlParsingNode.href; - } - - urlParsingNode.setAttribute('href', href); - - // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils - return { - href: urlParsingNode.href, - protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', - host: urlParsingNode.host, - search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', - hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', - hostname: urlParsingNode.hostname, - port: urlParsingNode.port, - pathname: (urlParsingNode.pathname.charAt(0) === '/') ? - urlParsingNode.pathname : - '/' + urlParsingNode.pathname - }; - } - - originURL = resolveURL(window.location.href); - - /** - * Determine if a URL shares the same origin as the current location - * - * @param {String} requestURL The URL to test - * @returns {boolean} True if URL shares the same origin, otherwise false - */ - return function isURLSameOrigin(requestURL) { - var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL; - return (parsed.protocol === originURL.protocol && - parsed.host === originURL.host); - }; - })() : - - // Non standard browser envs (web workers, react-native) lack needed support. - (function nonStandardBrowserEnv() { - return function isURLSameOrigin() { - return true; - }; - })() - ); - - -/***/ }, -/* 13 */ -/***/ function(module, exports) { - - 'use strict'; - - // btoa polyfill for IE<10 courtesy https://github.com/davidchambers/Base64.js - - var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; - - function InvalidCharacterError(message) { - this.message = message; - } - InvalidCharacterError.prototype = new Error; - InvalidCharacterError.prototype.code = 5; - InvalidCharacterError.prototype.name = 'InvalidCharacterError'; - - function btoa(input) { - var str = String(input); - var output = ''; - for ( - // initialize result and counter - var block, charCode, idx = 0, map = chars; - // if the next str index does not exist: - // change the mapping table to "=" - // check if d has no fractional digits - str.charAt(idx | 0) || (map = '=', idx % 1); - // "8 - idx % 1 * 8" generates the sequence 2, 4, 6, 8 - output += map.charAt(63 & block >> 8 - idx % 1 * 8) - ) { - charCode = str.charCodeAt(idx += 3 / 4); - if (charCode > 0xFF) { - throw new InvalidCharacterError('INVALID_CHARACTER_ERR: DOM Exception 5'); - } - block = block << 8 | charCode; - } - return output; - } - - module.exports = btoa; - - -/***/ }, -/* 14 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var utils = __webpack_require__(5); - - module.exports = ( - utils.isStandardBrowserEnv() ? - - // Standard browser envs support document.cookie - (function standardBrowserEnv() { - return { - write: function write(name, value, expires, path, domain, secure) { - var cookie = []; - cookie.push(name + '=' + encodeURIComponent(value)); - - if (utils.isNumber(expires)) { - cookie.push('expires=' + new Date(expires).toGMTString()); - } - - if (utils.isString(path)) { - cookie.push('path=' + path); - } - - if (utils.isString(domain)) { - cookie.push('domain=' + domain); - } - - if (secure === true) { - cookie.push('secure'); - } - - document.cookie = cookie.join('; '); - }, - - read: function read(name) { - var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); - return (match ? decodeURIComponent(match[3]) : null); - }, - - remove: function remove(name) { - this.write(name, '', Date.now() - 86400000); - } - }; - })() : - - // Non standard browser env (web workers, react-native) lack needed support. - (function nonStandardBrowserEnv() { - return { - write: function write() {}, - read: function read() { return null; }, - remove: function remove() {} - }; - })() - ); - - -/***/ }, -/* 15 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var utils = __webpack_require__(5); - - function InterceptorManager() { - this.handlers = []; - } - - /** - * Add a new interceptor to the stack - * - * @param {Function} fulfilled The function to handle `then` for a `Promise` - * @param {Function} rejected The function to handle `reject` for a `Promise` - * - * @return {Number} An ID used to remove interceptor later - */ - InterceptorManager.prototype.use = function use(fulfilled, rejected) { - this.handlers.push({ - fulfilled: fulfilled, - rejected: rejected - }); - return this.handlers.length - 1; - }; - - /** - * Remove an interceptor from the stack - * - * @param {Number} id The ID that was returned by `use` - */ - InterceptorManager.prototype.eject = function eject(id) { - if (this.handlers[id]) { - this.handlers[id] = null; - } - }; - - /** - * Iterate over all the registered interceptors - * - * This method is particularly useful for skipping over any - * interceptors that may have become `null` calling `eject`. - * - * @param {Function} fn The function to call for each interceptor - */ - InterceptorManager.prototype.forEach = function forEach(fn) { - utils.forEach(this.handlers, function forEachHandler(h) { - if (h !== null) { - fn(h); - } - }); - }; - - module.exports = InterceptorManager; - - -/***/ }, -/* 16 */ -/***/ function(module, exports) { - - 'use strict'; - - /** - * Determines whether the specified URL is absolute - * - * @param {string} url The URL to test - * @returns {boolean} True if the specified URL is absolute, otherwise false - */ - module.exports = function isAbsoluteURL(url) { - // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). - // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed - // by any combination of letters, digits, plus, period, or hyphen. - return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url); - }; - - -/***/ }, -/* 17 */ -/***/ function(module, exports) { - - 'use strict'; - - /** - * Creates a new URL by combining the specified URLs - * - * @param {string} baseURL The base URL - * @param {string} relativeURL The relative URL - * @returns {string} The combined URL - */ - module.exports = function combineURLs(baseURL, relativeURL) { - return baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, ''); - }; - - -/***/ }, -/* 18 */ -/***/ function(module, exports) { - - 'use strict'; - - module.exports = function bind(fn, thisArg) { - return function wrap() { - var args = new Array(arguments.length); - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i]; - } - return fn.apply(thisArg, args); - }; - }; - - -/***/ }, -/* 19 */ -/***/ function(module, exports) { - - 'use strict'; - - /** - * Syntactic sugar for invoking a function and expanding an array for arguments. - * - * Common use case would be to use `Function.prototype.apply`. - * - * ```js - * function f(x, y, z) {} - * var args = [1, 2, 3]; - * f.apply(null, args); - * ``` - * - * With `spread` this example can be re-written. - * - * ```js - * spread(function(x, y, z) {})([1, 2, 3]); - * ``` - * - * @param {Function} callback - * @returns {Function} - */ - module.exports = function spread(callback) { - return function wrap(arr) { - return callback.apply(null, arr); - }; - }; - - /***/ } /******/ ]) }); diff --git a/dist/js-data-http.js.map b/dist/js-data-http.js.map index 8871656..2d34f6e 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 8edc9ba2dfe64e8eafd0","webpack:///./src/index.js","webpack:///external {\"amd\":\"js-data\",\"commonjs\":\"js-data\",\"commonjs2\":\"js-data\",\"root\":\"JSData\"}","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/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":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;ACtCA,KAAI,SAAS,oBAAQ,CAAR,CAAT;AACJ,KAAI,QAAQ,IAAR;;AAEJ,KAAI;AACF,WAAQ,oBAAQ,CAAR,CAAR,CADE;EAAJ,CAEE,OAAO,CAAP,EAAU,EAAV;;KAEI,UAAY,OAAZ;KACA,YAAkE,QAAlE;KAAW,iBAAuD,QAAvD;KAAgB,OAAuC,QAAvC;KAAM,WAAiC,QAAjC;KAAU,WAAuB,QAAvB;KAAU,WAAa,QAAb;;KAErD;;;;;;;oCACY,gBAAgB,QAAQ;AACtC,cAAO,MAAP,CADsC;;;;iCAI3B,gBAAgB,MAAM;AACjC,cAAO,OAAQ,UAAU,IAAV,GAAiB,KAAK,IAAL,GAAY,IAA7B,GAAqC,IAA7C,CAD0B;;;;+BAIxB,gBAAgB,MAAM;AAC/B,cAAO,IAAP,CAD+B;;;;2BAI1B;;;6BAEE;;;UAfL;;;AAkBN,KAAI,oBAAoB,SAAS,SAAT;;AAExB,mBAAkB,QAAlB,GAA6B,EAA7B;;AAEA,mBAAkB,kBAAlB,GAAuC,EAAvC;;AAEA,mBAAkB,UAAlB,GAA+B,EAA/B;;AAEA,mBAAkB,gBAAlB,GAAqC,KAArC;;KAEM;AACJ,YADI,aACJ,CAAa,OAAb,EAAsB;2BADlB,eACkB;;AACpB,eAAU,WAAW,EAAX,CADU;AAEpB,UAAK,QAAL,GAAgB,IAAI,QAAJ,EAAhB,CAFoB;AAGpB,SAAI,OAAJ,EAAa;AACX,YAAK,QAAL,CAAc,GAAd,GAAoB,UAAC,CAAD,EAAI,CAAJ;gBAAU,QAAQ,OAAO,QAAQ,IAAR,KAAiB,UAAxB,GAAqC,MAArC,GAA8C,KAA9C,CAAR,CAA6D,CAA7D,EAAgE,CAAhE;QAAV,CADT;MAAb;AAGA,SAAI,OAAJ,EAAa;AACX,YAAK,QAAL,CAAc,KAAd,GAAsB,UAAC,CAAD,EAAI,CAAJ;gBAAU,QAAQ,OAAO,QAAQ,KAAR,KAAkB,UAAzB,GAAsC,OAAtC,GAAgD,KAAhD,CAAR,CAA+D,CAA/D,EAAkE,CAAlE;QAAV,CADX;MAAb;AAGA,eAAU,KAAK,QAAL,EAAe,OAAzB,EAToB;AAUpB,UAAK,IAAL,GAAY,QAAQ,IAAR,IAAgB,KAAhB,CAVQ;IAAtB;;gBADI;;iCAcS,gBAAgB,IAAI,SAAS;AACxC,iBAAU,WAAW,EAAX,CAD8B;AAExC,eAAQ,MAAR,GAAiB,QAAQ,MAAR,IAAkB,EAAlB,CAFuB;;AAIxC,WAAI,WAAW,QAAQ,cAAR,CAAuB,UAAvB,IAAqC,QAAQ,QAAR,GAAmB,eAAe,QAAf,CAJ/B;AAKxC,WAAI,UAAU,eAAe,OAAf,KAA2B,eAAe,MAAf,uBACtC,eAAe,MAAf,EAAwB;AACvB,cAAK,eAAe,SAAf;AACL,gBAAO,eAAe,WAAf;SAH8B,GAKrC,EALqC,CAA3B,CAL0B;;AAYxC,eAAQ,MAAR,CAAe,OAAf,EAAwB,UAAU,MAAV,EAAkB,UAAlB,EAA8B;;;AACpD,aAAI,aAAJ,CADoD;AAEpD,aAAI,YAAY,OAAO,GAAP,CAFoC;AAGpD,aAAI,cAAc,OAAO,KAAP,CAHkC;AAIpD,aAAI,YAAY,eAAe,WAAf,CAA2B,UAA3B,CAAZ,CAJgD;AAKpD,aAAI,WAAW,QAAQ,MAAR,CAAe,SAAf,CAAX,CALgD;;AAOpD,aAAI,aAAa,KAAb,IAAsB,CAAC,SAAD,IAAc,CAAC,SAAD,EAAY;AAClD,eAAI,aAAa,KAAb,EAAoB;AACtB,oBAAO,QAAQ,MAAR,CAAe,SAAf,CAAP,CADsB;YAAxB;UADF,MAIO;AACL,kBAAO,QAAQ,MAAR,CAAe,SAAf,CAAP,CADK;;AAGL,eAAI,QAAQ,GAAR,CAAY,EAAZ,CAAJ,EAAqB;AACnB,oBAAO,eAAe,GAAf,CAAmB,EAAnB,CAAP,CADmB;YAArB,MAEO,IAAI,QAAQ,EAAR,CAAW,EAAX,CAAJ,EAAoB;AACzB,oBAAO,EAAP,CADyB;YAApB;AAGP,mBAAQ,GAAR,CAAY,MAAZ,EAAoB,IAApB,EARK;;AAUL,eAAI,IAAJ,EAAU;AACR,wBAAW,YAAY,KAAK,SAAL,CAAZ,KAAgC,KAAK,WAAL,IAAoB,KAAK,WAAL,EAAkB,UAAU,WAAV,CAAtC,GAA+D,IAA/D,CAAhC,CADH;YAAV;;AAIA,eAAI,QAAJ,EAAc;;AACZ,sBAAO,QAAQ,QAAR;AACP,mBAAI,WAAW,EAAX;AACJ,uBAAQ,MAAR,CAAe,OAAf,EAAwB,UAAC,KAAD,EAAQ,GAAR,EAAgB;AACtC,0BAAS,GAAT,IAAgB,KAAhB,CADsC;gBAAhB,CAAxB;AAGA,0BAAW,QAAQ,QAAR,CAAiB,OAAK,WAAL,CAAiB,SAAjB,EAA4B,QAA5B,EAAsC,QAAQ,CAAR,CAAU,SAAV,EAAqB,QAArB,CAAtC,CAAjB,EAAwF,QAAxF,EAAkG,QAAlG,CAAX;kBANY;YAAd;UAlBF;QAPsB,EAkCrB,IAlCH,EAZwC;;AAgDxC,cAAO,QAAP,CAhDwC;;;;6BAmDjC,QAAQ,gBAAgB,IAAI,SAAS;AAC5C,WAAI,QAAQ,IAAR,CADwC;AAE5C,iBAAU,WAAW,EAAX,CAFkC;AAG5C,WAAI,SAAS,QAAQ,OAAR,CAAb,EAA+B;AAC7B,gBAAO,SAAS,KAAT,CAAe,OAAf,EAAwB,CAAC,QAAQ,QAAR,IAAoB,MAAM,QAAN,CAAe,QAAf,IAA2B,eAAe,QAAf,EAAyB,QAAQ,OAAR,CAAjG,CAAP,CAD6B;QAA/B,MAEO;AACL,aAAI,OAAO,CACT,QAAQ,QAAR,IAAoB,MAAM,QAAN,CAAe,QAAf,IAA2B,eAAe,QAAf,EAC/C,KAAK,WAAL,CAAiB,cAAjB,EAAiC,QAAC,CAAS,EAAT,KAAgB,SAAS,EAAT,CAAhB,IAAgC,WAAW,QAAX,GAAuB,EAAxD,GAA6D,IAA7D,EAAmE,OAApG,CAFS,CAAP,CADC;AAKL,aAAI,WAAW,MAAX,IAAqB,WAAW,QAAX,IAAuB,WAAW,SAAX,EAAsB;AACpE,gBAAK,IAAL,CAAU,EAAV,EADoE;UAAtE;AAGA,gBAAO,SAAS,KAAT,CAAe,OAAf,EAAwB,IAAxB,CAAP,CARK;QAFP;;;;0BAcI,QAAQ;AACZ,WAAI,QAAQ,IAAR,CADQ;AAEZ,WAAI,QAAQ,IAAI,IAAJ,EAAR;;;AAFQ,WAKR,UAAU,OAAO,IAAP,CALF;AAMZ,WAAI,QAAQ,OAAO,KAAP,CANA;AAOZ,WAAI,UAAU,OAAO,OAAP,CAPF;AAQZ,gBAAS,KAAK,MAAL,EAAa,IAAb,EAAmB,IAAnB,EAAyB,IAAzB,EAA+B,CAAC,MAAD,EAAS,OAAT,EAAkB,SAAlB,CAA/B,CAAT,CARY;AASZ,gBAAS,UAAU,MAAV,EAAkB,MAAM,QAAN,CAAe,UAAf,CAA3B,CATY;AAUZ,cAAO,IAAP,GAAc,OAAd,CAVY;AAWZ,cAAO,KAAP,GAAe,KAAf,CAXY;AAYZ,cAAO,OAAP,GAAiB,OAAjB,CAZY;AAaZ,WAAI,EAAE,sBAAsB,MAAtB,CAAF,EAAiC;AACnC,gBAAO,gBAAP,GAA0B,MAAM,QAAN,CAAe,gBAAf,CADS;QAArC;AAGA,WAAI,CAAC,OAAO,WAAP,IAAsB,OAAO,gBAAP,EAAyB;AAClD,gBAAO,GAAP,GAAa,SAAS,OAAO,QAAP,IAAmB,MAAM,QAAN,CAAe,QAAf,EAAyB,OAAO,GAAP,CAAlE,CADkD;QAApD;AAGA,WAAI,MAAM,QAAN,CAAe,kBAAf,IAAqC,OAAO,GAAP,CAAW,OAAO,GAAP,CAAW,MAAX,GAAoB,CAApB,CAAX,KAAsC,GAAtC,IAA6C,CAAC,OAAO,WAAP,EAAoB;AACzG,gBAAO,GAAP,IAAc,GAAd,CADyG;QAA3G;AAGA,WAAI,QAAO,OAAO,IAAP,CAAP,KAAuB,QAAvB,EAAiC;AACnC,gBAAO,IAAP,GAAc,eAAe,OAAO,IAAP,CAA7B,CADmC;QAArC;AAGA,cAAO,MAAP,GAAgB,OAAO,MAAP,CAAc,WAAd,EAAhB,CAzBY;AA0BZ,WAAI,SAAS,OAAO,MAAP,IAAiB,MAAM,QAAN,CAAe,MAAf,CA1BlB;AA2BZ,WAAI,UAAU,OAAO,GAAP,CAAW,MAAX,CAAkB,OAAO,GAAP,CAAW,MAAX,GAAoB,OAAO,MAAP,CAAtC,KAAyD,MAAzD,IAAmE,CAAC,OAAO,WAAP,EAAoB;AACpG,gBAAO,GAAP,IAAc,MAAd,CADoG;QAAtG;;;AA3BY,gBAgCH,WAAT,CAAsB,IAAtB,EAA4B,WAA5B,EAAyC;AACvC,gBAAO,QAAQ,EAAR;;AADgC,aAGnC,gBAAgB,KAAhB,EAAuB;;AAEzB,iBAAM,QAAN,CAAe,KAAf,eAAgC,KAAK,OAAL,IAAgB,eAAhB,CAAhC,EAAmE,IAAnE,EAFyB;AAGzB,kBAAO,QAAQ,OAAR,CAAgB,MAAhB,CAAuB,IAAvB,CAAP,CAHyB;UAA3B,MAIO,IAAI,QAAO,mDAAP,KAAgB,QAAhB,EAA0B;AACnC,eAAI,MAAS,MAAM,WAAN,aAAyB,OAAO,MAAP,SAAiB,OAAO,GAAP,WAAgB,KAAK,MAAL,UAAgB,IAAI,IAAJ,GAAW,OAAX,KAAuB,MAAM,OAAN,EAAvB,QAAnF,CAD+B;;AAGnC,eAAI,KAAK,MAAL,IAAe,GAAf,IAAsB,KAAK,MAAL,GAAc,GAAd,IAAqB,CAAC,WAAD,EAAc;AAC3D,iBAAI,MAAM,QAAN,CAAe,GAAf,EAAoB;AACtB,qBAAM,QAAN,CAAe,GAAf,CAAmB,GAAnB,EAAwB,IAAxB,EADsB;cAAxB;AAGA,oBAAO,IAAP,CAJ2D;YAA7D,MAKO;AACL,iBAAI,MAAM,QAAN,CAAe,KAAf,EAAsB;AACxB,qBAAM,QAAN,CAAe,KAAf,cAAgC,GAAhC,EAAuC,IAAvC,EADwB;cAA1B;AAGA,oBAAO,QAAQ,OAAR,CAAgB,MAAhB,CAAuB,IAAvB,CAAP,CAJK;YALP;UAHK,MAcA;;AAEL,iBAAM,QAAN,CAAe,KAAf,CAAqB,QAArB,EAA+B,IAA/B,EAFK;AAGL,kBAAO,QAAQ,OAAR,CAAgB,MAAhB,CAAuB,IAAvB,CAAP,CAHK;UAdA;QAPT;;AA4BA,WAAI,CAAC,KAAK,IAAL,EAAW;AACd,eAAM,IAAI,KAAJ,CAAU,4DAAV,CAAN,CADc;QAAhB;;AAIA,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,CAAuB,WAAvB,EAAoC,UAAU,IAAV,EAAgB;AACzD,gBAAO,YAAY,IAAZ,EAAkB,IAAlB,CAAP,CADyD;QAAhB,CAA3C,CAhEY;;;;yBAqET,KAAK,QAAQ;AAChB,gBAAS,UAAU,EAAV,CADO;AAEhB,cAAO,MAAP,GAAgB,OAAO,MAAP,IAAiB,KAAjB,CAFA;AAGhB,cAAO,WAAP,GAAqB,CAAC,CAAC,OAAO,GAAP,CAHP;AAIhB,cAAO,GAAP,GAAa,OAAO,GAAP,IAAc,GAAd,CAJG;AAKhB,cAAO,KAAK,IAAL,CAAU,MAAV,CAAP,CALgB;;;;0BAQZ,KAAK,OAAO,QAAQ;AACxB,gBAAS,UAAU,EAAV,CADe;AAExB,cAAO,MAAP,GAAgB,OAAO,MAAP,IAAiB,MAAjB,CAFQ;AAGxB,cAAO,WAAP,GAAqB,CAAC,CAAC,OAAO,GAAP,CAHC;AAIxB,cAAO,GAAP,GAAa,OAAO,GAAP,IAAc,GAAd,CAJW;AAKxB,cAAO,IAAP,GAAc,OAAO,IAAP,IAAe,KAAf,CALU;AAMxB,cAAO,KAAK,IAAL,CAAU,MAAV,CAAP,CANwB;;;;yBASrB,KAAK,OAAO,QAAQ;AACvB,gBAAS,UAAU,EAAV,CADc;AAEvB,cAAO,MAAP,GAAgB,OAAO,MAAP,IAAiB,KAAjB,CAFO;AAGvB,cAAO,WAAP,GAAqB,CAAC,CAAC,OAAO,GAAP,CAHA;AAIvB,cAAO,GAAP,GAAa,OAAO,GAAP,IAAc,GAAd,CAJU;AAKvB,cAAO,IAAP,GAAc,OAAO,IAAP,IAAe,KAAf,CALS;AAMvB,cAAO,KAAK,IAAL,CAAU,MAAV,CAAP,CANuB;;;;yBASpB,KAAK,QAAQ;AAChB,gBAAS,UAAU,EAAV,CADO;AAEhB,cAAO,MAAP,GAAgB,OAAO,MAAP,IAAiB,QAAjB,CAFA;AAGhB,cAAO,WAAP,GAAqB,CAAC,CAAC,OAAO,GAAP,CAHP;AAIhB,cAAO,GAAP,GAAa,OAAO,GAAP,IAAc,GAAd,CAJG;AAKhB,cAAO,KAAK,IAAL,CAAU,MAAV,CAAP,CALgB;;;;0BAQZ,gBAAgB,IAAI,SAAS;AACjC,WAAI,QAAQ,IAAR,CAD6B;AAEjC,iBAAU,UAAU,KAAK,OAAL,CAAV,GAA0B,EAA1B,CAFuB;AAGjC,eAAQ,MAAR,GAAiB,QAAQ,MAAR,IAAkB,eAAe,MAAf,CAHF;AAIjC,eAAQ,MAAR,GAAiB,QAAQ,MAAR,IAAkB,EAAlB,CAJgB;AAKjC,eAAQ,MAAR,GAAiB,MAAM,QAAN,CAAe,cAAf,CAA8B,cAA9B,EAA8C,QAAQ,MAAR,CAA/D,CALiC;AAMjC,cAAO,MAAM,GAAN,CACL,MAAM,OAAN,CAAc,MAAd,EAAsB,cAAtB,EAAsC,EAAtC,EAA0C,OAA1C,CADK,EAEL,OAFK,EAGL,IAHK,CAGA,UAAC,IAAD,EAAU;AACf,aAAI,OAAO,CAAC,QAAQ,WAAR,GAAsB,QAAQ,WAAR,GAAsB,MAAM,QAAN,CAAe,WAAf,CAA7C,CAAyE,cAAzE,EAAyF,IAAzF,CAAP,CADW;AAEf,gBAAO,CAAC,IAAD,GAAQ,QAAQ,OAAR,CAAgB,MAAhB,CAAuB,IAAI,KAAJ,CAAU,YAAV,CAAvB,CAAR,GAA0D,IAA1D,CAFQ;QAAV,CAHP,CANiC;;;;6BAe1B,gBAAgB,QAAQ,SAAS;AACxC,WAAI,QAAQ,IAAR,CADoC;AAExC,iBAAU,UAAU,KAAK,OAAL,CAAV,GAA0B,EAA1B,CAF8B;AAGxC,eAAQ,MAAR,GAAiB,QAAQ,MAAR,IAAkB,eAAe,MAAf,CAHK;AAIxC,eAAQ,MAAR,GAAiB,QAAQ,MAAR,IAAkB,EAAlB,CAJuB;AAKxC,WAAI,MAAJ,EAAY;AACV,kBAAS,MAAM,QAAN,CAAe,cAAf,CAA8B,cAA9B,EAA8C,MAA9C,CAAT,CADU;AAEV,mBAAU,QAAQ,MAAR,EAAgB,MAA1B,EAFU;QAAZ;AAIA,cAAO,MAAM,GAAN,CACL,MAAM,OAAN,CAAc,SAAd,EAAyB,cAAzB,EAAyC,MAAzC,EAAiD,OAAjD,CADK,EAEL,OAFK,EAGL,IAHK,CAGA,UAAC,IAAD;gBAAU,CAAC,QAAQ,WAAR,GAAsB,QAAQ,WAAR,GAAsB,MAAM,QAAN,CAAe,WAAf,CAA7C,CAAyE,cAAzE,EAAyF,IAAzF;QAAV,CAHP,CATwC;;;;4BAelC,gBAAgB,OAAO,SAAS;AACtC,WAAI,QAAQ,IAAR,CADkC;AAEtC,iBAAU,UAAU,KAAK,OAAL,CAAV,GAA0B,EAA1B,CAF4B;AAGtC,eAAQ,MAAR,GAAiB,QAAQ,MAAR,IAAkB,eAAe,MAAf,CAHG;AAItC,eAAQ,MAAR,GAAiB,QAAQ,MAAR,IAAkB,EAAlB,CAJqB;AAKtC,eAAQ,MAAR,GAAiB,MAAM,QAAN,CAAe,cAAf,CAA8B,cAA9B,EAA8C,QAAQ,MAAR,CAA/D,CALsC;AAMtC,cAAO,MAAM,IAAN,CACL,MAAM,OAAN,CAAc,QAAd,EAAwB,cAAxB,EAAwC,KAAxC,EAA+C,OAA/C,CADK,EAEL,QAAQ,SAAR,GAAoB,QAAQ,SAAR,CAAkB,cAAlB,EAAkC,KAAlC,CAApB,GAA+D,MAAM,QAAN,CAAe,SAAf,CAAyB,cAAzB,EAAyC,KAAzC,CAA/D,EACA,OAHK,EAIL,IAJK,CAIA,UAAC,IAAD;gBAAU,CAAC,QAAQ,WAAR,GAAsB,QAAQ,WAAR,GAAsB,MAAM,QAAN,CAAe,WAAf,CAA7C,CAAyE,cAAzE,EAAyF,IAAzF;QAAV,CAJP,CANsC;;;;4BAahC,gBAAgB,IAAI,OAAO,SAAS;AAC1C,WAAI,QAAQ,IAAR,CADsC;AAE1C,iBAAU,UAAU,KAAK,OAAL,CAAV,GAA0B,EAA1B,CAFgC;AAG1C,eAAQ,MAAR,GAAiB,QAAQ,MAAR,IAAkB,eAAe,MAAf,CAHO;AAI1C,eAAQ,MAAR,GAAiB,QAAQ,MAAR,IAAkB,EAAlB,CAJyB;AAK1C,eAAQ,MAAR,GAAiB,MAAM,QAAN,CAAe,cAAf,CAA8B,cAA9B,EAA8C,QAAQ,MAAR,CAA/D,CAL0C;AAM1C,cAAO,MAAM,GAAN,CACL,MAAM,OAAN,CAAc,QAAd,EAAwB,cAAxB,EAAwC,EAAxC,EAA4C,OAA5C,CADK,EAEL,QAAQ,SAAR,GAAoB,QAAQ,SAAR,CAAkB,cAAlB,EAAkC,KAAlC,CAApB,GAA+D,MAAM,QAAN,CAAe,SAAf,CAAyB,cAAzB,EAAyC,KAAzC,CAA/D,EACA,OAHK,EAIL,IAJK,CAIA,UAAC,IAAD;gBAAU,CAAC,QAAQ,WAAR,GAAsB,QAAQ,WAAR,GAAsB,MAAM,QAAN,CAAe,WAAf,CAA7C,CAAyE,cAAzE,EAAyF,IAAzF;QAAV,CAJP,CAN0C;;;;+BAajC,gBAAgB,OAAO,QAAQ,SAAS;AACjD,WAAI,QAAQ,IAAR,CAD6C;AAEjD,iBAAU,UAAU,KAAK,OAAL,CAAV,GAA0B,EAA1B,CAFuC;AAGjD,eAAQ,MAAR,GAAiB,QAAQ,MAAR,IAAkB,eAAe,MAAf,CAHc;AAIjD,eAAQ,MAAR,GAAiB,QAAQ,MAAR,IAAkB,EAAlB,CAJgC;AAKjD,WAAI,MAAJ,EAAY;AACV,kBAAS,MAAM,QAAN,CAAe,cAAf,CAA8B,cAA9B,EAA8C,MAA9C,CAAT,CADU;AAEV,mBAAU,QAAQ,MAAR,EAAgB,MAA1B,EAFU;QAAZ;AAIA,cAAO,KAAK,GAAL,CACL,MAAM,OAAN,CAAc,WAAd,EAA2B,cAA3B,EAA2C,KAA3C,EAAkD,OAAlD,CADK,EAEL,QAAQ,SAAR,GAAoB,QAAQ,SAAR,CAAkB,cAAlB,EAAkC,KAAlC,CAApB,GAA+D,MAAM,QAAN,CAAe,SAAf,CAAyB,cAAzB,EAAyC,KAAzC,CAA/D,EACA,OAHK,EAIL,IAJK,CAIA,UAAC,IAAD;gBAAU,CAAC,QAAQ,WAAR,GAAsB,QAAQ,WAAR,GAAsB,MAAM,QAAN,CAAe,WAAf,CAA7C,CAAyE,cAAzE,EAAyF,IAAzF;QAAV,CAJP,CATiD;;;;6BAgB1C,gBAAgB,IAAI,SAAS;AACpC,WAAI,QAAQ,IAAR,CADgC;AAEpC,iBAAU,UAAU,KAAK,OAAL,CAAV,GAA0B,EAA1B,CAF0B;AAGpC,eAAQ,MAAR,GAAiB,QAAQ,MAAR,IAAkB,eAAe,MAAf,CAHC;AAIpC,eAAQ,MAAR,GAAiB,QAAQ,MAAR,IAAkB,EAAlB,CAJmB;AAKpC,eAAQ,MAAR,GAAiB,MAAM,QAAN,CAAe,cAAf,CAA8B,cAA9B,EAA8C,QAAQ,MAAR,CAA/D,CALoC;AAMpC,cAAO,MAAM,GAAN,CACL,MAAM,OAAN,CAAc,SAAd,EAAyB,cAAzB,EAAyC,EAAzC,EAA6C,OAA7C,CADK,EAEL,OAFK,EAGL,IAHK,CAGA,UAAC,IAAD;gBAAU,CAAC,QAAQ,WAAR,GAAsB,QAAQ,WAAR,GAAsB,MAAM,QAAN,CAAe,WAAf,CAA7C,CAAyE,cAAzE,EAAyF,IAAzF;QAAV,CAHP,CANoC;;;;gCAY1B,gBAAgB,QAAQ,SAAS;AAC3C,WAAI,QAAQ,IAAR,CADuC;AAE3C,iBAAU,UAAU,KAAK,OAAL,CAAV,GAA0B,EAA1B,CAFiC;AAG3C,eAAQ,MAAR,GAAiB,QAAQ,MAAR,IAAkB,eAAe,MAAf,CAHQ;AAI3C,eAAQ,MAAR,GAAiB,QAAQ,MAAR,IAAkB,EAAlB,CAJ0B;AAK3C,WAAI,MAAJ,EAAY;AACV,kBAAS,MAAM,QAAN,CAAe,cAAf,CAA8B,cAA9B,EAA8C,MAA9C,CAAT,CADU;AAEV,mBAAU,QAAQ,MAAR,EAAgB,MAA1B,EAFU;QAAZ;AAIA,cAAO,KAAK,GAAL,CACL,MAAM,OAAN,CAAc,YAAd,EAA4B,cAA5B,EAA4C,MAA5C,EAAoD,OAApD,CADK,EAEL,OAFK,EAGL,IAHK,CAGA,UAAC,IAAD;gBAAU,CAAC,QAAQ,WAAR,GAAsB,QAAQ,WAAR,GAAsB,MAAM,QAAN,CAAe,WAAf,CAA7C,CAAyE,cAAzE,EAAyF,IAAzF;QAAV,CAHP,CAT2C;;;;UA7QzC;;;AA6RN,eAAc,OAAd,GAAwB;AACtB,SAAM,oBAAN;AACA,UAAO,SAAS,cAAT,EAAyB,EAAzB,CAAP;AACA,UAAO,SAAS,cAAT,EAAyB,EAAzB,CAAP;AACA,UAAO,SAAS,cAAT,EAAyB,EAAzB,CAAP;AACA,UAAO,QAA6B,cAA7B,GAA8C,KAA9C;AACP,SAAM,QAA4B,aAA5B,GAA4C,KAA5C;EANR;;AASA,QAAO,OAAP,GAAiB,aAAjB,C;;;;;;AC5UA,gD;;;;;;ACAA,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;;AAEA;AACA;AACA;AACA;AACA;;AAEA;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;;;;;;;ACvHD;;AAEA;;AAEA,iCAAgC;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;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;AACA;;;;;;;AC9DA;;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,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;;;;;;;ACnPA;;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;;AAEA;AACA;AACA;;AAEA;AACA,2CAA0C;AAC1C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;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;;AAEA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;;;;;;;ACjIA;;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;;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[\"DSHttpAdapter\"] = factory(require(\"js-data\"));\n\telse\n\t\troot[\"DSHttpAdapter\"] = 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 8edc9ba2dfe64e8eafd0\n **/","let JSData = require('js-data')\nlet axios = null\n\ntry {\n axios = require('axios')\n} catch (e) {}\n\nlet { DSUtils } = JSData\nlet { deepMixIn, removeCircular, copy, makePath, isString, isNumber } = DSUtils\n\nclass Defaults {\n queryTransform (resourceConfig, params) {\n return params\n }\n\n deserialize (resourceConfig, data) {\n return data ? ('data' in data ? data.data : data) : data\n }\n\n serialize (resourceConfig, data) {\n return data\n }\n\n log () {}\n\n error () {}\n}\n\nlet defaultsPrototype = Defaults.prototype\n\ndefaultsPrototype.basePath = ''\n\ndefaultsPrototype.forceTrailingSlash = ''\n\ndefaultsPrototype.httpConfig = {}\n\ndefaultsPrototype.verbsUseBasePath = false\n\nclass DSHttpAdapter {\n constructor (options) {\n options = options || {}\n this.defaults = new Defaults()\n if (console) {\n this.defaults.log = (a, b) => console[typeof console.info === 'function' ? 'info' : 'log'](a, b)\n }\n if (console) {\n this.defaults.error = (a, b) => console[typeof console.error === 'function' ? 'error' : 'log'](a, b)\n }\n deepMixIn(this.defaults, options)\n this.http = options.http || axios\n }\n\n getEndpoint (resourceConfig, id, options) {\n options = options || {}\n options.params = options.params || {}\n\n let endpoint = options.hasOwnProperty('endpoint') ? options.endpoint : resourceConfig.endpoint\n let parents = resourceConfig.parents || (resourceConfig.parent ? {\n [resourceConfig.parent]: {\n key: resourceConfig.parentKey,\n field: resourceConfig.parentField\n }\n } : {})\n\n DSUtils.forOwn(parents, function (parent, parentName) {\n let item\n let parentKey = parent.key\n let parentField = parent.field\n let parentDef = resourceConfig.getResource(parentName)\n let parentId = options.params[parentKey]\n\n if (parentId === false || !parentKey || !parentDef) {\n if (parentId === false) {\n delete options.params[parentKey]\n }\n } else {\n delete options.params[parentKey]\n\n if (DSUtils._sn(id)) {\n item = resourceConfig.get(id)\n } else if (DSUtils._o(id)) {\n item = id\n }\n console.log('item', item)\n\n if (item) {\n parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null)\n }\n\n if (parentId) {\n delete options.endpoint\n let _options = {}\n DSUtils.forOwn(options, (value, key) => {\n _options[key] = value\n })\n endpoint = DSUtils.makePath(this.getEndpoint(parentDef, parentId, DSUtils._(parentDef, _options)), parentId, endpoint)\n }\n }\n }, this)\n\n return endpoint\n }\n\n getPath (method, resourceConfig, id, options) {\n let _this = this\n options = options || {}\n if (isString(options.urlPath)) {\n return makePath.apply(DSUtils, [options.basePath || _this.defaults.basePath || resourceConfig.basePath, options.urlPath])\n } else {\n let args = [\n options.basePath || _this.defaults.basePath || resourceConfig.basePath,\n this.getEndpoint(resourceConfig, (isString(id) || isNumber(id) || method === 'create') ? id : null, options)\n ]\n if (method === 'find' || method === 'update' || method === 'destroy') {\n args.push(id)\n }\n return makePath.apply(DSUtils, args)\n }\n }\n\n HTTP (config) {\n let _this = this\n let start = new Date()\n\n // blacklist `data` as it can be large and will take a lot of time to copy\n let payload = config.data\n let cache = config.cache\n let timeout = config.timeout\n config = copy(config, null, null, null, ['data', 'cache', 'timeout'])\n config = deepMixIn(config, _this.defaults.httpConfig)\n config.data = payload\n config.cache = cache\n config.timeout = timeout\n if (!('verbsUseBasePath' in config)) {\n config.verbsUseBasePath = _this.defaults.verbsUseBasePath\n }\n if (!config.urlOverride && config.verbsUseBasePath) {\n config.url = makePath(config.basePath || _this.defaults.basePath, config.url)\n }\n if (_this.defaults.forceTrailingSlash && config.url[config.url.length - 1] !== '/' && !config.urlOverride) {\n config.url += '/'\n }\n if (typeof config.data === 'object') {\n config.data = removeCircular(config.data)\n }\n config.method = config.method.toUpperCase()\n let suffix = config.suffix || _this.defaults.suffix\n if (suffix && config.url.substr(config.url.length - suffix.length) !== suffix && !config.urlOverride) {\n config.url += suffix\n }\n\n // logs the HTTP response\n function logResponse (data, isRejection) {\n data = data || {}\n // examine the data object\n if (data instanceof Error) {\n // log the Error object\n _this.defaults.error(`FAILED: ${data.message || 'Unknown Error'}`, data)\n return DSUtils.Promise.reject(data)\n } else if (typeof data === 'object') {\n let str = `${start.toUTCString()} - ${config.method} ${config.url} - ${data.status} ${(new Date().getTime() - start.getTime())}ms`\n\n if (data.status >= 200 && data.status < 300 && !isRejection) {\n if (_this.defaults.log) {\n _this.defaults.log(str, data)\n }\n return data\n } else {\n if (_this.defaults.error) {\n _this.defaults.error(`FAILED: ${str}`, data)\n }\n return DSUtils.Promise.reject(data)\n }\n } else {\n // unknown type for 'data' that is not an Object or Error\n _this.defaults.error('FAILED', data)\n return DSUtils.Promise.reject(data)\n }\n }\n\n if (!this.http) {\n throw new Error('You have not configured this adapter with an http library!')\n }\n\n return this.http(config).then(logResponse, function (data) {\n return logResponse(data, true)\n })\n }\n\n GET (url, config) {\n config = config || {}\n config.method = config.method || 'get'\n config.urlOverride = !!config.url\n config.url = config.url || url\n return this.HTTP(config)\n }\n\n POST (url, attrs, config) {\n config = config || {}\n config.method = config.method || 'post'\n config.urlOverride = !!config.url\n config.url = config.url || url\n config.data = config.data || attrs\n return this.HTTP(config)\n }\n\n PUT (url, attrs, config) {\n config = config || {}\n config.method = config.method || 'put'\n config.urlOverride = !!config.url\n config.url = config.url || url\n config.data = config.data || attrs\n return this.HTTP(config)\n }\n\n DEL (url, config) {\n config = config || {}\n config.method = config.method || 'delete'\n config.urlOverride = !!config.url\n config.url = config.url || url\n return this.HTTP(config)\n }\n\n find (resourceConfig, id, options) {\n let _this = this\n options = options ? copy(options) : {}\n options.suffix = options.suffix || resourceConfig.suffix\n options.params = options.params || {}\n options.params = _this.defaults.queryTransform(resourceConfig, options.params)\n return _this.GET(\n _this.getPath('find', resourceConfig, id, options),\n options\n ).then((data) => {\n let item = (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data)\n return !item ? DSUtils.Promise.reject(new Error('Not Found!')) : item\n })\n }\n\n findAll (resourceConfig, params, options) {\n let _this = this\n options = options ? copy(options) : {}\n options.suffix = options.suffix || resourceConfig.suffix\n options.params = options.params || {}\n if (params) {\n params = _this.defaults.queryTransform(resourceConfig, params)\n deepMixIn(options.params, params)\n }\n return _this.GET(\n _this.getPath('findAll', resourceConfig, params, options),\n options\n ).then((data) => (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data))\n }\n\n create (resourceConfig, attrs, options) {\n let _this = this\n options = options ? copy(options) : {}\n options.suffix = options.suffix || resourceConfig.suffix\n options.params = options.params || {}\n options.params = _this.defaults.queryTransform(resourceConfig, options.params)\n return _this.POST(\n _this.getPath('create', resourceConfig, attrs, options),\n options.serialize ? options.serialize(resourceConfig, attrs) : _this.defaults.serialize(resourceConfig, attrs),\n options\n ).then((data) => (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data))\n }\n\n update (resourceConfig, id, attrs, options) {\n let _this = this\n options = options ? copy(options) : {}\n options.suffix = options.suffix || resourceConfig.suffix\n options.params = options.params || {}\n options.params = _this.defaults.queryTransform(resourceConfig, options.params)\n return _this.PUT(\n _this.getPath('update', resourceConfig, id, options),\n options.serialize ? options.serialize(resourceConfig, attrs) : _this.defaults.serialize(resourceConfig, attrs),\n options\n ).then((data) => (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data))\n }\n\n updateAll (resourceConfig, attrs, params, options) {\n let _this = this\n options = options ? copy(options) : {}\n options.suffix = options.suffix || resourceConfig.suffix\n options.params = options.params || {}\n if (params) {\n params = _this.defaults.queryTransform(resourceConfig, params)\n deepMixIn(options.params, params)\n }\n return this.PUT(\n _this.getPath('updateAll', resourceConfig, attrs, options),\n options.serialize ? options.serialize(resourceConfig, attrs) : _this.defaults.serialize(resourceConfig, attrs),\n options\n ).then((data) => (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data))\n }\n\n destroy (resourceConfig, id, options) {\n let _this = this\n options = options ? copy(options) : {}\n options.suffix = options.suffix || resourceConfig.suffix\n options.params = options.params || {}\n options.params = _this.defaults.queryTransform(resourceConfig, options.params)\n return _this.DEL(\n _this.getPath('destroy', resourceConfig, id, options),\n options\n ).then((data) => (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data))\n }\n\n destroyAll (resourceConfig, params, options) {\n let _this = this\n options = options ? copy(options) : {}\n options.suffix = options.suffix || resourceConfig.suffix\n options.params = options.params || {}\n if (params) {\n params = _this.defaults.queryTransform(resourceConfig, params)\n deepMixIn(options.params, params)\n }\n return this.DEL(\n _this.getPath('destroyAll', resourceConfig, params, options),\n options\n ).then((data) => (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data))\n }\n}\n\nDSHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\n\nmodule.exports = DSHttpAdapter\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 **/","module.exports = require('./lib/axios');\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/index.js\n ** module id = 2\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\naxios.create = function create(defaultConfig) {\n return new Axios(defaultConfig);\n};\n\n// Expose defaults\naxios.defaults = defaultInstance.defaults;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose interceptors\naxios.interceptors = defaultInstance.interceptors;\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 = 3\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 transformResponseJSON(data, headers) {\n if (utils.isFormData(data)) {\n return data;\n }\n if (utils.isArrayBuffer(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 transformResponseJSON(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\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/defaults.js\n ** module id = 4\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 * 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 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 = 5\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 = 6\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 = 7\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 = window.btoa || require('./../helpers/btoa');\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\n // For IE 8/9 CORS support\n // Only supports POST and GET calls and doesn't returns the response headers.\n if (window.XDomainRequest && !('withCredentials' in request) && !isURLSameOrigin(config.url)) {\n request = new window.XDomainRequest();\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 // Listen for ready state\n request.onload = function handleLoad() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = ['text', ''].indexOf(config.responseType || '') !== -1 ? 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 };\n\n // Resolve or reject the Promise based on the status\n ((response.status >= 200 && response.status < 300) ||\n (!('status' in request) && response.responseText) ?\n resolve :\n 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 // 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 if (utils.isArrayBuffer(requestData)) {\n requestData = new DataView(requestData);\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 = 8\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 = 9\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 = 10\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 = 11\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 = 12\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 InvalidCharacterError(message) {\n this.message = message;\n}\nInvalidCharacterError.prototype = new Error;\nInvalidCharacterError.prototype.code = 5;\nInvalidCharacterError.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 InvalidCharacterError('INVALID_CHARACTER_ERR: DOM Exception 5');\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 = 13\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 = 14\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 = 15\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 = 16\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 = 17\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 = 18\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 = 19\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 26241d036b9781089fe3","webpack:///./src/index.js","webpack:///external {\"amd\":\"js-data\",\"commonjs\":\"js-data\",\"commonjs2\":\"js-data\",\"root\":\"JSData\"}","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/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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;;AAmCA,QAAO,OAAP,GAAiB,WAAjB,C;;;;;;ACn8CA,gD;;;;;;ACAA,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;;AAEA;AACA;AACA;AACA;AACA;;AAEA;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;;;;;;;ACvHD;;AAEA;;AAEA,iCAAgC;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;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;AACA;;;;;;;AC9DA;;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,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;;;;;;;ACnPA;;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;;AAEA;AACA;AACA;;AAEA;AACA,2CAA0C;AAC1C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;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;;AAEA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;;;;;;;ACjIA;;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;;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[\"HttpAdapter\"] = factory(require(\"js-data\"));\n\telse\n\t\troot[\"HttpAdapter\"] = 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 26241d036b9781089fe3\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nconst {\n _,\n addHiddenPropsToTarget,\n copy,\n deepMixIn,\n extend,\n fillIn,\n forOwn,\n isArray,\n isFunction,\n isNumber,\n isObject,\n isSorN,\n isString,\n isUndefined,\n resolve,\n reject,\n toJson\n} = utils\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 forOwn(params, function (val, key) {\n if (val === null || typeof val === 'undefined') {\n return\n }\n if (!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 (isObject(v)) {\n v = 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 noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n}\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#debug\n * @type {boolean}\n * @default false\n */\n debug: false,\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 * @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\n // Default values for arguments\n opts || (opts = {})\n\n fillIn(self, opts)\n fillIn(self, DEFAULTS)\n}\n\naddHiddenPropsToTarget(HttpAdapter.prototype, {\n /**\n * @name HttpAdapter#afterCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreate: noop2,\n\n /**\n * @name HttpAdapter#afterCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreateMany: noop2,\n\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#afterDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroy: noop2,\n\n /**\n * @name HttpAdapter#afterDestroyAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroyAll: noop2,\n\n /**\n * @name HttpAdapter#afterFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFind: noop2,\n\n /**\n * @name HttpAdapter#afterFindAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFindAll: 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#afterUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdate: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateAll: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateMany: noop2,\n\n /**\n * @name HttpAdapter#beforeCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n */\n beforeCreate: noop,\n\n /**\n * @name HttpAdapter#beforeCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeCreateMany: noop,\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#beforeDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeDestroy: noop,\n\n /**\n * @name HttpAdapter#beforeDestroyAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeDestroyAll: noop,\n\n /**\n * @name HttpAdapter#beforeFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeFind: noop,\n\n /**\n * @name HttpAdapter#beforeFindAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeFindAll: 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 /**\n * @name HttpAdapter#beforeUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n */\n beforeUpdate: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n */\n beforeUpdateAll: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeUpdateMany: noop,\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreate lifecycle hook\n op = opts.op = 'beforeCreate'\n return resolve(self[op](mapper, props, opts)).then(function () {\n op = opts.op = 'create'\n self.dbg(op, mapper, props, opts)\n return self.POST(\n self.getPath('create', mapper, props, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreate lifecycle hook\n op = opts.op = 'afterCreate'\n return resolve(self[op](mapper, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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} 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 createMany (mapper, records, opts) {\n const self = this\n let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreateMany lifecycle hook\n op = opts.op = 'beforeCreateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'createMany'\n self.dbg(op, mapper, records, opts)\n return self.POST(\n self.getPath('createMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreateMany lifecycle hook\n op = opts.op = 'afterCreateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n },\n\n /**\n * Call {@link HttpAdapter#log} at the \"debug\" level.\n *\n * @name HttpAdapter#dbg\n * @method\n * @param {...*} [args] Args passed to {@link HttpAdapter#log}.\n */\n dbg (...args) {\n this.log('debug', ...args)\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.deserialize)) {\n return opts.deserialize(mapper, response, opts)\n }\n if (isFunction(mapper.deserialize)) {\n return mapper.deserialize(mapper, response, opts)\n }\n if (opts.raw) {\n return response\n }\n return response ? ('data' in response ? response.data : response) : 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroy lifecycle hook\n op = opts.op = 'beforeDestroy'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy'\n self.dbg(op, mapper, id, opts)\n return self.DEL(\n self.getPath('destroy', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroy lifecycle hook\n op = opts.op = 'afterDestroy'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroyAll lifecycle hook\n op = opts.op = 'beforeDestroyAll'\n return resolve(self.beforeDestroyAll(mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll'\n self.dbg(op, mapper, query, opts)\n return self.DEL(\n self.getPath('destroyAll', mapper, null, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 = 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeFind lifecycle hook\n op = opts.op = 'beforeFind'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find'\n self.dbg(op, mapper, id, opts)\n return self.GET(\n self.getPath('find', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFind lifecycle hook\n op = opts.op = 'afterFind'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll'\n return resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll'\n self.dbg(op, mapper, query, opts)\n return self.GET(\n self.getPath('findAll', mapper, opts.params, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFindAll lifecycle hook\n op = opts.op = 'afterFindAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 || (opts.params = {})\n\n let endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : mapper.endpoint\n let parents = mapper.parents || (mapper.parent ? {\n [mapper.parent]: {\n key: mapper.parentKey,\n field: mapper.parentField\n }\n } : {})\n\n forOwn(parents, function (parent, parentName) {\n let item\n let parentKey = parent.key\n let parentField = parent.field\n let parentDef = mapper.getResource(parentName)\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 (isString(id) || isNumber(id)) {\n item = mapper.get(id)\n } else if (isObject(id)) {\n item = id\n }\n\n if (item) {\n parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null)\n }\n\n if (parentId) {\n delete opts.endpoint\n const _opts = {}\n forOwn(opts, function (value, key) {\n _opts[key] = value\n })\n _(_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 opts.basePath === undefined ? (mapper.basePath === undefined ? self.basePath : mapper.basePath) : opts.basePath,\n self.getEndpoint(mapper, (isString(id) || 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 /**\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 = copy(config, null, null, null, ['data', 'cache', 'timeout'])\n config = 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 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 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 resolve(self.afterHTTP(config, opts, response)).then(function (_response) {\n return _response || response\n })\n })\n },\n\n /**\n * Log the provided arguments at the specified leve.\n *\n * @name HttpAdapter#log\n * @method\n * @param {string} level Log level.\n * @param {...*} [args] Arguments to log.\n */\n log (level, ...args) {\n if (level && !args.length) {\n args.push(level)\n level = 'debug'\n }\n if (level === 'debug' && !this.debug) {\n return\n }\n const prefix = `${level.toUpperCase()}: (HttpAdapter)`\n if (console[level]) {\n console[level](prefix, ...args)\n } else {\n console.log(prefix, ...args)\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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.queryTransform)) {\n return opts.queryTransform(mapper, params, opts)\n }\n if (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 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 (isFunction(opts.serialize)) {\n return opts.serialize(mapper, data, opts)\n }\n if (isFunction(mapper.serialize)) {\n return mapper.serialize(mapper, data, opts)\n }\n return data\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdate lifecycle hook\n op = opts.op = 'beforeUpdate'\n return resolve(self[op](mapper, id, props, opts)).then(function () {\n op = opts.op = 'update'\n self.dbg(op, mapper, id, props, opts)\n return self.PUT(\n self.getPath('update', mapper, id, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdate lifecycle hook\n op = opts.op = 'afterUpdate'\n return resolve(self[op](mapper, id, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateAll lifecycle hook\n op = opts.op = 'beforeUpdateAll'\n return resolve(self[op](mapper, props, query, opts)).then(function () {\n op = opts.op = 'updateAll'\n self.dbg(op, mapper, props, query, opts)\n return self.PUT(\n self.getPath('updateAll', mapper, null, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateAll lifecycle hook\n op = opts.op = 'afterUpdateAll'\n return resolve(self[op](mapper, props, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'updateMany'\n self.dbg(op, mapper, records, opts)\n return self.PUT(\n self.getPath('updateMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateMany lifecycle hook\n op = opts.op = 'afterUpdateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n }\n})\n\n/**\n * Add an Http actions to a mapper.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.addAction = function (name, opts) {\n if (!name || !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 reject(err) }\n mapper[name] = function (id, _opts) {\n const self = this\n if (isObject(id)) {\n _opts = id\n }\n _opts = _opts || {}\n let adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http')\n let config = {}\n 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, isSorN(id) ? id : null, _opts)\n ]\n if (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 deepMixIn(config)(_opts)\n return 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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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 = extend\n\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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 **/","module.exports = require('./lib/axios');\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/index.js\n ** module id = 2\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\naxios.create = function create(defaultConfig) {\n return new Axios(defaultConfig);\n};\n\n// Expose defaults\naxios.defaults = defaultInstance.defaults;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose interceptors\naxios.interceptors = defaultInstance.interceptors;\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 = 3\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 transformResponseJSON(data, headers) {\n if (utils.isFormData(data)) {\n return data;\n }\n if (utils.isArrayBuffer(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 transformResponseJSON(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\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/defaults.js\n ** module id = 4\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 * 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 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 = 5\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 = 6\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 = 7\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 = window.btoa || require('./../helpers/btoa');\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\n // For IE 8/9 CORS support\n // Only supports POST and GET calls and doesn't returns the response headers.\n if (window.XDomainRequest && !('withCredentials' in request) && !isURLSameOrigin(config.url)) {\n request = new window.XDomainRequest();\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 // Listen for ready state\n request.onload = function handleLoad() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = ['text', ''].indexOf(config.responseType || '') !== -1 ? 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 };\n\n // Resolve or reject the Promise based on the status\n ((response.status >= 200 && response.status < 300) ||\n (!('status' in request) && response.responseText) ?\n resolve :\n 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 // 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 if (utils.isArrayBuffer(requestData)) {\n requestData = new DataView(requestData);\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 = 8\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 = 9\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 = 10\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 = 11\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 = 12\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 InvalidCharacterError(message) {\n this.message = message;\n}\nInvalidCharacterError.prototype = new Error;\nInvalidCharacterError.prototype.code = 5;\nInvalidCharacterError.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 InvalidCharacterError('INVALID_CHARACTER_ERR: DOM Exception 5');\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 = 13\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 = 14\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 = 15\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 = 16\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 = 17\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 = 18\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 = 19\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 cb408ba..3a47aeb 100644 --- a/dist/js-data-http.min.js +++ b/dist/js-data-http.min.js @@ -1,11 +1,20 @@ /*! * js-data-http +<<<<<<< c4fb0646f59935877a8537ad264717c6cabf0ff3 * @version 2.2.1 - Homepage +======= +* @version 3.0.0-alpha.5 - Homepage +>>>>>>> Rebase * @author Jason Dobry -* @copyright (c) 2014-2016 Jason Dobry +* @copyright (c) 2014-2015 Jason Dobry * @license MIT * * @overview HTTP adapter for js-data. */ +<<<<<<< c4fb0646f59935877a8537ad264717c6cabf0ff3 !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.DSHttpAdapter=t(require("js-data")):e.DSHttpAdapter=t(e.JSData)}(this,function(e){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={exports:{},id:n,loaded:!1};return e[n].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}([function(e,t,r){"use strict";function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a="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=function(){function e(e,t){for(var r=0;r=200&&t.status<300&&!o?(r.defaults.log&&r.defaults.log(i,t),t):(r.defaults.error&&r.defaults.error("FAILED: "+i,t),f.Promise.reject(t))}return r.defaults.error("FAILED",t),f.Promise.reject(t)}var r=this,n=new Date,o=e.data,i=e.cache,s=e.timeout;e=p(e,null,null,null,["data","cache","timeout"]),e=l(e,r.defaults.httpConfig),e.data=o,e.cache=i,e.timeout=s,"verbsUseBasePath"in e||(e.verbsUseBasePath=r.defaults.verbsUseBasePath),!e.urlOverride&&e.verbsUseBasePath&&(e.url=d(e.basePath||r.defaults.basePath,e.url)),r.defaults.forceTrailingSlash&&"/"!==e.url[e.url.length-1]&&!e.urlOverride&&(e.url+="/"),"object"===a(e.data)&&(e.data=c(e.data)),e.method=e.method.toUpperCase();var u=e.suffix||r.defaults.suffix;if(u&&e.url.substr(e.url.length-u.length)!==u&&!e.urlOverride&&(e.url+=u),!this.http)throw new Error("You have not configured this adapter with an http library!");return this.http(e).then(t,function(e){return t(e,!0)})}},{key:"GET",value:function(e,t){return t=t||{},t.method=t.method||"get",t.urlOverride=!!t.url,t.url=t.url||e,this.HTTP(t)}},{key:"POST",value:function(e,t,r){return r=r||{},r.method=r.method||"post",r.urlOverride=!!r.url,r.url=r.url||e,r.data=r.data||t,this.HTTP(r)}},{key:"PUT",value:function(e,t,r){return r=r||{},r.method=r.method||"put",r.urlOverride=!!r.url,r.url=r.url||e,r.data=r.data||t,this.HTTP(r)}},{key:"DEL",value:function(e,t){return t=t||{},t.method=t.method||"delete",t.urlOverride=!!t.url,t.url=t.url||e,this.HTTP(t)}},{key:"find",value:function(e,t,r){var n=this;return r=r?p(r):{},r.suffix=r.suffix||e.suffix,r.params=r.params||{},r.params=n.defaults.queryTransform(e,r.params),n.GET(n.getPath("find",e,t,r),r).then(function(t){var o=(r.deserialize?r.deserialize:n.defaults.deserialize)(e,t);return o?o:f.Promise.reject(new Error("Not Found!"))})}},{key:"findAll",value:function(e,t,r){var n=this;return r=r?p(r):{},r.suffix=r.suffix||e.suffix,r.params=r.params||{},t&&(t=n.defaults.queryTransform(e,t),l(r.params,t)),n.GET(n.getPath("findAll",e,t,r),r).then(function(t){return(r.deserialize?r.deserialize:n.defaults.deserialize)(e,t)})}},{key:"create",value:function(e,t,r){var n=this;return r=r?p(r):{},r.suffix=r.suffix||e.suffix,r.params=r.params||{},r.params=n.defaults.queryTransform(e,r.params),n.POST(n.getPath("create",e,t,r),r.serialize?r.serialize(e,t):n.defaults.serialize(e,t),r).then(function(t){return(r.deserialize?r.deserialize:n.defaults.deserialize)(e,t)})}},{key:"update",value:function(e,t,r,n){var o=this;return n=n?p(n):{},n.suffix=n.suffix||e.suffix,n.params=n.params||{},n.params=o.defaults.queryTransform(e,n.params),o.PUT(o.getPath("update",e,t,n),n.serialize?n.serialize(e,r):o.defaults.serialize(e,r),n).then(function(t){return(n.deserialize?n.deserialize:o.defaults.deserialize)(e,t)})}},{key:"updateAll",value:function(e,t,r,n){var o=this;return n=n?p(n):{},n.suffix=n.suffix||e.suffix,n.params=n.params||{},r&&(r=o.defaults.queryTransform(e,r),l(n.params,r)),this.PUT(o.getPath("updateAll",e,t,n),n.serialize?n.serialize(e,t):o.defaults.serialize(e,t),n).then(function(t){return(n.deserialize?n.deserialize:o.defaults.deserialize)(e,t)})}},{key:"destroy",value:function(e,t,r){var n=this;return r=r?p(r):{},r.suffix=r.suffix||e.suffix,r.params=r.params||{},r.params=n.defaults.queryTransform(e,r.params),n.DEL(n.getPath("destroy",e,t,r),r).then(function(t){return(r.deserialize?r.deserialize:n.defaults.deserialize)(e,t)})}},{key:"destroyAll",value:function(e,t,r){var n=this;return r=r?p(r):{},r.suffix=r.suffix||e.suffix,r.params=r.params||{},t&&(t=n.defaults.queryTransform(e,t),l(r.params,t)),this.DEL(n.getPath("destroyAll",e,t,r),r).then(function(t){return(r.deserialize?r.deserialize:n.defaults.deserialize)(e,t)})}}]),e}();g.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=g},function(t,r){t.exports=e},function(e,t,r){e.exports=r(3)},function(e,t,r){"use strict";function n(e){this.defaults=a.merge({},e),this.interceptors={request:new s,response:new s}}var o=r(4),a=r(5),i=r(6),s=r(15),u=r(16),f=r(17),l=r(18),c=r(11);n.prototype.request=function(e){"string"==typeof e&&(e=a.merge({url:arguments[0]},arguments[1])),e=a.merge(o,this.defaults,{method:"get"},e),e.baseURL&&!u(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=a.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),a.forEach(["delete","get","head","post","put","patch","common"],function(t){delete e.headers[t]});var t=[i,void 0],r=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;)r=r.then(t.shift(),t.shift());return r};var p=new n(o),d=e.exports=l(n.prototype.request,p);d.create=function(e){return new n(e)},d.defaults=p.defaults,d.all=function(e){return Promise.all(e)},d.spread=r(19),d.interceptors=p.interceptors,a.forEach(["delete","get","head"],function(e){n.prototype[e]=function(t,r){return this.request(a.merge(r||{},{method:e,url:t}))},d[e]=l(n.prototype[e],p)}),a.forEach(["post","put","patch"],function(e){n.prototype[e]=function(t,r,n){return this.request(a.merge(n||{},{method:e,url:t,data:r}))},d[e]=l(n.prototype[e],p)})},function(e,t,r){"use strict";var n=r(5),o=/^\)\]\}',?\n/,a={"Content-Type":"application/x-www-form-urlencoded"};e.exports={transformRequest:[function(e,t){return n.isFormData(e)?e:n.isArrayBuffer(e)?e:n.isArrayBufferView(e)?e.buffer:!n.isObject(e)||n.isFile(e)||n.isBlob(e)?e:(n.isUndefined(t)||(n.forEach(t,function(e,r){"content-type"===r.toLowerCase()&&(t["Content-Type"]=e)}),n.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:n.merge(a),post:n.merge(a),put:n.merge(a)},timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"}},function(e,t){"use strict";function r(e){return"[object Array]"===v.call(e)}function n(e){return"[object ArrayBuffer]"===v.call(e)}function o(e){return"[object FormData]"===v.call(e)}function a(e){var t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer}function i(e){return"string"==typeof e}function s(e){return"number"==typeof e}function u(e){return"undefined"==typeof e}function f(e){return null!==e&&"object"==typeof e}function l(e){return"[object Date]"===v.call(e)}function c(e){return"[object File]"===v.call(e)}function p(e){return"[object Blob]"===v.call(e)}function d(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function h(){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||r(e)||(e=[e]),r(e))for(var n=0,o=e.length;o>n;n++)t.call(null,e[n],n,e);else for(var a in e)e.hasOwnProperty(a)&&t.call(null,e[a],a,e)}function y(){function e(e,r){"object"==typeof t[r]&&"object"==typeof e?t[r]=y(t[r],e):t[r]=e}for(var t={},r=0,n=arguments.length;n>r;r++)m(arguments[r],e);return t}var v=Object.prototype.toString;e.exports={isArray:r,isArrayBuffer:n,isFormData:o,isArrayBufferView:a,isString:i,isNumber:s,isObject:f,isUndefined:u,isDate:l,isFile:c,isBlob:p,isStandardBrowserEnv:h,forEach:m,merge:y,trim:d}},function(e,t,r){(function(t){"use strict";e.exports=function(e){return new Promise(function(n,o){try{var a;"function"==typeof e.adapter?a=e.adapter:"undefined"!=typeof XMLHttpRequest?a=r(8):"undefined"!=typeof t&&(a=r(8)),"function"==typeof a&&a(n,o,e)}catch(e){o(e)}})}}).call(t,r(7))},function(e,t){function r(){f=!1,i.length?u=i.concat(u):l=-1,u.length&&n()}function n(){if(!f){var e=setTimeout(r);f=!0;for(var t=u.length;t;){for(i=u,u=[];++l1)for(var r=1;r=200&&o.status<300||!("status"in p)&&o.responseText?e:t)(o),p=null}},p.onerror=function(){t(new Error("Network Error")),p=null},n.isStandardBrowserEnv()){var m=r(14),y=f.withCredentials||s(f.url)?m.read(f.xsrfCookieName):void 0;y&&(c[f.xsrfHeaderName]=y)}if("setRequestHeader"in p&&n.forEach(c,function(e,t){"undefined"==typeof l&&"content-type"===t.toLowerCase()?delete c[t]:p.setRequestHeader(t,e)}),f.withCredentials&&(p.withCredentials=!0),f.responseType)try{p.responseType=f.responseType}catch(e){if("json"!==p.responseType)throw e}n.isArrayBuffer(l)&&(l=new DataView(l)),p.send(l)}},function(e,t,r){"use strict";function n(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,"]")}var o=r(5);e.exports=function(e,t,r){if(!t)return e;var a;if(r)a=r(t);else{var i=[];o.forEach(t,function(e,t){null!==e&&"undefined"!=typeof e&&(o.isArray(e)&&(t+="[]"),o.isArray(e)||(e=[e]),o.forEach(e,function(e){o.isDate(e)?e=e.toISOString():o.isObject(e)&&(e=JSON.stringify(e)),i.push(n(t)+"="+n(e))}))}),a=i.join("&")}return a&&(e+=(-1===e.indexOf("?")?"?":"&")+a),e}},function(e,t,r){"use strict";var n=r(5);e.exports=function(e){var t,r,o,a={};return e?(n.forEach(e.split("\n"),function(e){o=e.indexOf(":"),t=n.trim(e.substr(0,o)).toLowerCase(),r=n.trim(e.substr(o+1)),t&&(a[t]=a[t]?a[t]+", "+r:r)}),a):a}},function(e,t,r){"use strict";var n=r(5);e.exports=function(e,t,r){return n.forEach(r,function(r){e=r(e,t)}),e}},function(e,t,r){"use strict";var n=r(5);e.exports=n.isStandardBrowserEnv()?function(){function e(e){var t=e;return r&&(o.setAttribute("href",t),t=o.href),o.setAttribute("href",t),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}var t,r=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");return t=e(window.location.href),function(r){var o=n.isString(r)?e(r):r;return o.protocol===t.protocol&&o.host===t.host}}():function(){return function(){return!0}}()},function(e,t){"use strict";function r(e){this.message=e}function n(e){for(var t,n,a=String(e),i="",s=0,u=o;a.charAt(0|s)||(u="=",s%1);i+=u.charAt(63&t>>8-s%1*8)){if(n=a.charCodeAt(s+=.75),n>255)throw new r("INVALID_CHARACTER_ERR: DOM Exception 5");t=t<<8|n}return i}var o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";r.prototype=new Error,r.prototype.code=5,r.prototype.name="InvalidCharacterError",e.exports=n},function(e,t,r){"use strict";var n=r(5);e.exports=n.isStandardBrowserEnv()?function(){return{write:function(e,t,r,o,a,i){var s=[];s.push(e+"="+encodeURIComponent(t)),n.isNumber(r)&&s.push("expires="+new Date(r).toGMTString()),n.isString(o)&&s.push("path="+o),n.isString(a)&&s.push("domain="+a),i===!0&&s.push("secure"),document.cookie=s.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,r){"use strict";function n(){this.handlers=[]}var o=r(5);n.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},n.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},n.prototype.forEach=function(e){o.forEach(this.handlers,function(t){null!==t&&e(t)})},e.exports=n},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 r=new Array(arguments.length),n=0;nr;r++)t[r]=arguments[r];var n=i(t,"/");return n.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 s(e,t){if(!t)return e;var r=[];return b(t,function(e,t){null!==e&&"undefined"!=typeof e&&(x(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():A(e)&&(e=D(e)),r.push(u(t)+"="+u(e))}))}),r.length>0&&(e+=(-1===e.indexOf("?")?"?":"&")+r.join("&")),e}function f(e){var t=this;e||(e={}),v(t,e),v(t,z)}var c="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},p=r(1),l=r(2),d=p.utils._,h=p.utils.addHiddenPropsToTarget,m=p.utils.copy,y=p.utils.deepMixIn,g=p.utils.extend,v=p.utils.fillIn,b=p.utils.forOwn,x=p.utils.isArray,T=p.utils.isFunction,w=p.utils.isNumber,A=p.utils.isObject,E=p.utils.isSorN,P=p.utils.isString,C=p.utils.isUndefined,S=p.utils.resolve,j=p.utils.reject,D=p.utils.toJson,U=!1;try{U=window&&window.fetch}catch(e){}var q=function(){for(var e=this,t=arguments.length,r=Array(t),n=0;t>n;n++)r[n]=arguments[n];var o=r[r.length-1];e.dbg.apply(e,[o.op].concat(r))},O=function(){for(var e=this,t=arguments.length,r=Array(t),n=0;t>n;n++)r[n]=arguments[n];var o=r[r.length-2];e.dbg.apply(e,[o.op].concat(r))},z={basePath:"",debug:!1,forceTrailingSlash:!1,http:l,httpConfig:{},suffix:"",useFetch:!1};h(f.prototype,{afterCreate:O,afterCreateMany:O,afterDEL:O,afterDestroy:O,afterDestroyAll:O,afterFind:O,afterFindAll:O,afterGET:O,afterHTTP:O,afterPOST:O,afterPUT:O,afterUpdate:O,afterUpdateAll:O,afterUpdateMany:O,beforeCreate:q,beforeCreateMany:q,beforeDEL:q,beforeDestroy:q,beforeDestroyAll:q,beforeFind:q,beforeFindAll:q,beforeGET:q,beforeHTTP:q,beforePOST:q,beforePUT:q,beforeUpdate:q,beforeUpdateAll:q,beforeUpdateMany:q,create:function(e,t,r){var n=this,o=void 0;return r=r?m(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeCreate",S(n[o](e,t,r)).then(function(){return o=r.op="create",n.dbg(o,e,t,r),n.POST(n.getPath("create",e,t,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterCreate",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},createMany:function(e,t,r){var n=this,o=void 0;return r=r?m(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeCreateMany",S(n[o](e,t,r)).then(function(){return o=r.op="createMany",n.dbg(o,e,t,r),n.POST(n.getPath("createMany",e,null,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterCreateMany",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},dbg:function(){for(var e=arguments.length,t=Array(e),r=0;e>r;r++)t[r]=arguments[r];this.log.apply(this,["debug"].concat(t))},DEL:function(e,t,r){var n=this,o=void 0;return t||(t={}),r||(r={}),t.url=e||t.url,t.method=t.method||"delete",o=r.op="beforeDEL",S(n[o](e,t,r)).then(function(i){return t=C(i)?t:i,o=r.op="DEL",n.dbg(o,e,t,r),n.HTTP(t,r)}).then(function(i){return o=r.op="afterDEL",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},deserialize:function(e,t,r){return r||(r={}),T(r.deserialize)?r.deserialize(e,t,r):T(e.deserialize)?e.deserialize(e,t,r):r.raw?t:t&&"data"in t?t.data:t},destroy:function(e,t,r){var n=this,o=void 0;return r=r?m(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeDestroy",S(n[o](e,t,r)).then(function(){return o=r.op="destroy",n.dbg(o,e,t,r),n.DEL(n.getPath("destroy",e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterDestroy",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},destroyAll:function(e,t,r){var n=this,o=void 0;return t||(t={}),r=r?m(r):{},r.params||(r.params={}),y(r.params,t),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeDestroyAll",S(n.beforeDestroyAll(e,t,r)).then(function(){return o=r.op="destroyAll",n.dbg(o,e,t,r),n.DEL(n.getPath("destroyAll",e,null,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterDestroyAll",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},error:function(){if(console){var e;(e=console)["function"==typeof console.error?"error":"log"].apply(e,arguments)}},fetch:function(e){function t(t,r){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}(function(e,t){var r={method:e.method,headers:new Headers(e.headers)};return e.data&&(r.body=D(e.data)),fetch(new Request(s(e.url,e.params),r)).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,r){var n=this,o=void 0;return r=r?m(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeFind",S(n[o](e,t,r)).then(function(){return o=r.op="find",n.dbg(o,e,t,r),n.GET(n.getPath("find",e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterFind",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},findAll:function(e,t,r){var n=this,o=void 0;return t||(t={}),r=r?m(r):{},r.params||(r.params={}),r.suffix=C(r.suffix)?e.suffix:r.suffix,y(r.params,t),r.params=n.queryTransform(e,r.params,r),o=r.op="beforeFindAll",S(n[o](e,t,r)).then(function(){return o=r.op="findAll",n.dbg(o,e,t,r),n.GET(n.getPath("findAll",e,r.params,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterFindAll",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},GET:function(e,t,r){var n=this,o=void 0;return t||(t={}),r||(r={}),t.url=e||t.url,t.method=t.method||"get",o=r.op="beforeGET",S(n[o](e,t,r)).then(function(i){return t=C(i)?t:i,o=r.op="GET",n.dbg(o,e,t,r),n.HTTP(t,r)}).then(function(i){return o=r.op="afterGET",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},getEndpoint:function(e,t,r){var o=this;r||(r={}),r.params||(r.params={});var i=r.hasOwnProperty("endpoint")?r.endpoint:e.endpoint,u=e.parents||(e.parent?n({},e.parent,{key:e.parentKey,field:e.parentField}):{});return b(u,function(n,u){var s=void 0,f=n.key,p=n.field,l=e.getResource(u),h=r.params[f];if(h===!1||!f||!l)return h===!1&&delete r.params[f],!1;if(delete r.params[f],P(t)||w(t)?s=e.get(t):A(t)&&(s=t),s&&(h=h||s[f]||(s[p]?s[p][l.idAttribute]:null)),h){var m=function(){delete r.endpoint;var e={};return b(r,function(t,r){e[r]=t}),d(e,l),i=a(o.getEndpoint(l,h,e,h,i)),{v:!1}}();if("object"===("undefined"==typeof m?"undefined":c(m)))return m.v}}),i},getPath:function(e,t,r,n){var o=this;n||(n={});var i=[void 0===n.basePath?void 0===t.basePath?o.basePath:t.basePath:n.basePath,o.getEndpoint(t,P(r)||w(r)||"create"===e?r:null,n)];return"find"!==e&&"update"!==e&&"destroy"!==e||i.push(r),a.apply(p.utils,i)},HTTP:function(e,t){function r(t){var r=o.toUTCString()+" - "+e.method.toUpperCase()+" "+e.url+" - "+t.status+" "+((new Date).getTime()-o.getTime())+"ms";return t.status>=200&&t.status<300?(n.log&&n.dbg("debug",r,t),t):(n.error&&n.error("'FAILED: "+r,t),j(t))}var n=this,o=new Date;t||(t={}),e=m(e),e=y(e,n.httpConfig),n.forceTrailingSlash&&"/"!==e.url[e.url.length-1]&&(e.url+="/"),e.method=e.method.toUpperCase();var i=e.suffix||t.suffix||n.suffix;if(i&&e.url.substr(e.url.length-i.length)!==i&&(e.url+=i),!n.http)throw new Error("You have not configured this adapter with an http library!");return S(n.beforeHTTP(e,t)).then(function(o){return e=o||e,U&&(n.useFetch||t.useFetch||!n.http)?n.fetch(e,t).then(r,r):n.http(e).then(r,r).catch(function(r){return n.responseError(r,e,t)})}).then(function(r){return S(n.afterHTTP(e,t,r)).then(function(e){return e||r})})},log:function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;t>n;n++)r[n-1]=arguments[n];if(e&&!r.length&&(r.push(e),e="debug"),"debug"!==e||this.debug){var o=e.toUpperCase()+": (HttpAdapter)";if(console[e]){var i;(i=console)[e].apply(i,[o].concat(r))}else{var a;(a=console).log.apply(a,[o].concat(r))}}},POST:function(e,t,r,n){var o=this,i=void 0;return r||(r={}),n||(n={}),r.url=e||r.url,r.data=t||r.data,r.method=r.method||"post",i=n.op="beforePOST",S(o[i](e,t,r,n)).then(function(a){return r=C(a)?r:a,i=n.op="POST",o.dbg(i,e,t,r,n),o.HTTP(r,n)}).then(function(a){return i=n.op="afterPOST",S(o[i](e,t,r,n,a)).then(function(e){return C(e)?a:e})})},PUT:function(e,t,r,n){var o=this,i=void 0;return r||(r={}),n||(n={}),r.url=e||r.url,r.data=t||r.data,r.method=r.method||"put",i=n.op="beforePUT",S(o[i](e,t,r,n)).then(function(a){return r=C(a)?r:a,i=n.op="PUT",o.dbg(i,e,t,r,n),o.HTTP(r,n)}).then(function(a){return i=n.op="afterPUT",S(o[i](e,t,r,n,a)).then(function(e){return C(e)?a:e})})},queryTransform:function(e,t,r){return r||(r={}),T(r.queryTransform)?r.queryTransform(e,t,r):T(e.queryTransform)?e.queryTransform(e,t,r):t},responseError:function(e,t,r){return j(e)},serialize:function(e,t,r){return r||(r={}),T(r.serialize)?r.serialize(e,t,r):T(e.serialize)?e.serialize(e,t,r):t},update:function(e,t,r,n){var o=this,i=void 0;return n=n?m(n):{},n.params||(n.params={}),n.params=o.queryTransform(e,n.params,n),n.suffix=C(n.suffix)?e.suffix:n.suffix,i=n.op="beforeUpdate",S(o[i](e,t,r,n)).then(function(){return i=n.op="update",o.dbg(i,e,t,r,n),o.PUT(o.getPath("update",e,t,n),o.serialize(e,r,n),n)}).then(function(t){return o.deserialize(e,t,n)}).then(function(a){return i=n.op="afterUpdate",S(o[i](e,t,r,n,a)).then(function(e){return C(e)?a:e})})},updateAll:function(e,t,r,n){var o=this,i=void 0;return r||(r={}),n=n?m(n):{},n.params||(n.params={}),y(n.params,r),n.params=o.queryTransform(e,n.params,n),n.suffix=C(n.suffix)?e.suffix:n.suffix,i=n.op="beforeUpdateAll",S(o[i](e,t,r,n)).then(function(){return i=n.op="updateAll",o.dbg(i,e,t,r,n),o.PUT(o.getPath("updateAll",e,null,n),o.serialize(e,t,n),n)}).then(function(t){return o.deserialize(e,t,n)}).then(function(a){return i=n.op="afterUpdateAll",S(o[i](e,t,r,n,a)).then(function(e){return C(e)?a:e})})},updateMany:function(e,t,r){var n=this,o=void 0;return r=r?m(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeUpdateMany",S(n[o](e,t,r)).then(function(){return o=r.op="updateMany",n.dbg(o,e,t,r),n.PUT(n.getPath("updateMany",e,null,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterUpdateMany",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})}}),f.addAction=function(e,t){if(!e||!P(e))throw new TypeError("action(name[, opts]): Expected: string, Found: "+("undefined"==typeof e?"undefined":c(e)));return function(r){if(r[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 j(e)},r[e]=function(r,n){var o=this;A(r)&&(n=r),n=n||{};var i=o.getAdapter(t.adapter||o.defaultAdapter||"http"),u={};if(v(u,t),!n.hasOwnProperty("endpoint")&&u.endpoint&&(n.endpoint=u.endpoint),"function"==typeof n.getEndpoint)u.url=n.getEndpoint(o,n);else{var s=[n.basePath||o.basePath||i.basePath,i.getEndpoint(o,E(r)?r:null,n)];E(r)&&s.push(r),s.push(t.pathname||e),u.url=a.apply(null,s)}return u.method=u.method||"GET",u.mapper=o.name,y(u)(n),S(u).then(n.request||t.request).then(function(e){return i.HTTP(e)}).then(function(e){return e&&e.config&&(e.config.mapper=o.name),e}).then(n.response||t.response,n.responseError||t.responseError)},r}},f.addActions=function(e){return e||(e={}),function(e){return b(e,function(t,r){f.addAction(r,t)(e)}),e}},f.extend=g,f.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=f},function(t,r){t.exports=e},function(e,t,r){e.exports=r(3)},function(e,t,r){"use strict";function n(e){this.defaults=i.merge({},e),this.interceptors={request:new u,response:new u}}var o=r(4),i=r(5),a=r(6),u=r(15),s=r(16),f=r(17),c=r(18),p=r(11);n.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=p(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=[a,void 0],r=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;)r=r.then(t.shift(),t.shift());return r};var l=new n(o),d=e.exports=c(n.prototype.request,l);d.create=function(e){return new n(e)},d.defaults=l.defaults,d.all=function(e){return Promise.all(e)},d.spread=r(19),d.interceptors=l.interceptors,i.forEach(["delete","get","head"],function(e){n.prototype[e]=function(t,r){return this.request(i.merge(r||{},{method:e,url:t}))},d[e]=c(n.prototype[e],l)}),i.forEach(["post","put","patch"],function(e){n.prototype[e]=function(t,r,n){return this.request(i.merge(n||{},{method:e,url:t,data:r}))},d[e]=c(n.prototype[e],l)})},function(e,t,r){"use strict";var n=r(5),o=/^\)\]\}',?\n/,i={"Content-Type":"application/x-www-form-urlencoded"};e.exports={transformRequest:[function(e,t){return n.isFormData(e)?e:n.isArrayBuffer(e)?e:n.isArrayBufferView(e)?e.buffer:!n.isObject(e)||n.isFile(e)||n.isBlob(e)?e:(n.isUndefined(t)||(n.forEach(t,function(e,r){"content-type"===r.toLowerCase()&&(t["Content-Type"]=e)}),n.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:n.merge(i),post:n.merge(i),put:n.merge(i)},timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"}},function(e,t){"use strict";function r(e){return"[object Array]"===g.call(e)}function n(e){return"[object ArrayBuffer]"===g.call(e)}function o(e){return"[object FormData]"===g.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 a(e){return"string"==typeof e}function u(e){return"number"==typeof e}function s(e){return"undefined"==typeof e}function f(e){return null!==e&&"object"==typeof e}function c(e){return"[object Date]"===g.call(e)}function p(e){return"[object File]"===g.call(e)}function l(e){return"[object Blob]"===g.call(e)}function d(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function h(){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||r(e)||(e=[e]),r(e))for(var n=0,o=e.length;o>n;n++)t.call(null,e[n],n,e);else for(var i in e)e.hasOwnProperty(i)&&t.call(null,e[i],i,e)}function y(){function e(e,r){"object"==typeof t[r]&&"object"==typeof e?t[r]=y(t[r],e):t[r]=e}for(var t={},r=0,n=arguments.length;n>r;r++)m(arguments[r],e);return t}var g=Object.prototype.toString;e.exports={isArray:r,isArrayBuffer:n,isFormData:o,isArrayBufferView:i,isString:a,isNumber:u,isObject:f,isUndefined:s,isDate:c,isFile:p,isBlob:l,isStandardBrowserEnv:h,forEach:m,merge:y,trim:d}},function(e,t,r){(function(t){"use strict";e.exports=function(e){return new Promise(function(n,o){try{var i;"function"==typeof e.adapter?i=e.adapter:"undefined"!=typeof XMLHttpRequest?i=r(8):"undefined"!=typeof t&&(i=r(8)),"function"==typeof i&&i(n,o,e)}catch(e){o(e)}})}}).call(t,r(7))},function(e,t){function r(){f=!1,a.length?s=a.concat(s):c=-1,s.length&&n()}function n(){if(!f){var e=setTimeout(r);f=!0;for(var t=s.length;t;){for(a=s,s=[];++c1)for(var r=1;r=200&&o.status<300||!("status"in l)&&o.responseText?e:t)(o),l=null}},l.onerror=function(){t(new Error("Network Error")),l=null},n.isStandardBrowserEnv()){var m=r(14),y=f.withCredentials||u(f.url)?m.read(f.xsrfCookieName):void 0;y&&(p[f.xsrfHeaderName]=y)}if("setRequestHeader"in l&&n.forEach(p,function(e,t){"undefined"==typeof c&&"content-type"===t.toLowerCase()?delete p[t]:l.setRequestHeader(t,e)}),f.withCredentials&&(l.withCredentials=!0),f.responseType)try{l.responseType=f.responseType}catch(e){if("json"!==l.responseType)throw e}n.isArrayBuffer(c)&&(c=new DataView(c)),l.send(c)}},function(e,t,r){"use strict";function n(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,"]")}var o=r(5);e.exports=function(e,t,r){if(!t)return e;var i;if(r)i=r(t);else{var a=[];o.forEach(t,function(e,t){null!==e&&"undefined"!=typeof e&&(o.isArray(e)&&(t+="[]"),o.isArray(e)||(e=[e]),o.forEach(e,function(e){o.isDate(e)?e=e.toISOString():o.isObject(e)&&(e=JSON.stringify(e)),a.push(n(t)+"="+n(e))}))}),i=a.join("&")}return i&&(e+=(-1===e.indexOf("?")?"?":"&")+i),e}},function(e,t,r){"use strict";var n=r(5);e.exports=function(e){var t,r,o,i={};return e?(n.forEach(e.split("\n"),function(e){o=e.indexOf(":"),t=n.trim(e.substr(0,o)).toLowerCase(),r=n.trim(e.substr(o+1)),t&&(i[t]=i[t]?i[t]+", "+r:r)}),i):i}},function(e,t,r){"use strict";var n=r(5);e.exports=function(e,t,r){return n.forEach(r,function(r){e=r(e,t)}),e}},function(e,t,r){"use strict";var n=r(5);e.exports=n.isStandardBrowserEnv()?function(){function e(e){var t=e;return r&&(o.setAttribute("href",t),t=o.href),o.setAttribute("href",t),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}var t,r=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");return t=e(window.location.href),function(r){var o=n.isString(r)?e(r):r;return o.protocol===t.protocol&&o.host===t.host}}():function(){return function(){return!0}}()},function(e,t){"use strict";function r(e){this.message=e}function n(e){for(var t,n,i=String(e),a="",u=0,s=o;i.charAt(0|u)||(s="=",u%1);a+=s.charAt(63&t>>8-u%1*8)){if(n=i.charCodeAt(u+=.75),n>255)throw new r("INVALID_CHARACTER_ERR: DOM Exception 5");t=t<<8|n}return a}var o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";r.prototype=new Error,r.prototype.code=5,r.prototype.name="InvalidCharacterError",e.exports=n},function(e,t,r){"use strict";var n=r(5);e.exports=n.isStandardBrowserEnv()?function(){return{write:function(e,t,r,o,i,a){var u=[];u.push(e+"="+encodeURIComponent(t)),n.isNumber(r)&&u.push("expires="+new Date(r).toGMTString()),n.isString(o)&&u.push("path="+o),n.isString(i)&&u.push("domain="+i),a===!0&&u.push("secure"),document.cookie=u.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,r){"use strict";function n(){this.handlers=[]}var o=r(5);n.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},n.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},n.prototype.forEach=function(e){o.forEach(this.handlers,function(t){null!==t&&e(t)})},e.exports=n},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 r=new Array(arguments.length),n=0;n>>>>>> Rebase diff --git a/dist/js-data-http.min.map b/dist/js-data-http.min.map index e86b75d..6d9a1c6 100644 --- a/dist/js-data-http.min.map +++ b/dist/js-data-http.min.map @@ -1 +1,5 @@ -{"version":3,"sources":["dist/js-data-http.js"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_1__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","_classCallCheck","instance","Constructor","TypeError","_typeof","Symbol","iterator","constructor","_createClass","defineProperties","target","props","i","length","descriptor","protoProps","staticProps","prototype","JSData","axios","e","DSUtils","deepMixIn","removeCircular","copy","makePath","isString","isNumber","Defaults","resourceConfig","params","data","defaultsPrototype","basePath","forceTrailingSlash","httpConfig","verbsUseBasePath","DSHttpAdapter","options","defaults","console","log","a","b","info","error","http","endpoint","hasOwnProperty","parents","parent","parentKey","field","parentField","forOwn","parentName","_this2","item","parentDef","getResource","parentId","_sn","get","_o","idAttribute","_options","getEndpoint","_","method","_this","urlPath","apply","args","push","config","logResponse","isRejection","Error","message","Promise","reject","str","start","toUTCString","url","status","Date","getTime","payload","cache","timeout","urlOverride","toUpperCase","suffix","substr","then","HTTP","attrs","queryTransform","GET","getPath","deserialize","POST","serialize","PUT","DEL","version","full","major","parseInt","minor","patch","alpha","beta","Axios","defaultConfig","utils","merge","interceptors","request","InterceptorManager","response","dispatchRequest","isAbsoluteURL","combineURLs","bind","transformData","arguments","baseURL","withCredentials","headers","transformRequest","common","forEach","chain","undefined","promise","resolve","interceptor","unshift","fulfilled","rejected","shift","defaultInstance","create","all","promises","spread","PROTECTION_PREFIX","DEFAULT_CONTENT_TYPE","Content-Type","isFormData","isArrayBuffer","isArrayBufferView","buffer","isObject","isFile","isBlob","isUndefined","val","toLowerCase","JSON","stringify","transformResponse","replace","parse","Accept","post","put","xsrfCookieName","xsrfHeaderName","isArray","toString","result","ArrayBuffer","isView","isDate","trim","isStandardBrowserEnv","window","document","createElement","fn","l","assignValue","process","adapter","XMLHttpRequest","cleanUpNextTick","draining","currentQueue","queue","concat","queueIndex","drainQueue","setTimeout","len","run","clearTimeout","Item","fun","array","noop","nextTick","Array","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","binding","name","cwd","chdir","dir","umask","buildURL","parseHeaders","isURLSameOrigin","btoa","requestData","requestHeaders","XDomainRequest","auth","username","password","Authorization","open","paramsSerializer","onload","responseHeaders","getAllResponseHeaders","responseData","indexOf","responseType","responseText","statusText","onerror","cookies","xsrfValue","read","setRequestHeader","DataView","send","encode","encodeURIComponent","serializedParams","parts","v","toISOString","join","parsed","split","line","fns","resolveURL","href","msie","urlParsingNode","setAttribute","protocol","host","search","hash","hostname","port","pathname","charAt","originURL","test","navigator","userAgent","location","requestURL","InvalidCharacterError","input","block","charCode","String","output","idx","map","chars","charCodeAt","code","write","expires","path","domain","secure","cookie","toGMTString","match","RegExp","decodeURIComponent","remove","now","handlers","use","eject","h","relativeURL","thisArg","callback","arr"],"mappings":"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","file":"dist/js-data-http.min.js"} \ No newline at end of file +<<<<<<< c4fb0646f59935877a8537ad264717c6cabf0ff3 +{"version":3,"sources":["dist/js-data-http.js"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_1__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","_classCallCheck","instance","Constructor","TypeError","_typeof","Symbol","iterator","constructor","_createClass","defineProperties","target","props","i","length","descriptor","protoProps","staticProps","prototype","JSData","axios","e","DSUtils","deepMixIn","removeCircular","copy","makePath","isString","isNumber","Defaults","resourceConfig","params","data","defaultsPrototype","basePath","forceTrailingSlash","httpConfig","verbsUseBasePath","DSHttpAdapter","options","defaults","console","log","a","b","info","error","http","endpoint","hasOwnProperty","parents","parent","parentKey","field","parentField","forOwn","parentName","_this2","item","parentDef","getResource","parentId","_sn","get","_o","idAttribute","_options","getEndpoint","_","method","_this","urlPath","apply","args","push","config","logResponse","isRejection","Error","message","Promise","reject","str","start","toUTCString","url","status","Date","getTime","payload","cache","timeout","urlOverride","toUpperCase","suffix","substr","then","HTTP","attrs","queryTransform","GET","getPath","deserialize","POST","serialize","PUT","DEL","version","full","major","parseInt","minor","patch","alpha","beta","Axios","defaultConfig","utils","merge","interceptors","request","InterceptorManager","response","dispatchRequest","isAbsoluteURL","combineURLs","bind","transformData","arguments","baseURL","withCredentials","headers","transformRequest","common","forEach","chain","undefined","promise","resolve","interceptor","unshift","fulfilled","rejected","shift","defaultInstance","create","all","promises","spread","PROTECTION_PREFIX","DEFAULT_CONTENT_TYPE","Content-Type","isFormData","isArrayBuffer","isArrayBufferView","buffer","isObject","isFile","isBlob","isUndefined","val","toLowerCase","JSON","stringify","transformResponse","replace","parse","Accept","post","put","xsrfCookieName","xsrfHeaderName","isArray","toString","result","ArrayBuffer","isView","isDate","trim","isStandardBrowserEnv","window","document","createElement","fn","l","assignValue","process","adapter","XMLHttpRequest","cleanUpNextTick","draining","currentQueue","queue","concat","queueIndex","drainQueue","setTimeout","len","run","clearTimeout","Item","fun","array","noop","nextTick","Array","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","binding","name","cwd","chdir","dir","umask","buildURL","parseHeaders","isURLSameOrigin","btoa","requestData","requestHeaders","XDomainRequest","auth","username","password","Authorization","open","paramsSerializer","onload","responseHeaders","getAllResponseHeaders","responseData","indexOf","responseType","responseText","statusText","onerror","cookies","xsrfValue","read","setRequestHeader","DataView","send","encode","encodeURIComponent","serializedParams","parts","v","toISOString","join","parsed","split","line","fns","resolveURL","href","msie","urlParsingNode","setAttribute","protocol","host","search","hash","hostname","port","pathname","charAt","originURL","test","navigator","userAgent","location","requestURL","InvalidCharacterError","input","block","charCode","String","output","idx","map","chars","charCodeAt","code","write","expires","path","domain","secure","cookie","toGMTString","match","RegExp","decodeURIComponent","remove","now","handlers","use","eject","h","relativeURL","thisArg","callback","arr"],"mappings":"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","file":"dist/js-data-http.min.js"} +======= +{"version":3,"sources":["dist/js-data-http.js"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_1__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","isValidString","join","items","separator","filter","makePath","_len","arguments","length","args","Array","_key","result","replace","encode","val","encodeURIComponent","buildUrl","url","params","parts","forOwn","isArray","forEach","v","window","toString","toISOString","isObject","toJson","push","indexOf","HttpAdapter","opts","self","fillIn","DEFAULTS","_typeof","Symbol","iterator","constructor","_jsData","axios","_","utils","addHiddenPropsToTarget","copy","deepMixIn","extend","isFunction","isNumber","isSorN","isString","isUndefined","resolve","reject","hasFetch","fetch","e","noop","_len2","_key2","dbg","apply","op","concat","noop2","_len3","_key3","basePath","debug","forceTrailingSlash","http","httpConfig","suffix","useFetch","prototype","afterCreate","afterCreateMany","afterDEL","afterDestroy","afterDestroyAll","afterFind","afterFindAll","afterGET","afterHTTP","afterPOST","afterPUT","afterUpdate","afterUpdateAll","afterUpdateMany","beforeCreate","beforeCreateMany","beforeDEL","beforeDestroy","beforeDestroyAll","beforeFind","beforeFindAll","beforeGET","beforeHTTP","beforePOST","beforePUT","beforeUpdate","beforeUpdateAll","beforeUpdateMany","create","mapper","props","undefined","queryTransform","then","POST","getPath","serialize","response","deserialize","data","_data","createMany","records","_len4","_key4","log","DEL","config","method","_config","HTTP","_response","raw","destroy","destroyAll","query","error","console","_console","_fetch","_x","_x2","requestConfig","headers","Headers","body","Request","json","find","GET","findAll","getEndpoint","endpoint","hasOwnProperty","parents","parent","parentKey","field","parentField","parentName","item","parentDef","getResource","parentId","get","idAttribute","_ret","_opts","logResponse","str","start","toUTCString","toUpperCase","status","Date","getTime","substr","Error","catch","err","responseError","level","_len5","_key5","prefix","_console2","_console3","PUT","update","updateAll","updateMany","addAction","name","TypeError","request","adapter","getAdapter","defaultAdapter","_args","pathname","addActions","version","full","major","parseInt","minor","patch","alpha","beta","Axios","defaultConfig","defaults","merge","interceptors","InterceptorManager","dispatchRequest","isAbsoluteURL","combineURLs","bind","transformData","baseURL","withCredentials","transformRequest","common","chain","promise","Promise","interceptor","unshift","fulfilled","rejected","shift","defaultInstance","all","promises","spread","PROTECTION_PREFIX","DEFAULT_CONTENT_TYPE","Content-Type","isFormData","isArrayBuffer","isArrayBufferView","buffer","isFile","isBlob","toLowerCase","JSON","stringify","transformResponse","parse","Accept","post","put","timeout","xsrfCookieName","xsrfHeaderName","ArrayBuffer","isView","isDate","trim","isStandardBrowserEnv","document","createElement","fn","i","l","assignValue","process","XMLHttpRequest","cleanUpNextTick","draining","currentQueue","queue","queueIndex","drainQueue","setTimeout","len","run","clearTimeout","Item","fun","array","nextTick","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","binding","cwd","chdir","dir","umask","buildURL","parseHeaders","isURLSameOrigin","btoa","requestData","requestHeaders","XDomainRequest","auth","username","password","Authorization","open","paramsSerializer","onload","responseHeaders","getAllResponseHeaders","responseData","responseType","responseText","statusText","onerror","cookies","xsrfValue","read","setRequestHeader","DataView","send","serializedParams","parsed","split","line","fns","resolveURL","href","msie","urlParsingNode","setAttribute","protocol","host","search","hash","hostname","port","charAt","originURL","test","navigator","userAgent","location","requestURL","InvalidCharacterError","message","input","block","charCode","String","output","idx","map","chars","charCodeAt","code","write","expires","path","domain","secure","cookie","toGMTString","match","RegExp","decodeURIComponent","remove","now","handlers","use","eject","h","relativeURL","thisArg","callback","arr"],"mappings":"CAAA,SAA2CA,EAAMC,GAC1B,gBAAZC,UAA0C,gBAAXC,QACxCA,OAAOD,QAAUD,EAAQG,QAAQ,YACR,kBAAXC,SAAyBA,OAAOC,IAC9CD,QAAQ,WAAYJ,GACM,gBAAZC,SACdA,QAAqB,YAAID,EAAQG,QAAQ,YAEzCJ,EAAkB,YAAIC,EAAQD,EAAa,SAC1CO,KAAM,SAASC,GAClB,MAAgB,UAAUC,GAKhB,QAASC,GAAoBC,GAG5B,GAAGC,EAAiBD,GACnB,MAAOC,GAAiBD,GAAUT,OAGnC,IAAIC,GAASS,EAAiBD,IAC7BT,WACAW,GAAIF,EACJG,QAAQ,EAUT,OANAL,GAAQE,GAAUI,KAAKZ,EAAOD,QAASC,EAAQA,EAAOD,QAASQ,GAG/DP,EAAOW,QAAS,EAGTX,EAAOD,QAvBf,GAAIU,KAqCJ,OATAF,GAAoBM,EAAIP,EAGxBC,EAAoBO,EAAIL,EAGxBF,EAAoBQ,EAAI,GAGjBR,EAAoB,KAK/B,SAASP,EAAQD,EAASQ,GAE/B,YAMA,SAASS,GAAgBC,EAAKC,EAAKC,GAAiK,MAApJD,KAAOD,GAAOG,OAAOC,eAAeJ,EAAKC,GAAOC,MAAOA,EAAOG,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBP,EAAIC,GAAOC,EAAgBF,EA6B3M,QAASQ,GAAcN,GACrB,MAAgB,OAATA,GAA2B,KAAVA,EAE1B,QAASO,GAAKC,EAAOC,GAEnB,MADAA,KAAcA,EAAY,IACnBD,EAAME,OAAOJ,GAAeC,KAAKE,GAE1C,QAASE,KACP,IAAK,GAAIC,GAAOC,UAAUC,OAAQC,EAAOC,MAAMJ,GAAOK,EAAO,EAAUL,EAAPK,EAAaA,IAC3EF,EAAKE,GAAQJ,UAAUI,EAGzB,IAAIC,GAASX,EAAKQ,EAAM,IACxB,OAAOG,GAAOC,QAAQ,oBAAqB,OAG7C,QAASC,GAAOC,GACd,MAAOC,oBAAmBD,GAAKF,QAAQ,QAAS,KAAKA,QAAQ,QAAS,KAAKA,QAAQ,OAAQ,KAAKA,QAAQ,QAAS,KAAKA,QAAQ,OAAQ,KAAKA,QAAQ,QAAS,KAAKA,QAAQ,QAAS,KAGpL,QAASI,GAASC,EAAKC,GACrB,IAAKA,EACH,MAAOD,EAGT,IAAIE,KAwBJ,OAtBAC,GAAOF,EAAQ,SAAUJ,EAAKtB,GAChB,OAARsB,GAA+B,mBAARA,KAGtBO,EAAQP,KACXA,GAAOA,IAGTA,EAAIQ,QAAQ,SAAUC,GACY,kBAA5BC,OAAOC,SAASvC,KAAKqC,GACvBA,EAAIA,EAAEG,cACGC,EAASJ,KAClBA,EAAIK,EAAOL,IAEbJ,EAAMU,KAAKhB,EAAOrB,GAAO,IAAMqB,EAAOU,SAItCJ,EAAMZ,OAAS,IACjBU,IAA6B,KAArBA,EAAIa,QAAQ,KAAc,IAAM,KAAOX,EAAMnB,KAAK,MAGrDiB,EAsFT,QAASc,GAAYC,GACnB,GAAIC,GAAOvD,IAGXsD,KAASA,MAETE,EAAOD,EAAMD,GACbE,EAAOD,EAAME,GA/Kf,GAAIC,GAA4B,kBAAXC,SAAoD,gBAApBA,QAAOC,SAAwB,SAAU/C,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAX8C,SAAyB9C,EAAIgD,cAAgBF,OAAS,eAAkB9C,IAEtOiD,EAAU3D,EAAoB,GAK9B4D,EAAQ5D,EAAoB,GAC5B6D,EAAIF,EAAQG,MAAMD,EAClBE,EAAyBJ,EAAQG,MAAMC,uBACvCC,EAAOL,EAAQG,MAAME,KACrBC,EAAYN,EAAQG,MAAMG,UAC1BC,EAASP,EAAQG,MAAMI,OACvBb,EAASM,EAAQG,MAAMT,OACvBd,EAASoB,EAAQG,MAAMvB,OACvBC,EAAUmB,EAAQG,MAAMtB,QACxB2B,EAAaR,EAAQG,MAAMK,WAC3BC,EAAWT,EAAQG,MAAMM,SACzBtB,EAAWa,EAAQG,MAAMhB,SACzBuB,EAASV,EAAQG,MAAMO,OACvBC,EAAWX,EAAQG,MAAMQ,SACzBC,EAAcZ,EAAQG,MAAMS,YAC5BC,EAAUb,EAAQG,MAAMU,QACxBC,EAASd,EAAQG,MAAMW,OACvB1B,EAASY,EAAQG,MAAMf,OAGvB2B,GAAW,CAEf,KACEA,EAAW/B,QAAUA,OAAOgC,MAC5B,MAAOC,IAsDT,GAAIC,GAAO,WAGT,IAAK,GAFDzB,GAAOvD,KAEFiF,EAAQrD,UAAUC,OAAQC,EAAOC,MAAMkD,GAAQC,EAAQ,EAAWD,EAARC,EAAeA,IAChFpD,EAAKoD,GAAStD,UAAUsD,EAG1B,IAAI5B,GAAOxB,EAAKA,EAAKD,OAAS,EAC9B0B,GAAK4B,IAAIC,MAAM7B,GAAOD,EAAK+B,IAAIC,OAAOxD,KAGpCyD,EAAQ,WAGV,IAAK,GAFDhC,GAAOvD,KAEFwF,EAAQ5D,UAAUC,OAAQC,EAAOC,MAAMyD,GAAQC,EAAQ,EAAWD,EAARC,EAAeA,IAChF3D,EAAK2D,GAAS7D,UAAU6D,EAG1B,IAAInC,GAAOxB,EAAKA,EAAKD,OAAS,EAC9B0B,GAAK4B,IAAIC,MAAM7B,GAAOD,EAAK+B,IAAIC,OAAOxD,KAGpC2B,GAMFiC,SAAU,GAOVC,OAAO,EAOPC,oBAAoB,EAMpBC,KAAM9B,EAMN+B,cAMAC,OAAQ,GAORC,UAAU,EA0BZ9B,GAAuBb,EAAY4C,WASjCC,YAAaX,EAUbY,gBAAiBZ,EAUjBa,SAAUb,EAUVc,aAAcd,EAUde,gBAAiBf,EAUjBgB,UAAWhB,EAUXiB,aAAcjB,EAUdkB,SAAUlB,EASVmB,UAAWnB,EAWXoB,UAAWpB,EAWXqB,SAAUrB,EAWVsB,YAAatB,EAWbuB,eAAgBvB,EAUhBwB,gBAAiBxB,EASjByB,aAAchC,EASdiC,iBAAkBjC,EASlBkC,UAAWlC,EASXmC,cAAenC,EASfoC,iBAAkBpC,EASlBqC,WAAYrC,EASZsC,cAAetC,EASfuC,UAAWvC,EAQXwC,WAAYxC,EAUZyC,WAAYzC,EAUZ0C,UAAW1C,EAUX2C,aAAc3C,EAUd4C,gBAAiB5C,EASjB6C,iBAAkB7C,EAclB8C,OAAQ,SAAgBC,EAAQC,EAAO1E,GACrC,GAAIC,GAAOvD,KACPqF,EAAK4C,MAQT,OAPA3E,GAAOA,EAAOa,EAAKb,MACnBA,EAAKd,SAAWc,EAAKd,WACrBc,EAAKd,OAASe,EAAK2E,eAAeH,EAAQzE,EAAKd,OAAQc,GACvDA,EAAKyC,OAASrB,EAAYpB,EAAKyC,QAAUgC,EAAOhC,OAASzC,EAAKyC,OAG9DV,EAAK/B,EAAK+B,GAAK,eACRV,EAAQpB,EAAK8B,GAAI0C,EAAQC,EAAO1E,IAAO6E,KAAK,WAGjD,MAFA9C,GAAK/B,EAAK+B,GAAK,SACf9B,EAAK4B,IAAIE,EAAI0C,EAAQC,EAAO1E,GACrBC,EAAK6E,KAAK7E,EAAK8E,QAAQ,SAAUN,EAAQC,EAAO1E,GAAOC,EAAK+E,UAAUP,EAAQC,EAAO1E,GAAOA,KAClG6E,KAAK,SAAUI,GAChB,MAAOhF,GAAKiF,YAAYT,EAAQQ,EAAUjF,KACzC6E,KAAK,SAAUM,GAGhB,MADApD,GAAK/B,EAAK+B,GAAK,cACRV,EAAQpB,EAAK8B,GAAI0C,EAAQC,EAAO1E,EAAMmF,IAAON,KAAK,SAAUO,GAEjE,MAAOhE,GAAYgE,GAASD,EAAOC,OAkBzCC,WAAY,SAAoBZ,EAAQa,EAAStF,GAC/C,GAAIC,GAAOvD,KACPqF,EAAK4C,MAQT,OAPA3E,GAAOA,EAAOa,EAAKb,MACnBA,EAAKd,SAAWc,EAAKd,WACrBc,EAAKd,OAASe,EAAK2E,eAAeH,EAAQzE,EAAKd,OAAQc,GACvDA,EAAKyC,OAASrB,EAAYpB,EAAKyC,QAAUgC,EAAOhC,OAASzC,EAAKyC,OAG9DV,EAAK/B,EAAK+B,GAAK,mBACRV,EAAQpB,EAAK8B,GAAI0C,EAAQa,EAAStF,IAAO6E,KAAK,WAGnD,MAFA9C,GAAK/B,EAAK+B,GAAK,aACf9B,EAAK4B,IAAIE,EAAI0C,EAAQa,EAAStF,GACvBC,EAAK6E,KAAK7E,EAAK8E,QAAQ,aAAcN,EAAQ,KAAMzE,GAAOC,EAAK+E,UAAUP,EAAQa,EAAStF,GAAOA,KACvG6E,KAAK,SAAUI,GAChB,MAAOhF,GAAKiF,YAAYT,EAAQQ,EAAUjF,KACzC6E,KAAK,SAAUM,GAGhB,MADApD,GAAK/B,EAAK+B,GAAK,kBACRV,EAAQpB,EAAK8B,GAAI0C,EAAQa,EAAStF,EAAMmF,IAAON,KAAK,SAAUO,GAEnE,MAAOhE,GAAYgE,GAASD,EAAOC,OAazCvD,IAAK,WACH,IAAK,GAAI0D,GAAQjH,UAAUC,OAAQC,EAAOC,MAAM8G,GAAQC,EAAQ,EAAWD,EAARC,EAAeA,IAChFhH,EAAKgH,GAASlH,UAAUkH,EAG1B9I,MAAK+I,IAAI3D,MAAMpF,MAAO,SAASsF,OAAOxD,KAexCkH,IAAK,SAAazG,EAAK0G,EAAQ3F,GAC7B,GAAIC,GAAOvD,KACPqF,EAAK4C,MAQT,OAPAgB,KAAWA,MACX3F,IAASA,MACT2F,EAAO1G,IAAMA,GAAO0G,EAAO1G,IAC3B0G,EAAOC,OAASD,EAAOC,QAAU,SAGjC7D,EAAK/B,EAAK+B,GAAK,YACRV,EAAQpB,EAAK8B,GAAI9C,EAAK0G,EAAQ3F,IAAO6E,KAAK,SAAUgB,GAKzD,MAHAF,GAASvE,EAAYyE,GAAWF,EAASE,EACzC9D,EAAK/B,EAAK+B,GAAK,MACf9B,EAAK4B,IAAIE,EAAI9C,EAAK0G,EAAQ3F,GACnBC,EAAK6F,KAAKH,EAAQ3F,KACxB6E,KAAK,SAAUI,GAGhB,MADAlD,GAAK/B,EAAK+B,GAAK,WACRV,EAAQpB,EAAK8B,GAAI9C,EAAK0G,EAAQ3F,EAAMiF,IAAWJ,KAAK,SAAUkB,GAEnE,MAAO3E,GAAY2E,GAAad,EAAWc,OAiBjDb,YAAa,SAAqBT,EAAQQ,EAAUjF,GAElD,MADAA,KAASA,MACLgB,EAAWhB,EAAKkF,aACXlF,EAAKkF,YAAYT,EAAQQ,EAAUjF,GAExCgB,EAAWyD,EAAOS,aACbT,EAAOS,YAAYT,EAAQQ,EAAUjF,GAE1CA,EAAKgG,IACAf,EAEFA,GAAW,QAAUA,GAAWA,EAASE,KAAkBF,GAgBpEgB,QAAS,SAAiBxB,EAAQzH,EAAIgD,GACpC,GAAIC,GAAOvD,KACPqF,EAAK4C,MAQT,OAPA3E,GAAOA,EAAOa,EAAKb,MACnBA,EAAKd,SAAWc,EAAKd,WACrBc,EAAKd,OAASe,EAAK2E,eAAeH,EAAQzE,EAAKd,OAAQc,GACvDA,EAAKyC,OAASrB,EAAYpB,EAAKyC,QAAUgC,EAAOhC,OAASzC,EAAKyC,OAG9DV,EAAK/B,EAAK+B,GAAK,gBACRV,EAAQpB,EAAK8B,GAAI0C,EAAQzH,EAAIgD,IAAO6E,KAAK,WAG9C,MAFA9C,GAAK/B,EAAK+B,GAAK,UACf9B,EAAK4B,IAAIE,EAAI0C,EAAQzH,EAAIgD,GAClBC,EAAKyF,IAAIzF,EAAK8E,QAAQ,UAAWN,EAAQzH,EAAIgD,GAAOA,KAC1D6E,KAAK,SAAUI,GAChB,MAAOhF,GAAKiF,YAAYT,EAAQQ,EAAUjF,KACzC6E,KAAK,SAAUM,GAGhB,MADApD,GAAK/B,EAAK+B,GAAK,eACRV,EAAQpB,EAAK8B,GAAI0C,EAAQzH,EAAIgD,EAAMmF,IAAON,KAAK,SAAUO,GAE9D,MAAOhE,GAAYgE,GAASD,EAAOC,OAkBzCc,WAAY,SAAoBzB,EAAQ0B,EAAOnG,GAC7C,GAAIC,GAAOvD,KACPqF,EAAK4C,MAUT,OATAwB,KAAUA,MACVnG,EAAOA,EAAOa,EAAKb,MACnBA,EAAKd,SAAWc,EAAKd,WACrB4B,EAAUd,EAAKd,OAAQiH,GACvBnG,EAAKd,OAASe,EAAK2E,eAAeH,EAAQzE,EAAKd,OAAQc,GACvDA,EAAKyC,OAASrB,EAAYpB,EAAKyC,QAAUgC,EAAOhC,OAASzC,EAAKyC,OAG9DV,EAAK/B,EAAK+B,GAAK,mBACRV,EAAQpB,EAAK6D,iBAAiBW,EAAQ0B,EAAOnG,IAAO6E,KAAK,WAG9D,MAFA9C,GAAK/B,EAAK+B,GAAK,aACf9B,EAAK4B,IAAIE,EAAI0C,EAAQ0B,EAAOnG,GACrBC,EAAKyF,IAAIzF,EAAK8E,QAAQ,aAAcN,EAAQ,KAAMzE,GAAOA,KAC/D6E,KAAK,SAAUI,GAChB,MAAOhF,GAAKiF,YAAYT,EAAQQ,EAAUjF,KACzC6E,KAAK,SAAUM,GAGhB,MADApD,GAAK/B,EAAK+B,GAAK,kBACRV,EAAQpB,EAAK8B,GAAI0C,EAAQ0B,EAAOnG,EAAMmF,IAAON,KAAK,SAAUO,GAEjE,MAAOhE,GAAYgE,GAASD,EAAOC,OAazCgB,MAAO,WACL,GAAIC,QAAS,CACX,GAAIC,IAEHA,EAAWD,SAAkC,kBAAlBA,SAAQD,MAAuB,QAAU,OAAOtE,MAAMwE,EAAUhI,aAkBhGkD,MAAO,SAAU+E,GACf,QAAS/E,GAAMgF,EAAIC,GACjB,MAAOF,GAAOzE,MAAMpF,KAAM4B,WAO5B,MAJAkD,GAAM/B,SAAW,WACf,MAAO8G,GAAO9G,YAGT+B,GACP,SAAUmE,EAAQ3F,GAClB,GAAI0G,IACFd,OAAQD,EAAOC,OAEfe,QAAS,GAAIC,SAAQjB,EAAOgB,SAO9B,OAJIhB,GAAOR,OACTuB,EAAcG,KAAOjH,EAAO+F,EAAOR,OAG9B3D,MAAM,GAAIsF,SAAQ9H,EAAS2G,EAAO1G,IAAK0G,EAAOzG,QAASwH,IAAgB7B,KAAK,SAAUI,GAK3F,MAJAA,GAASU,QACPC,OAAQD,EAAOC,OACf3G,IAAK0G,EAAO1G,KAEPgG,EAAS8B,OAAOlC,KAAK,SAAUM,GAEpC,MADAF,GAASE,KAAOA,EACTF,QAkBb+B,KAAM,SAAcvC,EAAQzH,EAAIgD,GAC9B,GAAIC,GAAOvD,KACPqF,EAAK4C,MAQT,OAPA3E,GAAOA,EAAOa,EAAKb,MACnBA,EAAKd,SAAWc,EAAKd,WACrBc,EAAKd,OAASe,EAAK2E,eAAeH,EAAQzE,EAAKd,OAAQc,GACvDA,EAAKyC,OAASrB,EAAYpB,EAAKyC,QAAUgC,EAAOhC,OAASzC,EAAKyC,OAG9DV,EAAK/B,EAAK+B,GAAK,aACRV,EAAQpB,EAAK8B,GAAI0C,EAAQzH,EAAIgD,IAAO6E,KAAK,WAG9C,MAFA9C,GAAK/B,EAAK+B,GAAK,OACf9B,EAAK4B,IAAIE,EAAI0C,EAAQzH,EAAIgD,GAClBC,EAAKgH,IAAIhH,EAAK8E,QAAQ,OAAQN,EAAQzH,EAAIgD,GAAOA,KACvD6E,KAAK,SAAUI,GAChB,MAAOhF,GAAKiF,YAAYT,EAAQQ,EAAUjF,KACzC6E,KAAK,SAAUM,GAGhB,MADApD,GAAK/B,EAAK+B,GAAK,YACRV,EAAQpB,EAAK8B,GAAI0C,EAAQzH,EAAIgD,EAAMmF,IAAON,KAAK,SAAUO,GAE9D,MAAOhE,GAAYgE,GAASD,EAAOC,OAkBzC8B,QAAS,SAAiBzC,EAAQ0B,EAAOnG,GACvC,GAAIC,GAAOvD,KACPqF,EAAK4C,MAUT,OATAwB,KAAUA,MACVnG,EAAOA,EAAOa,EAAKb,MACnBA,EAAKd,SAAWc,EAAKd,WACrBc,EAAKyC,OAASrB,EAAYpB,EAAKyC,QAAUgC,EAAOhC,OAASzC,EAAKyC,OAC9D3B,EAAUd,EAAKd,OAAQiH,GACvBnG,EAAKd,OAASe,EAAK2E,eAAeH,EAAQzE,EAAKd,OAAQc,GAGvD+B,EAAK/B,EAAK+B,GAAK,gBACRV,EAAQpB,EAAK8B,GAAI0C,EAAQ0B,EAAOnG,IAAO6E,KAAK,WAGjD,MAFA9C,GAAK/B,EAAK+B,GAAK,UACf9B,EAAK4B,IAAIE,EAAI0C,EAAQ0B,EAAOnG,GACrBC,EAAKgH,IAAIhH,EAAK8E,QAAQ,UAAWN,EAAQzE,EAAKd,OAAQc,GAAOA,KACnE6E,KAAK,SAAUI,GAChB,MAAOhF,GAAKiF,YAAYT,EAAQQ,EAAUjF,KACzC6E,KAAK,SAAUM,GAGhB,MADApD,GAAK/B,EAAK+B,GAAK,eACRV,EAAQpB,EAAK8B,GAAI0C,EAAQ0B,EAAOnG,EAAMmF,IAAON,KAAK,SAAUO,GAEjE,MAAOhE,GAAYgE,GAASD,EAAOC,OAgBzC6B,IAAK,SAAahI,EAAK0G,EAAQ3F,GAC7B,GAAIC,GAAOvD,KACPqF,EAAK4C,MAQT,OAPAgB,KAAWA,MACX3F,IAASA,MACT2F,EAAO1G,IAAMA,GAAO0G,EAAO1G,IAC3B0G,EAAOC,OAASD,EAAOC,QAAU,MAGjC7D,EAAK/B,EAAK+B,GAAK,YACRV,EAAQpB,EAAK8B,GAAI9C,EAAK0G,EAAQ3F,IAAO6E,KAAK,SAAUgB,GAKzD,MAHAF,GAASvE,EAAYyE,GAAWF,EAASE,EACzC9D,EAAK/B,EAAK+B,GAAK,MACf9B,EAAK4B,IAAIE,EAAI9C,EAAK0G,EAAQ3F,GACnBC,EAAK6F,KAAKH,EAAQ3F,KACxB6E,KAAK,SAAUI,GAGhB,MADAlD,GAAK/B,EAAK+B,GAAK,WACRV,EAAQpB,EAAK8B,GAAI9C,EAAK0G,EAAQ3F,EAAMiF,IAAWJ,KAAK,SAAUkB,GAEnE,MAAO3E,GAAY2E,GAAad,EAAWc,OAcjDoB,YAAa,SAAqB1C,EAAQzH,EAAIgD,GAC5C,GAAIC,GAAOvD,IACXsD,KAASA,MACTA,EAAKd,SAAWc,EAAKd,UAErB,IAAIkI,GAAWpH,EAAKqH,eAAe,YAAcrH,EAAKoH,SAAW3C,EAAO2C,SACpEE,EAAU7C,EAAO6C,UAAY7C,EAAO8C,OAASjK,KAAoBmH,EAAO8C,QAC1E/J,IAAKiH,EAAO+C,UACZC,MAAOhD,EAAOiD,iBA+ChB,OA5CAtI,GAAOkI,EAAS,SAAUC,EAAQI,GAChC,GAAIC,GAAOjD,OACP6C,EAAYD,EAAO/J,IACnBkK,EAAcH,EAAOE,MACrBI,EAAYpD,EAAOqD,YAAYH,GAC/BI,EAAW/H,EAAKd,OAAOsI,EAE3B,IAAIO,KAAa,IAAUP,IAAcK,EAIvC,MAHIE,MAAa,SACR/H,GAAKd,OAAOsI,IAEd,CAcP,UAZOxH,GAAKd,OAAOsI,GAEfrG,EAASnE,IAAOiE,EAASjE,GAC3B4K,EAAOnD,EAAOuD,IAAIhL,GACT2C,EAAS3C,KAClB4K,EAAO5K,GAGL4K,IACFG,EAAWA,GAAYH,EAAKJ,KAAeI,EAAKF,GAAeE,EAAKF,GAAaG,EAAUI,aAAe,OAGxGF,EAAU,CACZ,GAAIG,GAAO,iBACFlI,GAAKoH,QACZ,IAAIe,KAMJ,OALA/I,GAAOY,EAAM,SAAUvC,EAAOD,GAC5B2K,EAAM3K,GAAOC,IAEfiD,EAAEyH,EAAON,GACTT,EAAWhJ,EAAS6B,EAAKkH,YAAYU,EAAWE,EAAUI,EAAOJ,EAAUX,KAEzE7H,GAAG,KAIP,IAAoE,YAA/C,mBAAT2I,GAAuB,YAAc9H,EAAQ8H,IAAqB,MAAOA,GAAK3I,KAKzF6H,GAYTrC,QAAS,SAAiBa,EAAQnB,EAAQzH,EAAIgD,GAC5C,GAAIC,GAAOvD,IACXsD,KAASA,KACT,IAAIxB,IAA0BmG,SAAlB3E,EAAKoC,SAA6CuC,SAApBF,EAAOrC,SAAyBnC,EAAKmC,SAAWqC,EAAOrC,SAAWpC,EAAKoC,SAAUnC,EAAKkH,YAAY1C,EAAQtD,EAASnE,IAAOiE,EAASjE,IAAkB,WAAX4I,EAAsB5I,EAAK,KAAMgD,GAIrN,OAHe,SAAX4F,GAAgC,WAAXA,GAAkC,YAAXA,GAC9CpH,EAAKqB,KAAK7C,GAELoB,EAAS0D,MAAMtB,EAAQG,MAAOnC,IAavCsH,KAAM,SAAcH,EAAQ3F,GAe1B,QAASoI,GAAYjD,GACnB,GAAIkD,GAAMC,EAAMC,cAAgB,MAAQ5C,EAAOC,OAAO4C,cAAgB,IAAM7C,EAAO1G,IAAM,MAAQkG,EAAKsD,OAAS,MAAO,GAAIC,OAAOC,UAAYL,EAAMK,WAAa,IAChK,OAAIxD,GAAKsD,QAAU,KAAOtD,EAAKsD,OAAS,KAClCxI,EAAKwF,KACPxF,EAAK4B,IAAI,QAASwG,EAAKlD,GAElBA,IAEHlF,EAAKmG,OACPnG,EAAKmG,MAAM,YAAeiC,EAAKlD,GAE1B7D,EAAO6D,IAzBlB,GAAIlF,GAAOvD,KACP4L,EAAQ,GAAII,KAChB1I,KAASA,MACT2F,EAAS9E,EAAK8E,GACdA,EAAS7E,EAAU6E,EAAQ1F,EAAKuC,YAC5BvC,EAAKqC,oBAA4D,MAAtCqD,EAAO1G,IAAI0G,EAAO1G,IAAIV,OAAS,KAC5DoH,EAAO1G,KAAO,KAEhB0G,EAAOC,OAASD,EAAOC,OAAO4C,aAC9B,IAAI/F,GAASkD,EAAOlD,QAAUzC,EAAKyC,QAAUxC,EAAKwC,MAoBlD,IAnBIA,GAAUkD,EAAO1G,IAAI2J,OAAOjD,EAAO1G,IAAIV,OAASkE,EAAOlE,UAAYkE,IACrEkD,EAAO1G,KAAOwD,IAkBXxC,EAAKsC,KACR,KAAM,IAAIsG,OAAM,6DAGlB,OAAOxH,GAAQpB,EAAKiE,WAAWyB,EAAQ3F,IAAO6E,KAAK,SAAUgB,GAE3D,MADAF,GAASE,GAAWF,EAChBpE,IAAatB,EAAKyC,UAAY1C,EAAK0C,WAAazC,EAAKsC,MAChDtC,EAAKuB,MAAMmE,EAAQ3F,GAAM6E,KAAKuD,EAAaA,GAE7CnI,EAAKsC,KAAKoD,GAAQd,KAAKuD,EAAaA,GAAaU,MAAM,SAAUC,GACtE,MAAO9I,GAAK+I,cAAcD,EAAKpD,EAAQ3F,OAExC6E,KAAK,SAAUI,GAChB,MAAO5D,GAAQpB,EAAKmD,UAAUuC,EAAQ3F,EAAMiF,IAAWJ,KAAK,SAAUkB,GACpE,MAAOA,IAAad,OAc1BQ,IAAK,SAAawD,GAChB,IAAK,GAAIC,GAAQ5K,UAAUC,OAAQC,EAAOC,MAAMyK,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAWD,EAARC,EAAeA,IACpG3K,EAAK2K,EAAQ,GAAK7K,UAAU6K,EAO9B,IAJIF,IAAUzK,EAAKD,SACjBC,EAAKqB,KAAKoJ,GACVA,EAAQ,SAEI,UAAVA,GAAsBvM,KAAK2F,MAA/B,CAGA,GAAI+G,GAASH,EAAMT,cAAgB,iBACnC,IAAInC,QAAQ4C,GAAQ,CAClB,GAAII,IAEHA,EAAYhD,SAAS4C,GAAOnH,MAAMuH,GAAYD,GAAQpH,OAAOxD,QACzD,CACL,GAAI8K,IAEHA,EAAYjD,SAASZ,IAAI3D,MAAMwH,GAAYF,GAAQpH,OAAOxD,OAgB/DsG,KAAM,SAAc7F,EAAKkG,EAAMQ,EAAQ3F,GACrC,GAAIC,GAAOvD,KACPqF,EAAK4C,MAST,OARAgB,KAAWA,MACX3F,IAASA,MACT2F,EAAO1G,IAAMA,GAAO0G,EAAO1G,IAC3B0G,EAAOR,KAAOA,GAAQQ,EAAOR,KAC7BQ,EAAOC,OAASD,EAAOC,QAAU,OAGjC7D,EAAK/B,EAAK+B,GAAK,aACRV,EAAQpB,EAAK8B,GAAI9C,EAAKkG,EAAMQ,EAAQ3F,IAAO6E,KAAK,SAAUgB,GAK/D,MAHAF,GAASvE,EAAYyE,GAAWF,EAASE,EACzC9D,EAAK/B,EAAK+B,GAAK,OACf9B,EAAK4B,IAAIE,EAAI9C,EAAKkG,EAAMQ,EAAQ3F,GACzBC,EAAK6F,KAAKH,EAAQ3F,KACxB6E,KAAK,SAAUI,GAGhB,MADAlD,GAAK/B,EAAK+B,GAAK,YACRV,EAAQpB,EAAK8B,GAAI9C,EAAKkG,EAAMQ,EAAQ3F,EAAMiF,IAAWJ,KAAK,SAAUkB,GAEzE,MAAO3E,GAAY2E,GAAad,EAAWc,OAiBjDwD,IAAK,SAAatK,EAAKkG,EAAMQ,EAAQ3F,GACnC,GAAIC,GAAOvD,KACPqF,EAAK4C,MAST,OARAgB,KAAWA,MACX3F,IAASA,MACT2F,EAAO1G,IAAMA,GAAO0G,EAAO1G,IAC3B0G,EAAOR,KAAOA,GAAQQ,EAAOR,KAC7BQ,EAAOC,OAASD,EAAOC,QAAU,MAGjC7D,EAAK/B,EAAK+B,GAAK,YACRV,EAAQpB,EAAK8B,GAAI9C,EAAKkG,EAAMQ,EAAQ3F,IAAO6E,KAAK,SAAUgB,GAK/D,MAHAF,GAASvE,EAAYyE,GAAWF,EAASE,EACzC9D,EAAK/B,EAAK+B,GAAK,MACf9B,EAAK4B,IAAIE,EAAI9C,EAAKkG,EAAMQ,EAAQ3F,GACzBC,EAAK6F,KAAKH,EAAQ3F,KACxB6E,KAAK,SAAUI,GAGhB,MADAlD,GAAK/B,EAAK+B,GAAK,WACRV,EAAQpB,EAAK8B,GAAI9C,EAAKkG,EAAMQ,EAAQ3F,EAAMiF,IAAWJ,KAAK,SAAUkB,GAEzE,MAAO3E,GAAY2E,GAAad,EAAWc,OAgBjDnB,eAAgB,SAAwBH,EAAQvF,EAAQc,GAEtD,MADAA,KAASA,MACLgB,EAAWhB,EAAK4E,gBACX5E,EAAK4E,eAAeH,EAAQvF,EAAQc,GAEzCgB,EAAWyD,EAAOG,gBACbH,EAAOG,eAAeH,EAAQvF,EAAQc,GAExCd,GAiBT8J,cAAe,SAAuBD,EAAKpD,EAAQ3F,GACjD,MAAOsB,GAAOyH,IAchB/D,UAAW,SAAmBP,EAAQU,EAAMnF,GAE1C,MADAA,KAASA,MACLgB,EAAWhB,EAAKgF,WACXhF,EAAKgF,UAAUP,EAAQU,EAAMnF,GAElCgB,EAAWyD,EAAOO,WACbP,EAAOO,UAAUP,EAAQU,EAAMnF,GAEjCmF,GAeTqE,OAAQ,SAAgB/E,EAAQzH,EAAI0H,EAAO1E,GACzC,GAAIC,GAAOvD,KACPqF,EAAK4C,MAQT,OAPA3E,GAAOA,EAAOa,EAAKb,MACnBA,EAAKd,SAAWc,EAAKd,WACrBc,EAAKd,OAASe,EAAK2E,eAAeH,EAAQzE,EAAKd,OAAQc,GACvDA,EAAKyC,OAASrB,EAAYpB,EAAKyC,QAAUgC,EAAOhC,OAASzC,EAAKyC,OAG9DV,EAAK/B,EAAK+B,GAAK,eACRV,EAAQpB,EAAK8B,GAAI0C,EAAQzH,EAAI0H,EAAO1E,IAAO6E,KAAK,WAGrD,MAFA9C,GAAK/B,EAAK+B,GAAK,SACf9B,EAAK4B,IAAIE,EAAI0C,EAAQzH,EAAI0H,EAAO1E,GACzBC,EAAKsJ,IAAItJ,EAAK8E,QAAQ,SAAUN,EAAQzH,EAAIgD,GAAOC,EAAK+E,UAAUP,EAAQC,EAAO1E,GAAOA,KAC9F6E,KAAK,SAAUI,GAChB,MAAOhF,GAAKiF,YAAYT,EAAQQ,EAAUjF,KACzC6E,KAAK,SAAUM,GAGhB,MADApD,GAAK/B,EAAK+B,GAAK,cACRV,EAAQpB,EAAK8B,GAAI0C,EAAQzH,EAAI0H,EAAO1E,EAAMmF,IAAON,KAAK,SAAUO,GAErE,MAAOhE,GAAYgE,GAASD,EAAOC,OAiBzCqE,UAAW,SAAmBhF,EAAQC,EAAOyB,EAAOnG,GAClD,GAAIC,GAAOvD,KACPqF,EAAK4C,MAUT,OATAwB,KAAUA,MACVnG,EAAOA,EAAOa,EAAKb,MACnBA,EAAKd,SAAWc,EAAKd,WACrB4B,EAAUd,EAAKd,OAAQiH,GACvBnG,EAAKd,OAASe,EAAK2E,eAAeH,EAAQzE,EAAKd,OAAQc,GACvDA,EAAKyC,OAASrB,EAAYpB,EAAKyC,QAAUgC,EAAOhC,OAASzC,EAAKyC,OAG9DV,EAAK/B,EAAK+B,GAAK,kBACRV,EAAQpB,EAAK8B,GAAI0C,EAAQC,EAAOyB,EAAOnG,IAAO6E,KAAK,WAGxD,MAFA9C,GAAK/B,EAAK+B,GAAK,YACf9B,EAAK4B,IAAIE,EAAI0C,EAAQC,EAAOyB,EAAOnG,GAC5BC,EAAKsJ,IAAItJ,EAAK8E,QAAQ,YAAaN,EAAQ,KAAMzE,GAAOC,EAAK+E,UAAUP,EAAQC,EAAO1E,GAAOA,KACnG6E,KAAK,SAAUI,GAChB,MAAOhF,GAAKiF,YAAYT,EAAQQ,EAAUjF,KACzC6E,KAAK,SAAUM,GAGhB,MADApD,GAAK/B,EAAK+B,GAAK,iBACRV,EAAQpB,EAAK8B,GAAI0C,EAAQC,EAAOyB,EAAOnG,EAAMmF,IAAON,KAAK,SAAUO,GAExE,MAAOhE,GAAYgE,GAASD,EAAOC,OAuBzCsE,WAAY,SAAoBjF,EAAQa,EAAStF,GAC/C,GAAIC,GAAOvD,KACPqF,EAAK4C,MAQT,OAPA3E,GAAOA,EAAOa,EAAKb,MACnBA,EAAKd,SAAWc,EAAKd,WACrBc,EAAKd,OAASe,EAAK2E,eAAeH,EAAQzE,EAAKd,OAAQc,GACvDA,EAAKyC,OAASrB,EAAYpB,EAAKyC,QAAUgC,EAAOhC,OAASzC,EAAKyC,OAG9DV,EAAK/B,EAAK+B,GAAK,mBACRV,EAAQpB,EAAK8B,GAAI0C,EAAQa,EAAStF,IAAO6E,KAAK,WAGnD,MAFA9C,GAAK/B,EAAK+B,GAAK,aACf9B,EAAK4B,IAAIE,EAAI0C,EAAQa,EAAStF,GACvBC,EAAKsJ,IAAItJ,EAAK8E,QAAQ,aAAcN,EAAQ,KAAMzE,GAAOC,EAAK+E,UAAUP,EAAQa,EAAStF,GAAOA,KACtG6E,KAAK,SAAUI,GAChB,MAAOhF,GAAKiF,YAAYT,EAAQQ,EAAUjF,KACzC6E,KAAK,SAAUM,GAGhB,MADApD,GAAK/B,EAAK+B,GAAK,kBACRV,EAAQpB,EAAK8B,GAAI0C,EAAQa,EAAStF,EAAMmF,IAAON,KAAK,SAAUO,GAEnE,MAAOhE,GAAYgE,GAASD,EAAOC,SAqB3CrF,EAAY4J,UAAY,SAAUC,EAAM5J,GACtC,IAAK4J,IAASzI,EAASyI,GACrB,KAAM,IAAIC,WAAU,mDAAqE,mBAATD,GAAuB,YAAcxJ,EAAQwJ,IAE/H,OAAO,UAAUnF,GACf,GAAIA,EAAOmF,GACT,KAAM,IAAIf,OAAM,yBAA2Be,EAAO,6BA6CpD,OA3CA5J,GAAK8J,QAAU9J,EAAK8J,SAAW,SAAUnE,GACvC,MAAOA,IAET3F,EAAKiF,SAAWjF,EAAKiF,UAAY,SAAUA,GACzC,MAAOA,IAETjF,EAAKgJ,cAAgBhJ,EAAKgJ,eAAiB,SAAUD,GACnD,MAAOzH,GAAOyH,IAEhBtE,EAAOmF,GAAQ,SAAU5M,EAAImL,GAC3B,GAAIlI,GAAOvD,IACPiD,GAAS3C,KACXmL,EAAQnL,GAEVmL,EAAQA,KACR,IAAI4B,GAAU9J,EAAK+J,WAAWhK,EAAK+J,SAAW9J,EAAKgK,gBAAkB,QACjEtE,IAKJ,IAJAzF,EAAOyF,EAAQ3F,IACVmI,EAAMd,eAAe,aAAe1B,EAAOyB,WAC9Ce,EAAMf,SAAWzB,EAAOyB,UAEO,kBAAtBe,GAAMhB,YACfxB,EAAO1G,IAAMkJ,EAAMhB,YAAYlH,EAAMkI,OAChC,CACL,GAAI+B,IAAS/B,EAAM/F,UAAYnC,EAAKmC,UAAY2H,EAAQ3H,SAAU2H,EAAQ5C,YAAYlH,EAAMiB,EAAOlE,GAAMA,EAAK,KAAMmL,GAChHjH,GAAOlE,IACTkN,EAAMrK,KAAK7C,GAEbkN,EAAMrK,KAAKG,EAAKmK,UAAYP,GAC5BjE,EAAO1G,IAAMb,EAAS0D,MAAM,KAAMoI,GAKpC,MAHAvE,GAAOC,OAASD,EAAOC,QAAU,MACjCD,EAAOlB,OAASxE,EAAK2J,KACrB9I,EAAU6E,GAAQwC,GACX9G,EAAQsE,GAAQd,KAAKsD,EAAM2B,SAAW9J,EAAK8J,SAASjF,KAAK,SAAUc,GACxE,MAAOoE,GAAQjE,KAAKH,KACnBd,KAAK,SAAUM,GAIhB,MAHIA,IAAQA,EAAKQ,SACfR,EAAKQ,OAAOlB,OAASxE,EAAK2J,MAErBzE,IACNN,KAAKsD,EAAMlD,UAAYjF,EAAKiF,SAAUkD,EAAMa,eAAiBhJ,EAAKgJ,gBAEhEvE,IAeX1E,EAAYqK,WAAa,SAAUpK,GAEjC,MADAA,KAASA,MACF,SAAUyE,GAIf,MAHArF,GAAOqF,EAAQ,SAAUhH,EAAOD,GAC9BuC,EAAY4J,UAAUnM,EAAKC,GAAOgH,KAE7BA,IAkDX1E,EAAYgB,OAASA,EAgBrBhB,EAAYsK,SACVC,KAAM,qBACNC,MAAOC,SAAS,eAAgB,IAChCC,MAAOD,SAAS,eAAgB,IAChCE,MAAOF,SAAS,eAAgB,IAChCG,MAAe,eACfC,KAAc,eA6BhBtO,EAAOD,QAAU0D,GAIZ,SAASzD,EAAQD,GAEtBC,EAAOD,QAAUM,GAIZ,SAASL,EAAQD,EAASQ,GAE/BP,EAAOD,QAAUQ,EAAoB,IAIhC,SAASP,EAAQD,EAASQ,GAE/B,YAWA,SAASgO,GAAMC,GACbpO,KAAKqO,SAAWpK,EAAMqK,SAAUF,GAChCpO,KAAKuO,cACHnB,QAAS,GAAIoB,GACbjG,SAAU,GAAIiG,IAblB,GAAIH,GAAWlO,EAAoB,GAC/B8D,EAAQ9D,EAAoB,GAC5BsO,EAAkBtO,EAAoB,GACtCqO,EAAqBrO,EAAoB,IACzCuO,EAAgBvO,EAAoB,IACpCwO,EAAcxO,EAAoB,IAClCyO,EAAOzO,EAAoB,IAC3B0O,EAAgB1O,EAAoB,GAUxCgO,GAAMlI,UAAUmH,QAAU,SAAiBnE,GAGnB,gBAAXA,KACTA,EAAShF,EAAMqK,OACb/L,IAAKX,UAAU,IACdA,UAAU,KAGfqH,EAAShF,EAAMqK,MAAMD,EAAUrO,KAAKqO,UAAYnF,OAAQ,OAASD,GAG7DA,EAAO6F,UAAYJ,EAAczF,EAAO1G,OAC1C0G,EAAO1G,IAAMoM,EAAY1F,EAAO6F,QAAS7F,EAAO1G,MAIlD0G,EAAO8F,gBAAkB9F,EAAO8F,iBAAmB/O,KAAKqO,SAASU,gBAGjE9F,EAAOR,KAAOoG,EACZ5F,EAAOR,KACPQ,EAAOgB,QACPhB,EAAO+F,kBAIT/F,EAAOgB,QAAUhG,EAAMqK,MACrBrF,EAAOgB,QAAQgF,WACfhG,EAAOgB,QAAQhB,EAAOC,YACtBD,EAAOgB,aAGThG,EAAMrB,SACH,SAAU,MAAO,OAAQ,OAAQ,MAAO,QAAS,UAClD,SAA2BsG,SAClBD,GAAOgB,QAAQf,IAK1B,IAAIgG,IAAST,EAAiBxG,QAC1BkH,EAAUC,QAAQzK,QAAQsE,EAU9B,KARAjJ,KAAKuO,aAAanB,QAAQxK,QAAQ,SAAoCyM,GACpEH,EAAMI,QAAQD,EAAYE,UAAWF,EAAYG,YAGnDxP,KAAKuO,aAAahG,SAAS3F,QAAQ,SAAkCyM,GACnEH,EAAM/L,KAAKkM,EAAYE,UAAWF,EAAYG,YAGzCN,EAAMrN,QACXsN,EAAUA,EAAQhH,KAAK+G,EAAMO,QAASP,EAAMO,QAG9C,OAAON,GAGT,IAAIO,GAAkB,GAAIvB,GAAME,GAC5BtK,EAAQnE,EAAOD,QAAUiP,EAAKT,EAAMlI,UAAUmH,QAASsC,EAE3D3L,GAAM+D,OAAS,SAAgBsG,GAC7B,MAAO,IAAID,GAAMC,IAInBrK,EAAMsK,SAAWqB,EAAgBrB,SAGjCtK,EAAM4L,IAAM,SAAaC,GACvB,MAAOR,SAAQO,IAAIC,IAErB7L,EAAM8L,OAAS1P,EAAoB,IAGnC4D,EAAMwK,aAAemB,EAAgBnB,aAGrCtK,EAAMrB,SAAS,SAAU,MAAO,QAAS,SAA6BsG,GAEpEiF,EAAMlI,UAAUiD,GAAU,SAAS3G,EAAK0G,GACtC,MAAOjJ,MAAKoN,QAAQnJ,EAAMqK,MAAMrF,OAC9BC,OAAQA,EACR3G,IAAKA,MAGTwB,EAAMmF,GAAU0F,EAAKT,EAAMlI,UAAUiD,GAASwG,KAGhDzL,EAAMrB,SAAS,OAAQ,MAAO,SAAU,SAA+BsG,GAErEiF,EAAMlI,UAAUiD,GAAU,SAAS3G,EAAKkG,EAAMQ,GAC5C,MAAOjJ,MAAKoN,QAAQnJ,EAAMqK,MAAMrF,OAC9BC,OAAQA,EACR3G,IAAKA,EACLkG,KAAMA,MAGV1E,EAAMmF,GAAU0F,EAAKT,EAAMlI,UAAUiD,GAASwG,MAM3C,SAAS9P,EAAQD,EAASQ,GAE/B,YAEA,IAAI8D,GAAQ9D,EAAoB,GAE5B2P,EAAoB,eACpBC,GACFC,eAAgB,oCAGlBpQ,GAAOD,SACLqP,kBAAmB,SAA+BvG,EAAMwB,GACtD,MAAIhG,GAAMgM,WAAWxH,GACZA,EAELxE,EAAMiM,cAAczH,GACfA,EAELxE,EAAMkM,kBAAkB1H,GACnBA,EAAK2H,QAEVnM,EAAMhB,SAASwF,IAAUxE,EAAMoM,OAAO5H,IAAUxE,EAAMqM,OAAO7H,GAe1DA,GAbAxE,EAAMS,YAAYuF,KACrBhG,EAAMrB,QAAQqH,EAAS,SAAkC7H,EAAKtB,GAClC,iBAAtBA,EAAIyP,gBACNtG,EAAQ,gBAAkB7H,KAI1B6B,EAAMS,YAAYuF,EAAQ,mBAC5BA,EAAQ,gBAAkB,mCAGvBuG,KAAKC,UAAUhI,MAK1BiI,mBAAoB,SAA+BjI,GAEjD,GAAoB,gBAATA,GAAmB,CAC5BA,EAAOA,EAAKvG,QAAQ4N,EAAmB,GACvC,KACErH,EAAO+H,KAAKG,MAAMlI,GAClB,MAAO1D,KAEX,MAAO0D,KAGTwB,SACEgF,QACE2B,OAAU,qCAEZ5C,MAAO/J,EAAMqK,MAAMyB,GACnBc,KAAM5M,EAAMqK,MAAMyB,GAClBe,IAAK7M,EAAMqK,MAAMyB,IAGnBgB,QAAS,EAETC,eAAgB,aAChBC,eAAgB,iBAMb,SAASrR,EAAQD,GAEtB,YAcA,SAASgD,GAAQP,GACf,MAA8B,mBAAvBW,EAASvC,KAAK4B,GASvB,QAAS8N,GAAc9N,GACrB,MAA8B,yBAAvBW,EAASvC,KAAK4B,GASvB,QAAS6N,GAAW7N,GAClB,MAA8B,sBAAvBW,EAASvC,KAAK4B,GASvB,QAAS+N,GAAkB/N,GACzB,GAAIH,EAMJ,OAJEA,GAD0B,mBAAhBiP,cAAiCA,YAAkB,OACpDA,YAAYC,OAAO/O,GAEnB,GAAUA,EAAU,QAAMA,EAAIgO,iBAAkBc,aAW7D,QAASzM,GAASrC,GAChB,MAAsB,gBAARA,GAShB,QAASmC,GAASnC,GAChB,MAAsB,gBAARA,GAShB,QAASsC,GAAYtC,GACnB,MAAsB,mBAARA,GAShB,QAASa,GAASb,GAChB,MAAe,QAARA,GAA+B,gBAARA,GAShC,QAASgP,GAAOhP,GACd,MAA8B,kBAAvBW,EAASvC,KAAK4B,GASvB,QAASiO,GAAOjO,GACd,MAA8B,kBAAvBW,EAASvC,KAAK4B,GASvB,QAASkO,GAAOlO,GACd,MAA8B,kBAAvBW,EAASvC,KAAK4B,GASvB,QAASiP,GAAK1F,GACZ,MAAOA,GAAIzJ,QAAQ,OAAQ,IAAIA,QAAQ,OAAQ,IAgBjD,QAASoP,KACP,MACoB,mBAAXxO,SACa,mBAAbyO,WAC2B,kBAA3BA,UAASC,cAgBpB,QAAS5O,GAAQ/B,EAAK4Q,GAEpB,GAAY,OAAR5Q,GAA+B,mBAARA,GAU3B,GALmB,gBAARA,IAAqB8B,EAAQ9B,KAEtCA,GAAOA,IAGL8B,EAAQ9B,GAEV,IAAK,GAAI6Q,GAAI,EAAGC,EAAI9Q,EAAIgB,OAAY8P,EAAJD,EAAOA,IACrCD,EAAGjR,KAAK,KAAMK,EAAI6Q,GAAIA,EAAG7Q,OAI3B,KAAK,GAAIC,KAAOD,GACVA,EAAI8J,eAAe7J,IACrB2Q,EAAGjR,KAAK,KAAMK,EAAIC,GAAMA,EAAKD,GAuBrC,QAASyN,KAEP,QAASsD,GAAYxP,EAAKtB,GACG,gBAAhBmB,GAAOnB,IAAoC,gBAARsB,GAC5CH,EAAOnB,GAAOwN,EAAMrM,EAAOnB,GAAMsB,GAEjCH,EAAOnB,GAAOsB,EAIlB,IAAK,GATDH,MASKyP,EAAI,EAAGC,EAAI/P,UAAUC,OAAY8P,EAAJD,EAAOA,IAC3C9O,EAAQhB,UAAU8P,GAAIE,EAExB,OAAO3P,GA1NT,GAAIc,GAAW/B,OAAOiF,UAAUlD,QA6NhCnD,GAAOD,SACLgD,QAASA,EACTuN,cAAeA,EACfD,WAAYA,EACZE,kBAAmBA,EACnB1L,SAAUA,EACVF,SAAUA,EACVtB,SAAUA,EACVyB,YAAaA,EACb0M,OAAQA,EACRf,OAAQA,EACRC,OAAQA,EACRgB,qBAAsBA,EACtB1O,QAASA,EACT0L,MAAOA,EACP+C,KAAMA,IAMH,SAASzR,EAAQD,EAASQ,IAEH,SAAS0R,GAAU,YAS/CjS,GAAOD,QAAU,SAAyBsJ,GACxC,MAAO,IAAImG,SAAQ,SAAkBzK,EAASC,GAC5C,IACE,GAAIyI,EAE0B,mBAAnBpE,GAAOoE,QAEhBA,EAAUpE,EAAOoE,QACkB,mBAAnByE,gBAEhBzE,EAAUlN,EAAoB,GACF,mBAAZ0R,KAEhBxE,EAAUlN,EAAoB,IAGT,kBAAZkN,IACTA,EAAQ1I,EAASC,EAAQqE,GAE3B,MAAOlE,GACPH,EAAOG,SAMgBvE,KAAKb,EAASQ,EAAoB,KAI1D,SAASP,EAAQD,GAUtB,QAASoS,KACLC,GAAW,EACPC,EAAapQ,OACbqQ,EAAQD,EAAa3M,OAAO4M,GAE5BC,EAAa,GAEbD,EAAMrQ,QACNuQ,IAIR,QAASA,KACL,IAAIJ,EAAJ,CAGA,GAAIjB,GAAUsB,WAAWN,EACzBC,IAAW,CAGX,KADA,GAAIM,GAAMJ,EAAMrQ,OACVyQ,GAAK,CAGP,IAFAL,EAAeC,EACfA,OACSC,EAAaG,GACdL,GACAA,EAAaE,GAAYI,KAGjCJ,GAAa,GACbG,EAAMJ,EAAMrQ,OAEhBoQ,EAAe,KACfD,GAAW,EACXQ,aAAazB,IAiBjB,QAAS0B,GAAKC,EAAKC,GACf3S,KAAK0S,IAAMA,EACX1S,KAAK2S,MAAQA,EAYjB,QAAS3N,MAtET,GAGIiN,GAHAJ,EAAUjS,EAAOD,WACjBuS,KACAF,GAAW,EAEXG,EAAa,EAsCjBN,GAAQe,SAAW,SAAUF,GACzB,GAAI5Q,GAAO,GAAIC,OAAMH,UAAUC,OAAS,EACxC,IAAID,UAAUC,OAAS,EACnB,IAAK,GAAI6P,GAAI,EAAGA,EAAI9P,UAAUC,OAAQ6P,IAClC5P,EAAK4P,EAAI,GAAK9P,UAAU8P,EAGhCQ,GAAM/O,KAAK,GAAIsP,GAAKC,EAAK5Q,IACJ,IAAjBoQ,EAAMrQ,QAAiBmQ,GACvBK,WAAWD,EAAY,IAS/BK,EAAKxM,UAAUsM,IAAM,WACjBvS,KAAK0S,IAAItN,MAAM,KAAMpF,KAAK2S,QAE9Bd,EAAQgB,MAAQ,UAChBhB,EAAQiB,SAAU,EAClBjB,EAAQkB,OACRlB,EAAQmB,QACRnB,EAAQlE,QAAU,GAClBkE,EAAQoB,YAIRpB,EAAQqB,GAAKlO,EACb6M,EAAQsB,YAAcnO,EACtB6M,EAAQuB,KAAOpO,EACf6M,EAAQwB,IAAMrO,EACd6M,EAAQyB,eAAiBtO,EACzB6M,EAAQ0B,mBAAqBvO,EAC7B6M,EAAQ2B,KAAOxO,EAEf6M,EAAQ4B,QAAU,SAAUvG,GACxB,KAAM,IAAIf,OAAM,qCAGpB0F,EAAQ6B,IAAM,WAAc,MAAO,KACnC7B,EAAQ8B,MAAQ,SAAUC,GACtB,KAAM,IAAIzH,OAAM,mCAEpB0F,EAAQgC,MAAQ,WAAa,MAAO,KAK/B,SAASjU,EAAQD,EAASQ,GAE/B,YAEA,IAAI8D,GAAQ9D,EAAoB,GAC5B2T,EAAW3T,EAAoB,GAC/B4T,EAAe5T,EAAoB,IACnC0O,EAAgB1O,EAAoB,IACpC6T,EAAkB7T,EAAoB,IACtC8T,EAAOnR,OAAOmR,MAAQ9T,EAAoB,GAE9CP,GAAOD,QAAU,SAAoBgF,EAASC,EAAQqE,GACpD,GAAIiL,GAAcjL,EAAOR,KACrB0L,EAAiBlL,EAAOgB,OAExBhG,GAAMgM,WAAWiE,UACZC,GAAe,eAGxB,IAAI/G,GAAU,GAAI0E,eASlB,KALIhP,OAAOsR,gBAAoB,mBAAqBhH,IAAa4G,EAAgB/K,EAAO1G,OACtF6K,EAAU,GAAItK,QAAOsR,gBAInBnL,EAAOoL,KAAM,CACf,GAAIC,GAAWrL,EAAOoL,KAAKC,UAAY,GACnCC,EAAWtL,EAAOoL,KAAKE,UAAY,EACvCJ,GAAeK,cAAgB,SAAWP,EAAKK,EAAW,IAAMC,GAoDlE,GAjDAnH,EAAQqH,KAAKxL,EAAOC,OAAO4C,cAAegI,EAAS7K,EAAO1G,IAAK0G,EAAOzG,OAAQyG,EAAOyL,mBAAmB,GAGxGtH,EAAQ2D,QAAU9H,EAAO8H,QAGzB3D,EAAQuH,OAAS,WACf,GAAKvH,EAAL,CAIA,GAAIwH,GAAkB,yBAA2BxH,GAAU2G,EAAa3G,EAAQyH,yBAA2B,KACvGC,EAAmE,MAAnD,OAAQ,IAAI1R,QAAQ6F,EAAO8L,cAAgB,IAAa3H,EAAQ4H,aAAe5H,EAAQ7E,SACvGA,GACFE,KAAMoG,EACJiG,EACAF,EACA3L,EAAOyH,mBAGT3E,OAA2B,OAAnBqB,EAAQrB,OAAkB,IAAMqB,EAAQrB,OAChDkJ,WAA+B,OAAnB7H,EAAQrB,OAAkB,aAAeqB,EAAQ6H,WAC7DhL,QAAS2K,EACT3L,OAAQA,IAIRV,EAASwD,QAAU,KAAOxD,EAASwD,OAAS,OAC1C,UAAYqB,KAAY7E,EAASyM,aACnCrQ,EACAC,GAAQ2D,GAGV6E,EAAU,OAIZA,EAAQ8H,QAAU,WAGhBtQ,EAAO,GAAIuH,OAAM,kBAGjBiB,EAAU,MAMRnJ,EAAMqN,uBAAwB,CAChC,GAAI6D,GAAUhV,EAAoB,IAG9BiV,EAAYnM,EAAO8F,iBAAmBiF,EAAgB/K,EAAO1G,KAC7D4S,EAAQE,KAAKpM,EAAO+H,gBACpB/I,MAEAmN,KACFjB,EAAelL,EAAOgI,gBAAkBmE,GAuB5C,GAlBI,oBAAsBhI,IACxBnJ,EAAMrB,QAAQuR,EAAgB,SAA0B/R,EAAKtB,GAChC,mBAAhBoT,IAAqD,iBAAtBpT,EAAIyP,oBAErC4D,GAAerT,GAGtBsM,EAAQkI,iBAAiBxU,EAAKsB,KAMhC6G,EAAO8F,kBACT3B,EAAQ2B,iBAAkB,GAIxB9F,EAAO8L,aACT,IACE3H,EAAQ2H,aAAe9L,EAAO8L,aAC9B,MAAOhQ,GACP,GAA6B,SAAzBqI,EAAQ2H,aACV,KAAMhQ,GAKRd,EAAMiM,cAAcgE,KACtBA,EAAc,GAAIqB,UAASrB,IAI7B9G,EAAQoI,KAAKtB,KAMV,SAAStU,EAAQD,EAASQ,GAE/B,YAIA,SAASgC,GAAOC,GACd,MAAOC,oBAAmBD,GACxBF,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KAVrB,GAAI+B,GAAQ9D,EAAoB,EAoBhCP,GAAOD,QAAU,SAAkB4C,EAAKC,EAAQkS,GAE9C,IAAKlS,EACH,MAAOD,EAGT,IAAIkT,EACJ,IAAIf,EACFe,EAAmBf,EAAiBlS,OAC/B,CACL,GAAIC,KAEJwB,GAAMrB,QAAQJ,EAAQ,SAAmBJ,EAAKtB,GAChC,OAARsB,GAA+B,mBAARA,KAIvB6B,EAAMtB,QAAQP,KAChBtB,GAAY,MAGTmD,EAAMtB,QAAQP,KACjBA,GAAOA,IAGT6B,EAAMrB,QAAQR,EAAK,SAAoBS,GACjCoB,EAAMmN,OAAOvO,GACfA,EAAIA,EAAEG,cACGiB,EAAMhB,SAASJ,KACxBA,EAAI2N,KAAKC,UAAU5N,IAErBJ,EAAMU,KAAKhB,EAAOrB,GAAO,IAAMqB,EAAOU,SAI1C4S,EAAmBhT,EAAMnB,KAAK,KAOhC,MAJImU,KACFlT,IAA6B,KAArBA,EAAIa,QAAQ,KAAc,IAAM,KAAOqS,GAG1ClT,IAOJ,SAAS3C,EAAQD,EAASQ,GAE/B,YAEA,IAAI8D,GAAQ9D,EAAoB,EAehCP,GAAOD,QAAU,SAAsBsK,GACrC,GACInJ,GACAsB,EACAsP,EAHAgE,IAKJ,OAAKzL,IAELhG,EAAMrB,QAAQqH,EAAQ0L,MAAM,MAAO,SAAgBC,GACjDlE,EAAIkE,EAAKxS,QAAQ,KACjBtC,EAAMmD,EAAMoN,KAAKuE,EAAK1J,OAAO,EAAGwF,IAAInB,cACpCnO,EAAM6B,EAAMoN,KAAKuE,EAAK1J,OAAOwF,EAAI,IAE7B5Q,IACF4U,EAAO5U,GAAO4U,EAAO5U,GAAO4U,EAAO5U,GAAO,KAAOsB,EAAMA,KAIpDsT,GAZgBA,IAkBpB,SAAS9V,EAAQD,EAASQ,GAE/B,YAEA,IAAI8D,GAAQ9D,EAAoB,EAUhCP,GAAOD,QAAU,SAAuB8I,EAAMwB,EAAS4L,GAMrD,MAJA5R,GAAMrB,QAAQiT,EAAK,SAAmBpE,GACpChJ,EAAOgJ,EAAGhJ,EAAMwB,KAGXxB,IAMJ,SAAS7I,EAAQD,EAASQ,GAE/B,YAEA,IAAI8D,GAAQ9D,EAAoB,EAEhCP,GAAOD,QACLsE,EAAMqN,uBAIN,WAWE,QAASwE,GAAWvT,GAClB,GAAIwT,GAAOxT,CAWX,OATIyT,KAEFC,EAAeC,aAAa,OAAQH,GACpCA,EAAOE,EAAeF,MAGxBE,EAAeC,aAAa,OAAQH,IAIlCA,KAAME,EAAeF,KACrBI,SAAUF,EAAeE,SAAWF,EAAeE,SAASjU,QAAQ,KAAM,IAAM,GAChFkU,KAAMH,EAAeG,KACrBC,OAAQJ,EAAeI,OAASJ,EAAeI,OAAOnU,QAAQ,MAAO,IAAM,GAC3EoU,KAAML,EAAeK,KAAOL,EAAeK,KAAKpU,QAAQ,KAAM,IAAM,GACpEqU,SAAUN,EAAeM,SACzBC,KAAMP,EAAeO,KACrB/I,SAAiD,MAAtCwI,EAAexI,SAASgJ,OAAO,GAChCR,EAAexI,SACf,IAAMwI,EAAexI,UAhCnC,GAEIiJ,GAFAV,EAAO,kBAAkBW,KAAKC,UAAUC,WACxCZ,EAAiB1E,SAASC,cAAc,IA2C5C,OARAkF,GAAYZ,EAAWhT,OAAOgU,SAASf,MAQhC,SAAyBgB,GAC9B,GAAIrB,GAAUzR,EAAMQ,SAASsS,GAAejB,EAAWiB,GAAcA,CACrE,OAAQrB,GAAOS,WAAaO,EAAUP,UAChCT,EAAOU,OAASM,EAAUN,SAKpC,WACE,MAAO,YACL,OAAO,OAQR,SAASxW,EAAQD,GAEtB,YAMA,SAASqX,GAAsBC,GAC7BjX,KAAKiX,QAAUA,EAMjB,QAAShD,GAAKiD,GAGZ,IAEE,GAAIC,GAAOC,EAJTzL,EAAM0L,OAAOH,GACbI,EAAS,GAGUC,EAAM,EAAGC,EAAMC,EAIpC9L,EAAI8K,OAAa,EAANc,KAAaC,EAAM,IAAKD,EAAM,GAEzCD,GAAUE,EAAIf,OAAO,GAAKU,GAAS,EAAII,EAAM,EAAI,GACjD,CAEA,GADAH,EAAWzL,EAAI+L,WAAWH,GAAO,KAC7BH,EAAW,IACb,KAAM,IAAIJ,GAAsB,yCAElCG,GAAQA,GAAS,EAAIC,EAEvB,MAAOE,GA5BT,GAAIG,GAAQ,mEAKZT,GAAsB/Q,UAAY,GAAIkG,OACtC6K,EAAsB/Q,UAAU0R,KAAO,EACvCX,EAAsB/Q,UAAUiH,KAAO,wBAwBvCtN,EAAOD,QAAUsU,GAKZ,SAASrU,EAAQD,EAASQ,GAE/B,YAEA,IAAI8D,GAAQ9D,EAAoB,EAEhCP,GAAOD,QACLsE,EAAMqN,uBAGN,WACE,OACEsG,MAAO,SAAe1K,EAAMnM,EAAO8W,EAASC,EAAMC,EAAQC,GACxD,GAAIC,KACJA,GAAO9U,KAAK+J,EAAO,IAAM7K,mBAAmBtB,IAExCkD,EAAMM,SAASsT,IACjBI,EAAO9U,KAAK,WAAa,GAAI6I,MAAK6L,GAASK,eAGzCjU,EAAMQ,SAASqT,IACjBG,EAAO9U,KAAK,QAAU2U,GAGpB7T,EAAMQ,SAASsT,IACjBE,EAAO9U,KAAK,UAAY4U,GAGtBC,KAAW,GACbC,EAAO9U,KAAK,UAGdoO,SAAS0G,OAASA,EAAO3W,KAAK,OAGhC+T,KAAM,SAAcnI,GAClB,GAAIiL,GAAQ5G,SAAS0G,OAAOE,MAAM,GAAIC,QAAO,aAAelL,EAAO,aACnE,OAAQiL,GAAQE,mBAAmBF,EAAM,IAAM,MAGjDG,OAAQ,SAAgBpL,GACtBlN,KAAK4X,MAAM1K,EAAM,GAAIlB,KAAKuM,MAAQ,YAMxC,WACE,OACEX,MAAO,aACPvC,KAAM,WAAkB,MAAO,OAC/BiD,OAAQ,kBAQT,SAAS1Y,EAAQD,EAASQ,GAE/B,YAIA,SAASqO,KACPxO,KAAKwY,YAHP,GAAIvU,GAAQ9D,EAAoB,EAchCqO,GAAmBvI,UAAUwS,IAAM,SAAalJ,EAAWC,GAKzD,MAJAxP,MAAKwY,SAASrV,MACZoM,UAAWA,EACXC,SAAUA,IAELxP,KAAKwY,SAAS3W,OAAS,GAQhC2M,EAAmBvI,UAAUyS,MAAQ,SAAepY,GAC9CN,KAAKwY,SAASlY,KAChBN,KAAKwY,SAASlY,GAAM,OAYxBkO,EAAmBvI,UAAUrD,QAAU,SAAiB6O,GACtDxN,EAAMrB,QAAQ5C,KAAKwY,SAAU,SAAwBG,GACzC,OAANA,GACFlH,EAAGkH,MAKT/Y,EAAOD,QAAU6O,GAKZ,SAAS5O,EAAQD,GAEtB,YAQAC,GAAOD,QAAU,SAAuB4C,GAItC,MAAO,gCAAgCoU,KAAKpU,KAMzC,SAAS3C,EAAQD,GAEtB,YASAC,GAAOD,QAAU,SAAqBmP,EAAS8J,GAC7C,MAAO9J,GAAQ5M,QAAQ,OAAQ,IAAM,IAAM0W,EAAY1W,QAAQ,OAAQ,MAMpE,SAAStC,EAAQD,GAEtB,YAEAC,GAAOD,QAAU,SAAc8R,EAAIoH,GACjC,MAAO,YAEL,IAAK,GADD/W,GAAO,GAAIC,OAAMH,UAAUC,QACtB6P,EAAI,EAAGA,EAAI5P,EAAKD,OAAQ6P,IAC/B5P,EAAK4P,GAAK9P,UAAU8P,EAEtB,OAAOD,GAAGrM,MAAMyT,EAAS/W,MAOxB,SAASlC,EAAQD,GAEtB,YAsBAC,GAAOD,QAAU,SAAgBmZ,GAC/B,MAAO,UAAcC,GACnB,MAAOD,GAAS1T,MAAM,KAAM2T","file":"dist/js-data-http.min.js"} +>>>>>>> Rebase diff --git a/fetch/AUTHORS b/fetch/AUTHORS new file mode 100644 index 0000000..370b7c6 --- /dev/null +++ b/fetch/AUTHORS @@ -0,0 +1,12 @@ +# This is the official list of js-data-http project authors. +# +# This file is controlled by scripts/authors.js +# +# Names are formatted as: +# # commits Name or Organization +# The email address is not required for organizations. +InternalFX +Jason Dobry +Josh Drake +RobertHerhold +Tomás Fox diff --git a/fetch/CONTRIBUTORS b/fetch/CONTRIBUTORS new file mode 100644 index 0000000..a5c9494 --- /dev/null +++ b/fetch/CONTRIBUTORS @@ -0,0 +1,11 @@ +# People who have contributed to the js-data-http project. +# +# This file is controlled by scripts/authors.js +# +# Names should be added to this file as: +# [commit count] Name + 1 InternalFX + 66 Jason Dobry + 1 Josh Drake + 1 RobertHerhold + 3 Tomás Fox diff --git a/fetch/dist/js-data-fetch.js b/fetch/dist/js-data-fetch.js index 2cf573d..adeeef5 100644 --- a/fetch/dist/js-data-fetch.js +++ b/fetch/dist/js-data-fetch.js @@ -1,12 +1,3 @@ -/*! -* js-data-fetch -* @version 3.0.0-alpha.4 - Homepage -* @author Jason Dobry -* @copyright (c) 2014-2016 Jason Dobry -* @license MIT -* -* @overview Fetch HTTP (XHR) adapter for js-data in the browser. -*/ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(require("js-data"), require("undefined")); @@ -69,6 +60,8 @@ return /******/ (function(modules) { // webpackBootstrap var _jsData = __webpack_require__(1); + function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + /* global fetch:true Headers:true Request:true */ var axios = __webpack_require__(2); var _ = _jsData.utils._; @@ -528,7 +521,7 @@ return /******/ (function(modules) { // webpackBootstrap */ create: function create(mapper, props, opts) { var self = this; - var op = undefined; + var op = void 0; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(mapper, opts.params, opts); @@ -567,7 +560,7 @@ return /******/ (function(modules) { // webpackBootstrap */ createMany: function createMany(mapper, records, opts) { var self = this; - var op = undefined; + var op = void 0; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(mapper, opts.params, opts); @@ -621,7 +614,7 @@ return /******/ (function(modules) { // webpackBootstrap */ DEL: function DEL(url, config, opts) { var self = this; - var op = undefined; + var op = void 0; config || (config = {}); opts || (opts = {}); config.url = url || config.url; @@ -686,7 +679,7 @@ return /******/ (function(modules) { // webpackBootstrap */ destroy: function destroy(mapper, id, opts) { var self = this; - var op = undefined; + var op = void 0; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(mapper, opts.params, opts); @@ -725,7 +718,7 @@ return /******/ (function(modules) { // webpackBootstrap */ destroyAll: function destroyAll(mapper, query, opts) { var self = this; - var op = undefined; + var op = void 0; query || (query = {}); opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); @@ -829,7 +822,7 @@ return /******/ (function(modules) { // webpackBootstrap */ find: function find(mapper, id, opts) { var self = this; - var op = undefined; + var op = void 0; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(mapper, opts.params, opts); @@ -868,7 +861,7 @@ return /******/ (function(modules) { // webpackBootstrap */ findAll: function findAll(mapper, query, opts) { var self = this; - var op = undefined; + var op = void 0; query || (query = {}); opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); @@ -907,7 +900,7 @@ return /******/ (function(modules) { // webpackBootstrap */ GET: function GET(url, config, opts) { var self = this; - var op = undefined; + var op = void 0; config || (config = {}); opts || (opts = {}); config.url = url || config.url; @@ -941,54 +934,61 @@ return /******/ (function(modules) { // webpackBootstrap * @return {string} Full path. */ getEndpoint: function getEndpoint(mapper, id, opts) { - var _this = this; - + var self = this; opts || (opts = {}); opts.params || (opts.params = {}); - var item = undefined; - var parentKey = mapper.parentKey; var endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : mapper.endpoint; - var parentField = mapper.parentField; - var parentDef = mapper.parent ? mapper.getResource(mapper.parent) : undefined; - var parentId = opts.params[parentKey]; - - if (parentId === false || !parentKey || !parentDef) { - if (parentId === false) { + var parents = mapper.parents || (mapper.parent ? _defineProperty({}, mapper.parent, { + key: mapper.parentKey, + field: mapper.parentField + }) : {}); + + forOwn(parents, function (parent, parentName) { + var item = void 0; + var parentKey = parent.key; + var parentField = parent.field; + var parentDef = mapper.getResource(parentName); + var parentId = opts.params[parentKey]; + + if (parentId === false || !parentKey || !parentDef) { + if (parentId === false) { + delete opts.params[parentKey]; + } + return false; + } else { delete opts.params[parentKey]; - } - return endpoint; - } else { - delete opts.params[parentKey]; - if (isString(id) || isNumber(id)) { - item = mapper.get(id); - } else if (isObject(id)) { - item = id; - } + if (isString(id) || isNumber(id)) { + item = mapper.get(id); + } else if (isObject(id)) { + item = id; + } - if (item) { - parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null); - } + if (item) { + parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null); + } - if (parentId) { - var _ret = function () { - delete opts.endpoint; - var _opts = {}; - forOwn(opts, function (value, key) { - _opts[key] = value; - }); - _(_opts, parentDef); - return { - v: makePath(_this.getEndpoint(parentDef, parentId, _opts, parentId, endpoint)) - }; - }(); - - if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v; - } else { - return endpoint; + if (parentId) { + var _ret = function () { + delete opts.endpoint; + var _opts = {}; + forOwn(opts, function (value, key) { + _opts[key] = value; + }); + _(_opts, parentDef); + endpoint = makePath(self.getEndpoint(parentDef, parentId, _opts, parentId, endpoint)); + return { + v: false + }; + }(); + + if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v; + } } - } + }); + + return endpoint; }, @@ -1024,8 +1024,14 @@ return /******/ (function(modules) { // webpackBootstrap var self = this; var start = new Date(); opts || (opts = {}); - config = copy(config); + var payload = config.data; + var cache = config.cache; + var timeout = config.timeout; + config = copy(config, null, null, null, ['data', 'cache', 'timeout']); config = deepMixIn(config, self.httpConfig); + config.data = payload; + config.cache = cache; + config.timeout = timeout; if (self.forceTrailingSlash && config.url[config.url.length - 1] !== '/') { config.url += '/'; } @@ -1116,7 +1122,7 @@ return /******/ (function(modules) { // webpackBootstrap */ POST: function POST(url, data, config, opts) { var self = this; - var op = undefined; + var op = void 0; config || (config = {}); opts || (opts = {}); config.url = url || config.url; @@ -1155,7 +1161,7 @@ return /******/ (function(modules) { // webpackBootstrap */ PUT: function PUT(url, data, config, opts) { var self = this; - var op = undefined; + var op = void 0; config || (config = {}); opts || (opts = {}); config.url = url || config.url; @@ -1256,7 +1262,7 @@ return /******/ (function(modules) { // webpackBootstrap */ update: function update(mapper, id, props, opts) { var self = this; - var op = undefined; + var op = void 0; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(mapper, opts.params, opts); @@ -1294,7 +1300,7 @@ return /******/ (function(modules) { // webpackBootstrap */ updateAll: function updateAll(mapper, props, query, opts) { var self = this; - var op = undefined; + var op = void 0; query || (query = {}); opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); @@ -1340,7 +1346,7 @@ return /******/ (function(modules) { // webpackBootstrap */ updateMany: function updateMany(mapper, records, opts) { var self = this; - var op = undefined; + var op = void 0; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(mapper, opts.params, opts); @@ -1519,12 +1525,12 @@ return /******/ (function(modules) { // webpackBootstrap * otherwise `false` if the current version is not beta. */ HttpAdapter.version = { - full: '3.0.0-alpha.4', - major: parseInt('3', 10), - minor: parseInt('0', 10), - patch: parseInt('0', 10), - alpha: true ? '4' : false, - beta: true ? 'false' : false + full: '<%= pkg.version %>', + major: parseInt('<%= major %>', 10), + minor: parseInt('<%= minor %>', 10), + patch: parseInt('<%= patch %>', 10), + alpha: true ? '<%= alpha %>' : false, + beta: true ? '<%= beta %>' : false }; /** diff --git a/fetch/dist/js-data-fetch.js.map b/fetch/dist/js-data-fetch.js.map index ff236b8..4fa575a 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 bc8063d879530419e301","webpack:///./src/index.js","webpack:///external {\"amd\":\"js-data\",\"commonjs\":\"js-data\",\"commonjs2\":\"js-data\",\"root\":\"JSData\"}","webpack:///external \"undefined\""],"names":[],"mappings":"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","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[\"HttpAdapter\"] = factory(require(\"js-data\"), require(\"undefined\"));\n\telse\n\t\troot[\"HttpAdapter\"] = factory(root[\"JSData\"], root[\"undefined\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_2__) {\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 bc8063d879530419e301\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nconst {\n _,\n addHiddenPropsToTarget,\n copy,\n deepMixIn,\n extend,\n fillIn,\n forOwn,\n isArray,\n isFunction,\n isNumber,\n isObject,\n isSorN,\n isString,\n isUndefined,\n resolve,\n reject,\n toJson\n} = utils\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 forOwn(params, function (val, key) {\n if (val === null || typeof val === 'undefined') {\n return\n }\n if (!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 (isObject(v)) {\n v = 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 noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n}\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#debug\n * @type {boolean}\n * @default false\n */\n debug: false,\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 * @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\n // Default values for arguments\n opts || (opts = {})\n\n fillIn(self, opts)\n fillIn(self, DEFAULTS)\n}\n\naddHiddenPropsToTarget(HttpAdapter.prototype, {\n /**\n * @name HttpAdapter#afterCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreate: noop2,\n\n /**\n * @name HttpAdapter#afterCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreateMany: noop2,\n\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#afterDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroy: noop2,\n\n /**\n * @name HttpAdapter#afterDestroyAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroyAll: noop2,\n\n /**\n * @name HttpAdapter#afterFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFind: noop2,\n\n /**\n * @name HttpAdapter#afterFindAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFindAll: 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#afterUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdate: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateAll: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateMany: noop2,\n\n /**\n * @name HttpAdapter#beforeCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n */\n beforeCreate: noop,\n\n /**\n * @name HttpAdapter#beforeCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeCreateMany: noop,\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#beforeDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeDestroy: noop,\n\n /**\n * @name HttpAdapter#beforeDestroyAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeDestroyAll: noop,\n\n /**\n * @name HttpAdapter#beforeFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeFind: noop,\n\n /**\n * @name HttpAdapter#beforeFindAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeFindAll: 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 /**\n * @name HttpAdapter#beforeUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n */\n beforeUpdate: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n */\n beforeUpdateAll: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeUpdateMany: noop,\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreate lifecycle hook\n op = opts.op = 'beforeCreate'\n return resolve(self[op](mapper, props, opts)).then(function () {\n op = opts.op = 'create'\n self.dbg(op, mapper, props, opts)\n return self.POST(\n self.getPath('create', mapper, props, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreate lifecycle hook\n op = opts.op = 'afterCreate'\n return resolve(self[op](mapper, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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} 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 createMany (mapper, records, opts) {\n const self = this\n let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreateMany lifecycle hook\n op = opts.op = 'beforeCreateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'createMany'\n self.dbg(op, mapper, records, opts)\n return self.POST(\n self.getPath('createMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreateMany lifecycle hook\n op = opts.op = 'afterCreateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n },\n\n /**\n * Call {@link HttpAdapter#log} at the \"debug\" level.\n *\n * @name HttpAdapter#dbg\n * @method\n * @param {...*} [args] Args passed to {@link HttpAdapter#log}.\n */\n dbg (...args) {\n this.log('debug', ...args)\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.deserialize)) {\n return opts.deserialize(mapper, response, opts)\n }\n if (isFunction(mapper.deserialize)) {\n return mapper.deserialize(mapper, response, opts)\n }\n if (opts.raw) {\n return response\n }\n return response ? ('data' in response ? response.data : response) : 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroy lifecycle hook\n op = opts.op = 'beforeDestroy'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy'\n self.dbg(op, mapper, id, opts)\n return self.DEL(\n self.getPath('destroy', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroy lifecycle hook\n op = opts.op = 'afterDestroy'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroyAll lifecycle hook\n op = opts.op = 'beforeDestroyAll'\n return resolve(self.beforeDestroyAll(mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll'\n self.dbg(op, mapper, query, opts)\n return self.DEL(\n self.getPath('destroyAll', mapper, null, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 = 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeFind lifecycle hook\n op = opts.op = 'beforeFind'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find'\n self.dbg(op, mapper, id, opts)\n return self.GET(\n self.getPath('find', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFind lifecycle hook\n op = opts.op = 'afterFind'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll'\n return resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll'\n self.dbg(op, mapper, query, opts)\n return self.GET(\n self.getPath('findAll', mapper, opts.params, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFindAll lifecycle hook\n op = opts.op = 'afterFindAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 opts || (opts = {})\n opts.params || (opts.params = {})\n\n let item\n const parentKey = mapper.parentKey\n const endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : mapper.endpoint\n let parentField = mapper.parentField\n const parentDef = mapper.parent ? mapper.getResource(mapper.parent) : undefined\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 endpoint\n } else {\n delete opts.params[parentKey]\n\n if (isString(id) || isNumber(id)) {\n item = mapper.get(id)\n } else if (isObject(id)) {\n item = id\n }\n\n if (item) {\n parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null)\n }\n\n if (parentId) {\n delete opts.endpoint\n const _opts = {}\n forOwn(opts, function (value, key) {\n _opts[key] = value\n })\n _(_opts, parentDef)\n return makePath(this.getEndpoint(parentDef, parentId, _opts, parentId, endpoint))\n } else {\n return endpoint\n }\n }\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 opts.basePath === undefined ? (mapper.basePath === undefined ? self.basePath : mapper.basePath) : opts.basePath,\n self.getEndpoint(mapper, (isString(id) || 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 /**\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 config = copy(config)\n config = deepMixIn(config, self.httpConfig)\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 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 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 resolve(self.afterHTTP(config, opts, response)).then(function (_response) {\n return _response || response\n })\n })\n },\n\n /**\n * Log the provided arguments at the specified leve.\n *\n * @name HttpAdapter#log\n * @method\n * @param {string} level Log level.\n * @param {...*} [args] Arguments to log.\n */\n log (level, ...args) {\n if (level && !args.length) {\n args.push(level)\n level = 'debug'\n }\n if (level === 'debug' && !this.debug) {\n return\n }\n const prefix = `${level.toUpperCase()}: (HttpAdapter)`\n if (console[level]) {\n console[level](prefix, ...args)\n } else {\n console.log(prefix, ...args)\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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.queryTransform)) {\n return opts.queryTransform(mapper, params, opts)\n }\n if (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 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 (isFunction(opts.serialize)) {\n return opts.serialize(mapper, data, opts)\n }\n if (isFunction(mapper.serialize)) {\n return mapper.serialize(mapper, data, opts)\n }\n return data\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdate lifecycle hook\n op = opts.op = 'beforeUpdate'\n return resolve(self[op](mapper, id, props, opts)).then(function () {\n op = opts.op = 'update'\n self.dbg(op, mapper, id, props, opts)\n return self.PUT(\n self.getPath('update', mapper, id, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdate lifecycle hook\n op = opts.op = 'afterUpdate'\n return resolve(self[op](mapper, id, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateAll lifecycle hook\n op = opts.op = 'beforeUpdateAll'\n return resolve(self[op](mapper, props, query, opts)).then(function () {\n op = opts.op = 'updateAll'\n self.dbg(op, mapper, props, query, opts)\n return self.PUT(\n self.getPath('updateAll', mapper, null, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateAll lifecycle hook\n op = opts.op = 'afterUpdateAll'\n return resolve(self[op](mapper, props, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'updateMany'\n self.dbg(op, mapper, records, opts)\n return self.PUT(\n self.getPath('updateMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateMany lifecycle hook\n op = opts.op = 'afterUpdateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n }\n})\n\n/**\n * Add an Http actions to a mapper.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.addAction = function (name, opts) {\n if (!name || !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 reject(err) }\n mapper[name] = function (id, _opts) {\n const self = this\n if (isObject(id)) {\n _opts = id\n }\n _opts = _opts || {}\n let adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http')\n let config = {}\n 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, isSorN(id) ? id : null, _opts)\n ]\n if (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 deepMixIn(config)(_opts)\n return 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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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 = extend\n\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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 **/","module.exports = undefined;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"undefined\"\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 26aa2d124fc9dffc8be5","webpack:///./src/index.js","webpack:///external {\"amd\":\"js-data\",\"commonjs\":\"js-data\",\"commonjs2\":\"js-data\",\"root\":\"JSData\"}","webpack:///external \"undefined\""],"names":[],"mappings":"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","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[\"HttpAdapter\"] = factory(require(\"js-data\"), require(\"undefined\"));\n\telse\n\t\troot[\"HttpAdapter\"] = factory(root[\"JSData\"], root[\"undefined\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_2__) {\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 26aa2d124fc9dffc8be5\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nconst {\n _,\n addHiddenPropsToTarget,\n copy,\n deepMixIn,\n extend,\n fillIn,\n forOwn,\n isArray,\n isFunction,\n isNumber,\n isObject,\n isSorN,\n isString,\n isUndefined,\n resolve,\n reject,\n toJson\n} = utils\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 forOwn(params, function (val, key) {\n if (val === null || typeof val === 'undefined') {\n return\n }\n if (!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 (isObject(v)) {\n v = 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 noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n}\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#debug\n * @type {boolean}\n * @default false\n */\n debug: false,\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 * @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\n // Default values for arguments\n opts || (opts = {})\n\n fillIn(self, opts)\n fillIn(self, DEFAULTS)\n}\n\naddHiddenPropsToTarget(HttpAdapter.prototype, {\n /**\n * @name HttpAdapter#afterCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreate: noop2,\n\n /**\n * @name HttpAdapter#afterCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreateMany: noop2,\n\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#afterDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroy: noop2,\n\n /**\n * @name HttpAdapter#afterDestroyAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroyAll: noop2,\n\n /**\n * @name HttpAdapter#afterFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFind: noop2,\n\n /**\n * @name HttpAdapter#afterFindAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFindAll: 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#afterUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdate: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateAll: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateMany: noop2,\n\n /**\n * @name HttpAdapter#beforeCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n */\n beforeCreate: noop,\n\n /**\n * @name HttpAdapter#beforeCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeCreateMany: noop,\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#beforeDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeDestroy: noop,\n\n /**\n * @name HttpAdapter#beforeDestroyAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeDestroyAll: noop,\n\n /**\n * @name HttpAdapter#beforeFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeFind: noop,\n\n /**\n * @name HttpAdapter#beforeFindAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeFindAll: 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 /**\n * @name HttpAdapter#beforeUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n */\n beforeUpdate: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n */\n beforeUpdateAll: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeUpdateMany: noop,\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreate lifecycle hook\n op = opts.op = 'beforeCreate'\n return resolve(self[op](mapper, props, opts)).then(function () {\n op = opts.op = 'create'\n self.dbg(op, mapper, props, opts)\n return self.POST(\n self.getPath('create', mapper, props, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreate lifecycle hook\n op = opts.op = 'afterCreate'\n return resolve(self[op](mapper, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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} 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 createMany (mapper, records, opts) {\n const self = this\n let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreateMany lifecycle hook\n op = opts.op = 'beforeCreateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'createMany'\n self.dbg(op, mapper, records, opts)\n return self.POST(\n self.getPath('createMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreateMany lifecycle hook\n op = opts.op = 'afterCreateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n },\n\n /**\n * Call {@link HttpAdapter#log} at the \"debug\" level.\n *\n * @name HttpAdapter#dbg\n * @method\n * @param {...*} [args] Args passed to {@link HttpAdapter#log}.\n */\n dbg (...args) {\n this.log('debug', ...args)\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.deserialize)) {\n return opts.deserialize(mapper, response, opts)\n }\n if (isFunction(mapper.deserialize)) {\n return mapper.deserialize(mapper, response, opts)\n }\n if (opts.raw) {\n return response\n }\n return response ? ('data' in response ? response.data : response) : 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroy lifecycle hook\n op = opts.op = 'beforeDestroy'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy'\n self.dbg(op, mapper, id, opts)\n return self.DEL(\n self.getPath('destroy', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroy lifecycle hook\n op = opts.op = 'afterDestroy'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroyAll lifecycle hook\n op = opts.op = 'beforeDestroyAll'\n return resolve(self.beforeDestroyAll(mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll'\n self.dbg(op, mapper, query, opts)\n return self.DEL(\n self.getPath('destroyAll', mapper, null, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 = 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeFind lifecycle hook\n op = opts.op = 'beforeFind'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find'\n self.dbg(op, mapper, id, opts)\n return self.GET(\n self.getPath('find', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFind lifecycle hook\n op = opts.op = 'afterFind'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll'\n return resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll'\n self.dbg(op, mapper, query, opts)\n return self.GET(\n self.getPath('findAll', mapper, opts.params, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFindAll lifecycle hook\n op = opts.op = 'afterFindAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 || (opts.params = {})\n\n let endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : mapper.endpoint\n let parents = mapper.parents || (mapper.parent ? {\n [mapper.parent]: {\n key: mapper.parentKey,\n field: mapper.parentField\n }\n } : {})\n\n forOwn(parents, function (parent, parentName) {\n let item\n let parentKey = parent.key\n let parentField = parent.field\n let parentDef = mapper.getResource(parentName)\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 (isString(id) || isNumber(id)) {\n item = mapper.get(id)\n } else if (isObject(id)) {\n item = id\n }\n\n if (item) {\n parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null)\n }\n\n if (parentId) {\n delete opts.endpoint\n const _opts = {}\n forOwn(opts, function (value, key) {\n _opts[key] = value\n })\n _(_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 opts.basePath === undefined ? (mapper.basePath === undefined ? self.basePath : mapper.basePath) : opts.basePath,\n self.getEndpoint(mapper, (isString(id) || 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 /**\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 = copy(config, null, null, null, ['data', 'cache', 'timeout'])\n config = 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 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 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 resolve(self.afterHTTP(config, opts, response)).then(function (_response) {\n return _response || response\n })\n })\n },\n\n /**\n * Log the provided arguments at the specified leve.\n *\n * @name HttpAdapter#log\n * @method\n * @param {string} level Log level.\n * @param {...*} [args] Arguments to log.\n */\n log (level, ...args) {\n if (level && !args.length) {\n args.push(level)\n level = 'debug'\n }\n if (level === 'debug' && !this.debug) {\n return\n }\n const prefix = `${level.toUpperCase()}: (HttpAdapter)`\n if (console[level]) {\n console[level](prefix, ...args)\n } else {\n console.log(prefix, ...args)\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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.queryTransform)) {\n return opts.queryTransform(mapper, params, opts)\n }\n if (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 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 (isFunction(opts.serialize)) {\n return opts.serialize(mapper, data, opts)\n }\n if (isFunction(mapper.serialize)) {\n return mapper.serialize(mapper, data, opts)\n }\n return data\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdate lifecycle hook\n op = opts.op = 'beforeUpdate'\n return resolve(self[op](mapper, id, props, opts)).then(function () {\n op = opts.op = 'update'\n self.dbg(op, mapper, id, props, opts)\n return self.PUT(\n self.getPath('update', mapper, id, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdate lifecycle hook\n op = opts.op = 'afterUpdate'\n return resolve(self[op](mapper, id, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateAll lifecycle hook\n op = opts.op = 'beforeUpdateAll'\n return resolve(self[op](mapper, props, query, opts)).then(function () {\n op = opts.op = 'updateAll'\n self.dbg(op, mapper, props, query, opts)\n return self.PUT(\n self.getPath('updateAll', mapper, null, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateAll lifecycle hook\n op = opts.op = 'afterUpdateAll'\n return resolve(self[op](mapper, props, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'updateMany'\n self.dbg(op, mapper, records, opts)\n return self.PUT(\n self.getPath('updateMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateMany lifecycle hook\n op = opts.op = 'afterUpdateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n }\n})\n\n/**\n * Add an Http actions to a mapper.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.addAction = function (name, opts) {\n if (!name || !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 reject(err) }\n mapper[name] = function (id, _opts) {\n const self = this\n if (isObject(id)) {\n _opts = id\n }\n _opts = _opts || {}\n let adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http')\n let config = {}\n 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, isSorN(id) ? id : null, _opts)\n ]\n if (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 deepMixIn(config)(_opts)\n return 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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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 = extend\n\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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 **/","module.exports = undefined;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"undefined\"\n ** module id = 2\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 4e50c8d..522fb7f 100644 --- a/fetch/dist/js-data-fetch.min.js +++ b/fetch/dist/js-data-fetch.min.js @@ -1,11 +1,2 @@ -/*! -* js-data-fetch -* @version 3.0.0-alpha.4 - Homepage -* @author Jason Dobry -* @copyright (c) 2014-2016 Jason Dobry -* @license MIT -* -* @overview Fetch HTTP (XHR) adapter for js-data in the browser. -*/ -!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.HttpAdapter=t(require("js-data"),require("undefined")):e.HttpAdapter=t(e.JSData,e.undefined)}(this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={exports:{},id:n,loaded:!1};return e[n].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}([function(e,t,r){"use strict";function n(e){return null!=e&&""!==e}function o(e,t){return t||(t=""),e.filter(n).join(t)}function a(){for(var e=arguments.length,t=Array(e),r=0;e>r;r++)t[r]=arguments[r];var n=o(t,"/");return n.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 i(e,t){if(!t)return e;var r=[];return b(t,function(e,t){null!==e&&"undefined"!=typeof e&&(v(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():P(e)&&(e=D(e)),r.push(u(t)+"="+u(e))}))}),r.length>0&&(e+=(-1===e.indexOf("?")?"?":"&")+r.join("&")),e}function f(e){var t=this;e||(e={}),y(t,e),y(t,j)}var s="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},p=r(1),d=r(2),l=p.utils._,c=p.utils.addHiddenPropsToTarget,h=p.utils.copy,m=p.utils.deepMixIn,g=p.utils.extend,y=p.utils.fillIn,b=p.utils.forOwn,v=p.utils.isArray,T=p.utils.isFunction,x=p.utils.isNumber,P=p.utils.isObject,A=p.utils.isSorN,E=p.utils.isString,U=p.utils.isUndefined,z=p.utils.resolve,q=p.utils.reject,D=p.utils.toJson,S=!1;try{S=window&&window.fetch}catch(e){}var w=function(){for(var e=this,t=arguments.length,r=Array(t),n=0;t>n;n++)r[n]=arguments[n];var o=r[r.length-1];e.dbg.apply(e,[o.op].concat(r))},C=function(){for(var e=this,t=arguments.length,r=Array(t),n=0;t>n;n++)r[n]=arguments[n];var o=r[r.length-2];e.dbg.apply(e,[o.op].concat(r))},j={basePath:"",debug:!1,forceTrailingSlash:!1,http:d,httpConfig:{},suffix:"",useFetch:!1};c(f.prototype,{afterCreate:C,afterCreateMany:C,afterDEL:C,afterDestroy:C,afterDestroyAll:C,afterFind:C,afterFindAll:C,afterGET:C,afterHTTP:C,afterPOST:C,afterPUT:C,afterUpdate:C,afterUpdateAll:C,afterUpdateMany:C,beforeCreate:w,beforeCreateMany:w,beforeDEL:w,beforeDestroy:w,beforeDestroyAll:w,beforeFind:w,beforeFindAll:w,beforeGET:w,beforeHTTP:w,beforePOST:w,beforePUT:w,beforeUpdate:w,beforeUpdateAll:w,beforeUpdateMany:w,create:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=U(r.suffix)?e.suffix:r.suffix,o=r.op="beforeCreate",z(n[o](e,t,r)).then(function(){return o=r.op="create",n.dbg(o,e,t,r),n.POST(n.getPath("create",e,t,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterCreate",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})},createMany:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=U(r.suffix)?e.suffix:r.suffix,o=r.op="beforeCreateMany",z(n[o](e,t,r)).then(function(){return o=r.op="createMany",n.dbg(o,e,t,r),n.POST(n.getPath("createMany",e,null,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterCreateMany",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})},dbg:function(){for(var e=arguments.length,t=Array(e),r=0;e>r;r++)t[r]=arguments[r];this.log.apply(this,["debug"].concat(t))},DEL:function(e,t,r){var n=this,o=void 0;return t||(t={}),r||(r={}),t.url=e||t.url,t.method=t.method||"delete",o=r.op="beforeDEL",z(n[o](e,t,r)).then(function(a){return t=U(a)?t:a,o=r.op="DEL",n.dbg(o,e,t,r),n.HTTP(t,r)}).then(function(a){return o=r.op="afterDEL",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})},deserialize:function(e,t,r){return r||(r={}),T(r.deserialize)?r.deserialize(e,t,r):T(e.deserialize)?e.deserialize(e,t,r):r.raw?t:t&&"data"in t?t.data:t},destroy:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=U(r.suffix)?e.suffix:r.suffix,o=r.op="beforeDestroy",z(n[o](e,t,r)).then(function(){return o=r.op="destroy",n.dbg(o,e,t,r),n.DEL(n.getPath("destroy",e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterDestroy",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})},destroyAll:function(e,t,r){var n=this,o=void 0;return t||(t={}),r=r?h(r):{},r.params||(r.params={}),m(r.params,t),r.params=n.queryTransform(e,r.params,r),r.suffix=U(r.suffix)?e.suffix:r.suffix,o=r.op="beforeDestroyAll",z(n.beforeDestroyAll(e,t,r)).then(function(){return o=r.op="destroyAll",n.dbg(o,e,t,r),n.DEL(n.getPath("destroyAll",e,null,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterDestroyAll",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})},error:function(){if(console){var e;(e=console)["function"==typeof console.error?"error":"log"].apply(e,arguments)}},fetch:function(e){function t(t,r){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}(function(e,t){var r={method:e.method,headers:new Headers(e.headers)};return e.data&&(r.body=D(e.data)),fetch(new Request(i(e.url,e.params),r)).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,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=U(r.suffix)?e.suffix:r.suffix,o=r.op="beforeFind",z(n[o](e,t,r)).then(function(){return o=r.op="find",n.dbg(o,e,t,r),n.GET(n.getPath("find",e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterFind",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})},findAll:function(e,t,r){var n=this,o=void 0;return t||(t={}),r=r?h(r):{},r.params||(r.params={}),r.suffix=U(r.suffix)?e.suffix:r.suffix,m(r.params,t),r.params=n.queryTransform(e,r.params,r),o=r.op="beforeFindAll",z(n[o](e,t,r)).then(function(){return o=r.op="findAll",n.dbg(o,e,t,r),n.GET(n.getPath("findAll",e,r.params,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterFindAll",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})},GET:function(e,t,r){var n=this,o=void 0;return t||(t={}),r||(r={}),t.url=e||t.url,t.method=t.method||"get",o=r.op="beforeGET",z(n[o](e,t,r)).then(function(a){return t=U(a)?t:a,o=r.op="GET",n.dbg(o,e,t,r),n.HTTP(t,r)}).then(function(a){return o=r.op="afterGET",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})},getEndpoint:function(e,t,r){var n=this;r||(r={}),r.params||(r.params={});var o=void 0,u=e.parentKey,i=r.hasOwnProperty("endpoint")?r.endpoint:e.endpoint,f=e.parentField,p=e.parent?e.getResource(e.parent):void 0,d=r.params[u];if(d===!1||!u||!p)return d===!1&&delete r.params[u],i;if(delete r.params[u],E(t)||x(t)?o=e.get(t):P(t)&&(o=t),o&&(d=d||o[u]||(o[f]?o[f][p.idAttribute]:null)),!d)return i;var c=function(){delete r.endpoint;var e={};return b(r,function(t,r){e[r]=t}),l(e,p),{v:a(n.getEndpoint(p,d,e,d,i))}}();return"object"===("undefined"==typeof c?"undefined":s(c))?c.v:void 0},getPath:function(e,t,r,n){var o=this;n||(n={});var u=[void 0===n.basePath?void 0===t.basePath?o.basePath:t.basePath:n.basePath,o.getEndpoint(t,E(r)||x(r)||"create"===e?r:null,n)];return("find"===e||"update"===e||"destroy"===e)&&u.push(r),a.apply(p.utils,u)},HTTP:function(e,t){function r(t){var r=o.toUTCString()+" - "+e.method.toUpperCase()+" "+e.url+" - "+t.status+" "+((new Date).getTime()-o.getTime())+"ms";return t.status>=200&&t.status<300?(n.log&&n.dbg("debug",r,t),t):(n.error&&n.error("'FAILED: "+r,t),q(t))}var n=this,o=new Date;t||(t={}),e=h(e),e=m(e,n.httpConfig),n.forceTrailingSlash&&"/"!==e.url[e.url.length-1]&&(e.url+="/"),e.method=e.method.toUpperCase();var a=e.suffix||t.suffix||n.suffix;if(a&&e.url.substr(e.url.length-a.length)!==a&&(e.url+=a),!n.http)throw new Error("You have not configured this adapter with an http library!");return z(n.beforeHTTP(e,t)).then(function(o){return e=o||e,S&&(n.useFetch||t.useFetch||!n.http)?n.fetch(e,t).then(r,r):n.http(e).then(r,r).catch(function(r){return n.responseError(r,e,t)})}).then(function(r){return z(n.afterHTTP(e,t,r)).then(function(e){return e||r})})},log:function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;t>n;n++)r[n-1]=arguments[n];if(e&&!r.length&&(r.push(e),e="debug"),"debug"!==e||this.debug){var o=e.toUpperCase()+": (HttpAdapter)";if(console[e]){var a;(a=console)[e].apply(a,[o].concat(r))}else{var u;(u=console).log.apply(u,[o].concat(r))}}},POST:function(e,t,r,n){var o=this,a=void 0;return r||(r={}),n||(n={}),r.url=e||r.url,r.data=t||r.data,r.method=r.method||"post",a=n.op="beforePOST",z(o[a](e,t,r,n)).then(function(u){return r=U(u)?r:u,a=n.op="POST",o.dbg(a,e,t,r,n),o.HTTP(r,n)}).then(function(u){return a=n.op="afterPOST",z(o[a](e,t,r,n,u)).then(function(e){return U(e)?u:e})})},PUT:function(e,t,r,n){var o=this,a=void 0;return r||(r={}),n||(n={}),r.url=e||r.url,r.data=t||r.data,r.method=r.method||"put",a=n.op="beforePUT",z(o[a](e,t,r,n)).then(function(u){return r=U(u)?r:u,a=n.op="PUT",o.dbg(a,e,t,r,n),o.HTTP(r,n)}).then(function(u){return a=n.op="afterPUT",z(o[a](e,t,r,n,u)).then(function(e){return U(e)?u:e})})},queryTransform:function(e,t,r){return r||(r={}),T(r.queryTransform)?r.queryTransform(e,t,r):T(e.queryTransform)?e.queryTransform(e,t,r):t},responseError:function(e,t,r){return q(e)},serialize:function(e,t,r){return r||(r={}),T(r.serialize)?r.serialize(e,t,r):T(e.serialize)?e.serialize(e,t,r):t},update:function(e,t,r,n){var o=this,a=void 0;return n=n?h(n):{},n.params||(n.params={}),n.params=o.queryTransform(e,n.params,n),n.suffix=U(n.suffix)?e.suffix:n.suffix,a=n.op="beforeUpdate",z(o[a](e,t,r,n)).then(function(){return a=n.op="update",o.dbg(a,e,t,r,n),o.PUT(o.getPath("update",e,t,n),o.serialize(e,r,n),n)}).then(function(t){return o.deserialize(e,t,n)}).then(function(u){return a=n.op="afterUpdate",z(o[a](e,t,r,n,u)).then(function(e){return U(e)?u:e})})},updateAll:function(e,t,r,n){var o=this,a=void 0;return r||(r={}),n=n?h(n):{},n.params||(n.params={}),m(n.params,r),n.params=o.queryTransform(e,n.params,n),n.suffix=U(n.suffix)?e.suffix:n.suffix,a=n.op="beforeUpdateAll",z(o[a](e,t,r,n)).then(function(){return a=n.op="updateAll",o.dbg(a,e,t,r,n),o.PUT(o.getPath("updateAll",e,null,n),o.serialize(e,t,n),n)}).then(function(t){return o.deserialize(e,t,n)}).then(function(u){return a=n.op="afterUpdateAll",z(o[a](e,t,r,n,u)).then(function(e){return U(e)?u:e})})},updateMany:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=U(r.suffix)?e.suffix:r.suffix,o=r.op="beforeUpdateMany",z(n[o](e,t,r)).then(function(){return o=r.op="updateMany",n.dbg(o,e,t,r),n.PUT(n.getPath("updateMany",e,null,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterUpdateMany",z(n[o](e,t,r,a)).then(function(e){return U(e)?a:e})})}}),f.addAction=function(e,t){if(!e||!E(e))throw new TypeError("action(name[, opts]): Expected: string, Found: "+("undefined"==typeof e?"undefined":s(e)));return function(r){if(r[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 q(e)},r[e]=function(r,n){var o=this;P(r)&&(n=r),n=n||{};var u=o.getAdapter(t.adapter||o.defaultAdapter||"http"),i={};if(y(i,t),!n.hasOwnProperty("endpoint")&&i.endpoint&&(n.endpoint=i.endpoint),"function"==typeof n.getEndpoint)i.url=n.getEndpoint(o,n);else{var f=[n.basePath||o.basePath||u.basePath,u.getEndpoint(o,A(r)?r:null,n)];A(r)&&f.push(r),f.push(t.pathname||e),i.url=a.apply(null,f)}return i.method=i.method||"GET",i.mapper=o.name,m(i)(n),z(i).then(n.request||t.request).then(function(e){return u.HTTP(e)}).then(function(e){return e&&e.config&&(e.config.mapper=o.name),e}).then(n.response||t.response,n.responseError||t.responseError)},r}},f.addActions=function(e){return e||(e={}),function(e){return b(e,function(t,r){f.addAction(r,t)(e)}),e}},f.extend=g,f.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=f},function(t,r){t.exports=e},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.HttpAdapter=t(require("js-data"),require("undefined")):e.HttpAdapter=t(e.JSData,e.undefined)}(this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={exports:{},id:n,loaded:!1};return e[n].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}([function(e,t,r){"use strict";function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e){return null!=e&&""!==e}function a(e,t){return t||(t=""),e.filter(o).join(t)}function i(){for(var e=arguments.length,t=Array(e),r=0;e>r;r++)t[r]=arguments[r];var n=a(t,"/");return n.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 f(e,t){if(!t)return e;var r=[];return v(t,function(e,t){null!==e&&"undefined"!=typeof e&&(T(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():A(e)&&(e=S(e)),r.push(u(t)+"="+u(e))}))}),r.length>0&&(e+=(-1===e.indexOf("?")?"?":"&")+r.join("&")),e}function s(e){var t=this;e||(e={}),b(t,e),b(t,F)}var p="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},d=r(1),l=r(2),c=d.utils._,h=d.utils.addHiddenPropsToTarget,m=d.utils.copy,y=d.utils.deepMixIn,g=d.utils.extend,b=d.utils.fillIn,v=d.utils.forOwn,T=d.utils.isArray,x=d.utils.isFunction,P=d.utils.isNumber,A=d.utils.isObject,E=d.utils.isSorN,U=d.utils.isString,z=d.utils.isUndefined,q=d.utils.resolve,D=d.utils.reject,S=d.utils.toJson,w=!1;try{w=window&&window.fetch}catch(e){}var j=function(){for(var e=this,t=arguments.length,r=Array(t),n=0;t>n;n++)r[n]=arguments[n];var o=r[r.length-1];e.dbg.apply(e,[o.op].concat(r))},C=function(){for(var e=this,t=arguments.length,r=Array(t),n=0;t>n;n++)r[n]=arguments[n];var o=r[r.length-2];e.dbg.apply(e,[o.op].concat(r))},F={basePath:"",debug:!1,forceTrailingSlash:!1,http:l,httpConfig:{},suffix:"",useFetch:!1};h(s.prototype,{afterCreate:C,afterCreateMany:C,afterDEL:C,afterDestroy:C,afterDestroyAll:C,afterFind:C,afterFindAll:C,afterGET:C,afterHTTP:C,afterPOST:C,afterPUT:C,afterUpdate:C,afterUpdateAll:C,afterUpdateMany:C,beforeCreate:j,beforeCreateMany:j,beforeDEL:j,beforeDestroy:j,beforeDestroyAll:j,beforeFind:j,beforeFindAll:j,beforeGET:j,beforeHTTP:j,beforePOST:j,beforePUT:j,beforeUpdate:j,beforeUpdateAll:j,beforeUpdateMany:j,create:function(e,t,r){var n=this,o=void 0;return r=r?m(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=z(r.suffix)?e.suffix:r.suffix,o=r.op="beforeCreate",q(n[o](e,t,r)).then(function(){return o=r.op="create",n.dbg(o,e,t,r),n.POST(n.getPath("create",e,t,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterCreate",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})},createMany:function(e,t,r){var n=this,o=void 0;return r=r?m(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=z(r.suffix)?e.suffix:r.suffix,o=r.op="beforeCreateMany",q(n[o](e,t,r)).then(function(){return o=r.op="createMany",n.dbg(o,e,t,r),n.POST(n.getPath("createMany",e,null,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterCreateMany",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})},dbg:function(){for(var e=arguments.length,t=Array(e),r=0;e>r;r++)t[r]=arguments[r];this.log.apply(this,["debug"].concat(t))},DEL:function(e,t,r){var n=this,o=void 0;return t||(t={}),r||(r={}),t.url=e||t.url,t.method=t.method||"delete",o=r.op="beforeDEL",q(n[o](e,t,r)).then(function(a){return t=z(a)?t:a,o=r.op="DEL",n.dbg(o,e,t,r),n.HTTP(t,r)}).then(function(a){return o=r.op="afterDEL",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})},deserialize:function(e,t,r){return r||(r={}),x(r.deserialize)?r.deserialize(e,t,r):x(e.deserialize)?e.deserialize(e,t,r):r.raw?t:t&&"data"in t?t.data:t},destroy:function(e,t,r){var n=this,o=void 0;return r=r?m(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=z(r.suffix)?e.suffix:r.suffix,o=r.op="beforeDestroy",q(n[o](e,t,r)).then(function(){return o=r.op="destroy",n.dbg(o,e,t,r),n.DEL(n.getPath("destroy",e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterDestroy",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})},destroyAll:function(e,t,r){var n=this,o=void 0;return t||(t={}),r=r?m(r):{},r.params||(r.params={}),y(r.params,t),r.params=n.queryTransform(e,r.params,r),r.suffix=z(r.suffix)?e.suffix:r.suffix,o=r.op="beforeDestroyAll",q(n.beforeDestroyAll(e,t,r)).then(function(){return o=r.op="destroyAll",n.dbg(o,e,t,r),n.DEL(n.getPath("destroyAll",e,null,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterDestroyAll",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})},error:function(){if(console){var e;(e=console)["function"==typeof console.error?"error":"log"].apply(e,arguments)}},fetch:function(e){function t(t,r){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}(function(e,t){var r={method:e.method,headers:new Headers(e.headers)};return e.data&&(r.body=S(e.data)),fetch(new Request(f(e.url,e.params),r)).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,r){var n=this,o=void 0;return r=r?m(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=z(r.suffix)?e.suffix:r.suffix,o=r.op="beforeFind",q(n[o](e,t,r)).then(function(){return o=r.op="find",n.dbg(o,e,t,r),n.GET(n.getPath("find",e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterFind",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})},findAll:function(e,t,r){var n=this,o=void 0;return t||(t={}),r=r?m(r):{},r.params||(r.params={}),r.suffix=z(r.suffix)?e.suffix:r.suffix,y(r.params,t),r.params=n.queryTransform(e,r.params,r),o=r.op="beforeFindAll",q(n[o](e,t,r)).then(function(){return o=r.op="findAll",n.dbg(o,e,t,r),n.GET(n.getPath("findAll",e,r.params,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterFindAll",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})},GET:function(e,t,r){var n=this,o=void 0;return t||(t={}),r||(r={}),t.url=e||t.url,t.method=t.method||"get",o=r.op="beforeGET",q(n[o](e,t,r)).then(function(a){return t=z(a)?t:a,o=r.op="GET",n.dbg(o,e,t,r),n.HTTP(t,r)}).then(function(a){return o=r.op="afterGET",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})},getEndpoint:function(e,t,r){var o=this;r||(r={}),r.params||(r.params={});var a=r.hasOwnProperty("endpoint")?r.endpoint:e.endpoint,u=e.parents||(e.parent?n({},e.parent,{key:e.parentKey,field:e.parentField}):{});return v(u,function(n,u){var f=void 0,s=n.key,d=n.field,l=e.getResource(u),h=r.params[s];if(h===!1||!s||!l)return h===!1&&delete r.params[s],!1;if(delete r.params[s],U(t)||P(t)?f=e.get(t):A(t)&&(f=t),f&&(h=h||f[s]||(f[d]?f[d][l.idAttribute]:null)),h){var m=function(){delete r.endpoint;var e={};return v(r,function(t,r){e[r]=t}),c(e,l),a=i(o.getEndpoint(l,h,e,h,a)),{v:!1}}();if("object"===("undefined"==typeof m?"undefined":p(m)))return m.v}}),a},getPath:function(e,t,r,n){var o=this;n||(n={});var a=[void 0===n.basePath?void 0===t.basePath?o.basePath:t.basePath:n.basePath,o.getEndpoint(t,U(r)||P(r)||"create"===e?r:null,n)];return"find"!==e&&"update"!==e&&"destroy"!==e||a.push(r),i.apply(d.utils,a)},HTTP:function(e,t){function r(t){var r=o.toUTCString()+" - "+e.method.toUpperCase()+" "+e.url+" - "+t.status+" "+((new Date).getTime()-o.getTime())+"ms";return t.status>=200&&t.status<300?(n.log&&n.dbg("debug",r,t),t):(n.error&&n.error("'FAILED: "+r,t),D(t))}var n=this,o=new Date;t||(t={}),e=m(e),e=y(e,n.httpConfig),n.forceTrailingSlash&&"/"!==e.url[e.url.length-1]&&(e.url+="/"),e.method=e.method.toUpperCase();var a=e.suffix||t.suffix||n.suffix;if(a&&e.url.substr(e.url.length-a.length)!==a&&(e.url+=a),!n.http)throw new Error("You have not configured this adapter with an http library!");return q(n.beforeHTTP(e,t)).then(function(o){return e=o||e,w&&(n.useFetch||t.useFetch||!n.http)?n.fetch(e,t).then(r,r):n.http(e).then(r,r).catch(function(r){return n.responseError(r,e,t)})}).then(function(r){return q(n.afterHTTP(e,t,r)).then(function(e){return e||r})})},log:function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;t>n;n++)r[n-1]=arguments[n];if(e&&!r.length&&(r.push(e),e="debug"),"debug"!==e||this.debug){var o=e.toUpperCase()+": (HttpAdapter)";if(console[e]){var a;(a=console)[e].apply(a,[o].concat(r))}else{var i;(i=console).log.apply(i,[o].concat(r))}}},POST:function(e,t,r,n){var o=this,a=void 0;return r||(r={}),n||(n={}),r.url=e||r.url,r.data=t||r.data,r.method=r.method||"post",a=n.op="beforePOST",q(o[a](e,t,r,n)).then(function(i){return r=z(i)?r:i,a=n.op="POST",o.dbg(a,e,t,r,n),o.HTTP(r,n)}).then(function(i){return a=n.op="afterPOST",q(o[a](e,t,r,n,i)).then(function(e){return z(e)?i:e})})},PUT:function(e,t,r,n){var o=this,a=void 0;return r||(r={}),n||(n={}),r.url=e||r.url,r.data=t||r.data,r.method=r.method||"put",a=n.op="beforePUT",q(o[a](e,t,r,n)).then(function(i){return r=z(i)?r:i,a=n.op="PUT",o.dbg(a,e,t,r,n),o.HTTP(r,n)}).then(function(i){return a=n.op="afterPUT",q(o[a](e,t,r,n,i)).then(function(e){return z(e)?i:e})})},queryTransform:function(e,t,r){return r||(r={}),x(r.queryTransform)?r.queryTransform(e,t,r):x(e.queryTransform)?e.queryTransform(e,t,r):t},responseError:function(e,t,r){return D(e)},serialize:function(e,t,r){return r||(r={}),x(r.serialize)?r.serialize(e,t,r):x(e.serialize)?e.serialize(e,t,r):t},update:function(e,t,r,n){var o=this,a=void 0;return n=n?m(n):{},n.params||(n.params={}),n.params=o.queryTransform(e,n.params,n),n.suffix=z(n.suffix)?e.suffix:n.suffix,a=n.op="beforeUpdate",q(o[a](e,t,r,n)).then(function(){return a=n.op="update",o.dbg(a,e,t,r,n),o.PUT(o.getPath("update",e,t,n),o.serialize(e,r,n),n)}).then(function(t){return o.deserialize(e,t,n)}).then(function(i){return a=n.op="afterUpdate",q(o[a](e,t,r,n,i)).then(function(e){return z(e)?i:e})})},updateAll:function(e,t,r,n){var o=this,a=void 0;return r||(r={}),n=n?m(n):{},n.params||(n.params={}),y(n.params,r),n.params=o.queryTransform(e,n.params,n),n.suffix=z(n.suffix)?e.suffix:n.suffix,a=n.op="beforeUpdateAll",q(o[a](e,t,r,n)).then(function(){return a=n.op="updateAll",o.dbg(a,e,t,r,n),o.PUT(o.getPath("updateAll",e,null,n),o.serialize(e,t,n),n)}).then(function(t){return o.deserialize(e,t,n)}).then(function(i){return a=n.op="afterUpdateAll",q(o[a](e,t,r,n,i)).then(function(e){return z(e)?i:e})})},updateMany:function(e,t,r){var n=this,o=void 0;return r=r?m(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=z(r.suffix)?e.suffix:r.suffix,o=r.op="beforeUpdateMany",q(n[o](e,t,r)).then(function(){return o=r.op="updateMany",n.dbg(o,e,t,r),n.PUT(n.getPath("updateMany",e,null,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterUpdateMany",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})}}),s.addAction=function(e,t){if(!e||!U(e))throw new TypeError("action(name[, opts]): Expected: string, Found: "+("undefined"==typeof e?"undefined":p(e)));return function(r){if(r[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 D(e)},r[e]=function(r,n){var o=this;A(r)&&(n=r),n=n||{};var a=o.getAdapter(t.adapter||o.defaultAdapter||"http"),u={};if(b(u,t),!n.hasOwnProperty("endpoint")&&u.endpoint&&(n.endpoint=u.endpoint),"function"==typeof n.getEndpoint)u.url=n.getEndpoint(o,n);else{var f=[n.basePath||o.basePath||a.basePath,a.getEndpoint(o,E(r)?r:null,n)];E(r)&&f.push(r),f.push(t.pathname||e),u.url=i.apply(null,f)}return u.method=u.method||"GET",u.mapper=o.name,y(u)(n),q(u).then(n.request||t.request).then(function(e){return a.HTTP(e)}).then(function(e){return e&&e.config&&(e.config.mapper=o.name),e}).then(n.response||t.response,n.responseError||t.responseError)},r}},s.addActions=function(e){return e||(e={}),function(e){return v(e,function(t,r){s.addAction(r,t)(e)}),e}},s.extend=g,s.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=s},function(t,r){t.exports=e},function(e,t){e.exports=void 0}])}); //# sourceMappingURL=fetch/dist/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 b6db9a9..77c2f3f 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_2__","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","forOwn","key","isArray","forEach","v","window","toString","toISOString","isObject","toJson","push","indexOf","HttpAdapter","opts","self","fillIn","DEFAULTS","_typeof","Symbol","iterator","obj","constructor","_jsData","axios","_","utils","addHiddenPropsToTarget","copy","deepMixIn","extend","isFunction","isNumber","isSorN","isString","isUndefined","resolve","reject","hasFetch","fetch","e","noop","_len2","_key2","dbg","apply","op","concat","noop2","_len3","_key3","basePath","debug","forceTrailingSlash","http","httpConfig","suffix","useFetch","prototype","afterCreate","afterCreateMany","afterDEL","afterDestroy","afterDestroyAll","afterFind","afterFindAll","afterGET","afterHTTP","afterPOST","afterPUT","afterUpdate","afterUpdateAll","afterUpdateMany","beforeCreate","beforeCreateMany","beforeDEL","beforeDestroy","beforeDestroyAll","beforeFind","beforeFindAll","beforeGET","beforeHTTP","beforePOST","beforePUT","beforeUpdate","beforeUpdateAll","beforeUpdateMany","create","mapper","props","undefined","queryTransform","then","POST","getPath","serialize","response","deserialize","data","_data","createMany","records","_len4","_key4","log","DEL","config","method","_config","HTTP","_response","raw","destroy","destroyAll","query","error","console","_console","_fetch","_x","_x2","requestConfig","headers","Headers","body","Request","json","find","GET","findAll","getEndpoint","_this","item","parentKey","endpoint","hasOwnProperty","parentField","parentDef","parent","getResource","parentId","get","idAttribute","_ret","_opts","logResponse","str","start","toUTCString","toUpperCase","status","Date","getTime","substr","Error","catch","err","responseError","level","_len5","_key5","prefix","_console2","_console3","PUT","update","updateAll","updateMany","addAction","name","TypeError","request","adapter","getAdapter","defaultAdapter","_args","pathname","addActions","version","full","major","parseInt","minor","patch","alpha","beta"],"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_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","isValidString","join","items","separator","filter","makePath","_len","arguments","length","args","Array","_key","result","replace","encode","val","encodeURIComponent","buildUrl","url","params","parts","forOwn","isArray","forEach","v","window","toString","toISOString","isObject","toJson","push","indexOf","HttpAdapter","opts","self","fillIn","DEFAULTS","_typeof","Symbol","iterator","constructor","_jsData","axios","_","utils","addHiddenPropsToTarget","copy","deepMixIn","extend","isFunction","isNumber","isSorN","isString","isUndefined","resolve","reject","hasFetch","fetch","e","noop","_len2","_key2","dbg","apply","op","concat","noop2","_len3","_key3","basePath","debug","forceTrailingSlash","http","httpConfig","suffix","useFetch","prototype","afterCreate","afterCreateMany","afterDEL","afterDestroy","afterDestroyAll","afterFind","afterFindAll","afterGET","afterHTTP","afterPOST","afterPUT","afterUpdate","afterUpdateAll","afterUpdateMany","beforeCreate","beforeCreateMany","beforeDEL","beforeDestroy","beforeDestroyAll","beforeFind","beforeFindAll","beforeGET","beforeHTTP","beforePOST","beforePUT","beforeUpdate","beforeUpdateAll","beforeUpdateMany","create","mapper","props","undefined","queryTransform","then","POST","getPath","serialize","response","deserialize","data","_data","createMany","records","_len4","_key4","log","DEL","config","method","_config","HTTP","_response","raw","destroy","destroyAll","query","error","console","_console","_fetch","_x","_x2","requestConfig","headers","Headers","body","Request","json","find","GET","findAll","getEndpoint","endpoint","hasOwnProperty","parents","parent","parentKey","field","parentField","parentName","item","parentDef","getResource","parentId","get","idAttribute","_ret","_opts","logResponse","str","start","toUTCString","toUpperCase","status","Date","getTime","substr","Error","catch","err","responseError","level","_len5","_key5","prefix","_console2","_console3","PUT","update","updateAll","updateMany","addAction","name","TypeError","request","adapter","getAdapter","defaultAdapter","_args","pathname","addActions","version","full","major","parseInt","minor","patch","alpha","beta"],"mappings":"CAAA,SAA2CA,EAAMC,GAC1B,gBAAZC,UAA0C,gBAAXC,QACxCA,OAAOD,QAAUD,EAAQG,QAAQ,WAAYA,QAAQ,cAC5B,kBAAXC,SAAyBA,OAAOC,IAC9CD,QAAQ,UAAW,aAAcJ,GACP,gBAAZC,SACdA,QAAqB,YAAID,EAAQG,QAAQ,WAAYA,QAAQ,cAE7DJ,EAAkB,YAAIC,EAAQD,EAAa,OAAGA,EAAgB,YAC7DO,KAAM,SAASC,EAA+BC,GACjD,MAAgB,UAAUC,GAKhB,QAASC,GAAoBC,GAG5B,GAAGC,EAAiBD,GACnB,MAAOC,GAAiBD,GAAUV,OAGnC,IAAIC,GAASU,EAAiBD,IAC7BV,WACAY,GAAIF,EACJG,QAAQ,EAUT,OANAL,GAAQE,GAAUI,KAAKb,EAAOD,QAASC,EAAQA,EAAOD,QAASS,GAG/DR,EAAOY,QAAS,EAGTZ,EAAOD,QAvBf,GAAIW,KAqCJ,OATAF,GAAoBM,EAAIP,EAGxBC,EAAoBO,EAAIL,EAGxBF,EAAoBQ,EAAI,GAGjBR,EAAoB,KAK/B,SAASR,EAAQD,EAASS,GAE/B,YAMA,SAASS,GAAgBC,EAAKC,EAAKC,GAAiK,MAApJD,KAAOD,GAAOG,OAAOC,eAAeJ,EAAKC,GAAOC,MAAOA,EAAOG,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBP,EAAIC,GAAOC,EAAgBF,EA6B3M,QAASQ,GAAcN,GACrB,MAAgB,OAATA,GAA2B,KAAVA,EAE1B,QAASO,GAAKC,EAAOC,GAEnB,MADAA,KAAcA,EAAY,IACnBD,EAAME,OAAOJ,GAAeC,KAAKE,GAE1C,QAASE,KACP,IAAK,GAAIC,GAAOC,UAAUC,OAAQC,EAAOC,MAAMJ,GAAOK,EAAO,EAAUL,EAAPK,EAAaA,IAC3EF,EAAKE,GAAQJ,UAAUI,EAGzB,IAAIC,GAASX,EAAKQ,EAAM,IACxB,OAAOG,GAAOC,QAAQ,oBAAqB,OAG7C,QAASC,GAAOC,GACd,MAAOC,oBAAmBD,GAAKF,QAAQ,QAAS,KAAKA,QAAQ,QAAS,KAAKA,QAAQ,OAAQ,KAAKA,QAAQ,QAAS,KAAKA,QAAQ,OAAQ,KAAKA,QAAQ,QAAS,KAAKA,QAAQ,QAAS,KAGpL,QAASI,GAASC,EAAKC,GACrB,IAAKA,EACH,MAAOD,EAGT,IAAIE,KAwBJ,OAtBAC,GAAOF,EAAQ,SAAUJ,EAAKtB,GAChB,OAARsB,GAA+B,mBAARA,KAGtBO,EAAQP,KACXA,GAAOA,IAGTA,EAAIQ,QAAQ,SAAUC,GACY,kBAA5BC,OAAOC,SAASvC,KAAKqC,GACvBA,EAAIA,EAAEG,cACGC,EAASJ,KAClBA,EAAIK,EAAOL,IAEbJ,EAAMU,KAAKhB,EAAOrB,GAAO,IAAMqB,EAAOU,SAItCJ,EAAMZ,OAAS,IACjBU,IAA6B,KAArBA,EAAIa,QAAQ,KAAc,IAAM,KAAOX,EAAMnB,KAAK,MAGrDiB,EAsFT,QAASc,GAAYC,GACnB,GAAIC,GAAOxD,IAGXuD,KAASA,MAETE,EAAOD,EAAMD,GACbE,EAAOD,EAAME,GA/Kf,GAAIC,GAA4B,kBAAXC,SAAoD,gBAApBA,QAAOC,SAAwB,SAAU/C,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAX8C,SAAyB9C,EAAIgD,cAAgBF,OAAS,eAAkB9C,IAEtOiD,EAAU3D,EAAoB,GAK9B4D,EAAQ5D,EAAoB,GAC5B6D,EAAIF,EAAQG,MAAMD,EAClBE,EAAyBJ,EAAQG,MAAMC,uBACvCC,EAAOL,EAAQG,MAAME,KACrBC,EAAYN,EAAQG,MAAMG,UAC1BC,EAASP,EAAQG,MAAMI,OACvBb,EAASM,EAAQG,MAAMT,OACvBd,EAASoB,EAAQG,MAAMvB,OACvBC,EAAUmB,EAAQG,MAAMtB,QACxB2B,EAAaR,EAAQG,MAAMK,WAC3BC,EAAWT,EAAQG,MAAMM,SACzBtB,EAAWa,EAAQG,MAAMhB,SACzBuB,EAASV,EAAQG,MAAMO,OACvBC,EAAWX,EAAQG,MAAMQ,SACzBC,EAAcZ,EAAQG,MAAMS,YAC5BC,EAAUb,EAAQG,MAAMU,QACxBC,EAASd,EAAQG,MAAMW,OACvB1B,EAASY,EAAQG,MAAMf,OAGvB2B,GAAW,CAEf,KACEA,EAAW/B,QAAUA,OAAOgC,MAC5B,MAAOC,IAsDT,GAAIC,GAAO,WAGT,IAAK,GAFDzB,GAAOxD,KAEFkF,EAAQrD,UAAUC,OAAQC,EAAOC,MAAMkD,GAAQC,EAAQ,EAAWD,EAARC,EAAeA,IAChFpD,EAAKoD,GAAStD,UAAUsD,EAG1B,IAAI5B,GAAOxB,EAAKA,EAAKD,OAAS,EAC9B0B,GAAK4B,IAAIC,MAAM7B,GAAOD,EAAK+B,IAAIC,OAAOxD,KAGpCyD,EAAQ,WAGV,IAAK,GAFDhC,GAAOxD,KAEFyF,EAAQ5D,UAAUC,OAAQC,EAAOC,MAAMyD,GAAQC,EAAQ,EAAWD,EAARC,EAAeA,IAChF3D,EAAK2D,GAAS7D,UAAU6D,EAG1B,IAAInC,GAAOxB,EAAKA,EAAKD,OAAS,EAC9B0B,GAAK4B,IAAIC,MAAM7B,GAAOD,EAAK+B,IAAIC,OAAOxD,KAGpC2B,GAMFiC,SAAU,GAOVC,OAAO,EAOPC,oBAAoB,EAMpBC,KAAM9B,EAMN+B,cAMAC,OAAQ,GAORC,UAAU,EA0BZ9B,GAAuBb,EAAY4C,WASjCC,YAAaX,EAUbY,gBAAiBZ,EAUjBa,SAAUb,EAUVc,aAAcd,EAUde,gBAAiBf,EAUjBgB,UAAWhB,EAUXiB,aAAcjB,EAUdkB,SAAUlB,EASVmB,UAAWnB,EAWXoB,UAAWpB,EAWXqB,SAAUrB,EAWVsB,YAAatB,EAWbuB,eAAgBvB,EAUhBwB,gBAAiBxB,EASjByB,aAAchC,EASdiC,iBAAkBjC,EASlBkC,UAAWlC,EASXmC,cAAenC,EASfoC,iBAAkBpC,EASlBqC,WAAYrC,EASZsC,cAAetC,EASfuC,UAAWvC,EAQXwC,WAAYxC,EAUZyC,WAAYzC,EAUZ0C,UAAW1C,EAUX2C,aAAc3C,EAUd4C,gBAAiB5C,EASjB6C,iBAAkB7C,EAclB8C,OAAQ,SAAgBC,EAAQC,EAAO1E,GACrC,GAAIC,GAAOxD,KACPsF,EAAK4C,MAQT,OAPA3E,GAAOA,EAAOa,EAAKb,MACnBA,EAAKd,SAAWc,EAAKd,WACrBc,EAAKd,OAASe,EAAK2E,eAAeH,EAAQzE,EAAKd,OAAQc,GACvDA,EAAKyC,OAASrB,EAAYpB,EAAKyC,QAAUgC,EAAOhC,OAASzC,EAAKyC,OAG9DV,EAAK/B,EAAK+B,GAAK,eACRV,EAAQpB,EAAK8B,GAAI0C,EAAQC,EAAO1E,IAAO6E,KAAK,WAGjD,MAFA9C,GAAK/B,EAAK+B,GAAK,SACf9B,EAAK4B,IAAIE,EAAI0C,EAAQC,EAAO1E,GACrBC,EAAK6E,KAAK7E,EAAK8E,QAAQ,SAAUN,EAAQC,EAAO1E,GAAOC,EAAK+E,UAAUP,EAAQC,EAAO1E,GAAOA,KAClG6E,KAAK,SAAUI,GAChB,MAAOhF,GAAKiF,YAAYT,EAAQQ,EAAUjF,KACzC6E,KAAK,SAAUM,GAGhB,MADApD,GAAK/B,EAAK+B,GAAK,cACRV,EAAQpB,EAAK8B,GAAI0C,EAAQC,EAAO1E,EAAMmF,IAAON,KAAK,SAAUO,GAEjE,MAAOhE,GAAYgE,GAASD,EAAOC,OAkBzCC,WAAY,SAAoBZ,EAAQa,EAAStF,GAC/C,GAAIC,GAAOxD,KACPsF,EAAK4C,MAQT,OAPA3E,GAAOA,EAAOa,EAAKb,MACnBA,EAAKd,SAAWc,EAAKd,WACrBc,EAAKd,OAASe,EAAK2E,eAAeH,EAAQzE,EAAKd,OAAQc,GACvDA,EAAKyC,OAASrB,EAAYpB,EAAKyC,QAAUgC,EAAOhC,OAASzC,EAAKyC,OAG9DV,EAAK/B,EAAK+B,GAAK,mBACRV,EAAQpB,EAAK8B,GAAI0C,EAAQa,EAAStF,IAAO6E,KAAK,WAGnD,MAFA9C,GAAK/B,EAAK+B,GAAK,aACf9B,EAAK4B,IAAIE,EAAI0C,EAAQa,EAAStF,GACvBC,EAAK6E,KAAK7E,EAAK8E,QAAQ,aAAcN,EAAQ,KAAMzE,GAAOC,EAAK+E,UAAUP,EAAQa,EAAStF,GAAOA,KACvG6E,KAAK,SAAUI,GAChB,MAAOhF,GAAKiF,YAAYT,EAAQQ,EAAUjF,KACzC6E,KAAK,SAAUM,GAGhB,MADApD,GAAK/B,EAAK+B,GAAK,kBACRV,EAAQpB,EAAK8B,GAAI0C,EAAQa,EAAStF,EAAMmF,IAAON,KAAK,SAAUO,GAEnE,MAAOhE,GAAYgE,GAASD,EAAOC,OAazCvD,IAAK,WACH,IAAK,GAAI0D,GAAQjH,UAAUC,OAAQC,EAAOC,MAAM8G,GAAQC,EAAQ,EAAWD,EAARC,EAAeA,IAChFhH,EAAKgH,GAASlH,UAAUkH,EAG1B/I,MAAKgJ,IAAI3D,MAAMrF,MAAO,SAASuF,OAAOxD,KAexCkH,IAAK,SAAazG,EAAK0G,EAAQ3F,GAC7B,GAAIC,GAAOxD,KACPsF,EAAK4C,MAQT,OAPAgB,KAAWA,MACX3F,IAASA,MACT2F,EAAO1G,IAAMA,GAAO0G,EAAO1G,IAC3B0G,EAAOC,OAASD,EAAOC,QAAU,SAGjC7D,EAAK/B,EAAK+B,GAAK,YACRV,EAAQpB,EAAK8B,GAAI9C,EAAK0G,EAAQ3F,IAAO6E,KAAK,SAAUgB,GAKzD,MAHAF,GAASvE,EAAYyE,GAAWF,EAASE,EACzC9D,EAAK/B,EAAK+B,GAAK,MACf9B,EAAK4B,IAAIE,EAAI9C,EAAK0G,EAAQ3F,GACnBC,EAAK6F,KAAKH,EAAQ3F,KACxB6E,KAAK,SAAUI,GAGhB,MADAlD,GAAK/B,EAAK+B,GAAK,WACRV,EAAQpB,EAAK8B,GAAI9C,EAAK0G,EAAQ3F,EAAMiF,IAAWJ,KAAK,SAAUkB,GAEnE,MAAO3E,GAAY2E,GAAad,EAAWc,OAiBjDb,YAAa,SAAqBT,EAAQQ,EAAUjF,GAElD,MADAA,KAASA,MACLgB,EAAWhB,EAAKkF,aACXlF,EAAKkF,YAAYT,EAAQQ,EAAUjF,GAExCgB,EAAWyD,EAAOS,aACbT,EAAOS,YAAYT,EAAQQ,EAAUjF,GAE1CA,EAAKgG,IACAf,EAEFA,GAAW,QAAUA,GAAWA,EAASE,KAAkBF,GAgBpEgB,QAAS,SAAiBxB,EAAQzH,EAAIgD,GACpC,GAAIC,GAAOxD,KACPsF,EAAK4C,MAQT,OAPA3E,GAAOA,EAAOa,EAAKb,MACnBA,EAAKd,SAAWc,EAAKd,WACrBc,EAAKd,OAASe,EAAK2E,eAAeH,EAAQzE,EAAKd,OAAQc,GACvDA,EAAKyC,OAASrB,EAAYpB,EAAKyC,QAAUgC,EAAOhC,OAASzC,EAAKyC,OAG9DV,EAAK/B,EAAK+B,GAAK,gBACRV,EAAQpB,EAAK8B,GAAI0C,EAAQzH,EAAIgD,IAAO6E,KAAK,WAG9C,MAFA9C,GAAK/B,EAAK+B,GAAK,UACf9B,EAAK4B,IAAIE,EAAI0C,EAAQzH,EAAIgD,GAClBC,EAAKyF,IAAIzF,EAAK8E,QAAQ,UAAWN,EAAQzH,EAAIgD,GAAOA,KAC1D6E,KAAK,SAAUI,GAChB,MAAOhF,GAAKiF,YAAYT,EAAQQ,EAAUjF,KACzC6E,KAAK,SAAUM,GAGhB,MADApD,GAAK/B,EAAK+B,GAAK,eACRV,EAAQpB,EAAK8B,GAAI0C,EAAQzH,EAAIgD,EAAMmF,IAAON,KAAK,SAAUO,GAE9D,MAAOhE,GAAYgE,GAASD,EAAOC,OAkBzCc,WAAY,SAAoBzB,EAAQ0B,EAAOnG,GAC7C,GAAIC,GAAOxD,KACPsF,EAAK4C,MAUT,OATAwB,KAAUA,MACVnG,EAAOA,EAAOa,EAAKb,MACnBA,EAAKd,SAAWc,EAAKd,WACrB4B,EAAUd,EAAKd,OAAQiH,GACvBnG,EAAKd,OAASe,EAAK2E,eAAeH,EAAQzE,EAAKd,OAAQc,GACvDA,EAAKyC,OAASrB,EAAYpB,EAAKyC,QAAUgC,EAAOhC,OAASzC,EAAKyC,OAG9DV,EAAK/B,EAAK+B,GAAK,mBACRV,EAAQpB,EAAK6D,iBAAiBW,EAAQ0B,EAAOnG,IAAO6E,KAAK,WAG9D,MAFA9C,GAAK/B,EAAK+B,GAAK,aACf9B,EAAK4B,IAAIE,EAAI0C,EAAQ0B,EAAOnG,GACrBC,EAAKyF,IAAIzF,EAAK8E,QAAQ,aAAcN,EAAQ,KAAMzE,GAAOA,KAC/D6E,KAAK,SAAUI,GAChB,MAAOhF,GAAKiF,YAAYT,EAAQQ,EAAUjF,KACzC6E,KAAK,SAAUM,GAGhB,MADApD,GAAK/B,EAAK+B,GAAK,kBACRV,EAAQpB,EAAK8B,GAAI0C,EAAQ0B,EAAOnG,EAAMmF,IAAON,KAAK,SAAUO,GAEjE,MAAOhE,GAAYgE,GAASD,EAAOC,OAazCgB,MAAO,WACL,GAAIC,QAAS,CACX,GAAIC,IAEHA,EAAWD,SAAkC,kBAAlBA,SAAQD,MAAuB,QAAU,OAAOtE,MAAMwE,EAAUhI,aAkBhGkD,MAAO,SAAU+E,GACf,QAAS/E,GAAMgF,EAAIC,GACjB,MAAOF,GAAOzE,MAAMrF,KAAM6B,WAO5B,MAJAkD,GAAM/B,SAAW,WACf,MAAO8G,GAAO9G,YAGT+B,GACP,SAAUmE,EAAQ3F,GAClB,GAAI0G,IACFd,OAAQD,EAAOC,OAEfe,QAAS,GAAIC,SAAQjB,EAAOgB,SAO9B,OAJIhB,GAAOR,OACTuB,EAAcG,KAAOjH,EAAO+F,EAAOR,OAG9B3D,MAAM,GAAIsF,SAAQ9H,EAAS2G,EAAO1G,IAAK0G,EAAOzG,QAASwH,IAAgB7B,KAAK,SAAUI,GAK3F,MAJAA,GAASU,QACPC,OAAQD,EAAOC,OACf3G,IAAK0G,EAAO1G,KAEPgG,EAAS8B,OAAOlC,KAAK,SAAUM,GAEpC,MADAF,GAASE,KAAOA,EACTF,QAkBb+B,KAAM,SAAcvC,EAAQzH,EAAIgD,GAC9B,GAAIC,GAAOxD,KACPsF,EAAK4C,MAQT,OAPA3E,GAAOA,EAAOa,EAAKb,MACnBA,EAAKd,SAAWc,EAAKd,WACrBc,EAAKd,OAASe,EAAK2E,eAAeH,EAAQzE,EAAKd,OAAQc,GACvDA,EAAKyC,OAASrB,EAAYpB,EAAKyC,QAAUgC,EAAOhC,OAASzC,EAAKyC,OAG9DV,EAAK/B,EAAK+B,GAAK,aACRV,EAAQpB,EAAK8B,GAAI0C,EAAQzH,EAAIgD,IAAO6E,KAAK,WAG9C,MAFA9C,GAAK/B,EAAK+B,GAAK,OACf9B,EAAK4B,IAAIE,EAAI0C,EAAQzH,EAAIgD,GAClBC,EAAKgH,IAAIhH,EAAK8E,QAAQ,OAAQN,EAAQzH,EAAIgD,GAAOA,KACvD6E,KAAK,SAAUI,GAChB,MAAOhF,GAAKiF,YAAYT,EAAQQ,EAAUjF,KACzC6E,KAAK,SAAUM,GAGhB,MADApD,GAAK/B,EAAK+B,GAAK,YACRV,EAAQpB,EAAK8B,GAAI0C,EAAQzH,EAAIgD,EAAMmF,IAAON,KAAK,SAAUO,GAE9D,MAAOhE,GAAYgE,GAASD,EAAOC,OAkBzC8B,QAAS,SAAiBzC,EAAQ0B,EAAOnG,GACvC,GAAIC,GAAOxD,KACPsF,EAAK4C,MAUT,OATAwB,KAAUA,MACVnG,EAAOA,EAAOa,EAAKb,MACnBA,EAAKd,SAAWc,EAAKd,WACrBc,EAAKyC,OAASrB,EAAYpB,EAAKyC,QAAUgC,EAAOhC,OAASzC,EAAKyC,OAC9D3B,EAAUd,EAAKd,OAAQiH,GACvBnG,EAAKd,OAASe,EAAK2E,eAAeH,EAAQzE,EAAKd,OAAQc,GAGvD+B,EAAK/B,EAAK+B,GAAK,gBACRV,EAAQpB,EAAK8B,GAAI0C,EAAQ0B,EAAOnG,IAAO6E,KAAK,WAGjD,MAFA9C,GAAK/B,EAAK+B,GAAK,UACf9B,EAAK4B,IAAIE,EAAI0C,EAAQ0B,EAAOnG,GACrBC,EAAKgH,IAAIhH,EAAK8E,QAAQ,UAAWN,EAAQzE,EAAKd,OAAQc,GAAOA,KACnE6E,KAAK,SAAUI,GAChB,MAAOhF,GAAKiF,YAAYT,EAAQQ,EAAUjF,KACzC6E,KAAK,SAAUM,GAGhB,MADApD,GAAK/B,EAAK+B,GAAK,eACRV,EAAQpB,EAAK8B,GAAI0C,EAAQ0B,EAAOnG,EAAMmF,IAAON,KAAK,SAAUO,GAEjE,MAAOhE,GAAYgE,GAASD,EAAOC,OAgBzC6B,IAAK,SAAahI,EAAK0G,EAAQ3F,GAC7B,GAAIC,GAAOxD,KACPsF,EAAK4C,MAQT,OAPAgB,KAAWA,MACX3F,IAASA,MACT2F,EAAO1G,IAAMA,GAAO0G,EAAO1G,IAC3B0G,EAAOC,OAASD,EAAOC,QAAU,MAGjC7D,EAAK/B,EAAK+B,GAAK,YACRV,EAAQpB,EAAK8B,GAAI9C,EAAK0G,EAAQ3F,IAAO6E,KAAK,SAAUgB,GAKzD,MAHAF,GAASvE,EAAYyE,GAAWF,EAASE,EACzC9D,EAAK/B,EAAK+B,GAAK,MACf9B,EAAK4B,IAAIE,EAAI9C,EAAK0G,EAAQ3F,GACnBC,EAAK6F,KAAKH,EAAQ3F,KACxB6E,KAAK,SAAUI,GAGhB,MADAlD,GAAK/B,EAAK+B,GAAK,WACRV,EAAQpB,EAAK8B,GAAI9C,EAAK0G,EAAQ3F,EAAMiF,IAAWJ,KAAK,SAAUkB,GAEnE,MAAO3E,GAAY2E,GAAad,EAAWc,OAcjDoB,YAAa,SAAqB1C,EAAQzH,EAAIgD,GAC5C,GAAIC,GAAOxD,IACXuD,KAASA,MACTA,EAAKd,SAAWc,EAAKd,UAErB,IAAIkI,GAAWpH,EAAKqH,eAAe,YAAcrH,EAAKoH,SAAW3C,EAAO2C,SACpEE,EAAU7C,EAAO6C,UAAY7C,EAAO8C,OAASjK,KAAoBmH,EAAO8C,QAC1E/J,IAAKiH,EAAO+C,UACZC,MAAOhD,EAAOiD,iBA+ChB,OA5CAtI,GAAOkI,EAAS,SAAUC,EAAQI,GAChC,GAAIC,GAAOjD,OACP6C,EAAYD,EAAO/J,IACnBkK,EAAcH,EAAOE,MACrBI,EAAYpD,EAAOqD,YAAYH,GAC/BI,EAAW/H,EAAKd,OAAOsI,EAE3B,IAAIO,KAAa,IAAUP,IAAcK,EAIvC,MAHIE,MAAa,SACR/H,GAAKd,OAAOsI,IAEd,CAcP,UAZOxH,GAAKd,OAAOsI,GAEfrG,EAASnE,IAAOiE,EAASjE,GAC3B4K,EAAOnD,EAAOuD,IAAIhL,GACT2C,EAAS3C,KAClB4K,EAAO5K,GAGL4K,IACFG,EAAWA,GAAYH,EAAKJ,KAAeI,EAAKF,GAAeE,EAAKF,GAAaG,EAAUI,aAAe,OAGxGF,EAAU,CACZ,GAAIG,GAAO,iBACFlI,GAAKoH,QACZ,IAAIe,KAMJ,OALA/I,GAAOY,EAAM,SAAUvC,EAAOD,GAC5B2K,EAAM3K,GAAOC,IAEfiD,EAAEyH,EAAON,GACTT,EAAWhJ,EAAS6B,EAAKkH,YAAYU,EAAWE,EAAUI,EAAOJ,EAAUX,KAEzE7H,GAAG,KAIP,IAAoE,YAA/C,mBAAT2I,GAAuB,YAAc9H,EAAQ8H,IAAqB,MAAOA,GAAK3I,KAKzF6H,GAYTrC,QAAS,SAAiBa,EAAQnB,EAAQzH,EAAIgD,GAC5C,GAAIC,GAAOxD,IACXuD,KAASA,KACT,IAAIxB,IAA0BmG,SAAlB3E,EAAKoC,SAA6CuC,SAApBF,EAAOrC,SAAyBnC,EAAKmC,SAAWqC,EAAOrC,SAAWpC,EAAKoC,SAAUnC,EAAKkH,YAAY1C,EAAQtD,EAASnE,IAAOiE,EAASjE,IAAkB,WAAX4I,EAAsB5I,EAAK,KAAMgD,GAIrN,OAHe,SAAX4F,GAAgC,WAAXA,GAAkC,YAAXA,GAC9CpH,EAAKqB,KAAK7C,GAELoB,EAAS0D,MAAMtB,EAAQG,MAAOnC,IAavCsH,KAAM,SAAcH,EAAQ3F,GAe1B,QAASoI,GAAYjD,GACnB,GAAIkD,GAAMC,EAAMC,cAAgB,MAAQ5C,EAAOC,OAAO4C,cAAgB,IAAM7C,EAAO1G,IAAM,MAAQkG,EAAKsD,OAAS,MAAO,GAAIC,OAAOC,UAAYL,EAAMK,WAAa,IAChK,OAAIxD,GAAKsD,QAAU,KAAOtD,EAAKsD,OAAS,KAClCxI,EAAKwF,KACPxF,EAAK4B,IAAI,QAASwG,EAAKlD,GAElBA,IAEHlF,EAAKmG,OACPnG,EAAKmG,MAAM,YAAeiC,EAAKlD,GAE1B7D,EAAO6D,IAzBlB,GAAIlF,GAAOxD,KACP6L,EAAQ,GAAII,KAChB1I,KAASA,MACT2F,EAAS9E,EAAK8E,GACdA,EAAS7E,EAAU6E,EAAQ1F,EAAKuC,YAC5BvC,EAAKqC,oBAA4D,MAAtCqD,EAAO1G,IAAI0G,EAAO1G,IAAIV,OAAS,KAC5DoH,EAAO1G,KAAO,KAEhB0G,EAAOC,OAASD,EAAOC,OAAO4C,aAC9B,IAAI/F,GAASkD,EAAOlD,QAAUzC,EAAKyC,QAAUxC,EAAKwC,MAoBlD,IAnBIA,GAAUkD,EAAO1G,IAAI2J,OAAOjD,EAAO1G,IAAIV,OAASkE,EAAOlE,UAAYkE,IACrEkD,EAAO1G,KAAOwD,IAkBXxC,EAAKsC,KACR,KAAM,IAAIsG,OAAM,6DAGlB,OAAOxH,GAAQpB,EAAKiE,WAAWyB,EAAQ3F,IAAO6E,KAAK,SAAUgB,GAE3D,MADAF,GAASE,GAAWF,EAChBpE,IAAatB,EAAKyC,UAAY1C,EAAK0C,WAAazC,EAAKsC,MAChDtC,EAAKuB,MAAMmE,EAAQ3F,GAAM6E,KAAKuD,EAAaA,GAE7CnI,EAAKsC,KAAKoD,GAAQd,KAAKuD,EAAaA,GAAaU,MAAM,SAAUC,GACtE,MAAO9I,GAAK+I,cAAcD,EAAKpD,EAAQ3F,OAExC6E,KAAK,SAAUI,GAChB,MAAO5D,GAAQpB,EAAKmD,UAAUuC,EAAQ3F,EAAMiF,IAAWJ,KAAK,SAAUkB,GACpE,MAAOA,IAAad,OAc1BQ,IAAK,SAAawD,GAChB,IAAK,GAAIC,GAAQ5K,UAAUC,OAAQC,EAAOC,MAAMyK,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAWD,EAARC,EAAeA,IACpG3K,EAAK2K,EAAQ,GAAK7K,UAAU6K,EAO9B,IAJIF,IAAUzK,EAAKD,SACjBC,EAAKqB,KAAKoJ,GACVA,EAAQ,SAEI,UAAVA,GAAsBxM,KAAK4F,MAA/B,CAGA,GAAI+G,GAASH,EAAMT,cAAgB,iBACnC,IAAInC,QAAQ4C,GAAQ,CAClB,GAAII,IAEHA,EAAYhD,SAAS4C,GAAOnH,MAAMuH,GAAYD,GAAQpH,OAAOxD,QACzD,CACL,GAAI8K,IAEHA,EAAYjD,SAASZ,IAAI3D,MAAMwH,GAAYF,GAAQpH,OAAOxD,OAgB/DsG,KAAM,SAAc7F,EAAKkG,EAAMQ,EAAQ3F,GACrC,GAAIC,GAAOxD,KACPsF,EAAK4C,MAST,OARAgB,KAAWA,MACX3F,IAASA,MACT2F,EAAO1G,IAAMA,GAAO0G,EAAO1G,IAC3B0G,EAAOR,KAAOA,GAAQQ,EAAOR,KAC7BQ,EAAOC,OAASD,EAAOC,QAAU,OAGjC7D,EAAK/B,EAAK+B,GAAK,aACRV,EAAQpB,EAAK8B,GAAI9C,EAAKkG,EAAMQ,EAAQ3F,IAAO6E,KAAK,SAAUgB,GAK/D,MAHAF,GAASvE,EAAYyE,GAAWF,EAASE,EACzC9D,EAAK/B,EAAK+B,GAAK,OACf9B,EAAK4B,IAAIE,EAAI9C,EAAKkG,EAAMQ,EAAQ3F,GACzBC,EAAK6F,KAAKH,EAAQ3F,KACxB6E,KAAK,SAAUI,GAGhB,MADAlD,GAAK/B,EAAK+B,GAAK,YACRV,EAAQpB,EAAK8B,GAAI9C,EAAKkG,EAAMQ,EAAQ3F,EAAMiF,IAAWJ,KAAK,SAAUkB,GAEzE,MAAO3E,GAAY2E,GAAad,EAAWc,OAiBjDwD,IAAK,SAAatK,EAAKkG,EAAMQ,EAAQ3F,GACnC,GAAIC,GAAOxD,KACPsF,EAAK4C,MAST,OARAgB,KAAWA,MACX3F,IAASA,MACT2F,EAAO1G,IAAMA,GAAO0G,EAAO1G,IAC3B0G,EAAOR,KAAOA,GAAQQ,EAAOR,KAC7BQ,EAAOC,OAASD,EAAOC,QAAU,MAGjC7D,EAAK/B,EAAK+B,GAAK,YACRV,EAAQpB,EAAK8B,GAAI9C,EAAKkG,EAAMQ,EAAQ3F,IAAO6E,KAAK,SAAUgB,GAK/D,MAHAF,GAASvE,EAAYyE,GAAWF,EAASE,EACzC9D,EAAK/B,EAAK+B,GAAK,MACf9B,EAAK4B,IAAIE,EAAI9C,EAAKkG,EAAMQ,EAAQ3F,GACzBC,EAAK6F,KAAKH,EAAQ3F,KACxB6E,KAAK,SAAUI,GAGhB,MADAlD,GAAK/B,EAAK+B,GAAK,WACRV,EAAQpB,EAAK8B,GAAI9C,EAAKkG,EAAMQ,EAAQ3F,EAAMiF,IAAWJ,KAAK,SAAUkB,GAEzE,MAAO3E,GAAY2E,GAAad,EAAWc,OAgBjDnB,eAAgB,SAAwBH,EAAQvF,EAAQc,GAEtD,MADAA,KAASA,MACLgB,EAAWhB,EAAK4E,gBACX5E,EAAK4E,eAAeH,EAAQvF,EAAQc,GAEzCgB,EAAWyD,EAAOG,gBACbH,EAAOG,eAAeH,EAAQvF,EAAQc,GAExCd,GAiBT8J,cAAe,SAAuBD,EAAKpD,EAAQ3F,GACjD,MAAOsB,GAAOyH,IAchB/D,UAAW,SAAmBP,EAAQU,EAAMnF,GAE1C,MADAA,KAASA,MACLgB,EAAWhB,EAAKgF,WACXhF,EAAKgF,UAAUP,EAAQU,EAAMnF,GAElCgB,EAAWyD,EAAOO,WACbP,EAAOO,UAAUP,EAAQU,EAAMnF,GAEjCmF,GAeTqE,OAAQ,SAAgB/E,EAAQzH,EAAI0H,EAAO1E,GACzC,GAAIC,GAAOxD,KACPsF,EAAK4C,MAQT,OAPA3E,GAAOA,EAAOa,EAAKb,MACnBA,EAAKd,SAAWc,EAAKd,WACrBc,EAAKd,OAASe,EAAK2E,eAAeH,EAAQzE,EAAKd,OAAQc,GACvDA,EAAKyC,OAASrB,EAAYpB,EAAKyC,QAAUgC,EAAOhC,OAASzC,EAAKyC,OAG9DV,EAAK/B,EAAK+B,GAAK,eACRV,EAAQpB,EAAK8B,GAAI0C,EAAQzH,EAAI0H,EAAO1E,IAAO6E,KAAK,WAGrD,MAFA9C,GAAK/B,EAAK+B,GAAK,SACf9B,EAAK4B,IAAIE,EAAI0C,EAAQzH,EAAI0H,EAAO1E,GACzBC,EAAKsJ,IAAItJ,EAAK8E,QAAQ,SAAUN,EAAQzH,EAAIgD,GAAOC,EAAK+E,UAAUP,EAAQC,EAAO1E,GAAOA,KAC9F6E,KAAK,SAAUI,GAChB,MAAOhF,GAAKiF,YAAYT,EAAQQ,EAAUjF,KACzC6E,KAAK,SAAUM,GAGhB,MADApD,GAAK/B,EAAK+B,GAAK,cACRV,EAAQpB,EAAK8B,GAAI0C,EAAQzH,EAAI0H,EAAO1E,EAAMmF,IAAON,KAAK,SAAUO,GAErE,MAAOhE,GAAYgE,GAASD,EAAOC,OAiBzCqE,UAAW,SAAmBhF,EAAQC,EAAOyB,EAAOnG,GAClD,GAAIC,GAAOxD,KACPsF,EAAK4C,MAUT,OATAwB,KAAUA,MACVnG,EAAOA,EAAOa,EAAKb,MACnBA,EAAKd,SAAWc,EAAKd,WACrB4B,EAAUd,EAAKd,OAAQiH,GACvBnG,EAAKd,OAASe,EAAK2E,eAAeH,EAAQzE,EAAKd,OAAQc,GACvDA,EAAKyC,OAASrB,EAAYpB,EAAKyC,QAAUgC,EAAOhC,OAASzC,EAAKyC,OAG9DV,EAAK/B,EAAK+B,GAAK,kBACRV,EAAQpB,EAAK8B,GAAI0C,EAAQC,EAAOyB,EAAOnG,IAAO6E,KAAK,WAGxD,MAFA9C,GAAK/B,EAAK+B,GAAK,YACf9B,EAAK4B,IAAIE,EAAI0C,EAAQC,EAAOyB,EAAOnG,GAC5BC,EAAKsJ,IAAItJ,EAAK8E,QAAQ,YAAaN,EAAQ,KAAMzE,GAAOC,EAAK+E,UAAUP,EAAQC,EAAO1E,GAAOA,KACnG6E,KAAK,SAAUI,GAChB,MAAOhF,GAAKiF,YAAYT,EAAQQ,EAAUjF,KACzC6E,KAAK,SAAUM,GAGhB,MADApD,GAAK/B,EAAK+B,GAAK,iBACRV,EAAQpB,EAAK8B,GAAI0C,EAAQC,EAAOyB,EAAOnG,EAAMmF,IAAON,KAAK,SAAUO,GAExE,MAAOhE,GAAYgE,GAASD,EAAOC,OAuBzCsE,WAAY,SAAoBjF,EAAQa,EAAStF,GAC/C,GAAIC,GAAOxD,KACPsF,EAAK4C,MAQT,OAPA3E,GAAOA,EAAOa,EAAKb,MACnBA,EAAKd,SAAWc,EAAKd,WACrBc,EAAKd,OAASe,EAAK2E,eAAeH,EAAQzE,EAAKd,OAAQc,GACvDA,EAAKyC,OAASrB,EAAYpB,EAAKyC,QAAUgC,EAAOhC,OAASzC,EAAKyC,OAG9DV,EAAK/B,EAAK+B,GAAK,mBACRV,EAAQpB,EAAK8B,GAAI0C,EAAQa,EAAStF,IAAO6E,KAAK,WAGnD,MAFA9C,GAAK/B,EAAK+B,GAAK,aACf9B,EAAK4B,IAAIE,EAAI0C,EAAQa,EAAStF,GACvBC,EAAKsJ,IAAItJ,EAAK8E,QAAQ,aAAcN,EAAQ,KAAMzE,GAAOC,EAAK+E,UAAUP,EAAQa,EAAStF,GAAOA,KACtG6E,KAAK,SAAUI,GAChB,MAAOhF,GAAKiF,YAAYT,EAAQQ,EAAUjF,KACzC6E,KAAK,SAAUM,GAGhB,MADApD,GAAK/B,EAAK+B,GAAK,kBACRV,EAAQpB,EAAK8B,GAAI0C,EAAQa,EAAStF,EAAMmF,IAAON,KAAK,SAAUO,GAEnE,MAAOhE,GAAYgE,GAASD,EAAOC,SAqB3CrF,EAAY4J,UAAY,SAAUC,EAAM5J,GACtC,IAAK4J,IAASzI,EAASyI,GACrB,KAAM,IAAIC,WAAU,mDAAqE,mBAATD,GAAuB,YAAcxJ,EAAQwJ,IAE/H,OAAO,UAAUnF,GACf,GAAIA,EAAOmF,GACT,KAAM,IAAIf,OAAM,yBAA2Be,EAAO,6BA6CpD,OA3CA5J,GAAK8J,QAAU9J,EAAK8J,SAAW,SAAUnE,GACvC,MAAOA,IAET3F,EAAKiF,SAAWjF,EAAKiF,UAAY,SAAUA,GACzC,MAAOA,IAETjF,EAAKgJ,cAAgBhJ,EAAKgJ,eAAiB,SAAUD,GACnD,MAAOzH,GAAOyH,IAEhBtE,EAAOmF,GAAQ,SAAU5M,EAAImL,GAC3B,GAAIlI,GAAOxD,IACPkD,GAAS3C,KACXmL,EAAQnL,GAEVmL,EAAQA,KACR,IAAI4B,GAAU9J,EAAK+J,WAAWhK,EAAK+J,SAAW9J,EAAKgK,gBAAkB,QACjEtE,IAKJ,IAJAzF,EAAOyF,EAAQ3F,IACVmI,EAAMd,eAAe,aAAe1B,EAAOyB,WAC9Ce,EAAMf,SAAWzB,EAAOyB,UAEO,kBAAtBe,GAAMhB,YACfxB,EAAO1G,IAAMkJ,EAAMhB,YAAYlH,EAAMkI,OAChC,CACL,GAAI+B,IAAS/B,EAAM/F,UAAYnC,EAAKmC,UAAY2H,EAAQ3H,SAAU2H,EAAQ5C,YAAYlH,EAAMiB,EAAOlE,GAAMA,EAAK,KAAMmL,GAChHjH,GAAOlE,IACTkN,EAAMrK,KAAK7C,GAEbkN,EAAMrK,KAAKG,EAAKmK,UAAYP,GAC5BjE,EAAO1G,IAAMb,EAAS0D,MAAM,KAAMoI,GAKpC,MAHAvE,GAAOC,OAASD,EAAOC,QAAU,MACjCD,EAAOlB,OAASxE,EAAK2J,KACrB9I,EAAU6E,GAAQwC,GACX9G,EAAQsE,GAAQd,KAAKsD,EAAM2B,SAAW9J,EAAK8J,SAASjF,KAAK,SAAUc,GACxE,MAAOoE,GAAQjE,KAAKH,KACnBd,KAAK,SAAUM,GAIhB,MAHIA,IAAQA,EAAKQ,SACfR,EAAKQ,OAAOlB,OAASxE,EAAK2J,MAErBzE,IACNN,KAAKsD,EAAMlD,UAAYjF,EAAKiF,SAAUkD,EAAMa,eAAiBhJ,EAAKgJ,gBAEhEvE,IAeX1E,EAAYqK,WAAa,SAAUpK,GAEjC,MADAA,KAASA,MACF,SAAUyE,GAIf,MAHArF,GAAOqF,EAAQ,SAAUhH,EAAOD,GAC9BuC,EAAY4J,UAAUnM,EAAKC,GAAOgH,KAE7BA,IAkDX1E,EAAYgB,OAASA,EAgBrBhB,EAAYsK,SACVC,KAAM,qBACNC,MAAOC,SAAS,eAAgB,IAChCC,MAAOD,SAAS,eAAgB,IAChCE,MAAOF,SAAS,eAAgB,IAChCG,MAAe,eACfC,KAAc,eA6BhBvO,EAAOD,QAAU2D,GAIZ,SAAS1D,EAAQD,GAEtBC,EAAOD,QAAUM,GAIZ,SAASL,EAAQD,GAEtBC,EAAOD,QAAUuI","file":"fetch/dist/js-data-fetch.min.js"} \ No newline at end of file diff --git a/fetch/package.json b/fetch/package.json index 2c801d6..dc22fbc 100644 --- a/fetch/package.json +++ b/fetch/package.json @@ -1,13 +1,13 @@ { "name": "js-data-fetch", - "description": "HTTP adapter for js-data that uses fetch.", - "version": "3.0.0-alpha.4", + "description": "HTTP adapter for js-data that uses the fetch API.", + "version": "3.0.0-alpha.5", "homepage": "https://github.com/js-data/js-data-http", "repository": { "type": "git", "url": "https://github.com/js-data/js-data-http.git" }, - "author": "Jason Dobry (http://www.pseudobry.com)", + "author": "js-data-http project authors", "license": "MIT", "main": "./dist/js-data-fetch.js", "keywords": [ diff --git a/karma.conf.js b/karma.conf.js index d1f709a..5d2ad5e 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -1,74 +1,42 @@ var customLaunchers = { - bs_ie9_windows7: { - base: 'BrowserStack', - browser: 'ie', - browser_version: '9.0', - os: 'Windows', - os_version: '7' - } -}; + bs_ie9_windows7: { + base: 'BrowserStack', + browser: 'ie', + browser_version: '9.0', + os: 'Windows', + os_version: '7' + }, + bs_safari7_osxmavericks: { + base: 'BrowserStack', + browser: 'safari', + browser_version: '7.1', + os: 'OS X', + os_version: 'Mavericks' + }, + bs_firefox41_windows7: { + base: 'BrowserStack', + browser: 'firefox', + browser_version: '41.0', + os: 'Windows', + os_version: '7' + }, + bs_chrome46_windows7: { + base: 'BrowserStack', + browser: 'chrome', + browser_version: '46.0', + os: 'Windows', + os_version: '7' + } +} -var browsers = ['PhantomJS']; +var browsers = ['PhantomJS'] if ( - process.env.BROWSERSTACK_USERNAME && - process.env.BROWSERSTACK_ACCESS_KEY + process.env.BROWSERSTACK_USERNAME && + process.env.BROWSERSTACK_ACCESS_KEY ) { - browsers = browsers.concat(Object.keys(customLaunchers)); + browsers = browsers.concat(Object.keys(customLaunchers)) } -module.exports = function (config) { - config.set({ - // base path, that will be used to resolve files and exclude - basePath: './', - frameworks: ['sinon', 'chai', 'mocha'], - plugins: [ - // these plugins will be require() by Karma - 'karma-sinon', - 'karma-mocha', - 'karma-chai', - 'karma-chrome-launcher', - 'karma-phantomjs-launcher', - 'karma-firefox-launcher', - 'karma-coverage', - 'karma-browserstack-launcher' - ], - autoWatch: false, - autoWatchBatchDelay: 4000, - browsers: browsers, - - // list of files / patterns to load in the browser - files: [ - 'node_modules/es6-promise/dist/es6-promise.js', - 'node_modules/js-data/dist/js-data.js', - 'dist/js-data-http.js', - 'karma.start.js', - 'test/browser/**/*.js' - ], - - reporters: ['dots', 'coverage'], - - preprocessors: { - 'dist/js-data-http.js': ['coverage'] - }, - - // optionally, configure the reporter - coverageReporter: { - type: 'lcov', - dir: 'coverage/' - }, - - browserStack: { - username: process.env.BROWSERSTACK_USERNAME, - accessKey: process.env.BROWSERSTACK_ACCESS_KEY - }, - - customLaunchers: customLaunchers, - - browserNoActivityTimeout: 30000, - - // web server port - port: 9876, - module.exports = function (config) { config.set({ basePath: './', diff --git a/node/AUTHORS b/node/AUTHORS new file mode 100644 index 0000000..370b7c6 --- /dev/null +++ b/node/AUTHORS @@ -0,0 +1,12 @@ +# This is the official list of js-data-http project authors. +# +# This file is controlled by scripts/authors.js +# +# Names are formatted as: +# # commits Name or Organization +# The email address is not required for organizations. +InternalFX +Jason Dobry +Josh Drake +RobertHerhold +Tomás Fox diff --git a/node/CONTRIBUTORS b/node/CONTRIBUTORS new file mode 100644 index 0000000..a5c9494 --- /dev/null +++ b/node/CONTRIBUTORS @@ -0,0 +1,11 @@ +# People who have contributed to the js-data-http project. +# +# This file is controlled by scripts/authors.js +# +# Names should be added to this file as: +# [commit count] Name + 1 InternalFX + 66 Jason Dobry + 1 Josh Drake + 1 RobertHerhold + 3 Tomás Fox diff --git a/node/dist/js-data-http-node.js b/node/dist/js-data-http-node.js index a642350..13a5e91 100644 --- a/node/dist/js-data-http-node.js +++ b/node/dist/js-data-http-node.js @@ -1,12 +1,3 @@ -/*! -* js-data-http-node -* @version 3.0.0-alpha.4 - Homepage -* @author Jason Dobry -* @copyright (c) 2014-2016 Jason Dobry -* @license MIT -* -* @overview Node.js HTTP adapter for js-data. -*/ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(require("js-data"), require("axios")); @@ -69,6 +60,8 @@ return /******/ (function(modules) { // webpackBootstrap var _jsData = __webpack_require__(1); + function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + /* global fetch:true Headers:true Request:true */ var axios = __webpack_require__(2); var _ = _jsData.utils._; @@ -528,7 +521,7 @@ return /******/ (function(modules) { // webpackBootstrap */ create: function create(mapper, props, opts) { var self = this; - var op = undefined; + var op = void 0; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(mapper, opts.params, opts); @@ -567,7 +560,7 @@ return /******/ (function(modules) { // webpackBootstrap */ createMany: function createMany(mapper, records, opts) { var self = this; - var op = undefined; + var op = void 0; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(mapper, opts.params, opts); @@ -621,7 +614,7 @@ return /******/ (function(modules) { // webpackBootstrap */ DEL: function DEL(url, config, opts) { var self = this; - var op = undefined; + var op = void 0; config || (config = {}); opts || (opts = {}); config.url = url || config.url; @@ -686,7 +679,7 @@ return /******/ (function(modules) { // webpackBootstrap */ destroy: function destroy(mapper, id, opts) { var self = this; - var op = undefined; + var op = void 0; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(mapper, opts.params, opts); @@ -725,7 +718,7 @@ return /******/ (function(modules) { // webpackBootstrap */ destroyAll: function destroyAll(mapper, query, opts) { var self = this; - var op = undefined; + var op = void 0; query || (query = {}); opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); @@ -829,7 +822,7 @@ return /******/ (function(modules) { // webpackBootstrap */ find: function find(mapper, id, opts) { var self = this; - var op = undefined; + var op = void 0; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(mapper, opts.params, opts); @@ -868,7 +861,7 @@ return /******/ (function(modules) { // webpackBootstrap */ findAll: function findAll(mapper, query, opts) { var self = this; - var op = undefined; + var op = void 0; query || (query = {}); opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); @@ -907,7 +900,7 @@ return /******/ (function(modules) { // webpackBootstrap */ GET: function GET(url, config, opts) { var self = this; - var op = undefined; + var op = void 0; config || (config = {}); opts || (opts = {}); config.url = url || config.url; @@ -941,54 +934,61 @@ return /******/ (function(modules) { // webpackBootstrap * @return {string} Full path. */ getEndpoint: function getEndpoint(mapper, id, opts) { - var _this = this; - + var self = this; opts || (opts = {}); opts.params || (opts.params = {}); - var item = undefined; - var parentKey = mapper.parentKey; var endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : mapper.endpoint; - var parentField = mapper.parentField; - var parentDef = mapper.parent ? mapper.getResource(mapper.parent) : undefined; - var parentId = opts.params[parentKey]; - - if (parentId === false || !parentKey || !parentDef) { - if (parentId === false) { + var parents = mapper.parents || (mapper.parent ? _defineProperty({}, mapper.parent, { + key: mapper.parentKey, + field: mapper.parentField + }) : {}); + + forOwn(parents, function (parent, parentName) { + var item = void 0; + var parentKey = parent.key; + var parentField = parent.field; + var parentDef = mapper.getResource(parentName); + var parentId = opts.params[parentKey]; + + if (parentId === false || !parentKey || !parentDef) { + if (parentId === false) { + delete opts.params[parentKey]; + } + return false; + } else { delete opts.params[parentKey]; - } - return endpoint; - } else { - delete opts.params[parentKey]; - if (isString(id) || isNumber(id)) { - item = mapper.get(id); - } else if (isObject(id)) { - item = id; - } + if (isString(id) || isNumber(id)) { + item = mapper.get(id); + } else if (isObject(id)) { + item = id; + } - if (item) { - parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null); - } + if (item) { + parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null); + } - if (parentId) { - var _ret = function () { - delete opts.endpoint; - var _opts = {}; - forOwn(opts, function (value, key) { - _opts[key] = value; - }); - _(_opts, parentDef); - return { - v: makePath(_this.getEndpoint(parentDef, parentId, _opts, parentId, endpoint)) - }; - }(); - - if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v; - } else { - return endpoint; + if (parentId) { + var _ret = function () { + delete opts.endpoint; + var _opts = {}; + forOwn(opts, function (value, key) { + _opts[key] = value; + }); + _(_opts, parentDef); + endpoint = makePath(self.getEndpoint(parentDef, parentId, _opts, parentId, endpoint)); + return { + v: false + }; + }(); + + if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v; + } } - } + }); + + return endpoint; }, @@ -1024,8 +1024,14 @@ return /******/ (function(modules) { // webpackBootstrap var self = this; var start = new Date(); opts || (opts = {}); - config = copy(config); + var payload = config.data; + var cache = config.cache; + var timeout = config.timeout; + config = copy(config, null, null, null, ['data', 'cache', 'timeout']); config = deepMixIn(config, self.httpConfig); + config.data = payload; + config.cache = cache; + config.timeout = timeout; if (self.forceTrailingSlash && config.url[config.url.length - 1] !== '/') { config.url += '/'; } @@ -1116,7 +1122,7 @@ return /******/ (function(modules) { // webpackBootstrap */ POST: function POST(url, data, config, opts) { var self = this; - var op = undefined; + var op = void 0; config || (config = {}); opts || (opts = {}); config.url = url || config.url; @@ -1155,7 +1161,7 @@ return /******/ (function(modules) { // webpackBootstrap */ PUT: function PUT(url, data, config, opts) { var self = this; - var op = undefined; + var op = void 0; config || (config = {}); opts || (opts = {}); config.url = url || config.url; @@ -1256,7 +1262,7 @@ return /******/ (function(modules) { // webpackBootstrap */ update: function update(mapper, id, props, opts) { var self = this; - var op = undefined; + var op = void 0; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(mapper, opts.params, opts); @@ -1294,7 +1300,7 @@ return /******/ (function(modules) { // webpackBootstrap */ updateAll: function updateAll(mapper, props, query, opts) { var self = this; - var op = undefined; + var op = void 0; query || (query = {}); opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); @@ -1340,7 +1346,7 @@ return /******/ (function(modules) { // webpackBootstrap */ updateMany: function updateMany(mapper, records, opts) { var self = this; - var op = undefined; + var op = void 0; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(mapper, opts.params, opts); @@ -1519,12 +1525,12 @@ return /******/ (function(modules) { // webpackBootstrap * otherwise `false` if the current version is not beta. */ HttpAdapter.version = { - full: '3.0.0-alpha.4', - major: parseInt('3', 10), - minor: parseInt('0', 10), - patch: parseInt('0', 10), - alpha: true ? '4' : false, - beta: true ? 'false' : false + full: '<%= pkg.version %>', + major: parseInt('<%= major %>', 10), + minor: parseInt('<%= minor %>', 10), + patch: parseInt('<%= patch %>', 10), + alpha: true ? '<%= alpha %>' : false, + beta: true ? '<%= beta %>' : false }; /** diff --git a/node/dist/js-data-http-node.js.map b/node/dist/js-data-http-node.js.map index ac14657..4f29026 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 6f49bab2f976606648e0","webpack:///./src/index.js","webpack:///external \"js-data\"","webpack:///external \"axios\""],"names":[],"mappings":"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","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_2__) {\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 6f49bab2f976606648e0\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nconst {\n _,\n addHiddenPropsToTarget,\n copy,\n deepMixIn,\n extend,\n fillIn,\n forOwn,\n isArray,\n isFunction,\n isNumber,\n isObject,\n isSorN,\n isString,\n isUndefined,\n resolve,\n reject,\n toJson\n} = utils\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 forOwn(params, function (val, key) {\n if (val === null || typeof val === 'undefined') {\n return\n }\n if (!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 (isObject(v)) {\n v = 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 noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n}\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#debug\n * @type {boolean}\n * @default false\n */\n debug: false,\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 * @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\n // Default values for arguments\n opts || (opts = {})\n\n fillIn(self, opts)\n fillIn(self, DEFAULTS)\n}\n\naddHiddenPropsToTarget(HttpAdapter.prototype, {\n /**\n * @name HttpAdapter#afterCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreate: noop2,\n\n /**\n * @name HttpAdapter#afterCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreateMany: noop2,\n\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#afterDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroy: noop2,\n\n /**\n * @name HttpAdapter#afterDestroyAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroyAll: noop2,\n\n /**\n * @name HttpAdapter#afterFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFind: noop2,\n\n /**\n * @name HttpAdapter#afterFindAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFindAll: 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#afterUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdate: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateAll: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateMany: noop2,\n\n /**\n * @name HttpAdapter#beforeCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n */\n beforeCreate: noop,\n\n /**\n * @name HttpAdapter#beforeCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeCreateMany: noop,\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#beforeDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeDestroy: noop,\n\n /**\n * @name HttpAdapter#beforeDestroyAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeDestroyAll: noop,\n\n /**\n * @name HttpAdapter#beforeFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeFind: noop,\n\n /**\n * @name HttpAdapter#beforeFindAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeFindAll: 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 /**\n * @name HttpAdapter#beforeUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n */\n beforeUpdate: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n */\n beforeUpdateAll: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeUpdateMany: noop,\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreate lifecycle hook\n op = opts.op = 'beforeCreate'\n return resolve(self[op](mapper, props, opts)).then(function () {\n op = opts.op = 'create'\n self.dbg(op, mapper, props, opts)\n return self.POST(\n self.getPath('create', mapper, props, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreate lifecycle hook\n op = opts.op = 'afterCreate'\n return resolve(self[op](mapper, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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} 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 createMany (mapper, records, opts) {\n const self = this\n let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreateMany lifecycle hook\n op = opts.op = 'beforeCreateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'createMany'\n self.dbg(op, mapper, records, opts)\n return self.POST(\n self.getPath('createMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreateMany lifecycle hook\n op = opts.op = 'afterCreateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n },\n\n /**\n * Call {@link HttpAdapter#log} at the \"debug\" level.\n *\n * @name HttpAdapter#dbg\n * @method\n * @param {...*} [args] Args passed to {@link HttpAdapter#log}.\n */\n dbg (...args) {\n this.log('debug', ...args)\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.deserialize)) {\n return opts.deserialize(mapper, response, opts)\n }\n if (isFunction(mapper.deserialize)) {\n return mapper.deserialize(mapper, response, opts)\n }\n if (opts.raw) {\n return response\n }\n return response ? ('data' in response ? response.data : response) : 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroy lifecycle hook\n op = opts.op = 'beforeDestroy'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy'\n self.dbg(op, mapper, id, opts)\n return self.DEL(\n self.getPath('destroy', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroy lifecycle hook\n op = opts.op = 'afterDestroy'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroyAll lifecycle hook\n op = opts.op = 'beforeDestroyAll'\n return resolve(self.beforeDestroyAll(mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll'\n self.dbg(op, mapper, query, opts)\n return self.DEL(\n self.getPath('destroyAll', mapper, null, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 = 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeFind lifecycle hook\n op = opts.op = 'beforeFind'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find'\n self.dbg(op, mapper, id, opts)\n return self.GET(\n self.getPath('find', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFind lifecycle hook\n op = opts.op = 'afterFind'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll'\n return resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll'\n self.dbg(op, mapper, query, opts)\n return self.GET(\n self.getPath('findAll', mapper, opts.params, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFindAll lifecycle hook\n op = opts.op = 'afterFindAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 opts || (opts = {})\n opts.params || (opts.params = {})\n\n let item\n const parentKey = mapper.parentKey\n const endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : mapper.endpoint\n let parentField = mapper.parentField\n const parentDef = mapper.parent ? mapper.getResource(mapper.parent) : undefined\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 endpoint\n } else {\n delete opts.params[parentKey]\n\n if (isString(id) || isNumber(id)) {\n item = mapper.get(id)\n } else if (isObject(id)) {\n item = id\n }\n\n if (item) {\n parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null)\n }\n\n if (parentId) {\n delete opts.endpoint\n const _opts = {}\n forOwn(opts, function (value, key) {\n _opts[key] = value\n })\n _(_opts, parentDef)\n return makePath(this.getEndpoint(parentDef, parentId, _opts, parentId, endpoint))\n } else {\n return endpoint\n }\n }\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 opts.basePath === undefined ? (mapper.basePath === undefined ? self.basePath : mapper.basePath) : opts.basePath,\n self.getEndpoint(mapper, (isString(id) || 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 /**\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 config = copy(config)\n config = deepMixIn(config, self.httpConfig)\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 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 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 resolve(self.afterHTTP(config, opts, response)).then(function (_response) {\n return _response || response\n })\n })\n },\n\n /**\n * Log the provided arguments at the specified leve.\n *\n * @name HttpAdapter#log\n * @method\n * @param {string} level Log level.\n * @param {...*} [args] Arguments to log.\n */\n log (level, ...args) {\n if (level && !args.length) {\n args.push(level)\n level = 'debug'\n }\n if (level === 'debug' && !this.debug) {\n return\n }\n const prefix = `${level.toUpperCase()}: (HttpAdapter)`\n if (console[level]) {\n console[level](prefix, ...args)\n } else {\n console.log(prefix, ...args)\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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.queryTransform)) {\n return opts.queryTransform(mapper, params, opts)\n }\n if (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 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 (isFunction(opts.serialize)) {\n return opts.serialize(mapper, data, opts)\n }\n if (isFunction(mapper.serialize)) {\n return mapper.serialize(mapper, data, opts)\n }\n return data\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdate lifecycle hook\n op = opts.op = 'beforeUpdate'\n return resolve(self[op](mapper, id, props, opts)).then(function () {\n op = opts.op = 'update'\n self.dbg(op, mapper, id, props, opts)\n return self.PUT(\n self.getPath('update', mapper, id, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdate lifecycle hook\n op = opts.op = 'afterUpdate'\n return resolve(self[op](mapper, id, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateAll lifecycle hook\n op = opts.op = 'beforeUpdateAll'\n return resolve(self[op](mapper, props, query, opts)).then(function () {\n op = opts.op = 'updateAll'\n self.dbg(op, mapper, props, query, opts)\n return self.PUT(\n self.getPath('updateAll', mapper, null, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateAll lifecycle hook\n op = opts.op = 'afterUpdateAll'\n return resolve(self[op](mapper, props, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'updateMany'\n self.dbg(op, mapper, records, opts)\n return self.PUT(\n self.getPath('updateMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateMany lifecycle hook\n op = opts.op = 'afterUpdateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n }\n})\n\n/**\n * Add an Http actions to a mapper.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.addAction = function (name, opts) {\n if (!name || !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 reject(err) }\n mapper[name] = function (id, _opts) {\n const self = this\n if (isObject(id)) {\n _opts = id\n }\n _opts = _opts || {}\n let adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http')\n let config = {}\n 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, isSorN(id) ? id : null, _opts)\n ]\n if (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 deepMixIn(config)(_opts)\n return 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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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 = extend\n\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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 **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"axios\"\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap e6aaaab19dca91a85d69","webpack:///./src/index.js","webpack:///external \"js-data\"","webpack:///external \"axios\""],"names":[],"mappings":"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","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_2__) {\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 e6aaaab19dca91a85d69\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nconst {\n _,\n addHiddenPropsToTarget,\n copy,\n deepMixIn,\n extend,\n fillIn,\n forOwn,\n isArray,\n isFunction,\n isNumber,\n isObject,\n isSorN,\n isString,\n isUndefined,\n resolve,\n reject,\n toJson\n} = utils\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 forOwn(params, function (val, key) {\n if (val === null || typeof val === 'undefined') {\n return\n }\n if (!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 (isObject(v)) {\n v = 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 noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n}\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#debug\n * @type {boolean}\n * @default false\n */\n debug: false,\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 * @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\n // Default values for arguments\n opts || (opts = {})\n\n fillIn(self, opts)\n fillIn(self, DEFAULTS)\n}\n\naddHiddenPropsToTarget(HttpAdapter.prototype, {\n /**\n * @name HttpAdapter#afterCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreate: noop2,\n\n /**\n * @name HttpAdapter#afterCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreateMany: noop2,\n\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#afterDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroy: noop2,\n\n /**\n * @name HttpAdapter#afterDestroyAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroyAll: noop2,\n\n /**\n * @name HttpAdapter#afterFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFind: noop2,\n\n /**\n * @name HttpAdapter#afterFindAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFindAll: 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#afterUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdate: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateAll: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateMany: noop2,\n\n /**\n * @name HttpAdapter#beforeCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n */\n beforeCreate: noop,\n\n /**\n * @name HttpAdapter#beforeCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeCreateMany: noop,\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#beforeDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeDestroy: noop,\n\n /**\n * @name HttpAdapter#beforeDestroyAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeDestroyAll: noop,\n\n /**\n * @name HttpAdapter#beforeFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeFind: noop,\n\n /**\n * @name HttpAdapter#beforeFindAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeFindAll: 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 /**\n * @name HttpAdapter#beforeUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n */\n beforeUpdate: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n */\n beforeUpdateAll: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeUpdateMany: noop,\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreate lifecycle hook\n op = opts.op = 'beforeCreate'\n return resolve(self[op](mapper, props, opts)).then(function () {\n op = opts.op = 'create'\n self.dbg(op, mapper, props, opts)\n return self.POST(\n self.getPath('create', mapper, props, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreate lifecycle hook\n op = opts.op = 'afterCreate'\n return resolve(self[op](mapper, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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} 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 createMany (mapper, records, opts) {\n const self = this\n let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreateMany lifecycle hook\n op = opts.op = 'beforeCreateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'createMany'\n self.dbg(op, mapper, records, opts)\n return self.POST(\n self.getPath('createMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreateMany lifecycle hook\n op = opts.op = 'afterCreateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n },\n\n /**\n * Call {@link HttpAdapter#log} at the \"debug\" level.\n *\n * @name HttpAdapter#dbg\n * @method\n * @param {...*} [args] Args passed to {@link HttpAdapter#log}.\n */\n dbg (...args) {\n this.log('debug', ...args)\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.deserialize)) {\n return opts.deserialize(mapper, response, opts)\n }\n if (isFunction(mapper.deserialize)) {\n return mapper.deserialize(mapper, response, opts)\n }\n if (opts.raw) {\n return response\n }\n return response ? ('data' in response ? response.data : response) : 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroy lifecycle hook\n op = opts.op = 'beforeDestroy'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy'\n self.dbg(op, mapper, id, opts)\n return self.DEL(\n self.getPath('destroy', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroy lifecycle hook\n op = opts.op = 'afterDestroy'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroyAll lifecycle hook\n op = opts.op = 'beforeDestroyAll'\n return resolve(self.beforeDestroyAll(mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll'\n self.dbg(op, mapper, query, opts)\n return self.DEL(\n self.getPath('destroyAll', mapper, null, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 = 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeFind lifecycle hook\n op = opts.op = 'beforeFind'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find'\n self.dbg(op, mapper, id, opts)\n return self.GET(\n self.getPath('find', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFind lifecycle hook\n op = opts.op = 'afterFind'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll'\n return resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll'\n self.dbg(op, mapper, query, opts)\n return self.GET(\n self.getPath('findAll', mapper, opts.params, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFindAll lifecycle hook\n op = opts.op = 'afterFindAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 || (opts.params = {})\n\n let endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : mapper.endpoint\n let parents = mapper.parents || (mapper.parent ? {\n [mapper.parent]: {\n key: mapper.parentKey,\n field: mapper.parentField\n }\n } : {})\n\n forOwn(parents, function (parent, parentName) {\n let item\n let parentKey = parent.key\n let parentField = parent.field\n let parentDef = mapper.getResource(parentName)\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 (isString(id) || isNumber(id)) {\n item = mapper.get(id)\n } else if (isObject(id)) {\n item = id\n }\n\n if (item) {\n parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null)\n }\n\n if (parentId) {\n delete opts.endpoint\n const _opts = {}\n forOwn(opts, function (value, key) {\n _opts[key] = value\n })\n _(_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 opts.basePath === undefined ? (mapper.basePath === undefined ? self.basePath : mapper.basePath) : opts.basePath,\n self.getEndpoint(mapper, (isString(id) || 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 /**\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 = copy(config, null, null, null, ['data', 'cache', 'timeout'])\n config = 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 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 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 resolve(self.afterHTTP(config, opts, response)).then(function (_response) {\n return _response || response\n })\n })\n },\n\n /**\n * Log the provided arguments at the specified leve.\n *\n * @name HttpAdapter#log\n * @method\n * @param {string} level Log level.\n * @param {...*} [args] Arguments to log.\n */\n log (level, ...args) {\n if (level && !args.length) {\n args.push(level)\n level = 'debug'\n }\n if (level === 'debug' && !this.debug) {\n return\n }\n const prefix = `${level.toUpperCase()}: (HttpAdapter)`\n if (console[level]) {\n console[level](prefix, ...args)\n } else {\n console.log(prefix, ...args)\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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.queryTransform)) {\n return opts.queryTransform(mapper, params, opts)\n }\n if (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 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 (isFunction(opts.serialize)) {\n return opts.serialize(mapper, data, opts)\n }\n if (isFunction(mapper.serialize)) {\n return mapper.serialize(mapper, data, opts)\n }\n return data\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdate lifecycle hook\n op = opts.op = 'beforeUpdate'\n return resolve(self[op](mapper, id, props, opts)).then(function () {\n op = opts.op = 'update'\n self.dbg(op, mapper, id, props, opts)\n return self.PUT(\n self.getPath('update', mapper, id, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdate lifecycle hook\n op = opts.op = 'afterUpdate'\n return resolve(self[op](mapper, id, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateAll lifecycle hook\n op = opts.op = 'beforeUpdateAll'\n return resolve(self[op](mapper, props, query, opts)).then(function () {\n op = opts.op = 'updateAll'\n self.dbg(op, mapper, props, query, opts)\n return self.PUT(\n self.getPath('updateAll', mapper, null, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateAll lifecycle hook\n op = opts.op = 'afterUpdateAll'\n return resolve(self[op](mapper, props, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'updateMany'\n self.dbg(op, mapper, records, opts)\n return self.PUT(\n self.getPath('updateMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateMany lifecycle hook\n op = opts.op = 'afterUpdateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n }\n})\n\n/**\n * Add an Http actions to a mapper.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.addAction = function (name, opts) {\n if (!name || !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 reject(err) }\n mapper[name] = function (id, _opts) {\n const self = this\n if (isObject(id)) {\n _opts = id\n }\n _opts = _opts || {}\n let adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http')\n let config = {}\n 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, isSorN(id) ? id : null, _opts)\n ]\n if (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 deepMixIn(config)(_opts)\n return 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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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 = extend\n\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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 **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"axios\"\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/node/package.json b/node/package.json index d8fbcf6..183079f 100644 --- a/node/package.json +++ b/node/package.json @@ -1,13 +1,13 @@ { "name": "js-data-http-node", "description": "Node.js HTTP adapter for js-data.", - "version": "3.0.0-alpha.4", + "version": "3.0.0-alpha.5", "homepage": "https://github.com/js-data/js-data-http", "repository": { "type": "git", "url": "https://github.com/js-data/js-data-http.git" }, - "author": "Jason Dobry (http://www.pseudobry.com)", + "author": "js-data-http project authors", "license": "MIT", "main": "./dist/js-data-http-node.js", "keywords": [ @@ -19,6 +19,6 @@ "node.js" ], "peerDependencies": { - "axios": "0.8.x" + "axios": "0.9.x" } } diff --git a/package.json b/package.json index 0195660..4a7a011 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "js-data-http", - "description": "HTTP adapter for js-data.", - "version": "2.2.1", + "description": "HTTP (XHR) adapter for js-data in the browser.", + "version": "3.0.0-alpha.5", "homepage": "https://github.com/js-data/js-data-http", "repository": { "type": "git", @@ -20,37 +20,63 @@ "xhr" ], "standard": { - "parser": "babel-eslint" + "parser": "babel-eslint", + "globals": [ + "Headers", + "fetch", + "Request", + "action", + "describe", + "it", + "sinon", + "before", + "after", + "beforeEach", + "afterEach" + ] }, "scripts": { - "lint": "standard src/**/*.js", - "bundle": "webpack --config webpack.config.js --colors", + "lint": "standard karma.start.js karma.conf.js src/**/*.js test/*.test.js fetch/karma.*.js node/mocha.start.js", + "doc": "jsdoc -c conf.json src && node scripts/cleanup.js", + "webpack": "webpack --config webpack.config.js && webpack --config node/webpack.config.js && webpack --config fetch/webpack.config.js", "min": "uglifyjs dist/js-data-http.js -o dist/js-data-http.min.js --source-map dist/js-data-http.min.map --source-map-url js-data-http.min.map -v -m -c --screw-ie8", "min_fetch": "uglifyjs fetch/dist/js-data-fetch.js -o fetch/dist/js-data-fetch.min.js --source-map fetch/dist/js-data-fetch.min.map --source-map-url js-data-fetch.min.map -v -m -c --screw-ie8", "version": "node scripts/version.js", "banner": "node scripts/banner.js", - "gzip": "echo gzipped size: $(cat dist/js-data-http.min.js | gzip -f9 | wc -c)kb", - "build": "npm run lint && npm run bundle && npm run min && npm run version && npm run banner", + "gzip": "echo js-data-http gzipped size: $(cat dist/js-data-http.min.js | gzip -f9 | wc -c)kb", + "gzip_fetch": "echo js-data-fetch gzipped size: $(cat fetch/dist/js-data-fetch.min.js | gzip -f9 | wc -c)kb", + "build": "npm run lint && npm run webpack && npm run min && npm run min_fetch && npm run version && npm run banner", "karma": "karma start", - "test": "npm run build && npm run karma", - "release": "npm test && node scripts/authors.js", - "ci": "npm test && cat ./coverage/PhantomJS*/lcov.info | coveralls || true" + "karma_fetch": "karma start fetch/karma.conf.js", + "mocha": "mocha -t 20000 -R dot -r source-map-support/register node/mocha.start.js test/*.test.js", + "cover": "istanbul cover -x node/dist/js-data-http-node-tests.js --hook-run-in-context node_modules/mocha/bin/_mocha -- -t 20000 -R dot -r source-map-support/register node/mocha.start.js test/*.test.js", + "test": "npm run build && npm run karma && npm run karma_fetch && npm run cover", + "release": "npm test && npm run doc && node scripts/authors.js", + "ci": "npm test && cat ./coverage/lcov.info | coveralls || true" + }, + "dependencies": { + "js-data": "^3.0.0-alpha.15" }, "devDependencies": { "axios": "0.9.1", "babel-core": "6.7.2", "babel-eslint": "5.0.0", "babel-loader": "6.2.4", + "babel-plugin-syntax-async-functions": "6.5.0", + "babel-plugin-transform-regenerator": "6.5.2", + "babel-polyfill": "6.5.0", "babel-preset-es2015": "6.6.0", + "babel-preset-stage-0": "6.5.0", "chai": "3.5.0", "coveralls": "2.11.8", "es6-promise": "3.1.2", + "ink-docstrap": "1.1.2", + "istanbul": "0.4.2", + "jsdoc": "3.4.0", "karma": "0.13.22", "karma-browserstack-launcher": "0.1.10", "karma-chai": "0.1.0", - "karma-chrome-launcher": "0.2.2", "karma-coverage": "0.5.3", - "karma-firefox-launcher": "0.1.7", "karma-mocha": "0.2.2", "karma-phantomjs-launcher": "1.0.0", "karma-sinon": "1.0.4", @@ -58,11 +84,9 @@ "mout": "0.12.0", "phantomjs-prebuilt": "2.1.5", "sinon": "1.17.3", + "source-map-support": "0.4.0", "standard": "6.0.8", "uglify-js": "2.6.2", "webpack": "1.12.14" - }, - "dependencies": { - "js-data": ">=2.0.0 <3" } } diff --git a/scripts/authors.js b/scripts/authors.js index 82a856d..975e552 100644 --- a/scripts/authors.js +++ b/scripts/authors.js @@ -30,6 +30,12 @@ exec('git shortlog -s -e < ' + tty, function (err, stdout, stderr) { fs.writeFileSync(__dirname + '/../AUTHORS', authorsFile + names.join('\n'), { encoding: 'utf-8' }) + fs.writeFileSync(__dirname + '/../fetch/AUTHORS', authorsFile + names.join('\n'), { + encoding: 'utf-8' + }) + fs.writeFileSync(__dirname + '/../node/AUTHORS', authorsFile + names.join('\n'), { + encoding: 'utf-8' + }) console.log('Done!') console.log('Writing CONTRIBUTORS file...') @@ -40,6 +46,12 @@ exec('git shortlog -s -e < ' + tty, function (err, stdout, stderr) { fs.writeFileSync(__dirname + '/../CONTRIBUTORS', contributorsFile + names.join('\n'), { encoding: 'utf-8' }) + fs.writeFileSync(__dirname + '/../fetch/CONTRIBUTORS', contributorsFile + names.join('\n'), { + encoding: 'utf-8' + }) + fs.writeFileSync(__dirname + '/../node/CONTRIBUTORS', contributorsFile + names.join('\n'), { + encoding: 'utf-8' + }) console.log('Done!') } }) diff --git a/src/index.js b/src/index.js index 7e188c8..fe0485f 100644 --- a/src/index.js +++ b/src/index.js @@ -1,12 +1,86 @@ -let JSData = require('js-data') -let axios = null +/* global fetch:true Headers:true Request:true */ +const axios = require('axios') +import {utils} from 'js-data' +const { + _, + addHiddenPropsToTarget, + copy, + deepMixIn, + extend, + fillIn, + forOwn, + isArray, + isFunction, + isNumber, + isObject, + isSorN, + isString, + isUndefined, + resolve, + reject, + toJson +} = utils + +let hasFetch = false try { - axios = require('axios') + hasFetch = window && window.fetch } catch (e) {} -let { DSUtils } = JSData -let { deepMixIn, removeCircular, copy, makePath, isString, isNumber } = DSUtils +function isValidString (value) { + return (value != null && value !== '') +} +function join (items, separator) { + separator || (separator = '') + return items.filter(isValidString).join(separator) +} +function makePath (...args) { + let result = join(args, '/') + return result.replace(/([^:\/]|^)\/{2,}/g, '$1/') +} + +function encode (val) { + return encodeURIComponent(val) + .replace(/%40/gi, '@') + .replace(/%3A/gi, ':') + .replace(/%24/g, '$') + .replace(/%2C/gi, ',') + .replace(/%20/g, '+') + .replace(/%5B/gi, '[') + .replace(/%5D/gi, ']') +} + +function buildUrl (url, params) { + if (!params) { + return url + } + + const parts = [] + + forOwn(params, function (val, key) { + if (val === null || typeof val === 'undefined') { + return + } + if (!isArray(val)) { + val = [val] + } + + val.forEach(function (v) { + if (window.toString.call(v) === '[object Date]') { + v = v.toISOString() + } else if (isObject(v)) { + v = toJson(v) + } + parts.push(`${encode(key)}=${encode(v)}`) + }) + }) + + if (parts.length > 0) { + url += (url.indexOf('?') === -1 ? '?' : '&') + parts.join('&') + } + + return url +} const noop = function (...args) { const self = this @@ -65,14 +139,399 @@ const DEFAULTS = { * @type {boolean} * @default false */ - self.useFetch = opts.useFetch === undefined ? false : opts.useFetch + useFetch: false +} + +/** + * HttpAdapter class. + * + * @class HttpAdapter + * @param {Object} [opts] Configuration options. + * @param {string} [opts.basePath=''] TODO + * @param {boolean} [opts.debug=false] TODO + * @param {boolean} [opts.forceTrailingSlash=false] TODO + * @param {Object} [opts.http=axios] TODO + * @param {Object} [opts.httpConfig={}] TODO + * @param {string} [opts.suffix=''] TODO + * @param {boolean} [opts.useFetch=false] TODO + */ +function HttpAdapter (opts) { + const self = this - log () {} + // Default values for arguments + opts || (opts = {}) - error () {} + fillIn(self, opts) + fillIn(self, DEFAULTS) } -let defaultsPrototype = Defaults.prototype +addHiddenPropsToTarget(HttpAdapter.prototype, { + /** + * @name HttpAdapter#afterCreate + * @method + * @param {Object} mapper + * @param {Object} props + * @param {Object} opts + * @param {Object} data + */ + afterCreate: noop2, + + /** + * @name HttpAdapter#afterCreateMany + * @method + * @param {Object} mapper + * @param {Object} records + * @param {Object} opts + * @param {Object} data + */ + afterCreateMany: noop2, + + /** + * @name HttpAdapter#afterDEL + * @method + * @param {string} url + * @param {Object} config + * @param {Object} opts + * @param {Object} response + */ + afterDEL: noop2, + + /** + * @name HttpAdapter#afterDestroy + * @method + * @param {Object} mapper + * @param {(string|number)} id + * @param {Object} opts + * @param {Object} data + */ + afterDestroy: noop2, + + /** + * @name HttpAdapter#afterDestroyAll + * @method + * @param {Object} mapper + * @param {(string|number)} id + * @param {Object} opts + * @param {Object} data + */ + afterDestroyAll: noop2, + + /** + * @name HttpAdapter#afterFind + * @method + * @param {Object} mapper + * @param {(string|number)} id + * @param {Object} opts + * @param {Object} data + */ + afterFind: noop2, + + /** + * @name HttpAdapter#afterFindAll + * @method + * @param {Object} mapper + * @param {(string|number)} id + * @param {Object} opts + * @param {Object} data + */ + afterFindAll: noop2, + + /** + * @name HttpAdapter#afterGET + * @method + * @param {string} url + * @param {Object} config + * @param {Object} opts + * @param {Object} response + */ + afterGET: noop2, + + /** + * @name HttpAdapter#afterHTTP + * @method + * @param {Object} config + * @param {Object} opts + * @param {Object} response + */ + afterHTTP: noop2, + + /** + * @name HttpAdapter#afterPOST + * @method + * @param {string} url + * @param {Object} data + * @param {Object} config + * @param {Object} opts + * @param {Object} response + */ + afterPOST: noop2, + + /** + * @name HttpAdapter#afterPUT + * @method + * @param {string} url + * @param {Object} data + * @param {Object} config + * @param {Object} opts + * @param {Object} response + */ + afterPUT: noop2, + + /** + * @name HttpAdapter#afterUpdate + * @method + * @param {Object} mapper + * @param {(string|number)} id + * @param {Object} props + * @param {Object} opts + * @param {Object} data + */ + afterUpdate: noop2, + + /** + * @name HttpAdapter#afterUpdateAll + * @method + * @param {Object} mapper + * @param {Object} props + * @param {Object} query + * @param {Object} opts + * @param {Object} data + */ + afterUpdateAll: noop2, + + /** + * @name HttpAdapter#afterUpdateMany + * @method + * @param {Object} mapper + * @param {Object} records + * @param {Object} opts + * @param {Object} data + */ + afterUpdateMany: noop2, + + /** + * @name HttpAdapter#beforeCreate + * @method + * @param {Object} mapper + * @param {Object} props + * @param {Object} opts + */ + beforeCreate: noop, + + /** + * @name HttpAdapter#beforeCreateMany + * @method + * @param {Object} mapper + * @param {Object} records + * @param {Object} opts + */ + beforeCreateMany: noop, + + /** + * @name HttpAdapter#beforeDEL + * @method + * @param {Object} url + * @param {Object} config + * @param {Object} opts + */ + beforeDEL: noop, + + /** + * @name HttpAdapter#beforeDestroy + * @method + * @param {Object} mapper + * @param {(string|number)} id + * @param {Object} opts + */ + beforeDestroy: noop, + + /** + * @name HttpAdapter#beforeDestroyAll + * @method + * @param {Object} mapper + * @param {Object} query + * @param {Object} opts + */ + beforeDestroyAll: noop, + + /** + * @name HttpAdapter#beforeFind + * @method + * @param {Object} mapper + * @param {(string|number)} id + * @param {Object} opts + */ + beforeFind: noop, + + /** + * @name HttpAdapter#beforeFindAll + * @method + * @param {Object} mapper + * @param {Object} query + * @param {Object} opts + */ + beforeFindAll: noop, + + /** + * @name HttpAdapter#beforeGET + * @method + * @param {Object} url + * @param {Object} config + * @param {Object} opts + */ + beforeGET: noop, + + /** + * @name HttpAdapter#beforeHTTP + * @method + * @param {Object} config + * @param {Object} opts + */ + beforeHTTP: noop, + + /** + * @name HttpAdapter#beforePOST + * @method + * @param {Object} url + * @param {Object} data + * @param {Object} config + * @param {Object} opts + */ + beforePOST: noop, + + /** + * @name HttpAdapter#beforePUT + * @method + * @param {Object} url + * @param {Object} data + * @param {Object} config + * @param {Object} opts + */ + beforePUT: noop, + + /** + * @name HttpAdapter#beforeUpdate + * @method + * @param {Object} mapper + * @param {(string|number)} id + * @param {Object} props + * @param {Object} opts + */ + beforeUpdate: noop, + + /** + * @name HttpAdapter#beforeUpdateAll + * @method + * @param {Object} mapper + * @param {Object} props + * @param {Object} query + * @param {Object} opts + */ + beforeUpdateAll: noop, + + /** + * @name HttpAdapter#beforeUpdateMany + * @method + * @param {Object} mapper + * @param {Object} records + * @param {Object} opts + */ + beforeUpdateMany: noop, + + /** + * Create a new the record from the provided `props`. + * + * @name HttpAdapter#create + * @method + * @param {Object} mapper The mapper. + * @param {Object} props Properties to send as the payload. + * @param {Object} [opts] Configuration options. + * @param {string} [opts.params] TODO + * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO + * @return {Promise} + */ + create (mapper, props, opts) { + const self = this + let op + opts = opts ? copy(opts) : {} + opts.params || (opts.params = {}) + opts.params = self.queryTransform(mapper, opts.params, opts) + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix + + // beforeCreate lifecycle hook + op = opts.op = 'beforeCreate' + return resolve(self[op](mapper, props, opts)).then(function () { + op = opts.op = 'create' + self.dbg(op, mapper, props, opts) + return self.POST( + self.getPath('create', mapper, props, opts), + self.serialize(mapper, props, opts), + opts + ) + }).then(function (response) { + return self.deserialize(mapper, response, opts) + }).then(function (data) { + // afterCreate lifecycle hook + op = opts.op = 'afterCreate' + return resolve(self[op](mapper, props, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data + }) + }) + }, + + /** + * Create multiple new records in batch. + * + * @name HttpAdapter#createMany + * @method + * @param {Object} mapper The mapper. + * @param {Array} records Array of property objects to send as the payload. + * @param {Object} [opts] Configuration options. + * @param {string} [opts.params] TODO + * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO + * @return {Promise} + */ + createMany (mapper, records, opts) { + const self = this + let op + opts = opts ? copy(opts) : {} + opts.params || (opts.params = {}) + opts.params = self.queryTransform(mapper, opts.params, opts) + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix + + // beforeCreateMany lifecycle hook + op = opts.op = 'beforeCreateMany' + return resolve(self[op](mapper, records, opts)).then(function () { + op = opts.op = 'createMany' + self.dbg(op, mapper, records, opts) + return self.POST( + self.getPath('createMany', mapper, null, opts), + self.serialize(mapper, records, opts), + opts + ) + }).then(function (response) { + return self.deserialize(mapper, response, opts) + }).then(function (data) { + // afterCreateMany lifecycle hook + op = opts.op = 'afterCreateMany' + return resolve(self[op](mapper, records, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data + }) + }) + }, + + /** + * Call {@link HttpAdapter#log} at the "debug" level. + * + * @name HttpAdapter#dbg + * @method + * @param {...*} [args] Args passed to {@link HttpAdapter#log}. + */ + dbg (...args) { + this.log('debug', ...args) + }, /** * Make an Http request to `url` according to the configuration in `config`. @@ -111,16 +570,123 @@ let defaultsPrototype = Defaults.prototype }) }, - afterDEL () {}, + /** + * Transform the server response object into the payload that will be returned + * to JSData. + * + * @name HttpAdapter#deserialize + * @method + * @param {Object} mapper The mapper used for the operation. + * @param {Object} response Response object from {@link HttpAdapter#HTTP}. + * @param {Object} opts Configuration options. + * @return {(Object|Array)} Deserialized data. + */ + deserialize (mapper, response, opts) { + opts || (opts = {}) + if (isFunction(opts.deserialize)) { + return opts.deserialize(mapper, response, opts) + } + if (isFunction(mapper.deserialize)) { + return mapper.deserialize(mapper, response, opts) + } + if (opts.raw) { + return response + } + return response ? ('data' in response ? response.data : response) : response + }, -defaultsPrototype.verbsUseBasePath = false + /** + * Destroy the record with the given primary key. + * + * @name HttpAdapter#destroy + * @method + * @param {Object} mapper The mapper. + * @param {(string|number)} id Primary key of the record to destroy. + * @param {Object} [opts] Configuration options. + * @param {string} [opts.params] TODO + * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO + * @return {Promise} + */ + destroy (mapper, id, opts) { + const self = this + let op + opts = opts ? copy(opts) : {} + opts.params || (opts.params = {}) + opts.params = self.queryTransform(mapper, opts.params, opts) + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix -defaultsPrototype.useFetch = false; + // beforeDestroy lifecycle hook + op = opts.op = 'beforeDestroy' + return resolve(self[op](mapper, id, opts)).then(function () { + op = opts.op = 'destroy' + self.dbg(op, mapper, id, opts) + return self.DEL( + self.getPath('destroy', mapper, id, opts), + opts + ) + }).then(function (response) { + return self.deserialize(mapper, response, opts) + }).then(function (data) { + // afterDestroy lifecycle hook + op = opts.op = 'afterDestroy' + return resolve(self[op](mapper, id, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data + }) + }) + }, + + /** + * Destroy the records that match the selection `query`. + * + * @name HttpAdapter#destroyAll + * @method + * @param {Object} mapper The mapper. + * @param {Object} query Selection query. + * @param {Object} [opts] Configuration options. + * @param {string} [opts.params] TODO + * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO + * @return {Promise} + */ + destroyAll (mapper, query, opts) { + const self = this + let op + query || (query = {}) + opts = opts ? copy(opts) : {} + opts.params || (opts.params = {}) + deepMixIn(opts.params, query) + opts.params = self.queryTransform(mapper, opts.params, opts) + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix -class DSHttpAdapter { - constructor (options) { - options = options || {} - this.defaults = new Defaults() + // beforeDestroyAll lifecycle hook + op = opts.op = 'beforeDestroyAll' + return resolve(self.beforeDestroyAll(mapper, query, opts)).then(function () { + op = opts.op = 'destroyAll' + self.dbg(op, mapper, query, opts) + return self.DEL( + self.getPath('destroyAll', mapper, null, opts), + opts + ) + }).then(function (response) { + return self.deserialize(mapper, response, opts) + }).then(function (data) { + // afterDestroyAll lifecycle hook + op = opts.op = 'afterDestroyAll' + return resolve(self[op](mapper, query, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data + }) + }) + }, + + /** + * Log an error. + * + * @name HttpAdapter#error + * @method + * @param {...*} [args] Arguments to log. + */ + error (...args) { if (console) { console[typeof console.error === 'function' ? 'error' : 'log'](...args) } @@ -145,132 +711,268 @@ class DSHttpAdapter { // turn the plain headers object into the Fetch Headers object headers: new Headers(config.headers) } - deepMixIn(this.defaults, options) - this.http = options.http || axios - } - getEndpoint (resourceConfig, id, options) { - options = options || {} - options.params = options.params || {} + if (config.data) { + requestConfig.body = toJson(config.data) + } + + return fetch(new Request(buildUrl(config.url, config.params), requestConfig)).then(function (response) { + response.config = { + method: config.method, + url: config.url + } + return response.json().then(function (data) { + response.data = data + return response + }) + }) + }, + + /** + * Retrieve the record with the given primary key. + * + * @name HttpAdapter#find + * @method + * @param {Object} mapper The mapper. + * @param {(string|number)} id Primary key of the record to retrieve. + * @param {Object} [opts] Configuration options. + * @param {string} [opts.params] TODO + * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO + * @return {Promise} + */ + find (mapper, id, opts) { + const self = this + let op + opts = opts ? copy(opts) : {} + opts.params || (opts.params = {}) + opts.params = self.queryTransform(mapper, opts.params, opts) + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix + + // beforeFind lifecycle hook + op = opts.op = 'beforeFind' + return resolve(self[op](mapper, id, opts)).then(function () { + op = opts.op = 'find' + self.dbg(op, mapper, id, opts) + return self.GET( + self.getPath('find', mapper, id, opts), + opts + ) + }).then(function (response) { + return self.deserialize(mapper, response, opts) + }).then(function (data) { + // afterFind lifecycle hook + op = opts.op = 'afterFind' + return resolve(self[op](mapper, id, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data + }) + }) + }, + + /** + * Retrieve the records that match the selection `query`. + * + * @name HttpAdapter#findAll + * @method + * @param {Object} mapper The mapper. + * @param {Object} query Selection query. + * @param {Object} [opts] Configuration options. + * @param {string} [opts.params] TODO + * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO + * @return {Promise} + */ + findAll (mapper, query, opts) { + const self = this + let op + query || (query = {}) + opts = opts ? copy(opts) : {} + opts.params || (opts.params = {}) + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix + deepMixIn(opts.params, query) + opts.params = self.queryTransform(mapper, opts.params, opts) + + // beforeFindAll lifecycle hook + op = opts.op = 'beforeFindAll' + return resolve(self[op](mapper, query, opts)).then(function () { + op = opts.op = 'findAll' + self.dbg(op, mapper, query, opts) + return self.GET( + self.getPath('findAll', mapper, opts.params, opts), + opts + ) + }).then(function (response) { + return self.deserialize(mapper, response, opts) + }).then(function (data) { + // afterFindAll lifecycle hook + op = opts.op = 'afterFindAll' + return resolve(self[op](mapper, query, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data + }) + }) + }, + + /** + * TODO + * + * @name HttpAdapter#GET + * @method + * @param {string} url The url for the request. + * @param {Object} config Request configuration options. + * @param {Object} [opts] Configuration options. + * @return {Promise} + */ + GET (url, config, opts) { + const self = this + let op + config || (config = {}) + opts || (opts = {}) + config.url = url || config.url + config.method = config.method || 'get' + + // beforeGET lifecycle hook + op = opts.op = 'beforeGET' + return resolve(self[op](url, config, opts)).then(function (_config) { + // Allow re-assignment from lifecycle hook + config = isUndefined(_config) ? config : _config + op = opts.op = 'GET' + self.dbg(op, url, config, opts) + return self.HTTP(config, opts) + }).then(function (response) { + // afterGET lifecycle hook + op = opts.op = 'afterGET' + return resolve(self[op](url, config, opts, response)).then(function (_response) { + // Allow re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response + }) + }) + }, + + /** + * @name HttpAdapter#getEndpoint + * @method + * @param {Object} mapper TODO + * @param {*} id TODO + * @param {boolean} opts TODO + * @return {string} Full path. + */ + getEndpoint (mapper, id, opts) { + const self = this + opts || (opts = {}) + opts.params || (opts.params = {}) - let endpoint = options.hasOwnProperty('endpoint') ? options.endpoint : resourceConfig.endpoint - let parents = resourceConfig.parents || (resourceConfig.parent ? { - [resourceConfig.parent]: { - key: resourceConfig.parentKey, - field: resourceConfig.parentField + let endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : mapper.endpoint + let parents = mapper.parents || (mapper.parent ? { + [mapper.parent]: { + key: mapper.parentKey, + field: mapper.parentField } } : {}) - DSUtils.forOwn(parents, function (parent, parentName) { + forOwn(parents, function (parent, parentName) { let item let parentKey = parent.key let parentField = parent.field - let parentDef = resourceConfig.getResource(parentName) - let parentId = options.params[parentKey] + let parentDef = mapper.getResource(parentName) + let parentId = opts.params[parentKey] if (parentId === false || !parentKey || !parentDef) { if (parentId === false) { - delete options.params[parentKey] + delete opts.params[parentKey] } + return false } else { - delete options.params[parentKey] + delete opts.params[parentKey] - if (DSUtils._sn(id)) { - item = resourceConfig.get(id) - } else if (DSUtils._o(id)) { + if (isString(id) || isNumber(id)) { + item = mapper.get(id) + } else if (isObject(id)) { item = id } - console.log('item', item) if (item) { parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null) } if (parentId) { - delete options.endpoint - let _options = {} - DSUtils.forOwn(options, (value, key) => { - _options[key] = value + delete opts.endpoint + const _opts = {} + forOwn(opts, function (value, key) { + _opts[key] = value }) - endpoint = DSUtils.makePath(this.getEndpoint(parentDef, parentId, DSUtils._(parentDef, _options)), parentId, endpoint) + _(_opts, parentDef) + endpoint = makePath(self.getEndpoint(parentDef, parentId, _opts, parentId, endpoint)) + return false } } - }, this) + }) return endpoint - } + }, - getPath (method, resourceConfig, id, options) { - let _this = this - options = options || {} - if (isString(options.urlPath)) { - return makePath.apply(DSUtils, [options.basePath || _this.defaults.basePath || resourceConfig.basePath, options.urlPath]) - } else { - let args = [ - options.basePath || _this.defaults.basePath || resourceConfig.basePath, - this.getEndpoint(resourceConfig, (isString(id) || isNumber(id) || method === 'create') ? id : null, options) - ] - if (method === 'find' || method === 'update' || method === 'destroy') { - args.push(id) - } - return makePath.apply(DSUtils, args) + /** + * @name HttpAdapter#getPath + * @method + * @param {string} method TODO + * @param {Object} mapper TODO + * @param {(string|number)?} id TODO + * @param {Object} opts Configuration options. + */ + getPath (method, mapper, id, opts) { + const self = this + opts || (opts = {}) + const args = [ + opts.basePath === undefined ? (mapper.basePath === undefined ? self.basePath : mapper.basePath) : opts.basePath, + self.getEndpoint(mapper, (isString(id) || isNumber(id) || method === 'create') ? id : null, opts) + ] + if (method === 'find' || method === 'update' || method === 'destroy') { + args.push(id) } - } - - HTTP (config) { - let _this = this - let start = new Date() + return makePath.apply(utils, args) + }, - // blacklist `data` as it can be large and will take a lot of time to copy - let payload = config.data - let cache = config.cache - let timeout = config.timeout + /** + * Make an Http request. + * + * @name HttpAdapter#HTTP + * @method + * @param {Object} config Request configuration options. + * @param {Object} [opts] Configuration options. + * @return {Promise} + */ + HTTP (config, opts) { + const self = this + const start = new Date() + opts || (opts = {}) + const payload = config.data + const cache = config.cache + const timeout = config.timeout config = copy(config, null, null, null, ['data', 'cache', 'timeout']) - config = deepMixIn(config, _this.defaults.httpConfig) + config = deepMixIn(config, self.httpConfig) config.data = payload config.cache = cache config.timeout = timeout - if (!('verbsUseBasePath' in config)) { - config.verbsUseBasePath = _this.defaults.verbsUseBasePath - } - if (!config.urlOverride && config.verbsUseBasePath) { - config.url = makePath(config.basePath || _this.defaults.basePath, config.url) - } - if (_this.defaults.forceTrailingSlash && config.url[config.url.length - 1] !== '/' && !config.urlOverride) { + if (self.forceTrailingSlash && config.url[config.url.length - 1] !== '/') { config.url += '/' } config.method = config.method.toUpperCase() - let suffix = config.suffix || _this.defaults.suffix - if (suffix && config.url.substr(config.url.length - suffix.length) !== suffix && !config.urlOverride) { + const suffix = config.suffix || opts.suffix || self.suffix + if (suffix && config.url.substr(config.url.length - suffix.length) !== suffix) { config.url += suffix } - // logs the HTTP response - function logResponse (data, isRejection) { - data = data || {} - // examine the data object - if (data instanceof Error) { - // log the Error object - _this.defaults.error(`FAILED: ${data.message || 'Unknown Error'}`, data) - return DSUtils.Promise.reject(data) - } else if (typeof data === 'object') { - let str = `${start.toUTCString()} - ${config.method} ${config.url} - ${data.status} ${(new Date().getTime() - start.getTime())}ms` - - if (data.status >= 200 && data.status < 300 && !isRejection) { - if (_this.defaults.log) { - _this.defaults.log(str, data) - } - return data - } else { - if (_this.defaults.error) { - _this.defaults.error(`FAILED: ${str}`, data) - } - return DSUtils.Promise.reject(data) + function logResponse (data) { + const str = `${start.toUTCString()} - ${config.method.toUpperCase()} ${config.url} - ${data.status} ${(new Date().getTime() - start.getTime())}ms` + if (data.status >= 200 && data.status < 300) { + if (self.log) { + self.dbg('debug', str, data) } + return data } else { - // unknown type for 'data' that is not an Object or Error - _this.defaults.error('FAILED', data) - return DSUtils.Promise.reject(data) + if (self.error) { + self.error(`'FAILED: ${str}`, data) + } + return reject(data) } } @@ -278,142 +980,399 @@ class DSHttpAdapter { throw new Error('You have not configured this adapter with an http library!') } - return this.http(config).then(logResponse, function (data) { - return logResponse(data, true) + return resolve(self.beforeHTTP(config, opts)).then(function (_config) { + config = _config || config + if (hasFetch && (self.useFetch || opts.useFetch || !self.http)) { + return self.fetch(config, opts).then(logResponse, logResponse) + } + return self.http(config).then(logResponse, logResponse).catch(function (err) { + return self.responseError(err, config, opts) + }) + }).then(function (response) { + return resolve(self.afterHTTP(config, opts, response)).then(function (_response) { + return _response || response + }) }) - } + }, - GET (url, config) { - config = config || {} - config.method = config.method || 'get' - config.urlOverride = !!config.url - config.url = config.url || url - return this.HTTP(config) - } + /** + * Log the provided arguments at the specified leve. + * + * @name HttpAdapter#log + * @method + * @param {string} level Log level. + * @param {...*} [args] Arguments to log. + */ + log (level, ...args) { + if (level && !args.length) { + args.push(level) + level = 'debug' + } + if (level === 'debug' && !this.debug) { + return + } + const prefix = `${level.toUpperCase()}: (HttpAdapter)` + if (console[level]) { + console[level](prefix, ...args) + } else { + console.log(prefix, ...args) + } + }, - POST (url, attrs, config) { - config = config || {} + /** + * TODO + * + * @name HttpAdapter#POST + * @method + * @param {*} url TODO + * @param {Object} data TODO + * @param {Object} config TODO + * @param {Object} [opts] Configuration options. + * @return {Promise} + */ + POST (url, data, config, opts) { + const self = this + let op + config || (config = {}) + opts || (opts = {}) + config.url = url || config.url + config.data = data || config.data config.method = config.method || 'post' - config.urlOverride = !!config.url - config.url = config.url || url - config.data = config.data || attrs - return this.HTTP(config) - } - PUT (url, attrs, config) { - config = config || {} - config.method = config.method || 'put' - config.urlOverride = !!config.url - config.url = config.url || url - config.data = config.data || attrs - return this.HTTP(config) - } + // beforePOST lifecycle hook + op = opts.op = 'beforePOST' + return resolve(self[op](url, data, config, opts)).then(function (_config) { + // Allow re-assignment from lifecycle hook + config = isUndefined(_config) ? config : _config + op = opts.op = 'POST' + self.dbg(op, url, data, config, opts) + return self.HTTP(config, opts) + }).then(function (response) { + // afterPOST lifecycle hook + op = opts.op = 'afterPOST' + return resolve(self[op](url, data, config, opts, response)).then(function (_response) { + // Allow re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response + }) + }) + }, - DEL (url, config) { - config = config || {} - config.method = config.method || 'delete' - config.urlOverride = !!config.url - config.url = config.url || url - return this.HTTP(config) - } + /** + * TODO + * + * @name HttpAdapter#PUT + * @method + * @param {*} url TODO + * @param {Object} data TODO + * @param {Object} config TODO + * @param {Object} [opts] Configuration options. + * @return {Promise} + */ + PUT (url, data, config, opts) { + const self = this + let op + config || (config = {}) + opts || (opts = {}) + config.url = url || config.url + config.data = data || config.data + config.method = config.method || 'put' - find (resourceConfig, id, options) { - let _this = this - options = options ? copy(options) : {} - options.suffix = options.suffix || resourceConfig.suffix - options.params = options.params || {} - options.params = _this.defaults.queryTransform(resourceConfig, options.params) - return _this.GET( - _this.getPath('find', resourceConfig, id, options), - options - ).then((data) => { - let item = (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data) - return !item ? DSUtils.Promise.reject(new Error('Not Found!')) : item + // beforePUT lifecycle hook + op = opts.op = 'beforePUT' + return resolve(self[op](url, data, config, opts)).then(function (_config) { + // Allow re-assignment from lifecycle hook + config = isUndefined(_config) ? config : _config + op = opts.op = 'PUT' + self.dbg(op, url, data, config, opts) + return self.HTTP(config, opts) + }).then(function (response) { + // afterPUT lifecycle hook + op = opts.op = 'afterPUT' + return resolve(self[op](url, data, config, opts, response)).then(function (_response) { + // Allow re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response + }) }) - } + }, - findAll (resourceConfig, params, options) { - let _this = this - options = options ? copy(options) : {} - options.suffix = options.suffix || resourceConfig.suffix - options.params = options.params || {} - if (params) { - params = _this.defaults.queryTransform(resourceConfig, params) - deepMixIn(options.params, params) + /** + * TODO + * + * @name HttpAdapter#queryTransform + * @method + * @param {Object} mapper TODO + * @param {*} params TODO + * @param {*} opts TODO + * @return {*} Transformed params. + */ + queryTransform (mapper, params, opts) { + opts || (opts = {}) + if (isFunction(opts.queryTransform)) { + return opts.queryTransform(mapper, params, opts) } - return _this.GET( - _this.getPath('findAll', resourceConfig, params, options), - options - ).then((data) => (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data)) - } - - create (resourceConfig, attrs, options) { - let _this = this - options = options ? copy(options) : {} - options.suffix = options.suffix || resourceConfig.suffix - options.params = options.params || {} - options.params = _this.defaults.queryTransform(resourceConfig, options.params) - return _this.POST( - _this.getPath('create', resourceConfig, attrs, options), - options.serialize ? options.serialize(resourceConfig, attrs) : _this.defaults.serialize(resourceConfig, attrs), - options - ).then((data) => (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data)) - } + if (isFunction(mapper.queryTransform)) { + return mapper.queryTransform(mapper, params, opts) + } + return params + }, - update (resourceConfig, id, attrs, options) { - let _this = this - options = options ? copy(options) : {} - options.suffix = options.suffix || resourceConfig.suffix - options.params = options.params || {} - options.params = _this.defaults.queryTransform(resourceConfig, options.params) - return _this.PUT( - _this.getPath('update', resourceConfig, id, options), - options.serialize ? options.serialize(resourceConfig, attrs) : _this.defaults.serialize(resourceConfig, attrs), - options - ).then((data) => (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data)) - } + /** + * Error handler invoked when the promise returned by {@link HttpAdapter#http} + * is rejected. Default implementation is to just return the error wrapped in + * a rejected Promise, aka rethrow the error. {@link HttpAdapter#http} is + * called by {@link HttpAdapter#HTTP}. + * + * @name HttpAdapter#responseError + * @method + * @param {*} err The error that {@link HttpAdapter#http} rejected with. + * @param {Object} config The `config` argument that was passed to {@link HttpAdapter#HTTP}. + * @param {*} opts The `opts` argument that was passed to {@link HttpAdapter#HTTP}. + * @return {Promise} + */ + responseError (err, config, opts) { + return reject(err) + }, - updateAll (resourceConfig, attrs, params, options) { - let _this = this - options = options ? copy(options) : {} - options.suffix = options.suffix || resourceConfig.suffix - options.params = options.params || {} - if (params) { - params = _this.defaults.queryTransform(resourceConfig, params) - deepMixIn(options.params, params) + /** + * TODO + * + * @name HttpAdapter#serialize + * @method + * @param {Object} mapper TODO + * @param {Object} data TODO + * @param {*} opts TODO + * @return {*} Serialized data. + */ + serialize (mapper, data, opts) { + opts || (opts = {}) + if (isFunction(opts.serialize)) { + return opts.serialize(mapper, data, opts) } - return this.PUT( - _this.getPath('updateAll', resourceConfig, attrs, options), - options.serialize ? options.serialize(resourceConfig, attrs) : _this.defaults.serialize(resourceConfig, attrs), - options - ).then((data) => (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data)) - } + if (isFunction(mapper.serialize)) { + return mapper.serialize(mapper, data, opts) + } + return data + }, - destroy (resourceConfig, id, options) { - let _this = this - options = options ? copy(options) : {} - options.suffix = options.suffix || resourceConfig.suffix - options.params = options.params || {} - options.params = _this.defaults.queryTransform(resourceConfig, options.params) - return _this.DEL( - _this.getPath('destroy', resourceConfig, id, options), - options - ).then((data) => (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data)) + /** + * TODO + * + * @name HttpAdapter#update + * @method + * @param {Object} mapper TODO + * @param {*} id TODO + * @param {*} props TODO + * @param {Object} [opts] Configuration options. + * @return {Promise} + */ + update (mapper, id, props, opts) { + const self = this + let op + opts = opts ? copy(opts) : {} + opts.params || (opts.params = {}) + opts.params = self.queryTransform(mapper, opts.params, opts) + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix + + // beforeUpdate lifecycle hook + op = opts.op = 'beforeUpdate' + return resolve(self[op](mapper, id, props, opts)).then(function () { + op = opts.op = 'update' + self.dbg(op, mapper, id, props, opts) + return self.PUT( + self.getPath('update', mapper, id, opts), + self.serialize(mapper, props, opts), + opts + ) + }).then(function (response) { + return self.deserialize(mapper, response, opts) + }).then(function (data) { + // afterUpdate lifecycle hook + op = opts.op = 'afterUpdate' + return resolve(self[op](mapper, id, props, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data + }) + }) + }, + + /** + * TODO + * + * @name HttpAdapter#updateAll + * @method + * @param {Object} mapper TODO + * @param {Object} props TODO + * @param {Object} query TODO + * @param {Object} [opts] Configuration options. + * @return {Promise} + */ + updateAll (mapper, props, query, opts) { + const self = this + let op + query || (query = {}) + opts = opts ? copy(opts) : {} + opts.params || (opts.params = {}) + deepMixIn(opts.params, query) + opts.params = self.queryTransform(mapper, opts.params, opts) + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix + + // beforeUpdateAll lifecycle hook + op = opts.op = 'beforeUpdateAll' + return resolve(self[op](mapper, props, query, opts)).then(function () { + op = opts.op = 'updateAll' + self.dbg(op, mapper, props, query, opts) + return self.PUT( + self.getPath('updateAll', mapper, null, opts), + self.serialize(mapper, props, opts), + opts + ) + }).then(function (response) { + return self.deserialize(mapper, response, opts) + }).then(function (data) { + // afterUpdateAll lifecycle hook + op = opts.op = 'afterUpdateAll' + return resolve(self[op](mapper, props, query, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data + }) + }) + }, + + /** + * Update multiple records in batch. + * + * {@link HttpAdapter#beforeUpdateMany} will be called before calling + * {@link HttpAdapter#PUT}. + * {@link HttpAdapter#afterUpdateMany} will be called after calling + * {@link HttpAdapter#PUT}. + * + * @name HttpAdapter#updateMany + * @method + * @param {Object} mapper The mapper. + * @param {Array} records Array of property objects to send as the payload. + * @param {Object} [opts] Configuration options. + * @param {string} [opts.params] TODO + * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO + * @return {Promise} + */ + updateMany (mapper, records, opts) { + const self = this + let op + opts = opts ? copy(opts) : {} + opts.params || (opts.params = {}) + opts.params = self.queryTransform(mapper, opts.params, opts) + opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix + + // beforeUpdateMany lifecycle hook + op = opts.op = 'beforeUpdateMany' + return resolve(self[op](mapper, records, opts)).then(function () { + op = opts.op = 'updateMany' + self.dbg(op, mapper, records, opts) + return self.PUT( + self.getPath('updateMany', mapper, null, opts), + self.serialize(mapper, records, opts), + opts + ) + }).then(function (response) { + return self.deserialize(mapper, response, opts) + }).then(function (data) { + // afterUpdateMany lifecycle hook + op = opts.op = 'afterUpdateMany' + return resolve(self[op](mapper, records, opts, data)).then(function (_data) { + // Allow re-assignment from lifecycle hook + return isUndefined(_data) ? data : _data + }) + }) } +}) - destroyAll (resourceConfig, params, options) { - let _this = this - options = options ? copy(options) : {} - options.suffix = options.suffix || resourceConfig.suffix - options.params = options.params || {} - if (params) { - params = _this.defaults.queryTransform(resourceConfig, params) - deepMixIn(options.params, params) +/** + * Add an Http actions to a mapper. + * + * @name HttpAdapter.addAction + * @method + * @param {string} name Name of the new action. + * @param {Object} [opts] Action configuration + * @param {string} [opts.adapter] + * @param {string} [opts.pathname] + * @param {Function} [opts.request] + * @param {Function} [opts.response] + * @param {Function} [opts.responseError] + * @return {Function} Decoration function, which should be passed the mapper to + * decorate when invoked. + */ +HttpAdapter.addAction = function (name, opts) { + if (!name || !isString(name)) { + throw new TypeError('action(name[, opts]): Expected: string, Found: ' + typeof name) + } + return function (mapper) { + if (mapper[name]) { + throw new Error('action(name[, opts]): ' + name + ' already exists on target!') + } + opts.request = opts.request || function (config) { return config } + opts.response = opts.response || function (response) { return response } + opts.responseError = opts.responseError || function (err) { return reject(err) } + mapper[name] = function (id, _opts) { + const self = this + if (isObject(id)) { + _opts = id + } + _opts = _opts || {} + let adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http') + let config = {} + fillIn(config, opts) + if (!_opts.hasOwnProperty('endpoint') && config.endpoint) { + _opts.endpoint = config.endpoint + } + if (typeof _opts.getEndpoint === 'function') { + config.url = _opts.getEndpoint(self, _opts) + } else { + let args = [ + _opts.basePath || self.basePath || adapter.basePath, + adapter.getEndpoint(self, isSorN(id) ? id : null, _opts) + ] + if (isSorN(id)) { + args.push(id) + } + args.push(opts.pathname || name) + config.url = makePath.apply(null, args) + } + config.method = config.method || 'GET' + config.mapper = self.name + deepMixIn(config)(_opts) + return resolve(config) + .then(_opts.request || opts.request) + .then(function (config) { return adapter.HTTP(config) }) + .then(function (data) { + if (data && data.config) { + data.config.mapper = self.name + } + return data + }) + .then(_opts.response || opts.response, _opts.responseError || opts.responseError) } - return this.DEL( - _this.getPath('destroyAll', resourceConfig, params, options), - options - ).then((data) => (options.deserialize ? options.deserialize : _this.defaults.deserialize)(resourceConfig, data)) + return mapper + } +} + +/** + * Add multiple Http actions to a mapper. See {@link HttpAdapter.addAction} for + * action configuration options. + * + * @name HttpAdapter.addActions + * @method + * @param {Object.} opts Object where the key is an action name + * and the value is the configuration for the action. + * @return {Function} Decoration function, which should be passed the mapper to + * decorate when invoked. + */ +HttpAdapter.addActions = function (opts) { + opts || (opts = {}) + return function (mapper) { + forOwn(mapper, function (value, key) { + HttpAdapter.addAction(key, value)(mapper) + }) + return mapper } } diff --git a/webpack.config.js b/webpack.config.js index 466ab74..fb21ce4 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -2,13 +2,21 @@ var path = require('path') module.exports = { devtool: 'source-map', - entry: './src/index.js', + entry: { + './dist/js-data-http.js': './src/index.js' + }, output: { - filename: './dist/js-data-http.js', + filename: '[name]', libraryTarget: 'umd', library: 'HttpAdapter' }, externals: { + 'chai': { + amd: 'chai', + commonjs: 'chai', + commonjs2: 'chai', + root: 'chai' + }, 'js-data': { amd: 'js-data', commonjs: 'js-data', From bb95fe7c8cc5db0bbd714d5f4243ac841f4c64b0 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Tue, 23 Feb 2016 14:15:11 -0800 Subject: [PATCH 13/24] 3.0.0-alpha.6 --- CHANGELOG.md | 44 +++++++++++++ CONTRIBUTORS | 2 +- dist/js-data-http.js | 31 ++++----- dist/js-data-http.js.map | 2 +- dist/js-data-http.min.js | 9 +++ dist/js-data-http.min.map | 4 ++ fetch/AUTHORS | 1 + fetch/CONTRIBUTORS | 3 +- fetch/dist/js-data-fetch.js | 31 ++++----- fetch/dist/js-data-fetch.js.map | 2 +- fetch/dist/js-data-fetch.min.js | 2 +- fetch/dist/js-data-fetch.min.map | 2 +- fetch/karma.start.js | 3 + fetch/package.json | 7 +- karma.start.js | 3 + node/AUTHORS | 1 + node/CONTRIBUTORS | 3 +- node/dist/js-data-http-node.js | 31 ++++----- node/dist/js-data-http-node.js.map | 2 +- node/mocha.start.js | 3 + node/package.json | 7 +- package.json | 2 +- src/index.js | 29 ++++----- test/find.test.js | 100 +++++++++++++++++++++++++++++ 24 files changed, 239 insertions(+), 85 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bea2d6c..ea6b5c8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,14 @@ - #46 - Sending large payloads takes huge amount of time - thanks @ivanvoznyakovsky - #47 - perf(http): speed up preparation of http config with large payload - thanks @ivanvoznyakovsky +##### 3.0.0-alpha.6 - 23 February 2016 + +- getEndpoint now works with multiple parents + +##### 3.0.0-alpha.5 - 23 February 2016 + +- Rebased master + ##### 2.2.0 - 23 February 2016 ###### Backwards compatible API changes @@ -16,6 +24,42 @@ - Added AUTHORS and CONTRIBUTORS files - Updated Readme +##### 3.0.0-alpha.4 - 12 February 2016 + +###### Backwards compatible API changes +- Better debugging/logging +- Updates for the newest js-data alpha + +##### 3.0.0-alpha.3 - 10 January 2016 + +###### Backwards compatible API changes +- Added updateMany, createMany, and responseError methods. + +##### 3.0.0-alpha.2 - 09 January 2016 + +###### Breaking API changes +- All options that could be found at `DSHttpAdapter#defaults` will now be on +the actual instances of `DSHttpAdapter`. e.g. `DSHttpAdapter#defaults.deserialize` +is now at `DSHttpAdapter#deserialize`. This makes it easier to extend the +`DSHttpAdapter` class and override its methods. + +###### Backwards compatible API changes +- Added lifecycle methods: beforeFind, afterPOST, etc. +- Added support for the `raw` option + +##### 3.0.0-alpha.1 - 12 December 2015 + +###### Breaking API changes +- Actions are now part of js-data-http, rather than js-data +- Now requires js-data 3.x or greater + +###### Backwards compatible API changes +- Added option to support use of `window.fetch` +- Added option to supply custom http implementation + +###### Other +- Published the js-data-http-node package, a build of js-data-http that works in Node.js + ##### 2.1.2 - 28 October 2015 ###### Backwards compatible API changes diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 3398b84..5f11066 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -6,7 +6,7 @@ # [commit count] Name 1 InternalFX 1 Ivan Voznyakovsky - 66 Jason Dobry + 69 Jason Dobry 1 Josh Drake 1 RobertHerhold 3 Tomás Fox diff --git a/dist/js-data-http.js b/dist/js-data-http.js index 3ef2051..226ae5c 100644 --- a/dist/js-data-http.js +++ b/dist/js-data-http.js @@ -60,8 +60,6 @@ return /******/ (function(modules) { // webpackBootstrap var _jsData = __webpack_require__(1); - function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - /* global fetch:true Headers:true Request:true */ var axios = __webpack_require__(2); var _ = _jsData.utils._; @@ -71,6 +69,7 @@ return /******/ (function(modules) { // webpackBootstrap var extend = _jsData.utils.extend; var fillIn = _jsData.utils.fillIn; var forOwn = _jsData.utils.forOwn; + var get = _jsData.utils.get; var isArray = _jsData.utils.isArray; var isFunction = _jsData.utils.isFunction; var isNumber = _jsData.utils.isNumber; @@ -937,18 +936,16 @@ return /******/ (function(modules) { // webpackBootstrap var self = this; opts || (opts = {}); opts.params || (opts.params = {}); + var relationList = mapper.relationList || []; + var endpoint = isUndefined(opts.endpoint) ? isUndefined(mapper.endpoint) ? mapper.name : mapper.endpoint : opts.endpoint; - var endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : mapper.endpoint; - var parents = mapper.parents || (mapper.parent ? _defineProperty({}, mapper.parent, { - key: mapper.parentKey, - field: mapper.parentField - }) : {}); - - forOwn(parents, function (parent, parentName) { + relationList.forEach(function (def) { + if (def.type !== 'belongsTo' || !def.parent) { + return; + } var item = void 0; - var parentKey = parent.key; - var parentField = parent.field; - var parentDef = mapper.getResource(parentName); + var parentKey = def.foreignKey; + var parentDef = def.getRelation(); var parentId = opts.params[parentKey]; if (parentId === false || !parentKey || !parentDef) { @@ -959,14 +956,12 @@ return /******/ (function(modules) { // webpackBootstrap } else { delete opts.params[parentKey]; - if (isString(id) || isNumber(id)) { - item = mapper.get(id); - } else if (isObject(id)) { + if (isObject(id)) { item = id; } if (item) { - parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null); + parentId = parentId || def.getForeignKey(item) || (def.getLocalField(item) ? get(def.getLocalField(item), parentDef.idAttribute) : null); } if (parentId) { @@ -977,7 +972,7 @@ return /******/ (function(modules) { // webpackBootstrap _opts[key] = value; }); _(_opts, parentDef); - endpoint = makePath(self.getEndpoint(parentDef, parentId, _opts, parentId, endpoint)); + endpoint = makePath(self.getEndpoint(parentDef, parentId, _opts), parentId, endpoint); return { v: false }; @@ -1003,7 +998,7 @@ return /******/ (function(modules) { // webpackBootstrap getPath: function getPath(method, mapper, id, opts) { var self = this; opts || (opts = {}); - var args = [opts.basePath === undefined ? mapper.basePath === undefined ? self.basePath : mapper.basePath : opts.basePath, self.getEndpoint(mapper, isString(id) || isNumber(id) || method === 'create' ? id : null, opts)]; + var args = [isUndefined(opts.basePath) ? isUndefined(mapper.basePath) ? self.basePath : mapper.basePath : opts.basePath, self.getEndpoint(mapper, isString(id) || isNumber(id) || method === 'create' ? id : null, opts)]; if (method === 'find' || method === 'update' || method === 'destroy') { args.push(id); } diff --git a/dist/js-data-http.js.map b/dist/js-data-http.js.map index 2d34f6e..9e8793e 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 26241d036b9781089fe3","webpack:///./src/index.js","webpack:///external {\"amd\":\"js-data\",\"commonjs\":\"js-data\",\"commonjs2\":\"js-data\",\"root\":\"JSData\"}","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/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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;;AAmCA,QAAO,OAAP,GAAiB,WAAjB,C;;;;;;ACn8CA,gD;;;;;;ACAA,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;;AAEA;AACA;AACA;AACA;AACA;;AAEA;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;;;;;;;ACvHD;;AAEA;;AAEA,iCAAgC;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;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;AACA;;;;;;;AC9DA;;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,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;;;;;;;ACnPA;;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;;AAEA;AACA;AACA;;AAEA;AACA,2CAA0C;AAC1C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;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;;AAEA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;;;;;;;ACjIA;;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;;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[\"HttpAdapter\"] = factory(require(\"js-data\"));\n\telse\n\t\troot[\"HttpAdapter\"] = 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 26241d036b9781089fe3\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nconst {\n _,\n addHiddenPropsToTarget,\n copy,\n deepMixIn,\n extend,\n fillIn,\n forOwn,\n isArray,\n isFunction,\n isNumber,\n isObject,\n isSorN,\n isString,\n isUndefined,\n resolve,\n reject,\n toJson\n} = utils\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 forOwn(params, function (val, key) {\n if (val === null || typeof val === 'undefined') {\n return\n }\n if (!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 (isObject(v)) {\n v = 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 noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n}\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#debug\n * @type {boolean}\n * @default false\n */\n debug: false,\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 * @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\n // Default values for arguments\n opts || (opts = {})\n\n fillIn(self, opts)\n fillIn(self, DEFAULTS)\n}\n\naddHiddenPropsToTarget(HttpAdapter.prototype, {\n /**\n * @name HttpAdapter#afterCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreate: noop2,\n\n /**\n * @name HttpAdapter#afterCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreateMany: noop2,\n\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#afterDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroy: noop2,\n\n /**\n * @name HttpAdapter#afterDestroyAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroyAll: noop2,\n\n /**\n * @name HttpAdapter#afterFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFind: noop2,\n\n /**\n * @name HttpAdapter#afterFindAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFindAll: 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#afterUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdate: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateAll: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateMany: noop2,\n\n /**\n * @name HttpAdapter#beforeCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n */\n beforeCreate: noop,\n\n /**\n * @name HttpAdapter#beforeCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeCreateMany: noop,\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#beforeDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeDestroy: noop,\n\n /**\n * @name HttpAdapter#beforeDestroyAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeDestroyAll: noop,\n\n /**\n * @name HttpAdapter#beforeFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeFind: noop,\n\n /**\n * @name HttpAdapter#beforeFindAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeFindAll: 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 /**\n * @name HttpAdapter#beforeUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n */\n beforeUpdate: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n */\n beforeUpdateAll: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeUpdateMany: noop,\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreate lifecycle hook\n op = opts.op = 'beforeCreate'\n return resolve(self[op](mapper, props, opts)).then(function () {\n op = opts.op = 'create'\n self.dbg(op, mapper, props, opts)\n return self.POST(\n self.getPath('create', mapper, props, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreate lifecycle hook\n op = opts.op = 'afterCreate'\n return resolve(self[op](mapper, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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} 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 createMany (mapper, records, opts) {\n const self = this\n let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreateMany lifecycle hook\n op = opts.op = 'beforeCreateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'createMany'\n self.dbg(op, mapper, records, opts)\n return self.POST(\n self.getPath('createMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreateMany lifecycle hook\n op = opts.op = 'afterCreateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n },\n\n /**\n * Call {@link HttpAdapter#log} at the \"debug\" level.\n *\n * @name HttpAdapter#dbg\n * @method\n * @param {...*} [args] Args passed to {@link HttpAdapter#log}.\n */\n dbg (...args) {\n this.log('debug', ...args)\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.deserialize)) {\n return opts.deserialize(mapper, response, opts)\n }\n if (isFunction(mapper.deserialize)) {\n return mapper.deserialize(mapper, response, opts)\n }\n if (opts.raw) {\n return response\n }\n return response ? ('data' in response ? response.data : response) : 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroy lifecycle hook\n op = opts.op = 'beforeDestroy'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy'\n self.dbg(op, mapper, id, opts)\n return self.DEL(\n self.getPath('destroy', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroy lifecycle hook\n op = opts.op = 'afterDestroy'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroyAll lifecycle hook\n op = opts.op = 'beforeDestroyAll'\n return resolve(self.beforeDestroyAll(mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll'\n self.dbg(op, mapper, query, opts)\n return self.DEL(\n self.getPath('destroyAll', mapper, null, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 = 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeFind lifecycle hook\n op = opts.op = 'beforeFind'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find'\n self.dbg(op, mapper, id, opts)\n return self.GET(\n self.getPath('find', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFind lifecycle hook\n op = opts.op = 'afterFind'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll'\n return resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll'\n self.dbg(op, mapper, query, opts)\n return self.GET(\n self.getPath('findAll', mapper, opts.params, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFindAll lifecycle hook\n op = opts.op = 'afterFindAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 || (opts.params = {})\n\n let endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : mapper.endpoint\n let parents = mapper.parents || (mapper.parent ? {\n [mapper.parent]: {\n key: mapper.parentKey,\n field: mapper.parentField\n }\n } : {})\n\n forOwn(parents, function (parent, parentName) {\n let item\n let parentKey = parent.key\n let parentField = parent.field\n let parentDef = mapper.getResource(parentName)\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 (isString(id) || isNumber(id)) {\n item = mapper.get(id)\n } else if (isObject(id)) {\n item = id\n }\n\n if (item) {\n parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null)\n }\n\n if (parentId) {\n delete opts.endpoint\n const _opts = {}\n forOwn(opts, function (value, key) {\n _opts[key] = value\n })\n _(_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 opts.basePath === undefined ? (mapper.basePath === undefined ? self.basePath : mapper.basePath) : opts.basePath,\n self.getEndpoint(mapper, (isString(id) || 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 /**\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 = copy(config, null, null, null, ['data', 'cache', 'timeout'])\n config = 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 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 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 resolve(self.afterHTTP(config, opts, response)).then(function (_response) {\n return _response || response\n })\n })\n },\n\n /**\n * Log the provided arguments at the specified leve.\n *\n * @name HttpAdapter#log\n * @method\n * @param {string} level Log level.\n * @param {...*} [args] Arguments to log.\n */\n log (level, ...args) {\n if (level && !args.length) {\n args.push(level)\n level = 'debug'\n }\n if (level === 'debug' && !this.debug) {\n return\n }\n const prefix = `${level.toUpperCase()}: (HttpAdapter)`\n if (console[level]) {\n console[level](prefix, ...args)\n } else {\n console.log(prefix, ...args)\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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.queryTransform)) {\n return opts.queryTransform(mapper, params, opts)\n }\n if (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 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 (isFunction(opts.serialize)) {\n return opts.serialize(mapper, data, opts)\n }\n if (isFunction(mapper.serialize)) {\n return mapper.serialize(mapper, data, opts)\n }\n return data\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdate lifecycle hook\n op = opts.op = 'beforeUpdate'\n return resolve(self[op](mapper, id, props, opts)).then(function () {\n op = opts.op = 'update'\n self.dbg(op, mapper, id, props, opts)\n return self.PUT(\n self.getPath('update', mapper, id, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdate lifecycle hook\n op = opts.op = 'afterUpdate'\n return resolve(self[op](mapper, id, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateAll lifecycle hook\n op = opts.op = 'beforeUpdateAll'\n return resolve(self[op](mapper, props, query, opts)).then(function () {\n op = opts.op = 'updateAll'\n self.dbg(op, mapper, props, query, opts)\n return self.PUT(\n self.getPath('updateAll', mapper, null, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateAll lifecycle hook\n op = opts.op = 'afterUpdateAll'\n return resolve(self[op](mapper, props, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'updateMany'\n self.dbg(op, mapper, records, opts)\n return self.PUT(\n self.getPath('updateMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateMany lifecycle hook\n op = opts.op = 'afterUpdateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n }\n})\n\n/**\n * Add an Http actions to a mapper.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.addAction = function (name, opts) {\n if (!name || !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 reject(err) }\n mapper[name] = function (id, _opts) {\n const self = this\n if (isObject(id)) {\n _opts = id\n }\n _opts = _opts || {}\n let adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http')\n let config = {}\n 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, isSorN(id) ? id : null, _opts)\n ]\n if (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 deepMixIn(config)(_opts)\n return 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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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 = extend\n\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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 **/","module.exports = require('./lib/axios');\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/index.js\n ** module id = 2\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\naxios.create = function create(defaultConfig) {\n return new Axios(defaultConfig);\n};\n\n// Expose defaults\naxios.defaults = defaultInstance.defaults;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose interceptors\naxios.interceptors = defaultInstance.interceptors;\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 = 3\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 transformResponseJSON(data, headers) {\n if (utils.isFormData(data)) {\n return data;\n }\n if (utils.isArrayBuffer(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 transformResponseJSON(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\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/defaults.js\n ** module id = 4\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 * 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 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 = 5\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 = 6\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 = 7\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 = window.btoa || require('./../helpers/btoa');\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\n // For IE 8/9 CORS support\n // Only supports POST and GET calls and doesn't returns the response headers.\n if (window.XDomainRequest && !('withCredentials' in request) && !isURLSameOrigin(config.url)) {\n request = new window.XDomainRequest();\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 // Listen for ready state\n request.onload = function handleLoad() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = ['text', ''].indexOf(config.responseType || '') !== -1 ? 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 };\n\n // Resolve or reject the Promise based on the status\n ((response.status >= 200 && response.status < 300) ||\n (!('status' in request) && response.responseText) ?\n resolve :\n 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 // 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 if (utils.isArrayBuffer(requestData)) {\n requestData = new DataView(requestData);\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 = 8\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 = 9\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 = 10\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 = 11\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 = 12\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 InvalidCharacterError(message) {\n this.message = message;\n}\nInvalidCharacterError.prototype = new Error;\nInvalidCharacterError.prototype.code = 5;\nInvalidCharacterError.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 InvalidCharacterError('INVALID_CHARACTER_ERR: DOM Exception 5');\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 = 13\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 = 14\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 = 15\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 = 16\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 = 17\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 = 18\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 = 19\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap c25fee57fa59ccdb97ca","webpack:///./src/index.js","webpack:///external {\"amd\":\"js-data\",\"commonjs\":\"js-data\",\"commonjs2\":\"js-data\",\"root\":\"JSData\"}","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/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;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;;AAEA;AACA;AACA;AACA;AACA;;AAEA;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;;;;;;;ACvHD;;AAEA;;AAEA,iCAAgC;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;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;AACA;;;;;;;AC9DA;;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,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;;;;;;;ACnPA;;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;;AAEA;AACA;AACA;;AAEA;AACA,2CAA0C;AAC1C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;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;;AAEA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;;;;;;;ACjIA;;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;;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[\"HttpAdapter\"] = factory(require(\"js-data\"));\n\telse\n\t\troot[\"HttpAdapter\"] = 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 c25fee57fa59ccdb97ca\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nconst {\n _,\n addHiddenPropsToTarget,\n copy,\n deepMixIn,\n extend,\n fillIn,\n forOwn,\n get,\n isArray,\n isFunction,\n isNumber,\n isObject,\n isSorN,\n isString,\n isUndefined,\n resolve,\n reject,\n toJson\n} = utils\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 forOwn(params, function (val, key) {\n if (val === null || typeof val === 'undefined') {\n return\n }\n if (!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 (isObject(v)) {\n v = 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 noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n}\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#debug\n * @type {boolean}\n * @default false\n */\n debug: false,\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 * @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\n // Default values for arguments\n opts || (opts = {})\n\n fillIn(self, opts)\n fillIn(self, DEFAULTS)\n}\n\naddHiddenPropsToTarget(HttpAdapter.prototype, {\n /**\n * @name HttpAdapter#afterCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreate: noop2,\n\n /**\n * @name HttpAdapter#afterCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreateMany: noop2,\n\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#afterDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroy: noop2,\n\n /**\n * @name HttpAdapter#afterDestroyAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroyAll: noop2,\n\n /**\n * @name HttpAdapter#afterFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFind: noop2,\n\n /**\n * @name HttpAdapter#afterFindAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFindAll: 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#afterUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdate: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateAll: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateMany: noop2,\n\n /**\n * @name HttpAdapter#beforeCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n */\n beforeCreate: noop,\n\n /**\n * @name HttpAdapter#beforeCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeCreateMany: noop,\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#beforeDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeDestroy: noop,\n\n /**\n * @name HttpAdapter#beforeDestroyAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeDestroyAll: noop,\n\n /**\n * @name HttpAdapter#beforeFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeFind: noop,\n\n /**\n * @name HttpAdapter#beforeFindAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeFindAll: 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 /**\n * @name HttpAdapter#beforeUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n */\n beforeUpdate: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n */\n beforeUpdateAll: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeUpdateMany: noop,\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreate lifecycle hook\n op = opts.op = 'beforeCreate'\n return resolve(self[op](mapper, props, opts)).then(function () {\n op = opts.op = 'create'\n self.dbg(op, mapper, props, opts)\n return self.POST(\n self.getPath('create', mapper, props, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreate lifecycle hook\n op = opts.op = 'afterCreate'\n return resolve(self[op](mapper, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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} 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 createMany (mapper, records, opts) {\n const self = this\n let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreateMany lifecycle hook\n op = opts.op = 'beforeCreateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'createMany'\n self.dbg(op, mapper, records, opts)\n return self.POST(\n self.getPath('createMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreateMany lifecycle hook\n op = opts.op = 'afterCreateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n },\n\n /**\n * Call {@link HttpAdapter#log} at the \"debug\" level.\n *\n * @name HttpAdapter#dbg\n * @method\n * @param {...*} [args] Args passed to {@link HttpAdapter#log}.\n */\n dbg (...args) {\n this.log('debug', ...args)\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.deserialize)) {\n return opts.deserialize(mapper, response, opts)\n }\n if (isFunction(mapper.deserialize)) {\n return mapper.deserialize(mapper, response, opts)\n }\n if (opts.raw) {\n return response\n }\n return response ? ('data' in response ? response.data : response) : 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroy lifecycle hook\n op = opts.op = 'beforeDestroy'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy'\n self.dbg(op, mapper, id, opts)\n return self.DEL(\n self.getPath('destroy', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroy lifecycle hook\n op = opts.op = 'afterDestroy'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroyAll lifecycle hook\n op = opts.op = 'beforeDestroyAll'\n return resolve(self.beforeDestroyAll(mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll'\n self.dbg(op, mapper, query, opts)\n return self.DEL(\n self.getPath('destroyAll', mapper, null, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 = 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeFind lifecycle hook\n op = opts.op = 'beforeFind'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find'\n self.dbg(op, mapper, id, opts)\n return self.GET(\n self.getPath('find', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFind lifecycle hook\n op = opts.op = 'afterFind'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll'\n return resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll'\n self.dbg(op, mapper, query, opts)\n return self.GET(\n self.getPath('findAll', mapper, opts.params, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFindAll lifecycle hook\n op = opts.op = 'afterFindAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 || (opts.params = {})\n const relationList = mapper.relationList || []\n let endpoint = isUndefined(opts.endpoint) ? (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 (isObject(id)) {\n item = id\n }\n\n if (item) {\n parentId = parentId || def.getForeignKey(item) || (def.getLocalField(item) ? get(def.getLocalField(item), parentDef.idAttribute) : null)\n }\n\n if (parentId) {\n delete opts.endpoint\n const _opts = {}\n forOwn(opts, function (value, key) {\n _opts[key] = value\n })\n _(_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 isUndefined(opts.basePath) ? (isUndefined(mapper.basePath) ? self.basePath : mapper.basePath) : opts.basePath,\n self.getEndpoint(mapper, (isString(id) || 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 /**\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 = copy(config, null, null, null, ['data', 'cache', 'timeout'])\n config = 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 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 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 resolve(self.afterHTTP(config, opts, response)).then(function (_response) {\n return _response || response\n })\n })\n },\n\n /**\n * Log the provided arguments at the specified leve.\n *\n * @name HttpAdapter#log\n * @method\n * @param {string} level Log level.\n * @param {...*} [args] Arguments to log.\n */\n log (level, ...args) {\n if (level && !args.length) {\n args.push(level)\n level = 'debug'\n }\n if (level === 'debug' && !this.debug) {\n return\n }\n const prefix = `${level.toUpperCase()}: (HttpAdapter)`\n if (console[level]) {\n console[level](prefix, ...args)\n } else {\n console.log(prefix, ...args)\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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.queryTransform)) {\n return opts.queryTransform(mapper, params, opts)\n }\n if (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 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 (isFunction(opts.serialize)) {\n return opts.serialize(mapper, data, opts)\n }\n if (isFunction(mapper.serialize)) {\n return mapper.serialize(mapper, data, opts)\n }\n return data\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdate lifecycle hook\n op = opts.op = 'beforeUpdate'\n return resolve(self[op](mapper, id, props, opts)).then(function () {\n op = opts.op = 'update'\n self.dbg(op, mapper, id, props, opts)\n return self.PUT(\n self.getPath('update', mapper, id, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdate lifecycle hook\n op = opts.op = 'afterUpdate'\n return resolve(self[op](mapper, id, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateAll lifecycle hook\n op = opts.op = 'beforeUpdateAll'\n return resolve(self[op](mapper, props, query, opts)).then(function () {\n op = opts.op = 'updateAll'\n self.dbg(op, mapper, props, query, opts)\n return self.PUT(\n self.getPath('updateAll', mapper, null, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateAll lifecycle hook\n op = opts.op = 'afterUpdateAll'\n return resolve(self[op](mapper, props, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'updateMany'\n self.dbg(op, mapper, records, opts)\n return self.PUT(\n self.getPath('updateMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateMany lifecycle hook\n op = opts.op = 'afterUpdateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n }\n})\n\n/**\n * Add an Http actions to a mapper.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.addAction = function (name, opts) {\n if (!name || !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 reject(err) }\n mapper[name] = function (id, _opts) {\n const self = this\n if (isObject(id)) {\n _opts = id\n }\n _opts = _opts || {}\n let adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http')\n let config = {}\n 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, isSorN(id) ? id : null, _opts)\n ]\n if (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 deepMixIn(config)(_opts)\n return 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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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 = extend\n\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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 **/","module.exports = require('./lib/axios');\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/index.js\n ** module id = 2\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\naxios.create = function create(defaultConfig) {\n return new Axios(defaultConfig);\n};\n\n// Expose defaults\naxios.defaults = defaultInstance.defaults;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose interceptors\naxios.interceptors = defaultInstance.interceptors;\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 = 3\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 transformResponseJSON(data, headers) {\n if (utils.isFormData(data)) {\n return data;\n }\n if (utils.isArrayBuffer(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 transformResponseJSON(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\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/defaults.js\n ** module id = 4\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 * 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 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 = 5\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 = 6\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 = 7\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 = window.btoa || require('./../helpers/btoa');\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\n // For IE 8/9 CORS support\n // Only supports POST and GET calls and doesn't returns the response headers.\n if (window.XDomainRequest && !('withCredentials' in request) && !isURLSameOrigin(config.url)) {\n request = new window.XDomainRequest();\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 // Listen for ready state\n request.onload = function handleLoad() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = ['text', ''].indexOf(config.responseType || '') !== -1 ? 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 };\n\n // Resolve or reject the Promise based on the status\n ((response.status >= 200 && response.status < 300) ||\n (!('status' in request) && response.responseText) ?\n resolve :\n 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 // 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 if (utils.isArrayBuffer(requestData)) {\n requestData = new DataView(requestData);\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 = 8\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 = 9\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 = 10\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 = 11\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 = 12\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 InvalidCharacterError(message) {\n this.message = message;\n}\nInvalidCharacterError.prototype = new Error;\nInvalidCharacterError.prototype.code = 5;\nInvalidCharacterError.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 InvalidCharacterError('INVALID_CHARACTER_ERR: DOM Exception 5');\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 = 13\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 = 14\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 = 15\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 = 16\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 = 17\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 = 18\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 = 19\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 3a47aeb..20cf0af 100644 --- a/dist/js-data-http.min.js +++ b/dist/js-data-http.min.js @@ -1,16 +1,21 @@ /*! * js-data-http +<<<<<<< 2cf30160e77226553e97988a45f3fcb29165092c <<<<<<< c4fb0646f59935877a8537ad264717c6cabf0ff3 * @version 2.2.1 - Homepage ======= * @version 3.0.0-alpha.5 - Homepage >>>>>>> Rebase +======= +* @version 3.0.0-alpha.6 - Homepage +>>>>>>> 3.0.0-alpha.6 * @author Jason Dobry * @copyright (c) 2014-2015 Jason Dobry * @license MIT * * @overview HTTP adapter for js-data. */ +<<<<<<< 2cf30160e77226553e97988a45f3fcb29165092c <<<<<<< c4fb0646f59935877a8537ad264717c6cabf0ff3 !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.DSHttpAdapter=t(require("js-data")):e.DSHttpAdapter=t(e.JSData)}(this,function(e){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={exports:{},id:n,loaded:!1};return e[n].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}([function(e,t,r){"use strict";function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a="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=function(){function e(e,t){for(var r=0;r=200&&t.status<300&&!o?(r.defaults.log&&r.defaults.log(i,t),t):(r.defaults.error&&r.defaults.error("FAILED: "+i,t),f.Promise.reject(t))}return r.defaults.error("FAILED",t),f.Promise.reject(t)}var r=this,n=new Date,o=e.data,i=e.cache,s=e.timeout;e=p(e,null,null,null,["data","cache","timeout"]),e=l(e,r.defaults.httpConfig),e.data=o,e.cache=i,e.timeout=s,"verbsUseBasePath"in e||(e.verbsUseBasePath=r.defaults.verbsUseBasePath),!e.urlOverride&&e.verbsUseBasePath&&(e.url=d(e.basePath||r.defaults.basePath,e.url)),r.defaults.forceTrailingSlash&&"/"!==e.url[e.url.length-1]&&!e.urlOverride&&(e.url+="/"),"object"===a(e.data)&&(e.data=c(e.data)),e.method=e.method.toUpperCase();var u=e.suffix||r.defaults.suffix;if(u&&e.url.substr(e.url.length-u.length)!==u&&!e.urlOverride&&(e.url+=u),!this.http)throw new Error("You have not configured this adapter with an http library!");return this.http(e).then(t,function(e){return t(e,!0)})}},{key:"GET",value:function(e,t){return t=t||{},t.method=t.method||"get",t.urlOverride=!!t.url,t.url=t.url||e,this.HTTP(t)}},{key:"POST",value:function(e,t,r){return r=r||{},r.method=r.method||"post",r.urlOverride=!!r.url,r.url=r.url||e,r.data=r.data||t,this.HTTP(r)}},{key:"PUT",value:function(e,t,r){return r=r||{},r.method=r.method||"put",r.urlOverride=!!r.url,r.url=r.url||e,r.data=r.data||t,this.HTTP(r)}},{key:"DEL",value:function(e,t){return t=t||{},t.method=t.method||"delete",t.urlOverride=!!t.url,t.url=t.url||e,this.HTTP(t)}},{key:"find",value:function(e,t,r){var n=this;return r=r?p(r):{},r.suffix=r.suffix||e.suffix,r.params=r.params||{},r.params=n.defaults.queryTransform(e,r.params),n.GET(n.getPath("find",e,t,r),r).then(function(t){var o=(r.deserialize?r.deserialize:n.defaults.deserialize)(e,t);return o?o:f.Promise.reject(new Error("Not Found!"))})}},{key:"findAll",value:function(e,t,r){var n=this;return r=r?p(r):{},r.suffix=r.suffix||e.suffix,r.params=r.params||{},t&&(t=n.defaults.queryTransform(e,t),l(r.params,t)),n.GET(n.getPath("findAll",e,t,r),r).then(function(t){return(r.deserialize?r.deserialize:n.defaults.deserialize)(e,t)})}},{key:"create",value:function(e,t,r){var n=this;return r=r?p(r):{},r.suffix=r.suffix||e.suffix,r.params=r.params||{},r.params=n.defaults.queryTransform(e,r.params),n.POST(n.getPath("create",e,t,r),r.serialize?r.serialize(e,t):n.defaults.serialize(e,t),r).then(function(t){return(r.deserialize?r.deserialize:n.defaults.deserialize)(e,t)})}},{key:"update",value:function(e,t,r,n){var o=this;return n=n?p(n):{},n.suffix=n.suffix||e.suffix,n.params=n.params||{},n.params=o.defaults.queryTransform(e,n.params),o.PUT(o.getPath("update",e,t,n),n.serialize?n.serialize(e,r):o.defaults.serialize(e,r),n).then(function(t){return(n.deserialize?n.deserialize:o.defaults.deserialize)(e,t)})}},{key:"updateAll",value:function(e,t,r,n){var o=this;return n=n?p(n):{},n.suffix=n.suffix||e.suffix,n.params=n.params||{},r&&(r=o.defaults.queryTransform(e,r),l(n.params,r)),this.PUT(o.getPath("updateAll",e,t,n),n.serialize?n.serialize(e,t):o.defaults.serialize(e,t),n).then(function(t){return(n.deserialize?n.deserialize:o.defaults.deserialize)(e,t)})}},{key:"destroy",value:function(e,t,r){var n=this;return r=r?p(r):{},r.suffix=r.suffix||e.suffix,r.params=r.params||{},r.params=n.defaults.queryTransform(e,r.params),n.DEL(n.getPath("destroy",e,t,r),r).then(function(t){return(r.deserialize?r.deserialize:n.defaults.deserialize)(e,t)})}},{key:"destroyAll",value:function(e,t,r){var n=this;return r=r?p(r):{},r.suffix=r.suffix||e.suffix,r.params=r.params||{},t&&(t=n.defaults.queryTransform(e,t),l(r.params,t)),this.DEL(n.getPath("destroyAll",e,t,r),r).then(function(t){return(r.deserialize?r.deserialize:n.defaults.deserialize)(e,t)})}}]),e}();g.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=g},function(t,r){t.exports=e},function(e,t,r){e.exports=r(3)},function(e,t,r){"use strict";function n(e){this.defaults=a.merge({},e),this.interceptors={request:new s,response:new s}}var o=r(4),a=r(5),i=r(6),s=r(15),u=r(16),f=r(17),l=r(18),c=r(11);n.prototype.request=function(e){"string"==typeof e&&(e=a.merge({url:arguments[0]},arguments[1])),e=a.merge(o,this.defaults,{method:"get"},e),e.baseURL&&!u(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=a.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),a.forEach(["delete","get","head","post","put","patch","common"],function(t){delete e.headers[t]});var t=[i,void 0],r=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;)r=r.then(t.shift(),t.shift());return r};var p=new n(o),d=e.exports=l(n.prototype.request,p);d.create=function(e){return new n(e)},d.defaults=p.defaults,d.all=function(e){return Promise.all(e)},d.spread=r(19),d.interceptors=p.interceptors,a.forEach(["delete","get","head"],function(e){n.prototype[e]=function(t,r){return this.request(a.merge(r||{},{method:e,url:t}))},d[e]=l(n.prototype[e],p)}),a.forEach(["post","put","patch"],function(e){n.prototype[e]=function(t,r,n){return this.request(a.merge(n||{},{method:e,url:t,data:r}))},d[e]=l(n.prototype[e],p)})},function(e,t,r){"use strict";var n=r(5),o=/^\)\]\}',?\n/,a={"Content-Type":"application/x-www-form-urlencoded"};e.exports={transformRequest:[function(e,t){return n.isFormData(e)?e:n.isArrayBuffer(e)?e:n.isArrayBufferView(e)?e.buffer:!n.isObject(e)||n.isFile(e)||n.isBlob(e)?e:(n.isUndefined(t)||(n.forEach(t,function(e,r){"content-type"===r.toLowerCase()&&(t["Content-Type"]=e)}),n.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:n.merge(a),post:n.merge(a),put:n.merge(a)},timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"}},function(e,t){"use strict";function r(e){return"[object Array]"===v.call(e)}function n(e){return"[object ArrayBuffer]"===v.call(e)}function o(e){return"[object FormData]"===v.call(e)}function a(e){var t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer}function i(e){return"string"==typeof e}function s(e){return"number"==typeof e}function u(e){return"undefined"==typeof e}function f(e){return null!==e&&"object"==typeof e}function l(e){return"[object Date]"===v.call(e)}function c(e){return"[object File]"===v.call(e)}function p(e){return"[object Blob]"===v.call(e)}function d(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function h(){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||r(e)||(e=[e]),r(e))for(var n=0,o=e.length;o>n;n++)t.call(null,e[n],n,e);else for(var a in e)e.hasOwnProperty(a)&&t.call(null,e[a],a,e)}function y(){function e(e,r){"object"==typeof t[r]&&"object"==typeof e?t[r]=y(t[r],e):t[r]=e}for(var t={},r=0,n=arguments.length;n>r;r++)m(arguments[r],e);return t}var v=Object.prototype.toString;e.exports={isArray:r,isArrayBuffer:n,isFormData:o,isArrayBufferView:a,isString:i,isNumber:s,isObject:f,isUndefined:u,isDate:l,isFile:c,isBlob:p,isStandardBrowserEnv:h,forEach:m,merge:y,trim:d}},function(e,t,r){(function(t){"use strict";e.exports=function(e){return new Promise(function(n,o){try{var a;"function"==typeof e.adapter?a=e.adapter:"undefined"!=typeof XMLHttpRequest?a=r(8):"undefined"!=typeof t&&(a=r(8)),"function"==typeof a&&a(n,o,e)}catch(e){o(e)}})}}).call(t,r(7))},function(e,t){function r(){f=!1,i.length?u=i.concat(u):l=-1,u.length&&n()}function n(){if(!f){var e=setTimeout(r);f=!0;for(var t=u.length;t;){for(i=u,u=[];++l1)for(var r=1;r=200&&o.status<300||!("status"in p)&&o.responseText?e:t)(o),p=null}},p.onerror=function(){t(new Error("Network Error")),p=null},n.isStandardBrowserEnv()){var m=r(14),y=f.withCredentials||s(f.url)?m.read(f.xsrfCookieName):void 0;y&&(c[f.xsrfHeaderName]=y)}if("setRequestHeader"in p&&n.forEach(c,function(e,t){"undefined"==typeof l&&"content-type"===t.toLowerCase()?delete c[t]:p.setRequestHeader(t,e)}),f.withCredentials&&(p.withCredentials=!0),f.responseType)try{p.responseType=f.responseType}catch(e){if("json"!==p.responseType)throw e}n.isArrayBuffer(l)&&(l=new DataView(l)),p.send(l)}},function(e,t,r){"use strict";function n(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,"]")}var o=r(5);e.exports=function(e,t,r){if(!t)return e;var a;if(r)a=r(t);else{var i=[];o.forEach(t,function(e,t){null!==e&&"undefined"!=typeof e&&(o.isArray(e)&&(t+="[]"),o.isArray(e)||(e=[e]),o.forEach(e,function(e){o.isDate(e)?e=e.toISOString():o.isObject(e)&&(e=JSON.stringify(e)),i.push(n(t)+"="+n(e))}))}),a=i.join("&")}return a&&(e+=(-1===e.indexOf("?")?"?":"&")+a),e}},function(e,t,r){"use strict";var n=r(5);e.exports=function(e){var t,r,o,a={};return e?(n.forEach(e.split("\n"),function(e){o=e.indexOf(":"),t=n.trim(e.substr(0,o)).toLowerCase(),r=n.trim(e.substr(o+1)),t&&(a[t]=a[t]?a[t]+", "+r:r)}),a):a}},function(e,t,r){"use strict";var n=r(5);e.exports=function(e,t,r){return n.forEach(r,function(r){e=r(e,t)}),e}},function(e,t,r){"use strict";var n=r(5);e.exports=n.isStandardBrowserEnv()?function(){function e(e){var t=e;return r&&(o.setAttribute("href",t),t=o.href),o.setAttribute("href",t),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}var t,r=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");return t=e(window.location.href),function(r){var o=n.isString(r)?e(r):r;return o.protocol===t.protocol&&o.host===t.host}}():function(){return function(){return!0}}()},function(e,t){"use strict";function r(e){this.message=e}function n(e){for(var t,n,a=String(e),i="",s=0,u=o;a.charAt(0|s)||(u="=",s%1);i+=u.charAt(63&t>>8-s%1*8)){if(n=a.charCodeAt(s+=.75),n>255)throw new r("INVALID_CHARACTER_ERR: DOM Exception 5");t=t<<8|n}return i}var o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";r.prototype=new Error,r.prototype.code=5,r.prototype.name="InvalidCharacterError",e.exports=n},function(e,t,r){"use strict";var n=r(5);e.exports=n.isStandardBrowserEnv()?function(){return{write:function(e,t,r,o,a,i){var s=[];s.push(e+"="+encodeURIComponent(t)),n.isNumber(r)&&s.push("expires="+new Date(r).toGMTString()),n.isString(o)&&s.push("path="+o),n.isString(a)&&s.push("domain="+a),i===!0&&s.push("secure"),document.cookie=s.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,r){"use strict";function n(){this.handlers=[]}var o=r(5);n.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},n.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},n.prototype.forEach=function(e){o.forEach(this.handlers,function(t){null!==t&&e(t)})},e.exports=n},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 r=new Array(arguments.length),n=0;nr;r++)t[r]=arguments[r];var n=i(t,"/");return n.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 s(e,t){if(!t)return e;var r=[];return b(t,function(e,t){null!==e&&"undefined"!=typeof e&&(x(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():A(e)&&(e=D(e)),r.push(u(t)+"="+u(e))}))}),r.length>0&&(e+=(-1===e.indexOf("?")?"?":"&")+r.join("&")),e}function f(e){var t=this;e||(e={}),v(t,e),v(t,z)}var c="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},p=r(1),l=r(2),d=p.utils._,h=p.utils.addHiddenPropsToTarget,m=p.utils.copy,y=p.utils.deepMixIn,g=p.utils.extend,v=p.utils.fillIn,b=p.utils.forOwn,x=p.utils.isArray,T=p.utils.isFunction,w=p.utils.isNumber,A=p.utils.isObject,E=p.utils.isSorN,P=p.utils.isString,C=p.utils.isUndefined,S=p.utils.resolve,j=p.utils.reject,D=p.utils.toJson,U=!1;try{U=window&&window.fetch}catch(e){}var q=function(){for(var e=this,t=arguments.length,r=Array(t),n=0;t>n;n++)r[n]=arguments[n];var o=r[r.length-1];e.dbg.apply(e,[o.op].concat(r))},O=function(){for(var e=this,t=arguments.length,r=Array(t),n=0;t>n;n++)r[n]=arguments[n];var o=r[r.length-2];e.dbg.apply(e,[o.op].concat(r))},z={basePath:"",debug:!1,forceTrailingSlash:!1,http:l,httpConfig:{},suffix:"",useFetch:!1};h(f.prototype,{afterCreate:O,afterCreateMany:O,afterDEL:O,afterDestroy:O,afterDestroyAll:O,afterFind:O,afterFindAll:O,afterGET:O,afterHTTP:O,afterPOST:O,afterPUT:O,afterUpdate:O,afterUpdateAll:O,afterUpdateMany:O,beforeCreate:q,beforeCreateMany:q,beforeDEL:q,beforeDestroy:q,beforeDestroyAll:q,beforeFind:q,beforeFindAll:q,beforeGET:q,beforeHTTP:q,beforePOST:q,beforePUT:q,beforeUpdate:q,beforeUpdateAll:q,beforeUpdateMany:q,create:function(e,t,r){var n=this,o=void 0;return r=r?m(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeCreate",S(n[o](e,t,r)).then(function(){return o=r.op="create",n.dbg(o,e,t,r),n.POST(n.getPath("create",e,t,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterCreate",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},createMany:function(e,t,r){var n=this,o=void 0;return r=r?m(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeCreateMany",S(n[o](e,t,r)).then(function(){return o=r.op="createMany",n.dbg(o,e,t,r),n.POST(n.getPath("createMany",e,null,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterCreateMany",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},dbg:function(){for(var e=arguments.length,t=Array(e),r=0;e>r;r++)t[r]=arguments[r];this.log.apply(this,["debug"].concat(t))},DEL:function(e,t,r){var n=this,o=void 0;return t||(t={}),r||(r={}),t.url=e||t.url,t.method=t.method||"delete",o=r.op="beforeDEL",S(n[o](e,t,r)).then(function(i){return t=C(i)?t:i,o=r.op="DEL",n.dbg(o,e,t,r),n.HTTP(t,r)}).then(function(i){return o=r.op="afterDEL",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},deserialize:function(e,t,r){return r||(r={}),T(r.deserialize)?r.deserialize(e,t,r):T(e.deserialize)?e.deserialize(e,t,r):r.raw?t:t&&"data"in t?t.data:t},destroy:function(e,t,r){var n=this,o=void 0;return r=r?m(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeDestroy",S(n[o](e,t,r)).then(function(){return o=r.op="destroy",n.dbg(o,e,t,r),n.DEL(n.getPath("destroy",e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterDestroy",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},destroyAll:function(e,t,r){var n=this,o=void 0;return t||(t={}),r=r?m(r):{},r.params||(r.params={}),y(r.params,t),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeDestroyAll",S(n.beforeDestroyAll(e,t,r)).then(function(){return o=r.op="destroyAll",n.dbg(o,e,t,r),n.DEL(n.getPath("destroyAll",e,null,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterDestroyAll",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},error:function(){if(console){var e;(e=console)["function"==typeof console.error?"error":"log"].apply(e,arguments)}},fetch:function(e){function t(t,r){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}(function(e,t){var r={method:e.method,headers:new Headers(e.headers)};return e.data&&(r.body=D(e.data)),fetch(new Request(s(e.url,e.params),r)).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,r){var n=this,o=void 0;return r=r?m(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeFind",S(n[o](e,t,r)).then(function(){return o=r.op="find",n.dbg(o,e,t,r),n.GET(n.getPath("find",e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterFind",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},findAll:function(e,t,r){var n=this,o=void 0;return t||(t={}),r=r?m(r):{},r.params||(r.params={}),r.suffix=C(r.suffix)?e.suffix:r.suffix,y(r.params,t),r.params=n.queryTransform(e,r.params,r),o=r.op="beforeFindAll",S(n[o](e,t,r)).then(function(){return o=r.op="findAll",n.dbg(o,e,t,r),n.GET(n.getPath("findAll",e,r.params,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterFindAll",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},GET:function(e,t,r){var n=this,o=void 0;return t||(t={}),r||(r={}),t.url=e||t.url,t.method=t.method||"get",o=r.op="beforeGET",S(n[o](e,t,r)).then(function(i){return t=C(i)?t:i,o=r.op="GET",n.dbg(o,e,t,r),n.HTTP(t,r)}).then(function(i){return o=r.op="afterGET",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},getEndpoint:function(e,t,r){var o=this;r||(r={}),r.params||(r.params={});var i=r.hasOwnProperty("endpoint")?r.endpoint:e.endpoint,u=e.parents||(e.parent?n({},e.parent,{key:e.parentKey,field:e.parentField}):{});return b(u,function(n,u){var s=void 0,f=n.key,p=n.field,l=e.getResource(u),h=r.params[f];if(h===!1||!f||!l)return h===!1&&delete r.params[f],!1;if(delete r.params[f],P(t)||w(t)?s=e.get(t):A(t)&&(s=t),s&&(h=h||s[f]||(s[p]?s[p][l.idAttribute]:null)),h){var m=function(){delete r.endpoint;var e={};return b(r,function(t,r){e[r]=t}),d(e,l),i=a(o.getEndpoint(l,h,e,h,i)),{v:!1}}();if("object"===("undefined"==typeof m?"undefined":c(m)))return m.v}}),i},getPath:function(e,t,r,n){var o=this;n||(n={});var i=[void 0===n.basePath?void 0===t.basePath?o.basePath:t.basePath:n.basePath,o.getEndpoint(t,P(r)||w(r)||"create"===e?r:null,n)];return"find"!==e&&"update"!==e&&"destroy"!==e||i.push(r),a.apply(p.utils,i)},HTTP:function(e,t){function r(t){var r=o.toUTCString()+" - "+e.method.toUpperCase()+" "+e.url+" - "+t.status+" "+((new Date).getTime()-o.getTime())+"ms";return t.status>=200&&t.status<300?(n.log&&n.dbg("debug",r,t),t):(n.error&&n.error("'FAILED: "+r,t),j(t))}var n=this,o=new Date;t||(t={}),e=m(e),e=y(e,n.httpConfig),n.forceTrailingSlash&&"/"!==e.url[e.url.length-1]&&(e.url+="/"),e.method=e.method.toUpperCase();var i=e.suffix||t.suffix||n.suffix;if(i&&e.url.substr(e.url.length-i.length)!==i&&(e.url+=i),!n.http)throw new Error("You have not configured this adapter with an http library!");return S(n.beforeHTTP(e,t)).then(function(o){return e=o||e,U&&(n.useFetch||t.useFetch||!n.http)?n.fetch(e,t).then(r,r):n.http(e).then(r,r).catch(function(r){return n.responseError(r,e,t)})}).then(function(r){return S(n.afterHTTP(e,t,r)).then(function(e){return e||r})})},log:function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;t>n;n++)r[n-1]=arguments[n];if(e&&!r.length&&(r.push(e),e="debug"),"debug"!==e||this.debug){var o=e.toUpperCase()+": (HttpAdapter)";if(console[e]){var i;(i=console)[e].apply(i,[o].concat(r))}else{var a;(a=console).log.apply(a,[o].concat(r))}}},POST:function(e,t,r,n){var o=this,i=void 0;return r||(r={}),n||(n={}),r.url=e||r.url,r.data=t||r.data,r.method=r.method||"post",i=n.op="beforePOST",S(o[i](e,t,r,n)).then(function(a){return r=C(a)?r:a,i=n.op="POST",o.dbg(i,e,t,r,n),o.HTTP(r,n)}).then(function(a){return i=n.op="afterPOST",S(o[i](e,t,r,n,a)).then(function(e){return C(e)?a:e})})},PUT:function(e,t,r,n){var o=this,i=void 0;return r||(r={}),n||(n={}),r.url=e||r.url,r.data=t||r.data,r.method=r.method||"put",i=n.op="beforePUT",S(o[i](e,t,r,n)).then(function(a){return r=C(a)?r:a,i=n.op="PUT",o.dbg(i,e,t,r,n),o.HTTP(r,n)}).then(function(a){return i=n.op="afterPUT",S(o[i](e,t,r,n,a)).then(function(e){return C(e)?a:e})})},queryTransform:function(e,t,r){return r||(r={}),T(r.queryTransform)?r.queryTransform(e,t,r):T(e.queryTransform)?e.queryTransform(e,t,r):t},responseError:function(e,t,r){return j(e)},serialize:function(e,t,r){return r||(r={}),T(r.serialize)?r.serialize(e,t,r):T(e.serialize)?e.serialize(e,t,r):t},update:function(e,t,r,n){var o=this,i=void 0;return n=n?m(n):{},n.params||(n.params={}),n.params=o.queryTransform(e,n.params,n),n.suffix=C(n.suffix)?e.suffix:n.suffix,i=n.op="beforeUpdate",S(o[i](e,t,r,n)).then(function(){return i=n.op="update",o.dbg(i,e,t,r,n),o.PUT(o.getPath("update",e,t,n),o.serialize(e,r,n),n)}).then(function(t){return o.deserialize(e,t,n)}).then(function(a){return i=n.op="afterUpdate",S(o[i](e,t,r,n,a)).then(function(e){return C(e)?a:e})})},updateAll:function(e,t,r,n){var o=this,i=void 0;return r||(r={}),n=n?m(n):{},n.params||(n.params={}),y(n.params,r),n.params=o.queryTransform(e,n.params,n),n.suffix=C(n.suffix)?e.suffix:n.suffix,i=n.op="beforeUpdateAll",S(o[i](e,t,r,n)).then(function(){return i=n.op="updateAll",o.dbg(i,e,t,r,n),o.PUT(o.getPath("updateAll",e,null,n),o.serialize(e,t,n),n)}).then(function(t){return o.deserialize(e,t,n)}).then(function(a){return i=n.op="afterUpdateAll",S(o[i](e,t,r,n,a)).then(function(e){return C(e)?a:e})})},updateMany:function(e,t,r){var n=this,o=void 0;return r=r?m(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeUpdateMany",S(n[o](e,t,r)).then(function(){return o=r.op="updateMany",n.dbg(o,e,t,r),n.PUT(n.getPath("updateMany",e,null,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterUpdateMany",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})}}),f.addAction=function(e,t){if(!e||!P(e))throw new TypeError("action(name[, opts]): Expected: string, Found: "+("undefined"==typeof e?"undefined":c(e)));return function(r){if(r[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 j(e)},r[e]=function(r,n){var o=this;A(r)&&(n=r),n=n||{};var i=o.getAdapter(t.adapter||o.defaultAdapter||"http"),u={};if(v(u,t),!n.hasOwnProperty("endpoint")&&u.endpoint&&(n.endpoint=u.endpoint),"function"==typeof n.getEndpoint)u.url=n.getEndpoint(o,n);else{var s=[n.basePath||o.basePath||i.basePath,i.getEndpoint(o,E(r)?r:null,n)];E(r)&&s.push(r),s.push(t.pathname||e),u.url=a.apply(null,s)}return u.method=u.method||"GET",u.mapper=o.name,y(u)(n),S(u).then(n.request||t.request).then(function(e){return i.HTTP(e)}).then(function(e){return e&&e.config&&(e.config.mapper=o.name),e}).then(n.response||t.response,n.responseError||t.responseError)},r}},f.addActions=function(e){return e||(e={}),function(e){return b(e,function(t,r){f.addAction(r,t)(e)}),e}},f.extend=g,f.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=f},function(t,r){t.exports=e},function(e,t,r){e.exports=r(3)},function(e,t,r){"use strict";function n(e){this.defaults=i.merge({},e),this.interceptors={request:new u,response:new u}}var o=r(4),i=r(5),a=r(6),u=r(15),s=r(16),f=r(17),c=r(18),p=r(11);n.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=p(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=[a,void 0],r=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;)r=r.then(t.shift(),t.shift());return r};var l=new n(o),d=e.exports=c(n.prototype.request,l);d.create=function(e){return new n(e)},d.defaults=l.defaults,d.all=function(e){return Promise.all(e)},d.spread=r(19),d.interceptors=l.interceptors,i.forEach(["delete","get","head"],function(e){n.prototype[e]=function(t,r){return this.request(i.merge(r||{},{method:e,url:t}))},d[e]=c(n.prototype[e],l)}),i.forEach(["post","put","patch"],function(e){n.prototype[e]=function(t,r,n){return this.request(i.merge(n||{},{method:e,url:t,data:r}))},d[e]=c(n.prototype[e],l)})},function(e,t,r){"use strict";var n=r(5),o=/^\)\]\}',?\n/,i={"Content-Type":"application/x-www-form-urlencoded"};e.exports={transformRequest:[function(e,t){return n.isFormData(e)?e:n.isArrayBuffer(e)?e:n.isArrayBufferView(e)?e.buffer:!n.isObject(e)||n.isFile(e)||n.isBlob(e)?e:(n.isUndefined(t)||(n.forEach(t,function(e,r){"content-type"===r.toLowerCase()&&(t["Content-Type"]=e)}),n.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:n.merge(i),post:n.merge(i),put:n.merge(i)},timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"}},function(e,t){"use strict";function r(e){return"[object Array]"===g.call(e)}function n(e){return"[object ArrayBuffer]"===g.call(e)}function o(e){return"[object FormData]"===g.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 a(e){return"string"==typeof e}function u(e){return"number"==typeof e}function s(e){return"undefined"==typeof e}function f(e){return null!==e&&"object"==typeof e}function c(e){return"[object Date]"===g.call(e)}function p(e){return"[object File]"===g.call(e)}function l(e){return"[object Blob]"===g.call(e)}function d(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function h(){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||r(e)||(e=[e]),r(e))for(var n=0,o=e.length;o>n;n++)t.call(null,e[n],n,e);else for(var i in e)e.hasOwnProperty(i)&&t.call(null,e[i],i,e)}function y(){function e(e,r){"object"==typeof t[r]&&"object"==typeof e?t[r]=y(t[r],e):t[r]=e}for(var t={},r=0,n=arguments.length;n>r;r++)m(arguments[r],e);return t}var g=Object.prototype.toString;e.exports={isArray:r,isArrayBuffer:n,isFormData:o,isArrayBufferView:i,isString:a,isNumber:u,isObject:f,isUndefined:s,isDate:c,isFile:p,isBlob:l,isStandardBrowserEnv:h,forEach:m,merge:y,trim:d}},function(e,t,r){(function(t){"use strict";e.exports=function(e){return new Promise(function(n,o){try{var i;"function"==typeof e.adapter?i=e.adapter:"undefined"!=typeof XMLHttpRequest?i=r(8):"undefined"!=typeof t&&(i=r(8)),"function"==typeof i&&i(n,o,e)}catch(e){o(e)}})}}).call(t,r(7))},function(e,t){function r(){f=!1,a.length?s=a.concat(s):c=-1,s.length&&n()}function n(){if(!f){var e=setTimeout(r);f=!0;for(var t=s.length;t;){for(a=s,s=[];++c1)for(var r=1;r=200&&o.status<300||!("status"in l)&&o.responseText?e:t)(o),l=null}},l.onerror=function(){t(new Error("Network Error")),l=null},n.isStandardBrowserEnv()){var m=r(14),y=f.withCredentials||u(f.url)?m.read(f.xsrfCookieName):void 0;y&&(p[f.xsrfHeaderName]=y)}if("setRequestHeader"in l&&n.forEach(p,function(e,t){"undefined"==typeof c&&"content-type"===t.toLowerCase()?delete p[t]:l.setRequestHeader(t,e)}),f.withCredentials&&(l.withCredentials=!0),f.responseType)try{l.responseType=f.responseType}catch(e){if("json"!==l.responseType)throw e}n.isArrayBuffer(c)&&(c=new DataView(c)),l.send(c)}},function(e,t,r){"use strict";function n(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,"]")}var o=r(5);e.exports=function(e,t,r){if(!t)return e;var i;if(r)i=r(t);else{var a=[];o.forEach(t,function(e,t){null!==e&&"undefined"!=typeof e&&(o.isArray(e)&&(t+="[]"),o.isArray(e)||(e=[e]),o.forEach(e,function(e){o.isDate(e)?e=e.toISOString():o.isObject(e)&&(e=JSON.stringify(e)),a.push(n(t)+"="+n(e))}))}),i=a.join("&")}return i&&(e+=(-1===e.indexOf("?")?"?":"&")+i),e}},function(e,t,r){"use strict";var n=r(5);e.exports=function(e){var t,r,o,i={};return e?(n.forEach(e.split("\n"),function(e){o=e.indexOf(":"),t=n.trim(e.substr(0,o)).toLowerCase(),r=n.trim(e.substr(o+1)),t&&(i[t]=i[t]?i[t]+", "+r:r)}),i):i}},function(e,t,r){"use strict";var n=r(5);e.exports=function(e,t,r){return n.forEach(r,function(r){e=r(e,t)}),e}},function(e,t,r){"use strict";var n=r(5);e.exports=n.isStandardBrowserEnv()?function(){function e(e){var t=e;return r&&(o.setAttribute("href",t),t=o.href),o.setAttribute("href",t),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}var t,r=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");return t=e(window.location.href),function(r){var o=n.isString(r)?e(r):r;return o.protocol===t.protocol&&o.host===t.host}}():function(){return function(){return!0}}()},function(e,t){"use strict";function r(e){this.message=e}function n(e){for(var t,n,i=String(e),a="",u=0,s=o;i.charAt(0|u)||(s="=",u%1);a+=s.charAt(63&t>>8-u%1*8)){if(n=i.charCodeAt(u+=.75),n>255)throw new r("INVALID_CHARACTER_ERR: DOM Exception 5");t=t<<8|n}return a}var o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";r.prototype=new Error,r.prototype.code=5,r.prototype.name="InvalidCharacterError",e.exports=n},function(e,t,r){"use strict";var n=r(5);e.exports=n.isStandardBrowserEnv()?function(){return{write:function(e,t,r,o,i,a){var u=[];u.push(e+"="+encodeURIComponent(t)),n.isNumber(r)&&u.push("expires="+new Date(r).toGMTString()),n.isString(o)&&u.push("path="+o),n.isString(i)&&u.push("domain="+i),a===!0&&u.push("secure"),document.cookie=u.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,r){"use strict";function n(){this.handlers=[]}var o=r(5);n.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},n.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},n.prototype.forEach=function(e){o.forEach(this.handlers,function(t){null!==t&&e(t)})},e.exports=n},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 r=new Array(arguments.length),n=0;n>>>>>> Rebase +======= +!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.HttpAdapter=t(require("js-data")):e.HttpAdapter=t(e.JSData)}(this,function(e){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={exports:{},id:n,loaded:!1};return e[n].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}([function(e,t,r){"use strict";function n(e){return null!=e&&""!==e}function o(e,t){return t||(t=""),e.filter(n).join(t)}function i(){for(var e=arguments.length,t=Array(e),r=0;e>r;r++)t[r]=arguments[r];var n=o(t,"/");return n.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 r=[];return v(t,function(e,t){null!==e&&"undefined"!=typeof e&&(x(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():A(e)&&(e=D(e)),r.push(a(t)+"="+a(e))}))}),r.length>0&&(e+=(-1===e.indexOf("?")?"?":"&")+r.join("&")),e}function s(e){var t=this;e||(e={}),g(t,e),g(t,O)}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},c=r(1),p=r(2),l=c.utils._,d=c.utils.addHiddenPropsToTarget,h=c.utils.copy,m=c.utils.deepMixIn,y=c.utils.extend,g=c.utils.fillIn,v=c.utils.forOwn,b=c.utils.get,x=c.utils.isArray,T=c.utils.isFunction,w=c.utils.isNumber,A=c.utils.isObject,E=c.utils.isSorN,P=c.utils.isString,C=c.utils.isUndefined,S=c.utils.resolve,j=c.utils.reject,D=c.utils.toJson,U=!1;try{U=window&&window.fetch}catch(e){}var q=function(){for(var e=this,t=arguments.length,r=Array(t),n=0;t>n;n++)r[n]=arguments[n];var o=r[r.length-1];e.dbg.apply(e,[o.op].concat(r))},z=function(){for(var e=this,t=arguments.length,r=Array(t),n=0;t>n;n++)r[n]=arguments[n];var o=r[r.length-2];e.dbg.apply(e,[o.op].concat(r))},O={basePath:"",debug:!1,forceTrailingSlash:!1,http:p,httpConfig:{},suffix:"",useFetch:!1};d(s.prototype,{afterCreate:z,afterCreateMany:z,afterDEL:z,afterDestroy:z,afterDestroyAll:z,afterFind:z,afterFindAll:z,afterGET:z,afterHTTP:z,afterPOST:z,afterPUT:z,afterUpdate:z,afterUpdateAll:z,afterUpdateMany:z,beforeCreate:q,beforeCreateMany:q,beforeDEL:q,beforeDestroy:q,beforeDestroyAll:q,beforeFind:q,beforeFindAll:q,beforeGET:q,beforeHTTP:q,beforePOST:q,beforePUT:q,beforeUpdate:q,beforeUpdateAll:q,beforeUpdateMany:q,create:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeCreate",S(n[o](e,t,r)).then(function(){return o=r.op="create",n.dbg(o,e,t,r),n.POST(n.getPath("create",e,t,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterCreate",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},createMany:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeCreateMany",S(n[o](e,t,r)).then(function(){return o=r.op="createMany",n.dbg(o,e,t,r),n.POST(n.getPath("createMany",e,null,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterCreateMany",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},dbg:function(){for(var e=arguments.length,t=Array(e),r=0;e>r;r++)t[r]=arguments[r];this.log.apply(this,["debug"].concat(t))},DEL:function(e,t,r){var n=this,o=void 0;return t||(t={}),r||(r={}),t.url=e||t.url,t.method=t.method||"delete",o=r.op="beforeDEL",S(n[o](e,t,r)).then(function(i){return t=C(i)?t:i,o=r.op="DEL",n.dbg(o,e,t,r),n.HTTP(t,r)}).then(function(i){return o=r.op="afterDEL",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},deserialize:function(e,t,r){return r||(r={}),T(r.deserialize)?r.deserialize(e,t,r):T(e.deserialize)?e.deserialize(e,t,r):r.raw?t:t&&"data"in t?t.data:t},destroy:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeDestroy",S(n[o](e,t,r)).then(function(){return o=r.op="destroy",n.dbg(o,e,t,r),n.DEL(n.getPath("destroy",e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterDestroy",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},destroyAll:function(e,t,r){var n=this,o=void 0;return t||(t={}),r=r?h(r):{},r.params||(r.params={}),m(r.params,t),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeDestroyAll",S(n.beforeDestroyAll(e,t,r)).then(function(){return o=r.op="destroyAll",n.dbg(o,e,t,r),n.DEL(n.getPath("destroyAll",e,null,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterDestroyAll",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},error:function(){if(console){var e;(e=console)["function"==typeof console.error?"error":"log"].apply(e,arguments)}},fetch:function(e){function t(t,r){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}(function(e,t){var r={method:e.method,headers:new Headers(e.headers)};return e.data&&(r.body=D(e.data)),fetch(new Request(u(e.url,e.params),r)).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,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeFind",S(n[o](e,t,r)).then(function(){return o=r.op="find",n.dbg(o,e,t,r),n.GET(n.getPath("find",e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterFind",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},findAll:function(e,t,r){var n=this,o=void 0;return t||(t={}),r=r?h(r):{},r.params||(r.params={}),r.suffix=C(r.suffix)?e.suffix:r.suffix,m(r.params,t),r.params=n.queryTransform(e,r.params,r),o=r.op="beforeFindAll",S(n[o](e,t,r)).then(function(){return o=r.op="findAll",n.dbg(o,e,t,r),n.GET(n.getPath("findAll",e,r.params,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterFindAll",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},GET:function(e,t,r){var n=this,o=void 0;return t||(t={}),r||(r={}),t.url=e||t.url,t.method=t.method||"get",o=r.op="beforeGET",S(n[o](e,t,r)).then(function(i){return t=C(i)?t:i,o=r.op="GET",n.dbg(o,e,t,r),n.HTTP(t,r)}).then(function(i){return o=r.op="afterGET",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},getEndpoint:function(e,t,r){var n=this;r||(r={}),r.params||(r.params={});var o=e.relationList||[],a=C(r.endpoint)?C(e.endpoint)?e.name:e.endpoint:r.endpoint;return o.forEach(function(e){if("belongsTo"===e.type&&e.parent){var o=void 0,u=e.foreignKey,s=e.getRelation(),c=r.params[u];if(c===!1||!u||!s)return c===!1&&delete r.params[u],!1;if(delete r.params[u],A(t)&&(o=t),o&&(c=c||e.getForeignKey(o)||(e.getLocalField(o)?b(e.getLocalField(o),s.idAttribute):null)),c){var p=function(){delete r.endpoint;var e={};return v(r,function(t,r){e[r]=t}),l(e,s),a=i(n.getEndpoint(s,c,e),c,a),{v:!1}}();if("object"===("undefined"==typeof p?"undefined":f(p)))return p.v}}}),a},getPath:function(e,t,r,n){var o=this;n||(n={});var a=[C(n.basePath)?C(t.basePath)?o.basePath:t.basePath:n.basePath,o.getEndpoint(t,P(r)||w(r)||"create"===e?r:null,n)];return"find"!==e&&"update"!==e&&"destroy"!==e||a.push(r),i.apply(c.utils,a)},HTTP:function(e,t){function r(t){var r=o.toUTCString()+" - "+e.method.toUpperCase()+" "+e.url+" - "+t.status+" "+((new Date).getTime()-o.getTime())+"ms";return t.status>=200&&t.status<300?(n.log&&n.dbg("debug",r,t),t):(n.error&&n.error("'FAILED: "+r,t),j(t))}var n=this,o=new Date;t||(t={}),e=h(e),e=m(e,n.httpConfig),n.forceTrailingSlash&&"/"!==e.url[e.url.length-1]&&(e.url+="/"),e.method=e.method.toUpperCase();var i=e.suffix||t.suffix||n.suffix;if(i&&e.url.substr(e.url.length-i.length)!==i&&(e.url+=i),!n.http)throw new Error("You have not configured this adapter with an http library!");return S(n.beforeHTTP(e,t)).then(function(o){return e=o||e,U&&(n.useFetch||t.useFetch||!n.http)?n.fetch(e,t).then(r,r):n.http(e).then(r,r).catch(function(r){return n.responseError(r,e,t)})}).then(function(r){return S(n.afterHTTP(e,t,r)).then(function(e){return e||r})})},log:function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;t>n;n++)r[n-1]=arguments[n];if(e&&!r.length&&(r.push(e),e="debug"),"debug"!==e||this.debug){var o=e.toUpperCase()+": (HttpAdapter)";if(console[e]){var i;(i=console)[e].apply(i,[o].concat(r))}else{var a;(a=console).log.apply(a,[o].concat(r))}}},POST:function(e,t,r,n){var o=this,i=void 0;return r||(r={}),n||(n={}),r.url=e||r.url,r.data=t||r.data,r.method=r.method||"post",i=n.op="beforePOST",S(o[i](e,t,r,n)).then(function(a){return r=C(a)?r:a,i=n.op="POST",o.dbg(i,e,t,r,n),o.HTTP(r,n)}).then(function(a){return i=n.op="afterPOST",S(o[i](e,t,r,n,a)).then(function(e){return C(e)?a:e})})},PUT:function(e,t,r,n){var o=this,i=void 0;return r||(r={}),n||(n={}),r.url=e||r.url,r.data=t||r.data,r.method=r.method||"put",i=n.op="beforePUT",S(o[i](e,t,r,n)).then(function(a){return r=C(a)?r:a,i=n.op="PUT",o.dbg(i,e,t,r,n),o.HTTP(r,n)}).then(function(a){return i=n.op="afterPUT",S(o[i](e,t,r,n,a)).then(function(e){return C(e)?a:e})})},queryTransform:function(e,t,r){return r||(r={}),T(r.queryTransform)?r.queryTransform(e,t,r):T(e.queryTransform)?e.queryTransform(e,t,r):t},responseError:function(e,t,r){return j(e)},serialize:function(e,t,r){return r||(r={}),T(r.serialize)?r.serialize(e,t,r):T(e.serialize)?e.serialize(e,t,r):t},update:function(e,t,r,n){var o=this,i=void 0;return n=n?h(n):{},n.params||(n.params={}),n.params=o.queryTransform(e,n.params,n),n.suffix=C(n.suffix)?e.suffix:n.suffix,i=n.op="beforeUpdate",S(o[i](e,t,r,n)).then(function(){return i=n.op="update",o.dbg(i,e,t,r,n),o.PUT(o.getPath("update",e,t,n),o.serialize(e,r,n),n)}).then(function(t){return o.deserialize(e,t,n)}).then(function(a){return i=n.op="afterUpdate",S(o[i](e,t,r,n,a)).then(function(e){return C(e)?a:e})})},updateAll:function(e,t,r,n){var o=this,i=void 0;return r||(r={}),n=n?h(n):{},n.params||(n.params={}),m(n.params,r),n.params=o.queryTransform(e,n.params,n),n.suffix=C(n.suffix)?e.suffix:n.suffix,i=n.op="beforeUpdateAll",S(o[i](e,t,r,n)).then(function(){return i=n.op="updateAll",o.dbg(i,e,t,r,n),o.PUT(o.getPath("updateAll",e,null,n),o.serialize(e,t,n),n)}).then(function(t){return o.deserialize(e,t,n)}).then(function(a){return i=n.op="afterUpdateAll",S(o[i](e,t,r,n,a)).then(function(e){return C(e)?a:e})})},updateMany:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeUpdateMany",S(n[o](e,t,r)).then(function(){return o=r.op="updateMany",n.dbg(o,e,t,r),n.PUT(n.getPath("updateMany",e,null,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterUpdateMany",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})}}),s.addAction=function(e,t){if(!e||!P(e))throw new TypeError("action(name[, opts]): Expected: string, Found: "+("undefined"==typeof e?"undefined":f(e)));return function(r){if(r[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 j(e)},r[e]=function(r,n){var o=this;A(r)&&(n=r),n=n||{};var a=o.getAdapter(t.adapter||o.defaultAdapter||"http"),u={};if(g(u,t),!n.hasOwnProperty("endpoint")&&u.endpoint&&(n.endpoint=u.endpoint),"function"==typeof n.getEndpoint)u.url=n.getEndpoint(o,n);else{var s=[n.basePath||o.basePath||a.basePath,a.getEndpoint(o,E(r)?r:null,n)];E(r)&&s.push(r),s.push(t.pathname||e),u.url=i.apply(null,s)}return u.method=u.method||"GET",u.mapper=o.name,m(u)(n),S(u).then(n.request||t.request).then(function(e){return a.HTTP(e)}).then(function(e){return e&&e.config&&(e.config.mapper=o.name),e}).then(n.response||t.response,n.responseError||t.responseError)},r}},s.addActions=function(e){return e||(e={}),function(e){return v(e,function(t,r){s.addAction(r,t)(e)}),e}},s.extend=y,s.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=s},function(t,r){t.exports=e},function(e,t,r){e.exports=r(3)},function(e,t,r){"use strict";function n(e){this.defaults=i.merge({},e),this.interceptors={request:new u,response:new u}}var o=r(4),i=r(5),a=r(6),u=r(15),s=r(16),f=r(17),c=r(18),p=r(11);n.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=p(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=[a,void 0],r=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;)r=r.then(t.shift(),t.shift());return r};var l=new n(o),d=e.exports=c(n.prototype.request,l);d.create=function(e){return new n(e)},d.defaults=l.defaults,d.all=function(e){return Promise.all(e)},d.spread=r(19),d.interceptors=l.interceptors,i.forEach(["delete","get","head"],function(e){n.prototype[e]=function(t,r){return this.request(i.merge(r||{},{method:e,url:t}))},d[e]=c(n.prototype[e],l)}),i.forEach(["post","put","patch"],function(e){n.prototype[e]=function(t,r,n){return this.request(i.merge(n||{},{method:e,url:t,data:r}))},d[e]=c(n.prototype[e],l)})},function(e,t,r){"use strict";var n=r(5),o=/^\)\]\}',?\n/,i={"Content-Type":"application/x-www-form-urlencoded"};e.exports={transformRequest:[function(e,t){return n.isFormData(e)?e:n.isArrayBuffer(e)?e:n.isArrayBufferView(e)?e.buffer:!n.isObject(e)||n.isFile(e)||n.isBlob(e)?e:(n.isUndefined(t)||(n.forEach(t,function(e,r){"content-type"===r.toLowerCase()&&(t["Content-Type"]=e)}),n.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:n.merge(i),post:n.merge(i),put:n.merge(i)},timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"}},function(e,t){"use strict";function r(e){return"[object Array]"===g.call(e)}function n(e){return"[object ArrayBuffer]"===g.call(e)}function o(e){return"[object FormData]"===g.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 a(e){return"string"==typeof e}function u(e){return"number"==typeof e}function s(e){return"undefined"==typeof e}function f(e){return null!==e&&"object"==typeof e}function c(e){return"[object Date]"===g.call(e)}function p(e){return"[object File]"===g.call(e)}function l(e){return"[object Blob]"===g.call(e)}function d(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function h(){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||r(e)||(e=[e]),r(e))for(var n=0,o=e.length;o>n;n++)t.call(null,e[n],n,e);else for(var i in e)e.hasOwnProperty(i)&&t.call(null,e[i],i,e)}function y(){function e(e,r){"object"==typeof t[r]&&"object"==typeof e?t[r]=y(t[r],e):t[r]=e}for(var t={},r=0,n=arguments.length;n>r;r++)m(arguments[r],e);return t}var g=Object.prototype.toString;e.exports={isArray:r,isArrayBuffer:n,isFormData:o,isArrayBufferView:i,isString:a,isNumber:u,isObject:f,isUndefined:s,isDate:c,isFile:p,isBlob:l,isStandardBrowserEnv:h,forEach:m,merge:y,trim:d}},function(e,t,r){(function(t){"use strict";e.exports=function(e){return new Promise(function(n,o){try{var i;"function"==typeof e.adapter?i=e.adapter:"undefined"!=typeof XMLHttpRequest?i=r(8):"undefined"!=typeof t&&(i=r(8)),"function"==typeof i&&i(n,o,e)}catch(e){o(e)}})}}).call(t,r(7))},function(e,t){function r(){f=!1,a.length?s=a.concat(s):c=-1,s.length&&n()}function n(){if(!f){var e=setTimeout(r);f=!0;for(var t=s.length;t;){for(a=s,s=[];++c1)for(var r=1;r=200&&o.status<300||!("status"in l)&&o.responseText?e:t)(o),l=null}},l.onerror=function(){t(new Error("Network Error")),l=null},n.isStandardBrowserEnv()){var m=r(14),y=f.withCredentials||u(f.url)?m.read(f.xsrfCookieName):void 0;y&&(p[f.xsrfHeaderName]=y)}if("setRequestHeader"in l&&n.forEach(p,function(e,t){"undefined"==typeof c&&"content-type"===t.toLowerCase()?delete p[t]:l.setRequestHeader(t,e)}),f.withCredentials&&(l.withCredentials=!0),f.responseType)try{l.responseType=f.responseType}catch(e){if("json"!==l.responseType)throw e}n.isArrayBuffer(c)&&(c=new DataView(c)),l.send(c)}},function(e,t,r){"use strict";function n(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,"]")}var o=r(5);e.exports=function(e,t,r){if(!t)return e;var i;if(r)i=r(t);else{var a=[];o.forEach(t,function(e,t){null!==e&&"undefined"!=typeof e&&(o.isArray(e)&&(t+="[]"),o.isArray(e)||(e=[e]),o.forEach(e,function(e){o.isDate(e)?e=e.toISOString():o.isObject(e)&&(e=JSON.stringify(e)),a.push(n(t)+"="+n(e))}))}),i=a.join("&")}return i&&(e+=(-1===e.indexOf("?")?"?":"&")+i),e}},function(e,t,r){"use strict";var n=r(5);e.exports=function(e){var t,r,o,i={};return e?(n.forEach(e.split("\n"),function(e){o=e.indexOf(":"),t=n.trim(e.substr(0,o)).toLowerCase(),r=n.trim(e.substr(o+1)),t&&(i[t]=i[t]?i[t]+", "+r:r)}),i):i}},function(e,t,r){"use strict";var n=r(5);e.exports=function(e,t,r){return n.forEach(r,function(r){e=r(e,t)}),e}},function(e,t,r){"use strict";var n=r(5);e.exports=n.isStandardBrowserEnv()?function(){function e(e){var t=e;return r&&(o.setAttribute("href",t),t=o.href),o.setAttribute("href",t),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}var t,r=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");return t=e(window.location.href),function(r){var o=n.isString(r)?e(r):r;return o.protocol===t.protocol&&o.host===t.host}}():function(){return function(){return!0}}()},function(e,t){"use strict";function r(e){this.message=e}function n(e){for(var t,n,i=String(e),a="",u=0,s=o;i.charAt(0|u)||(s="=",u%1);a+=s.charAt(63&t>>8-u%1*8)){if(n=i.charCodeAt(u+=.75),n>255)throw new r("INVALID_CHARACTER_ERR: DOM Exception 5");t=t<<8|n}return a}var o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";r.prototype=new Error,r.prototype.code=5,r.prototype.name="InvalidCharacterError",e.exports=n},function(e,t,r){"use strict";var n=r(5);e.exports=n.isStandardBrowserEnv()?function(){return{write:function(e,t,r,o,i,a){var u=[];u.push(e+"="+encodeURIComponent(t)),n.isNumber(r)&&u.push("expires="+new Date(r).toGMTString()),n.isString(o)&&u.push("path="+o),n.isString(i)&&u.push("domain="+i),a===!0&&u.push("secure"),document.cookie=u.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,r){"use strict";function n(){this.handlers=[]}var o=r(5);n.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},n.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},n.prototype.forEach=function(e){o.forEach(this.handlers,function(t){null!==t&&e(t)})},e.exports=n},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 r=new Array(arguments.length),n=0;n>>>>>> 3.0.0-alpha.6 diff --git a/dist/js-data-http.min.map b/dist/js-data-http.min.map index 6d9a1c6..a0b4f16 100644 --- a/dist/js-data-http.min.map +++ b/dist/js-data-http.min.map @@ -1,5 +1,9 @@ +<<<<<<< 2cf30160e77226553e97988a45f3fcb29165092c <<<<<<< c4fb0646f59935877a8537ad264717c6cabf0ff3 {"version":3,"sources":["dist/js-data-http.js"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_1__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","_classCallCheck","instance","Constructor","TypeError","_typeof","Symbol","iterator","constructor","_createClass","defineProperties","target","props","i","length","descriptor","protoProps","staticProps","prototype","JSData","axios","e","DSUtils","deepMixIn","removeCircular","copy","makePath","isString","isNumber","Defaults","resourceConfig","params","data","defaultsPrototype","basePath","forceTrailingSlash","httpConfig","verbsUseBasePath","DSHttpAdapter","options","defaults","console","log","a","b","info","error","http","endpoint","hasOwnProperty","parents","parent","parentKey","field","parentField","forOwn","parentName","_this2","item","parentDef","getResource","parentId","_sn","get","_o","idAttribute","_options","getEndpoint","_","method","_this","urlPath","apply","args","push","config","logResponse","isRejection","Error","message","Promise","reject","str","start","toUTCString","url","status","Date","getTime","payload","cache","timeout","urlOverride","toUpperCase","suffix","substr","then","HTTP","attrs","queryTransform","GET","getPath","deserialize","POST","serialize","PUT","DEL","version","full","major","parseInt","minor","patch","alpha","beta","Axios","defaultConfig","utils","merge","interceptors","request","InterceptorManager","response","dispatchRequest","isAbsoluteURL","combineURLs","bind","transformData","arguments","baseURL","withCredentials","headers","transformRequest","common","forEach","chain","undefined","promise","resolve","interceptor","unshift","fulfilled","rejected","shift","defaultInstance","create","all","promises","spread","PROTECTION_PREFIX","DEFAULT_CONTENT_TYPE","Content-Type","isFormData","isArrayBuffer","isArrayBufferView","buffer","isObject","isFile","isBlob","isUndefined","val","toLowerCase","JSON","stringify","transformResponse","replace","parse","Accept","post","put","xsrfCookieName","xsrfHeaderName","isArray","toString","result","ArrayBuffer","isView","isDate","trim","isStandardBrowserEnv","window","document","createElement","fn","l","assignValue","process","adapter","XMLHttpRequest","cleanUpNextTick","draining","currentQueue","queue","concat","queueIndex","drainQueue","setTimeout","len","run","clearTimeout","Item","fun","array","noop","nextTick","Array","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","binding","name","cwd","chdir","dir","umask","buildURL","parseHeaders","isURLSameOrigin","btoa","requestData","requestHeaders","XDomainRequest","auth","username","password","Authorization","open","paramsSerializer","onload","responseHeaders","getAllResponseHeaders","responseData","indexOf","responseType","responseText","statusText","onerror","cookies","xsrfValue","read","setRequestHeader","DataView","send","encode","encodeURIComponent","serializedParams","parts","v","toISOString","join","parsed","split","line","fns","resolveURL","href","msie","urlParsingNode","setAttribute","protocol","host","search","hash","hostname","port","pathname","charAt","originURL","test","navigator","userAgent","location","requestURL","InvalidCharacterError","input","block","charCode","String","output","idx","map","chars","charCodeAt","code","write","expires","path","domain","secure","cookie","toGMTString","match","RegExp","decodeURIComponent","remove","now","handlers","use","eject","h","relativeURL","thisArg","callback","arr"],"mappings":"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","file":"dist/js-data-http.min.js"} ======= {"version":3,"sources":["dist/js-data-http.js"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_1__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","isValidString","join","items","separator","filter","makePath","_len","arguments","length","args","Array","_key","result","replace","encode","val","encodeURIComponent","buildUrl","url","params","parts","forOwn","isArray","forEach","v","window","toString","toISOString","isObject","toJson","push","indexOf","HttpAdapter","opts","self","fillIn","DEFAULTS","_typeof","Symbol","iterator","constructor","_jsData","axios","_","utils","addHiddenPropsToTarget","copy","deepMixIn","extend","isFunction","isNumber","isSorN","isString","isUndefined","resolve","reject","hasFetch","fetch","e","noop","_len2","_key2","dbg","apply","op","concat","noop2","_len3","_key3","basePath","debug","forceTrailingSlash","http","httpConfig","suffix","useFetch","prototype","afterCreate","afterCreateMany","afterDEL","afterDestroy","afterDestroyAll","afterFind","afterFindAll","afterGET","afterHTTP","afterPOST","afterPUT","afterUpdate","afterUpdateAll","afterUpdateMany","beforeCreate","beforeCreateMany","beforeDEL","beforeDestroy","beforeDestroyAll","beforeFind","beforeFindAll","beforeGET","beforeHTTP","beforePOST","beforePUT","beforeUpdate","beforeUpdateAll","beforeUpdateMany","create","mapper","props","undefined","queryTransform","then","POST","getPath","serialize","response","deserialize","data","_data","createMany","records","_len4","_key4","log","DEL","config","method","_config","HTTP","_response","raw","destroy","destroyAll","query","error","console","_console","_fetch","_x","_x2","requestConfig","headers","Headers","body","Request","json","find","GET","findAll","getEndpoint","endpoint","hasOwnProperty","parents","parent","parentKey","field","parentField","parentName","item","parentDef","getResource","parentId","get","idAttribute","_ret","_opts","logResponse","str","start","toUTCString","toUpperCase","status","Date","getTime","substr","Error","catch","err","responseError","level","_len5","_key5","prefix","_console2","_console3","PUT","update","updateAll","updateMany","addAction","name","TypeError","request","adapter","getAdapter","defaultAdapter","_args","pathname","addActions","version","full","major","parseInt","minor","patch","alpha","beta","Axios","defaultConfig","defaults","merge","interceptors","InterceptorManager","dispatchRequest","isAbsoluteURL","combineURLs","bind","transformData","baseURL","withCredentials","transformRequest","common","chain","promise","Promise","interceptor","unshift","fulfilled","rejected","shift","defaultInstance","all","promises","spread","PROTECTION_PREFIX","DEFAULT_CONTENT_TYPE","Content-Type","isFormData","isArrayBuffer","isArrayBufferView","buffer","isFile","isBlob","toLowerCase","JSON","stringify","transformResponse","parse","Accept","post","put","timeout","xsrfCookieName","xsrfHeaderName","ArrayBuffer","isView","isDate","trim","isStandardBrowserEnv","document","createElement","fn","i","l","assignValue","process","XMLHttpRequest","cleanUpNextTick","draining","currentQueue","queue","queueIndex","drainQueue","setTimeout","len","run","clearTimeout","Item","fun","array","nextTick","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","binding","cwd","chdir","dir","umask","buildURL","parseHeaders","isURLSameOrigin","btoa","requestData","requestHeaders","XDomainRequest","auth","username","password","Authorization","open","paramsSerializer","onload","responseHeaders","getAllResponseHeaders","responseData","responseType","responseText","statusText","onerror","cookies","xsrfValue","read","setRequestHeader","DataView","send","serializedParams","parsed","split","line","fns","resolveURL","href","msie","urlParsingNode","setAttribute","protocol","host","search","hash","hostname","port","charAt","originURL","test","navigator","userAgent","location","requestURL","InvalidCharacterError","message","input","block","charCode","String","output","idx","map","chars","charCodeAt","code","write","expires","path","domain","secure","cookie","toGMTString","match","RegExp","decodeURIComponent","remove","now","handlers","use","eject","h","relativeURL","thisArg","callback","arr"],"mappings":"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","file":"dist/js-data-http.min.js"} >>>>>>> Rebase +======= +{"version":3,"sources":["dist/js-data-http.js"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_1__","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","forOwn","key","isArray","forEach","v","window","toString","toISOString","isObject","toJson","push","indexOf","HttpAdapter","opts","self","fillIn","DEFAULTS","_typeof","Symbol","iterator","obj","constructor","_jsData","axios","_","utils","addHiddenPropsToTarget","copy","deepMixIn","extend","get","isFunction","isNumber","isSorN","isString","isUndefined","resolve","reject","hasFetch","fetch","e","noop","_len2","_key2","dbg","apply","op","concat","noop2","_len3","_key3","basePath","debug","forceTrailingSlash","http","httpConfig","suffix","useFetch","prototype","afterCreate","afterCreateMany","afterDEL","afterDestroy","afterDestroyAll","afterFind","afterFindAll","afterGET","afterHTTP","afterPOST","afterPUT","afterUpdate","afterUpdateAll","afterUpdateMany","beforeCreate","beforeCreateMany","beforeDEL","beforeDestroy","beforeDestroyAll","beforeFind","beforeFindAll","beforeGET","beforeHTTP","beforePOST","beforePUT","beforeUpdate","beforeUpdateAll","beforeUpdateMany","create","mapper","props","undefined","queryTransform","then","POST","getPath","serialize","response","deserialize","data","_data","createMany","records","_len4","_key4","log","DEL","config","method","_config","HTTP","_response","raw","destroy","destroyAll","query","error","console","_console","_fetch","_x","_x2","requestConfig","headers","Headers","body","Request","json","find","GET","findAll","getEndpoint","relationList","endpoint","name","def","type","parent","item","parentKey","foreignKey","parentDef","getRelation","parentId","getForeignKey","getLocalField","idAttribute","_ret","_opts","logResponse","str","start","toUTCString","toUpperCase","status","Date","getTime","substr","Error","catch","err","responseError","level","_len5","_key5","prefix","_console2","_console3","PUT","update","updateAll","updateMany","addAction","TypeError","request","adapter","getAdapter","defaultAdapter","hasOwnProperty","_args","pathname","addActions","version","full","major","parseInt","minor","patch","alpha","beta","Axios","defaultConfig","defaults","merge","interceptors","InterceptorManager","dispatchRequest","isAbsoluteURL","combineURLs","bind","transformData","baseURL","withCredentials","transformRequest","common","chain","promise","Promise","interceptor","unshift","fulfilled","rejected","shift","defaultInstance","all","promises","spread","PROTECTION_PREFIX","DEFAULT_CONTENT_TYPE","Content-Type","isFormData","isArrayBuffer","isArrayBufferView","buffer","isFile","isBlob","toLowerCase","JSON","stringify","transformResponse","parse","Accept","post","put","timeout","xsrfCookieName","xsrfHeaderName","ArrayBuffer","isView","isDate","trim","isStandardBrowserEnv","document","createElement","fn","i","l","assignValue","Object","process","XMLHttpRequest","cleanUpNextTick","draining","currentQueue","queue","queueIndex","drainQueue","setTimeout","len","run","clearTimeout","Item","fun","array","nextTick","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","binding","cwd","chdir","dir","umask","buildURL","parseHeaders","isURLSameOrigin","btoa","requestData","requestHeaders","XDomainRequest","auth","username","password","Authorization","open","paramsSerializer","onload","responseHeaders","getAllResponseHeaders","responseData","responseType","responseText","statusText","onerror","cookies","xsrfValue","read","setRequestHeader","DataView","send","serializedParams","parsed","split","line","fns","resolveURL","href","msie","urlParsingNode","setAttribute","protocol","host","search","hash","hostname","port","charAt","originURL","test","navigator","userAgent","location","requestURL","InvalidCharacterError","message","input","block","charCode","String","output","idx","map","chars","charCodeAt","code","write","expires","path","domain","secure","cookie","toGMTString","match","RegExp","decodeURIComponent","remove","now","handlers","use","eject","h","relativeURL","thisArg","callback","arr"],"mappings":"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","file":"dist/js-data-http.min.js"} +>>>>>>> 3.0.0-alpha.6 diff --git a/fetch/AUTHORS b/fetch/AUTHORS index 370b7c6..9fe6289 100644 --- a/fetch/AUTHORS +++ b/fetch/AUTHORS @@ -6,6 +6,7 @@ # # commits Name or Organization # The email address is not required for organizations. InternalFX +Ivan Voznyakovsky Jason Dobry Josh Drake RobertHerhold diff --git a/fetch/CONTRIBUTORS b/fetch/CONTRIBUTORS index a5c9494..5f11066 100644 --- a/fetch/CONTRIBUTORS +++ b/fetch/CONTRIBUTORS @@ -5,7 +5,8 @@ # Names should be added to this file as: # [commit count] Name 1 InternalFX - 66 Jason Dobry + 1 Ivan Voznyakovsky + 69 Jason Dobry 1 Josh Drake 1 RobertHerhold 3 Tomás Fox diff --git a/fetch/dist/js-data-fetch.js b/fetch/dist/js-data-fetch.js index adeeef5..eb75b9f 100644 --- a/fetch/dist/js-data-fetch.js +++ b/fetch/dist/js-data-fetch.js @@ -60,8 +60,6 @@ return /******/ (function(modules) { // webpackBootstrap var _jsData = __webpack_require__(1); - function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - /* global fetch:true Headers:true Request:true */ var axios = __webpack_require__(2); var _ = _jsData.utils._; @@ -71,6 +69,7 @@ return /******/ (function(modules) { // webpackBootstrap var extend = _jsData.utils.extend; var fillIn = _jsData.utils.fillIn; var forOwn = _jsData.utils.forOwn; + var get = _jsData.utils.get; var isArray = _jsData.utils.isArray; var isFunction = _jsData.utils.isFunction; var isNumber = _jsData.utils.isNumber; @@ -937,18 +936,16 @@ return /******/ (function(modules) { // webpackBootstrap var self = this; opts || (opts = {}); opts.params || (opts.params = {}); + var relationList = mapper.relationList || []; + var endpoint = isUndefined(opts.endpoint) ? isUndefined(mapper.endpoint) ? mapper.name : mapper.endpoint : opts.endpoint; - var endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : mapper.endpoint; - var parents = mapper.parents || (mapper.parent ? _defineProperty({}, mapper.parent, { - key: mapper.parentKey, - field: mapper.parentField - }) : {}); - - forOwn(parents, function (parent, parentName) { + relationList.forEach(function (def) { + if (def.type !== 'belongsTo' || !def.parent) { + return; + } var item = void 0; - var parentKey = parent.key; - var parentField = parent.field; - var parentDef = mapper.getResource(parentName); + var parentKey = def.foreignKey; + var parentDef = def.getRelation(); var parentId = opts.params[parentKey]; if (parentId === false || !parentKey || !parentDef) { @@ -959,14 +956,12 @@ return /******/ (function(modules) { // webpackBootstrap } else { delete opts.params[parentKey]; - if (isString(id) || isNumber(id)) { - item = mapper.get(id); - } else if (isObject(id)) { + if (isObject(id)) { item = id; } if (item) { - parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null); + parentId = parentId || def.getForeignKey(item) || (def.getLocalField(item) ? get(def.getLocalField(item), parentDef.idAttribute) : null); } if (parentId) { @@ -977,7 +972,7 @@ return /******/ (function(modules) { // webpackBootstrap _opts[key] = value; }); _(_opts, parentDef); - endpoint = makePath(self.getEndpoint(parentDef, parentId, _opts, parentId, endpoint)); + endpoint = makePath(self.getEndpoint(parentDef, parentId, _opts), parentId, endpoint); return { v: false }; @@ -1003,7 +998,7 @@ return /******/ (function(modules) { // webpackBootstrap getPath: function getPath(method, mapper, id, opts) { var self = this; opts || (opts = {}); - var args = [opts.basePath === undefined ? mapper.basePath === undefined ? self.basePath : mapper.basePath : opts.basePath, self.getEndpoint(mapper, isString(id) || isNumber(id) || method === 'create' ? id : null, opts)]; + var args = [isUndefined(opts.basePath) ? isUndefined(mapper.basePath) ? self.basePath : mapper.basePath : opts.basePath, self.getEndpoint(mapper, isString(id) || isNumber(id) || method === 'create' ? id : null, opts)]; if (method === 'find' || method === 'update' || method === 'destroy') { args.push(id); } diff --git a/fetch/dist/js-data-fetch.js.map b/fetch/dist/js-data-fetch.js.map index 4fa575a..7981cb0 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 26aa2d124fc9dffc8be5","webpack:///./src/index.js","webpack:///external {\"amd\":\"js-data\",\"commonjs\":\"js-data\",\"commonjs2\":\"js-data\",\"root\":\"JSData\"}","webpack:///external \"undefined\""],"names":[],"mappings":"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","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[\"HttpAdapter\"] = factory(require(\"js-data\"), require(\"undefined\"));\n\telse\n\t\troot[\"HttpAdapter\"] = factory(root[\"JSData\"], root[\"undefined\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_2__) {\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 26aa2d124fc9dffc8be5\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nconst {\n _,\n addHiddenPropsToTarget,\n copy,\n deepMixIn,\n extend,\n fillIn,\n forOwn,\n isArray,\n isFunction,\n isNumber,\n isObject,\n isSorN,\n isString,\n isUndefined,\n resolve,\n reject,\n toJson\n} = utils\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 forOwn(params, function (val, key) {\n if (val === null || typeof val === 'undefined') {\n return\n }\n if (!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 (isObject(v)) {\n v = 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 noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n}\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#debug\n * @type {boolean}\n * @default false\n */\n debug: false,\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 * @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\n // Default values for arguments\n opts || (opts = {})\n\n fillIn(self, opts)\n fillIn(self, DEFAULTS)\n}\n\naddHiddenPropsToTarget(HttpAdapter.prototype, {\n /**\n * @name HttpAdapter#afterCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreate: noop2,\n\n /**\n * @name HttpAdapter#afterCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreateMany: noop2,\n\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#afterDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroy: noop2,\n\n /**\n * @name HttpAdapter#afterDestroyAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroyAll: noop2,\n\n /**\n * @name HttpAdapter#afterFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFind: noop2,\n\n /**\n * @name HttpAdapter#afterFindAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFindAll: 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#afterUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdate: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateAll: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateMany: noop2,\n\n /**\n * @name HttpAdapter#beforeCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n */\n beforeCreate: noop,\n\n /**\n * @name HttpAdapter#beforeCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeCreateMany: noop,\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#beforeDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeDestroy: noop,\n\n /**\n * @name HttpAdapter#beforeDestroyAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeDestroyAll: noop,\n\n /**\n * @name HttpAdapter#beforeFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeFind: noop,\n\n /**\n * @name HttpAdapter#beforeFindAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeFindAll: 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 /**\n * @name HttpAdapter#beforeUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n */\n beforeUpdate: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n */\n beforeUpdateAll: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeUpdateMany: noop,\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreate lifecycle hook\n op = opts.op = 'beforeCreate'\n return resolve(self[op](mapper, props, opts)).then(function () {\n op = opts.op = 'create'\n self.dbg(op, mapper, props, opts)\n return self.POST(\n self.getPath('create', mapper, props, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreate lifecycle hook\n op = opts.op = 'afterCreate'\n return resolve(self[op](mapper, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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} 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 createMany (mapper, records, opts) {\n const self = this\n let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreateMany lifecycle hook\n op = opts.op = 'beforeCreateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'createMany'\n self.dbg(op, mapper, records, opts)\n return self.POST(\n self.getPath('createMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreateMany lifecycle hook\n op = opts.op = 'afterCreateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n },\n\n /**\n * Call {@link HttpAdapter#log} at the \"debug\" level.\n *\n * @name HttpAdapter#dbg\n * @method\n * @param {...*} [args] Args passed to {@link HttpAdapter#log}.\n */\n dbg (...args) {\n this.log('debug', ...args)\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.deserialize)) {\n return opts.deserialize(mapper, response, opts)\n }\n if (isFunction(mapper.deserialize)) {\n return mapper.deserialize(mapper, response, opts)\n }\n if (opts.raw) {\n return response\n }\n return response ? ('data' in response ? response.data : response) : 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroy lifecycle hook\n op = opts.op = 'beforeDestroy'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy'\n self.dbg(op, mapper, id, opts)\n return self.DEL(\n self.getPath('destroy', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroy lifecycle hook\n op = opts.op = 'afterDestroy'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroyAll lifecycle hook\n op = opts.op = 'beforeDestroyAll'\n return resolve(self.beforeDestroyAll(mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll'\n self.dbg(op, mapper, query, opts)\n return self.DEL(\n self.getPath('destroyAll', mapper, null, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 = 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeFind lifecycle hook\n op = opts.op = 'beforeFind'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find'\n self.dbg(op, mapper, id, opts)\n return self.GET(\n self.getPath('find', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFind lifecycle hook\n op = opts.op = 'afterFind'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll'\n return resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll'\n self.dbg(op, mapper, query, opts)\n return self.GET(\n self.getPath('findAll', mapper, opts.params, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFindAll lifecycle hook\n op = opts.op = 'afterFindAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 || (opts.params = {})\n\n let endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : mapper.endpoint\n let parents = mapper.parents || (mapper.parent ? {\n [mapper.parent]: {\n key: mapper.parentKey,\n field: mapper.parentField\n }\n } : {})\n\n forOwn(parents, function (parent, parentName) {\n let item\n let parentKey = parent.key\n let parentField = parent.field\n let parentDef = mapper.getResource(parentName)\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 (isString(id) || isNumber(id)) {\n item = mapper.get(id)\n } else if (isObject(id)) {\n item = id\n }\n\n if (item) {\n parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null)\n }\n\n if (parentId) {\n delete opts.endpoint\n const _opts = {}\n forOwn(opts, function (value, key) {\n _opts[key] = value\n })\n _(_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 opts.basePath === undefined ? (mapper.basePath === undefined ? self.basePath : mapper.basePath) : opts.basePath,\n self.getEndpoint(mapper, (isString(id) || 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 /**\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 = copy(config, null, null, null, ['data', 'cache', 'timeout'])\n config = 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 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 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 resolve(self.afterHTTP(config, opts, response)).then(function (_response) {\n return _response || response\n })\n })\n },\n\n /**\n * Log the provided arguments at the specified leve.\n *\n * @name HttpAdapter#log\n * @method\n * @param {string} level Log level.\n * @param {...*} [args] Arguments to log.\n */\n log (level, ...args) {\n if (level && !args.length) {\n args.push(level)\n level = 'debug'\n }\n if (level === 'debug' && !this.debug) {\n return\n }\n const prefix = `${level.toUpperCase()}: (HttpAdapter)`\n if (console[level]) {\n console[level](prefix, ...args)\n } else {\n console.log(prefix, ...args)\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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.queryTransform)) {\n return opts.queryTransform(mapper, params, opts)\n }\n if (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 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 (isFunction(opts.serialize)) {\n return opts.serialize(mapper, data, opts)\n }\n if (isFunction(mapper.serialize)) {\n return mapper.serialize(mapper, data, opts)\n }\n return data\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdate lifecycle hook\n op = opts.op = 'beforeUpdate'\n return resolve(self[op](mapper, id, props, opts)).then(function () {\n op = opts.op = 'update'\n self.dbg(op, mapper, id, props, opts)\n return self.PUT(\n self.getPath('update', mapper, id, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdate lifecycle hook\n op = opts.op = 'afterUpdate'\n return resolve(self[op](mapper, id, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateAll lifecycle hook\n op = opts.op = 'beforeUpdateAll'\n return resolve(self[op](mapper, props, query, opts)).then(function () {\n op = opts.op = 'updateAll'\n self.dbg(op, mapper, props, query, opts)\n return self.PUT(\n self.getPath('updateAll', mapper, null, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateAll lifecycle hook\n op = opts.op = 'afterUpdateAll'\n return resolve(self[op](mapper, props, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'updateMany'\n self.dbg(op, mapper, records, opts)\n return self.PUT(\n self.getPath('updateMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateMany lifecycle hook\n op = opts.op = 'afterUpdateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n }\n})\n\n/**\n * Add an Http actions to a mapper.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.addAction = function (name, opts) {\n if (!name || !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 reject(err) }\n mapper[name] = function (id, _opts) {\n const self = this\n if (isObject(id)) {\n _opts = id\n }\n _opts = _opts || {}\n let adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http')\n let config = {}\n 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, isSorN(id) ? id : null, _opts)\n ]\n if (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 deepMixIn(config)(_opts)\n return 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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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 = extend\n\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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 **/","module.exports = undefined;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"undefined\"\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 37c363e8987cce6dd3cd","webpack:///./src/index.js","webpack:///external {\"amd\":\"js-data\",\"commonjs\":\"js-data\",\"commonjs2\":\"js-data\",\"root\":\"JSData\"}","webpack:///external \"undefined\""],"names":[],"mappings":"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","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[\"HttpAdapter\"] = factory(require(\"js-data\"), require(\"undefined\"));\n\telse\n\t\troot[\"HttpAdapter\"] = factory(root[\"JSData\"], root[\"undefined\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_2__) {\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 37c363e8987cce6dd3cd\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nconst {\n _,\n addHiddenPropsToTarget,\n copy,\n deepMixIn,\n extend,\n fillIn,\n forOwn,\n get,\n isArray,\n isFunction,\n isNumber,\n isObject,\n isSorN,\n isString,\n isUndefined,\n resolve,\n reject,\n toJson\n} = utils\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 forOwn(params, function (val, key) {\n if (val === null || typeof val === 'undefined') {\n return\n }\n if (!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 (isObject(v)) {\n v = 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 noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n}\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#debug\n * @type {boolean}\n * @default false\n */\n debug: false,\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 * @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\n // Default values for arguments\n opts || (opts = {})\n\n fillIn(self, opts)\n fillIn(self, DEFAULTS)\n}\n\naddHiddenPropsToTarget(HttpAdapter.prototype, {\n /**\n * @name HttpAdapter#afterCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreate: noop2,\n\n /**\n * @name HttpAdapter#afterCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreateMany: noop2,\n\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#afterDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroy: noop2,\n\n /**\n * @name HttpAdapter#afterDestroyAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroyAll: noop2,\n\n /**\n * @name HttpAdapter#afterFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFind: noop2,\n\n /**\n * @name HttpAdapter#afterFindAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFindAll: 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#afterUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdate: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateAll: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateMany: noop2,\n\n /**\n * @name HttpAdapter#beforeCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n */\n beforeCreate: noop,\n\n /**\n * @name HttpAdapter#beforeCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeCreateMany: noop,\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#beforeDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeDestroy: noop,\n\n /**\n * @name HttpAdapter#beforeDestroyAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeDestroyAll: noop,\n\n /**\n * @name HttpAdapter#beforeFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeFind: noop,\n\n /**\n * @name HttpAdapter#beforeFindAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeFindAll: 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 /**\n * @name HttpAdapter#beforeUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n */\n beforeUpdate: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n */\n beforeUpdateAll: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeUpdateMany: noop,\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreate lifecycle hook\n op = opts.op = 'beforeCreate'\n return resolve(self[op](mapper, props, opts)).then(function () {\n op = opts.op = 'create'\n self.dbg(op, mapper, props, opts)\n return self.POST(\n self.getPath('create', mapper, props, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreate lifecycle hook\n op = opts.op = 'afterCreate'\n return resolve(self[op](mapper, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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} 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 createMany (mapper, records, opts) {\n const self = this\n let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreateMany lifecycle hook\n op = opts.op = 'beforeCreateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'createMany'\n self.dbg(op, mapper, records, opts)\n return self.POST(\n self.getPath('createMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreateMany lifecycle hook\n op = opts.op = 'afterCreateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n },\n\n /**\n * Call {@link HttpAdapter#log} at the \"debug\" level.\n *\n * @name HttpAdapter#dbg\n * @method\n * @param {...*} [args] Args passed to {@link HttpAdapter#log}.\n */\n dbg (...args) {\n this.log('debug', ...args)\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.deserialize)) {\n return opts.deserialize(mapper, response, opts)\n }\n if (isFunction(mapper.deserialize)) {\n return mapper.deserialize(mapper, response, opts)\n }\n if (opts.raw) {\n return response\n }\n return response ? ('data' in response ? response.data : response) : 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroy lifecycle hook\n op = opts.op = 'beforeDestroy'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy'\n self.dbg(op, mapper, id, opts)\n return self.DEL(\n self.getPath('destroy', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroy lifecycle hook\n op = opts.op = 'afterDestroy'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroyAll lifecycle hook\n op = opts.op = 'beforeDestroyAll'\n return resolve(self.beforeDestroyAll(mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll'\n self.dbg(op, mapper, query, opts)\n return self.DEL(\n self.getPath('destroyAll', mapper, null, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 = 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeFind lifecycle hook\n op = opts.op = 'beforeFind'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find'\n self.dbg(op, mapper, id, opts)\n return self.GET(\n self.getPath('find', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFind lifecycle hook\n op = opts.op = 'afterFind'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll'\n return resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll'\n self.dbg(op, mapper, query, opts)\n return self.GET(\n self.getPath('findAll', mapper, opts.params, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFindAll lifecycle hook\n op = opts.op = 'afterFindAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 || (opts.params = {})\n const relationList = mapper.relationList || []\n let endpoint = isUndefined(opts.endpoint) ? (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 (isObject(id)) {\n item = id\n }\n\n if (item) {\n parentId = parentId || def.getForeignKey(item) || (def.getLocalField(item) ? get(def.getLocalField(item), parentDef.idAttribute) : null)\n }\n\n if (parentId) {\n delete opts.endpoint\n const _opts = {}\n forOwn(opts, function (value, key) {\n _opts[key] = value\n })\n _(_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 isUndefined(opts.basePath) ? (isUndefined(mapper.basePath) ? self.basePath : mapper.basePath) : opts.basePath,\n self.getEndpoint(mapper, (isString(id) || 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 /**\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 = copy(config, null, null, null, ['data', 'cache', 'timeout'])\n config = 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 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 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 resolve(self.afterHTTP(config, opts, response)).then(function (_response) {\n return _response || response\n })\n })\n },\n\n /**\n * Log the provided arguments at the specified leve.\n *\n * @name HttpAdapter#log\n * @method\n * @param {string} level Log level.\n * @param {...*} [args] Arguments to log.\n */\n log (level, ...args) {\n if (level && !args.length) {\n args.push(level)\n level = 'debug'\n }\n if (level === 'debug' && !this.debug) {\n return\n }\n const prefix = `${level.toUpperCase()}: (HttpAdapter)`\n if (console[level]) {\n console[level](prefix, ...args)\n } else {\n console.log(prefix, ...args)\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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.queryTransform)) {\n return opts.queryTransform(mapper, params, opts)\n }\n if (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 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 (isFunction(opts.serialize)) {\n return opts.serialize(mapper, data, opts)\n }\n if (isFunction(mapper.serialize)) {\n return mapper.serialize(mapper, data, opts)\n }\n return data\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdate lifecycle hook\n op = opts.op = 'beforeUpdate'\n return resolve(self[op](mapper, id, props, opts)).then(function () {\n op = opts.op = 'update'\n self.dbg(op, mapper, id, props, opts)\n return self.PUT(\n self.getPath('update', mapper, id, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdate lifecycle hook\n op = opts.op = 'afterUpdate'\n return resolve(self[op](mapper, id, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateAll lifecycle hook\n op = opts.op = 'beforeUpdateAll'\n return resolve(self[op](mapper, props, query, opts)).then(function () {\n op = opts.op = 'updateAll'\n self.dbg(op, mapper, props, query, opts)\n return self.PUT(\n self.getPath('updateAll', mapper, null, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateAll lifecycle hook\n op = opts.op = 'afterUpdateAll'\n return resolve(self[op](mapper, props, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'updateMany'\n self.dbg(op, mapper, records, opts)\n return self.PUT(\n self.getPath('updateMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateMany lifecycle hook\n op = opts.op = 'afterUpdateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n }\n})\n\n/**\n * Add an Http actions to a mapper.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.addAction = function (name, opts) {\n if (!name || !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 reject(err) }\n mapper[name] = function (id, _opts) {\n const self = this\n if (isObject(id)) {\n _opts = id\n }\n _opts = _opts || {}\n let adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http')\n let config = {}\n 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, isSorN(id) ? id : null, _opts)\n ]\n if (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 deepMixIn(config)(_opts)\n return 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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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 = extend\n\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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 **/","module.exports = undefined;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"undefined\"\n ** module id = 2\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 522fb7f..d84535d 100644 --- a/fetch/dist/js-data-fetch.min.js +++ b/fetch/dist/js-data-fetch.min.js @@ -1,2 +1,2 @@ -!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.HttpAdapter=t(require("js-data"),require("undefined")):e.HttpAdapter=t(e.JSData,e.undefined)}(this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={exports:{},id:n,loaded:!1};return e[n].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}([function(e,t,r){"use strict";function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e){return null!=e&&""!==e}function a(e,t){return t||(t=""),e.filter(o).join(t)}function i(){for(var e=arguments.length,t=Array(e),r=0;e>r;r++)t[r]=arguments[r];var n=a(t,"/");return n.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 f(e,t){if(!t)return e;var r=[];return v(t,function(e,t){null!==e&&"undefined"!=typeof e&&(T(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():A(e)&&(e=S(e)),r.push(u(t)+"="+u(e))}))}),r.length>0&&(e+=(-1===e.indexOf("?")?"?":"&")+r.join("&")),e}function s(e){var t=this;e||(e={}),b(t,e),b(t,F)}var p="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},d=r(1),l=r(2),c=d.utils._,h=d.utils.addHiddenPropsToTarget,m=d.utils.copy,y=d.utils.deepMixIn,g=d.utils.extend,b=d.utils.fillIn,v=d.utils.forOwn,T=d.utils.isArray,x=d.utils.isFunction,P=d.utils.isNumber,A=d.utils.isObject,E=d.utils.isSorN,U=d.utils.isString,z=d.utils.isUndefined,q=d.utils.resolve,D=d.utils.reject,S=d.utils.toJson,w=!1;try{w=window&&window.fetch}catch(e){}var j=function(){for(var e=this,t=arguments.length,r=Array(t),n=0;t>n;n++)r[n]=arguments[n];var o=r[r.length-1];e.dbg.apply(e,[o.op].concat(r))},C=function(){for(var e=this,t=arguments.length,r=Array(t),n=0;t>n;n++)r[n]=arguments[n];var o=r[r.length-2];e.dbg.apply(e,[o.op].concat(r))},F={basePath:"",debug:!1,forceTrailingSlash:!1,http:l,httpConfig:{},suffix:"",useFetch:!1};h(s.prototype,{afterCreate:C,afterCreateMany:C,afterDEL:C,afterDestroy:C,afterDestroyAll:C,afterFind:C,afterFindAll:C,afterGET:C,afterHTTP:C,afterPOST:C,afterPUT:C,afterUpdate:C,afterUpdateAll:C,afterUpdateMany:C,beforeCreate:j,beforeCreateMany:j,beforeDEL:j,beforeDestroy:j,beforeDestroyAll:j,beforeFind:j,beforeFindAll:j,beforeGET:j,beforeHTTP:j,beforePOST:j,beforePUT:j,beforeUpdate:j,beforeUpdateAll:j,beforeUpdateMany:j,create:function(e,t,r){var n=this,o=void 0;return r=r?m(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=z(r.suffix)?e.suffix:r.suffix,o=r.op="beforeCreate",q(n[o](e,t,r)).then(function(){return o=r.op="create",n.dbg(o,e,t,r),n.POST(n.getPath("create",e,t,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterCreate",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})},createMany:function(e,t,r){var n=this,o=void 0;return r=r?m(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=z(r.suffix)?e.suffix:r.suffix,o=r.op="beforeCreateMany",q(n[o](e,t,r)).then(function(){return o=r.op="createMany",n.dbg(o,e,t,r),n.POST(n.getPath("createMany",e,null,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterCreateMany",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})},dbg:function(){for(var e=arguments.length,t=Array(e),r=0;e>r;r++)t[r]=arguments[r];this.log.apply(this,["debug"].concat(t))},DEL:function(e,t,r){var n=this,o=void 0;return t||(t={}),r||(r={}),t.url=e||t.url,t.method=t.method||"delete",o=r.op="beforeDEL",q(n[o](e,t,r)).then(function(a){return t=z(a)?t:a,o=r.op="DEL",n.dbg(o,e,t,r),n.HTTP(t,r)}).then(function(a){return o=r.op="afterDEL",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})},deserialize:function(e,t,r){return r||(r={}),x(r.deserialize)?r.deserialize(e,t,r):x(e.deserialize)?e.deserialize(e,t,r):r.raw?t:t&&"data"in t?t.data:t},destroy:function(e,t,r){var n=this,o=void 0;return r=r?m(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=z(r.suffix)?e.suffix:r.suffix,o=r.op="beforeDestroy",q(n[o](e,t,r)).then(function(){return o=r.op="destroy",n.dbg(o,e,t,r),n.DEL(n.getPath("destroy",e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterDestroy",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})},destroyAll:function(e,t,r){var n=this,o=void 0;return t||(t={}),r=r?m(r):{},r.params||(r.params={}),y(r.params,t),r.params=n.queryTransform(e,r.params,r),r.suffix=z(r.suffix)?e.suffix:r.suffix,o=r.op="beforeDestroyAll",q(n.beforeDestroyAll(e,t,r)).then(function(){return o=r.op="destroyAll",n.dbg(o,e,t,r),n.DEL(n.getPath("destroyAll",e,null,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterDestroyAll",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})},error:function(){if(console){var e;(e=console)["function"==typeof console.error?"error":"log"].apply(e,arguments)}},fetch:function(e){function t(t,r){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}(function(e,t){var r={method:e.method,headers:new Headers(e.headers)};return e.data&&(r.body=S(e.data)),fetch(new Request(f(e.url,e.params),r)).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,r){var n=this,o=void 0;return r=r?m(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=z(r.suffix)?e.suffix:r.suffix,o=r.op="beforeFind",q(n[o](e,t,r)).then(function(){return o=r.op="find",n.dbg(o,e,t,r),n.GET(n.getPath("find",e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterFind",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})},findAll:function(e,t,r){var n=this,o=void 0;return t||(t={}),r=r?m(r):{},r.params||(r.params={}),r.suffix=z(r.suffix)?e.suffix:r.suffix,y(r.params,t),r.params=n.queryTransform(e,r.params,r),o=r.op="beforeFindAll",q(n[o](e,t,r)).then(function(){return o=r.op="findAll",n.dbg(o,e,t,r),n.GET(n.getPath("findAll",e,r.params,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterFindAll",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})},GET:function(e,t,r){var n=this,o=void 0;return t||(t={}),r||(r={}),t.url=e||t.url,t.method=t.method||"get",o=r.op="beforeGET",q(n[o](e,t,r)).then(function(a){return t=z(a)?t:a,o=r.op="GET",n.dbg(o,e,t,r),n.HTTP(t,r)}).then(function(a){return o=r.op="afterGET",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})},getEndpoint:function(e,t,r){var o=this;r||(r={}),r.params||(r.params={});var a=r.hasOwnProperty("endpoint")?r.endpoint:e.endpoint,u=e.parents||(e.parent?n({},e.parent,{key:e.parentKey,field:e.parentField}):{});return v(u,function(n,u){var f=void 0,s=n.key,d=n.field,l=e.getResource(u),h=r.params[s];if(h===!1||!s||!l)return h===!1&&delete r.params[s],!1;if(delete r.params[s],U(t)||P(t)?f=e.get(t):A(t)&&(f=t),f&&(h=h||f[s]||(f[d]?f[d][l.idAttribute]:null)),h){var m=function(){delete r.endpoint;var e={};return v(r,function(t,r){e[r]=t}),c(e,l),a=i(o.getEndpoint(l,h,e,h,a)),{v:!1}}();if("object"===("undefined"==typeof m?"undefined":p(m)))return m.v}}),a},getPath:function(e,t,r,n){var o=this;n||(n={});var a=[void 0===n.basePath?void 0===t.basePath?o.basePath:t.basePath:n.basePath,o.getEndpoint(t,U(r)||P(r)||"create"===e?r:null,n)];return"find"!==e&&"update"!==e&&"destroy"!==e||a.push(r),i.apply(d.utils,a)},HTTP:function(e,t){function r(t){var r=o.toUTCString()+" - "+e.method.toUpperCase()+" "+e.url+" - "+t.status+" "+((new Date).getTime()-o.getTime())+"ms";return t.status>=200&&t.status<300?(n.log&&n.dbg("debug",r,t),t):(n.error&&n.error("'FAILED: "+r,t),D(t))}var n=this,o=new Date;t||(t={}),e=m(e),e=y(e,n.httpConfig),n.forceTrailingSlash&&"/"!==e.url[e.url.length-1]&&(e.url+="/"),e.method=e.method.toUpperCase();var a=e.suffix||t.suffix||n.suffix;if(a&&e.url.substr(e.url.length-a.length)!==a&&(e.url+=a),!n.http)throw new Error("You have not configured this adapter with an http library!");return q(n.beforeHTTP(e,t)).then(function(o){return e=o||e,w&&(n.useFetch||t.useFetch||!n.http)?n.fetch(e,t).then(r,r):n.http(e).then(r,r).catch(function(r){return n.responseError(r,e,t)})}).then(function(r){return q(n.afterHTTP(e,t,r)).then(function(e){return e||r})})},log:function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;t>n;n++)r[n-1]=arguments[n];if(e&&!r.length&&(r.push(e),e="debug"),"debug"!==e||this.debug){var o=e.toUpperCase()+": (HttpAdapter)";if(console[e]){var a;(a=console)[e].apply(a,[o].concat(r))}else{var i;(i=console).log.apply(i,[o].concat(r))}}},POST:function(e,t,r,n){var o=this,a=void 0;return r||(r={}),n||(n={}),r.url=e||r.url,r.data=t||r.data,r.method=r.method||"post",a=n.op="beforePOST",q(o[a](e,t,r,n)).then(function(i){return r=z(i)?r:i,a=n.op="POST",o.dbg(a,e,t,r,n),o.HTTP(r,n)}).then(function(i){return a=n.op="afterPOST",q(o[a](e,t,r,n,i)).then(function(e){return z(e)?i:e})})},PUT:function(e,t,r,n){var o=this,a=void 0;return r||(r={}),n||(n={}),r.url=e||r.url,r.data=t||r.data,r.method=r.method||"put",a=n.op="beforePUT",q(o[a](e,t,r,n)).then(function(i){return r=z(i)?r:i,a=n.op="PUT",o.dbg(a,e,t,r,n),o.HTTP(r,n)}).then(function(i){return a=n.op="afterPUT",q(o[a](e,t,r,n,i)).then(function(e){return z(e)?i:e})})},queryTransform:function(e,t,r){return r||(r={}),x(r.queryTransform)?r.queryTransform(e,t,r):x(e.queryTransform)?e.queryTransform(e,t,r):t},responseError:function(e,t,r){return D(e)},serialize:function(e,t,r){return r||(r={}),x(r.serialize)?r.serialize(e,t,r):x(e.serialize)?e.serialize(e,t,r):t},update:function(e,t,r,n){var o=this,a=void 0;return n=n?m(n):{},n.params||(n.params={}),n.params=o.queryTransform(e,n.params,n),n.suffix=z(n.suffix)?e.suffix:n.suffix,a=n.op="beforeUpdate",q(o[a](e,t,r,n)).then(function(){return a=n.op="update",o.dbg(a,e,t,r,n),o.PUT(o.getPath("update",e,t,n),o.serialize(e,r,n),n)}).then(function(t){return o.deserialize(e,t,n)}).then(function(i){return a=n.op="afterUpdate",q(o[a](e,t,r,n,i)).then(function(e){return z(e)?i:e})})},updateAll:function(e,t,r,n){var o=this,a=void 0;return r||(r={}),n=n?m(n):{},n.params||(n.params={}),y(n.params,r),n.params=o.queryTransform(e,n.params,n),n.suffix=z(n.suffix)?e.suffix:n.suffix,a=n.op="beforeUpdateAll",q(o[a](e,t,r,n)).then(function(){return a=n.op="updateAll",o.dbg(a,e,t,r,n),o.PUT(o.getPath("updateAll",e,null,n),o.serialize(e,t,n),n)}).then(function(t){return o.deserialize(e,t,n)}).then(function(i){return a=n.op="afterUpdateAll",q(o[a](e,t,r,n,i)).then(function(e){return z(e)?i:e})})},updateMany:function(e,t,r){var n=this,o=void 0;return r=r?m(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=z(r.suffix)?e.suffix:r.suffix,o=r.op="beforeUpdateMany",q(n[o](e,t,r)).then(function(){return o=r.op="updateMany",n.dbg(o,e,t,r),n.PUT(n.getPath("updateMany",e,null,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterUpdateMany",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})}}),s.addAction=function(e,t){if(!e||!U(e))throw new TypeError("action(name[, opts]): Expected: string, Found: "+("undefined"==typeof e?"undefined":p(e)));return function(r){if(r[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 D(e)},r[e]=function(r,n){var o=this;A(r)&&(n=r),n=n||{};var a=o.getAdapter(t.adapter||o.defaultAdapter||"http"),u={};if(b(u,t),!n.hasOwnProperty("endpoint")&&u.endpoint&&(n.endpoint=u.endpoint),"function"==typeof n.getEndpoint)u.url=n.getEndpoint(o,n);else{var f=[n.basePath||o.basePath||a.basePath,a.getEndpoint(o,E(r)?r:null,n)];E(r)&&f.push(r),f.push(t.pathname||e),u.url=i.apply(null,f)}return u.method=u.method||"GET",u.mapper=o.name,y(u)(n),q(u).then(n.request||t.request).then(function(e){return a.HTTP(e)}).then(function(e){return e&&e.config&&(e.config.mapper=o.name),e}).then(n.response||t.response,n.responseError||t.responseError)},r}},s.addActions=function(e){return e||(e={}),function(e){return v(e,function(t,r){s.addAction(r,t)(e)}),e}},s.extend=g,s.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=s},function(t,r){t.exports=e},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.HttpAdapter=t(require("js-data"),require("undefined")):e.HttpAdapter=t(e.JSData,e.undefined)}(this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={exports:{},id:n,loaded:!1};return e[n].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}([function(e,t,r){"use strict";function n(e){return null!=e&&""!==e}function o(e,t){return t||(t=""),e.filter(n).join(t)}function a(){for(var e=arguments.length,t=Array(e),r=0;e>r;r++)t[r]=arguments[r];var n=o(t,"/");return n.replace(/([^:\/]|^)\/{2,}/g,"$1/")}function i(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 r=[];return b(t,function(e,t){null!==e&&"undefined"!=typeof e&&(v(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():A(e)&&(e=S(e)),r.push(i(t)+"="+i(e))}))}),r.length>0&&(e+=(-1===e.indexOf("?")?"?":"&")+r.join("&")),e}function f(e){var t=this;e||(e={}),y(t,e),y(t,j)}var s="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},p=r(1),d=r(2),l=p.utils._,c=p.utils.addHiddenPropsToTarget,h=p.utils.copy,m=p.utils.deepMixIn,g=p.utils.extend,y=p.utils.fillIn,b=p.utils.forOwn,T=p.utils.get,v=p.utils.isArray,x=p.utils.isFunction,P=p.utils.isNumber,A=p.utils.isObject,E=p.utils.isSorN,U=p.utils.isString,z=p.utils.isUndefined,q=p.utils.resolve,D=p.utils.reject,S=p.utils.toJson,w=!1;try{w=window&&window.fetch}catch(e){}var F=function(){for(var e=this,t=arguments.length,r=Array(t),n=0;t>n;n++)r[n]=arguments[n];var o=r[r.length-1];e.dbg.apply(e,[o.op].concat(r))},C=function(){for(var e=this,t=arguments.length,r=Array(t),n=0;t>n;n++)r[n]=arguments[n];var o=r[r.length-2];e.dbg.apply(e,[o.op].concat(r))},j={basePath:"",debug:!1,forceTrailingSlash:!1,http:d,httpConfig:{},suffix:"",useFetch:!1};c(f.prototype,{afterCreate:C,afterCreateMany:C,afterDEL:C,afterDestroy:C,afterDestroyAll:C,afterFind:C,afterFindAll:C,afterGET:C,afterHTTP:C,afterPOST:C,afterPUT:C,afterUpdate:C,afterUpdateAll:C,afterUpdateMany:C,beforeCreate:F,beforeCreateMany:F,beforeDEL:F,beforeDestroy:F,beforeDestroyAll:F,beforeFind:F,beforeFindAll:F,beforeGET:F,beforeHTTP:F,beforePOST:F,beforePUT:F,beforeUpdate:F,beforeUpdateAll:F,beforeUpdateMany:F,create:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=z(r.suffix)?e.suffix:r.suffix,o=r.op="beforeCreate",q(n[o](e,t,r)).then(function(){return o=r.op="create",n.dbg(o,e,t,r),n.POST(n.getPath("create",e,t,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterCreate",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})},createMany:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=z(r.suffix)?e.suffix:r.suffix,o=r.op="beforeCreateMany",q(n[o](e,t,r)).then(function(){return o=r.op="createMany",n.dbg(o,e,t,r),n.POST(n.getPath("createMany",e,null,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterCreateMany",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})},dbg:function(){for(var e=arguments.length,t=Array(e),r=0;e>r;r++)t[r]=arguments[r];this.log.apply(this,["debug"].concat(t))},DEL:function(e,t,r){var n=this,o=void 0;return t||(t={}),r||(r={}),t.url=e||t.url,t.method=t.method||"delete",o=r.op="beforeDEL",q(n[o](e,t,r)).then(function(a){return t=z(a)?t:a,o=r.op="DEL",n.dbg(o,e,t,r),n.HTTP(t,r)}).then(function(a){return o=r.op="afterDEL",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})},deserialize:function(e,t,r){return r||(r={}),x(r.deserialize)?r.deserialize(e,t,r):x(e.deserialize)?e.deserialize(e,t,r):r.raw?t:t&&"data"in t?t.data:t},destroy:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=z(r.suffix)?e.suffix:r.suffix,o=r.op="beforeDestroy",q(n[o](e,t,r)).then(function(){return o=r.op="destroy",n.dbg(o,e,t,r),n.DEL(n.getPath("destroy",e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterDestroy",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})},destroyAll:function(e,t,r){var n=this,o=void 0;return t||(t={}),r=r?h(r):{},r.params||(r.params={}),m(r.params,t),r.params=n.queryTransform(e,r.params,r),r.suffix=z(r.suffix)?e.suffix:r.suffix,o=r.op="beforeDestroyAll",q(n.beforeDestroyAll(e,t,r)).then(function(){return o=r.op="destroyAll",n.dbg(o,e,t,r),n.DEL(n.getPath("destroyAll",e,null,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterDestroyAll",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})},error:function(){if(console){var e;(e=console)["function"==typeof console.error?"error":"log"].apply(e,arguments)}},fetch:function(e){function t(t,r){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}(function(e,t){var r={method:e.method,headers:new Headers(e.headers)};return e.data&&(r.body=S(e.data)),fetch(new Request(u(e.url,e.params),r)).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,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=z(r.suffix)?e.suffix:r.suffix,o=r.op="beforeFind",q(n[o](e,t,r)).then(function(){return o=r.op="find",n.dbg(o,e,t,r),n.GET(n.getPath("find",e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterFind",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})},findAll:function(e,t,r){var n=this,o=void 0;return t||(t={}),r=r?h(r):{},r.params||(r.params={}),r.suffix=z(r.suffix)?e.suffix:r.suffix,m(r.params,t),r.params=n.queryTransform(e,r.params,r),o=r.op="beforeFindAll",q(n[o](e,t,r)).then(function(){return o=r.op="findAll",n.dbg(o,e,t,r),n.GET(n.getPath("findAll",e,r.params,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterFindAll",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})},GET:function(e,t,r){var n=this,o=void 0;return t||(t={}),r||(r={}),t.url=e||t.url,t.method=t.method||"get",o=r.op="beforeGET",q(n[o](e,t,r)).then(function(a){return t=z(a)?t:a,o=r.op="GET",n.dbg(o,e,t,r),n.HTTP(t,r)}).then(function(a){return o=r.op="afterGET",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})},getEndpoint:function(e,t,r){var n=this;r||(r={}),r.params||(r.params={});var o=e.relationList||[],i=z(r.endpoint)?z(e.endpoint)?e.name:e.endpoint:r.endpoint;return o.forEach(function(e){if("belongsTo"===e.type&&e.parent){var o=void 0,u=e.foreignKey,f=e.getRelation(),p=r.params[u];if(p===!1||!u||!f)return p===!1&&delete r.params[u],!1;if(delete r.params[u],A(t)&&(o=t),o&&(p=p||e.getForeignKey(o)||(e.getLocalField(o)?T(e.getLocalField(o),f.idAttribute):null)),p){var d=function(){delete r.endpoint;var e={};return b(r,function(t,r){e[r]=t}),l(e,f),i=a(n.getEndpoint(f,p,e),p,i),{v:!1}}();if("object"===("undefined"==typeof d?"undefined":s(d)))return d.v}}}),i},getPath:function(e,t,r,n){var o=this;n||(n={});var i=[z(n.basePath)?z(t.basePath)?o.basePath:t.basePath:n.basePath,o.getEndpoint(t,U(r)||P(r)||"create"===e?r:null,n)];return"find"!==e&&"update"!==e&&"destroy"!==e||i.push(r),a.apply(p.utils,i)},HTTP:function(e,t){function r(t){var r=o.toUTCString()+" - "+e.method.toUpperCase()+" "+e.url+" - "+t.status+" "+((new Date).getTime()-o.getTime())+"ms";return t.status>=200&&t.status<300?(n.log&&n.dbg("debug",r,t),t):(n.error&&n.error("'FAILED: "+r,t),D(t))}var n=this,o=new Date;t||(t={}),e=h(e),e=m(e,n.httpConfig),n.forceTrailingSlash&&"/"!==e.url[e.url.length-1]&&(e.url+="/"),e.method=e.method.toUpperCase();var a=e.suffix||t.suffix||n.suffix;if(a&&e.url.substr(e.url.length-a.length)!==a&&(e.url+=a),!n.http)throw new Error("You have not configured this adapter with an http library!");return q(n.beforeHTTP(e,t)).then(function(o){return e=o||e,w&&(n.useFetch||t.useFetch||!n.http)?n.fetch(e,t).then(r,r):n.http(e).then(r,r).catch(function(r){return n.responseError(r,e,t)})}).then(function(r){return q(n.afterHTTP(e,t,r)).then(function(e){return e||r})})},log:function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;t>n;n++)r[n-1]=arguments[n];if(e&&!r.length&&(r.push(e),e="debug"),"debug"!==e||this.debug){var o=e.toUpperCase()+": (HttpAdapter)";if(console[e]){var a;(a=console)[e].apply(a,[o].concat(r))}else{var i;(i=console).log.apply(i,[o].concat(r))}}},POST:function(e,t,r,n){var o=this,a=void 0;return r||(r={}),n||(n={}),r.url=e||r.url,r.data=t||r.data,r.method=r.method||"post",a=n.op="beforePOST",q(o[a](e,t,r,n)).then(function(i){return r=z(i)?r:i,a=n.op="POST",o.dbg(a,e,t,r,n),o.HTTP(r,n)}).then(function(i){return a=n.op="afterPOST",q(o[a](e,t,r,n,i)).then(function(e){return z(e)?i:e})})},PUT:function(e,t,r,n){var o=this,a=void 0;return r||(r={}),n||(n={}),r.url=e||r.url,r.data=t||r.data,r.method=r.method||"put",a=n.op="beforePUT",q(o[a](e,t,r,n)).then(function(i){return r=z(i)?r:i,a=n.op="PUT",o.dbg(a,e,t,r,n),o.HTTP(r,n)}).then(function(i){return a=n.op="afterPUT",q(o[a](e,t,r,n,i)).then(function(e){return z(e)?i:e})})},queryTransform:function(e,t,r){return r||(r={}),x(r.queryTransform)?r.queryTransform(e,t,r):x(e.queryTransform)?e.queryTransform(e,t,r):t},responseError:function(e,t,r){return D(e)},serialize:function(e,t,r){return r||(r={}),x(r.serialize)?r.serialize(e,t,r):x(e.serialize)?e.serialize(e,t,r):t},update:function(e,t,r,n){var o=this,a=void 0;return n=n?h(n):{},n.params||(n.params={}),n.params=o.queryTransform(e,n.params,n),n.suffix=z(n.suffix)?e.suffix:n.suffix,a=n.op="beforeUpdate",q(o[a](e,t,r,n)).then(function(){return a=n.op="update",o.dbg(a,e,t,r,n),o.PUT(o.getPath("update",e,t,n),o.serialize(e,r,n),n)}).then(function(t){return o.deserialize(e,t,n)}).then(function(i){return a=n.op="afterUpdate",q(o[a](e,t,r,n,i)).then(function(e){return z(e)?i:e})})},updateAll:function(e,t,r,n){var o=this,a=void 0;return r||(r={}),n=n?h(n):{},n.params||(n.params={}),m(n.params,r),n.params=o.queryTransform(e,n.params,n),n.suffix=z(n.suffix)?e.suffix:n.suffix,a=n.op="beforeUpdateAll",q(o[a](e,t,r,n)).then(function(){return a=n.op="updateAll",o.dbg(a,e,t,r,n),o.PUT(o.getPath("updateAll",e,null,n),o.serialize(e,t,n),n)}).then(function(t){return o.deserialize(e,t,n)}).then(function(i){return a=n.op="afterUpdateAll",q(o[a](e,t,r,n,i)).then(function(e){return z(e)?i:e})})},updateMany:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=z(r.suffix)?e.suffix:r.suffix,o=r.op="beforeUpdateMany",q(n[o](e,t,r)).then(function(){return o=r.op="updateMany",n.dbg(o,e,t,r),n.PUT(n.getPath("updateMany",e,null,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterUpdateMany",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})}}),f.addAction=function(e,t){if(!e||!U(e))throw new TypeError("action(name[, opts]): Expected: string, Found: "+("undefined"==typeof e?"undefined":s(e)));return function(r){if(r[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 D(e)},r[e]=function(r,n){var o=this;A(r)&&(n=r),n=n||{};var i=o.getAdapter(t.adapter||o.defaultAdapter||"http"),u={};if(y(u,t),!n.hasOwnProperty("endpoint")&&u.endpoint&&(n.endpoint=u.endpoint),"function"==typeof n.getEndpoint)u.url=n.getEndpoint(o,n);else{var f=[n.basePath||o.basePath||i.basePath,i.getEndpoint(o,E(r)?r:null,n)];E(r)&&f.push(r),f.push(t.pathname||e),u.url=a.apply(null,f)}return u.method=u.method||"GET",u.mapper=o.name,m(u)(n),q(u).then(n.request||t.request).then(function(e){return i.HTTP(e)}).then(function(e){return e&&e.config&&(e.config.mapper=o.name),e}).then(n.response||t.response,n.responseError||t.responseError)},r}},f.addActions=function(e){return e||(e={}),function(e){return b(e,function(t,r){f.addAction(r,t)(e)}),e}},f.extend=g,f.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=f},function(t,r){t.exports=e},function(e,t){e.exports=void 0}])}); //# sourceMappingURL=fetch/dist/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 77c2f3f..abc74fc 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_2__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","isValidString","join","items","separator","filter","makePath","_len","arguments","length","args","Array","_key","result","replace","encode","val","encodeURIComponent","buildUrl","url","params","parts","forOwn","isArray","forEach","v","window","toString","toISOString","isObject","toJson","push","indexOf","HttpAdapter","opts","self","fillIn","DEFAULTS","_typeof","Symbol","iterator","constructor","_jsData","axios","_","utils","addHiddenPropsToTarget","copy","deepMixIn","extend","isFunction","isNumber","isSorN","isString","isUndefined","resolve","reject","hasFetch","fetch","e","noop","_len2","_key2","dbg","apply","op","concat","noop2","_len3","_key3","basePath","debug","forceTrailingSlash","http","httpConfig","suffix","useFetch","prototype","afterCreate","afterCreateMany","afterDEL","afterDestroy","afterDestroyAll","afterFind","afterFindAll","afterGET","afterHTTP","afterPOST","afterPUT","afterUpdate","afterUpdateAll","afterUpdateMany","beforeCreate","beforeCreateMany","beforeDEL","beforeDestroy","beforeDestroyAll","beforeFind","beforeFindAll","beforeGET","beforeHTTP","beforePOST","beforePUT","beforeUpdate","beforeUpdateAll","beforeUpdateMany","create","mapper","props","undefined","queryTransform","then","POST","getPath","serialize","response","deserialize","data","_data","createMany","records","_len4","_key4","log","DEL","config","method","_config","HTTP","_response","raw","destroy","destroyAll","query","error","console","_console","_fetch","_x","_x2","requestConfig","headers","Headers","body","Request","json","find","GET","findAll","getEndpoint","endpoint","hasOwnProperty","parents","parent","parentKey","field","parentField","parentName","item","parentDef","getResource","parentId","get","idAttribute","_ret","_opts","logResponse","str","start","toUTCString","toUpperCase","status","Date","getTime","substr","Error","catch","err","responseError","level","_len5","_key5","prefix","_console2","_console3","PUT","update","updateAll","updateMany","addAction","name","TypeError","request","adapter","getAdapter","defaultAdapter","_args","pathname","addActions","version","full","major","parseInt","minor","patch","alpha","beta"],"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_2__","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","forOwn","key","isArray","forEach","v","window","toString","toISOString","isObject","toJson","push","indexOf","HttpAdapter","opts","self","fillIn","DEFAULTS","_typeof","Symbol","iterator","obj","constructor","_jsData","axios","_","utils","addHiddenPropsToTarget","copy","deepMixIn","extend","get","isFunction","isNumber","isSorN","isString","isUndefined","resolve","reject","hasFetch","fetch","e","noop","_len2","_key2","dbg","apply","op","concat","noop2","_len3","_key3","basePath","debug","forceTrailingSlash","http","httpConfig","suffix","useFetch","prototype","afterCreate","afterCreateMany","afterDEL","afterDestroy","afterDestroyAll","afterFind","afterFindAll","afterGET","afterHTTP","afterPOST","afterPUT","afterUpdate","afterUpdateAll","afterUpdateMany","beforeCreate","beforeCreateMany","beforeDEL","beforeDestroy","beforeDestroyAll","beforeFind","beforeFindAll","beforeGET","beforeHTTP","beforePOST","beforePUT","beforeUpdate","beforeUpdateAll","beforeUpdateMany","create","mapper","props","undefined","queryTransform","then","POST","getPath","serialize","response","deserialize","data","_data","createMany","records","_len4","_key4","log","DEL","config","method","_config","HTTP","_response","raw","destroy","destroyAll","query","error","console","_console","_fetch","_x","_x2","requestConfig","headers","Headers","body","Request","json","find","GET","findAll","getEndpoint","relationList","endpoint","name","def","type","parent","item","parentKey","foreignKey","parentDef","getRelation","parentId","getForeignKey","getLocalField","idAttribute","_ret","_opts","logResponse","str","start","toUTCString","toUpperCase","status","Date","getTime","substr","Error","catch","err","responseError","level","_len5","_key5","prefix","_console2","_console3","PUT","update","updateAll","updateMany","addAction","TypeError","request","adapter","getAdapter","defaultAdapter","hasOwnProperty","_args","pathname","addActions","version","full","major","parseInt","minor","patch","alpha","beta"],"mappings":"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","file":"fetch/dist/js-data-fetch.min.js"} \ No newline at end of file diff --git a/fetch/karma.start.js b/fetch/karma.start.js index 98e8ce6..e5068f1 100644 --- a/fetch/karma.start.js +++ b/fetch/karma.start.js @@ -9,6 +9,9 @@ before(function () { } } Test.assert = chai.assert + Test.assert.objectsEqual = function (a, b, m) { + Test.assert.deepEqual(JSON.parse(JSON.stringify(a)), JSON.parse(JSON.stringify(b)), m || (JSON.stringify(a) + ' should be equal to ' + JSON.stringify(b))) + } Test.sinon = sinon Test.JSData = JSData Test.HttpAdapter = HttpAdapter diff --git a/fetch/package.json b/fetch/package.json index dc22fbc..b355d5f 100644 --- a/fetch/package.json +++ b/fetch/package.json @@ -1,7 +1,7 @@ { "name": "js-data-fetch", "description": "HTTP adapter for js-data that uses the fetch API.", - "version": "3.0.0-alpha.5", + "version": "3.0.0-alpha.6", "homepage": "https://github.com/js-data/js-data-http", "repository": { "type": "git", @@ -17,5 +17,8 @@ "adapter", "http", "fetch" - ] + ], + "dependencies": { + "js-data": "^3.0.0-alpha.15" + } } diff --git a/karma.start.js b/karma.start.js index 0d78189..665423f 100644 --- a/karma.start.js +++ b/karma.start.js @@ -9,6 +9,9 @@ before(function () { } } Test.assert = chai.assert + Test.assert.objectsEqual = function (a, b, m) { + Test.assert.deepEqual(JSON.parse(JSON.stringify(a)), JSON.parse(JSON.stringify(b)), m || (JSON.stringify(a) + ' should be equal to ' + JSON.stringify(b))) + } Test.sinon = sinon Test.JSData = JSData Test.HttpAdapter = HttpAdapter diff --git a/node/AUTHORS b/node/AUTHORS index 370b7c6..9fe6289 100644 --- a/node/AUTHORS +++ b/node/AUTHORS @@ -6,6 +6,7 @@ # # commits Name or Organization # The email address is not required for organizations. InternalFX +Ivan Voznyakovsky Jason Dobry Josh Drake RobertHerhold diff --git a/node/CONTRIBUTORS b/node/CONTRIBUTORS index a5c9494..5f11066 100644 --- a/node/CONTRIBUTORS +++ b/node/CONTRIBUTORS @@ -5,7 +5,8 @@ # Names should be added to this file as: # [commit count] Name 1 InternalFX - 66 Jason Dobry + 1 Ivan Voznyakovsky + 69 Jason Dobry 1 Josh Drake 1 RobertHerhold 3 Tomás Fox diff --git a/node/dist/js-data-http-node.js b/node/dist/js-data-http-node.js index 13a5e91..bd85e2c 100644 --- a/node/dist/js-data-http-node.js +++ b/node/dist/js-data-http-node.js @@ -60,8 +60,6 @@ return /******/ (function(modules) { // webpackBootstrap var _jsData = __webpack_require__(1); - function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - /* global fetch:true Headers:true Request:true */ var axios = __webpack_require__(2); var _ = _jsData.utils._; @@ -71,6 +69,7 @@ return /******/ (function(modules) { // webpackBootstrap var extend = _jsData.utils.extend; var fillIn = _jsData.utils.fillIn; var forOwn = _jsData.utils.forOwn; + var get = _jsData.utils.get; var isArray = _jsData.utils.isArray; var isFunction = _jsData.utils.isFunction; var isNumber = _jsData.utils.isNumber; @@ -937,18 +936,16 @@ return /******/ (function(modules) { // webpackBootstrap var self = this; opts || (opts = {}); opts.params || (opts.params = {}); + var relationList = mapper.relationList || []; + var endpoint = isUndefined(opts.endpoint) ? isUndefined(mapper.endpoint) ? mapper.name : mapper.endpoint : opts.endpoint; - var endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : mapper.endpoint; - var parents = mapper.parents || (mapper.parent ? _defineProperty({}, mapper.parent, { - key: mapper.parentKey, - field: mapper.parentField - }) : {}); - - forOwn(parents, function (parent, parentName) { + relationList.forEach(function (def) { + if (def.type !== 'belongsTo' || !def.parent) { + return; + } var item = void 0; - var parentKey = parent.key; - var parentField = parent.field; - var parentDef = mapper.getResource(parentName); + var parentKey = def.foreignKey; + var parentDef = def.getRelation(); var parentId = opts.params[parentKey]; if (parentId === false || !parentKey || !parentDef) { @@ -959,14 +956,12 @@ return /******/ (function(modules) { // webpackBootstrap } else { delete opts.params[parentKey]; - if (isString(id) || isNumber(id)) { - item = mapper.get(id); - } else if (isObject(id)) { + if (isObject(id)) { item = id; } if (item) { - parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null); + parentId = parentId || def.getForeignKey(item) || (def.getLocalField(item) ? get(def.getLocalField(item), parentDef.idAttribute) : null); } if (parentId) { @@ -977,7 +972,7 @@ return /******/ (function(modules) { // webpackBootstrap _opts[key] = value; }); _(_opts, parentDef); - endpoint = makePath(self.getEndpoint(parentDef, parentId, _opts, parentId, endpoint)); + endpoint = makePath(self.getEndpoint(parentDef, parentId, _opts), parentId, endpoint); return { v: false }; @@ -1003,7 +998,7 @@ return /******/ (function(modules) { // webpackBootstrap getPath: function getPath(method, mapper, id, opts) { var self = this; opts || (opts = {}); - var args = [opts.basePath === undefined ? mapper.basePath === undefined ? self.basePath : mapper.basePath : opts.basePath, self.getEndpoint(mapper, isString(id) || isNumber(id) || method === 'create' ? id : null, opts)]; + var args = [isUndefined(opts.basePath) ? isUndefined(mapper.basePath) ? self.basePath : mapper.basePath : opts.basePath, self.getEndpoint(mapper, isString(id) || isNumber(id) || method === 'create' ? id : null, opts)]; if (method === 'find' || method === 'update' || method === 'destroy') { args.push(id); } diff --git a/node/dist/js-data-http-node.js.map b/node/dist/js-data-http-node.js.map index 4f29026..0ecf2de 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 e6aaaab19dca91a85d69","webpack:///./src/index.js","webpack:///external \"js-data\"","webpack:///external \"axios\""],"names":[],"mappings":"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","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_2__) {\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 e6aaaab19dca91a85d69\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nconst {\n _,\n addHiddenPropsToTarget,\n copy,\n deepMixIn,\n extend,\n fillIn,\n forOwn,\n isArray,\n isFunction,\n isNumber,\n isObject,\n isSorN,\n isString,\n isUndefined,\n resolve,\n reject,\n toJson\n} = utils\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 forOwn(params, function (val, key) {\n if (val === null || typeof val === 'undefined') {\n return\n }\n if (!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 (isObject(v)) {\n v = 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 noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n}\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#debug\n * @type {boolean}\n * @default false\n */\n debug: false,\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 * @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\n // Default values for arguments\n opts || (opts = {})\n\n fillIn(self, opts)\n fillIn(self, DEFAULTS)\n}\n\naddHiddenPropsToTarget(HttpAdapter.prototype, {\n /**\n * @name HttpAdapter#afterCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreate: noop2,\n\n /**\n * @name HttpAdapter#afterCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreateMany: noop2,\n\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#afterDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroy: noop2,\n\n /**\n * @name HttpAdapter#afterDestroyAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroyAll: noop2,\n\n /**\n * @name HttpAdapter#afterFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFind: noop2,\n\n /**\n * @name HttpAdapter#afterFindAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFindAll: 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#afterUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdate: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateAll: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateMany: noop2,\n\n /**\n * @name HttpAdapter#beforeCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n */\n beforeCreate: noop,\n\n /**\n * @name HttpAdapter#beforeCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeCreateMany: noop,\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#beforeDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeDestroy: noop,\n\n /**\n * @name HttpAdapter#beforeDestroyAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeDestroyAll: noop,\n\n /**\n * @name HttpAdapter#beforeFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeFind: noop,\n\n /**\n * @name HttpAdapter#beforeFindAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeFindAll: 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 /**\n * @name HttpAdapter#beforeUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n */\n beforeUpdate: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n */\n beforeUpdateAll: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeUpdateMany: noop,\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreate lifecycle hook\n op = opts.op = 'beforeCreate'\n return resolve(self[op](mapper, props, opts)).then(function () {\n op = opts.op = 'create'\n self.dbg(op, mapper, props, opts)\n return self.POST(\n self.getPath('create', mapper, props, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreate lifecycle hook\n op = opts.op = 'afterCreate'\n return resolve(self[op](mapper, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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} 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 createMany (mapper, records, opts) {\n const self = this\n let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreateMany lifecycle hook\n op = opts.op = 'beforeCreateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'createMany'\n self.dbg(op, mapper, records, opts)\n return self.POST(\n self.getPath('createMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreateMany lifecycle hook\n op = opts.op = 'afterCreateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n },\n\n /**\n * Call {@link HttpAdapter#log} at the \"debug\" level.\n *\n * @name HttpAdapter#dbg\n * @method\n * @param {...*} [args] Args passed to {@link HttpAdapter#log}.\n */\n dbg (...args) {\n this.log('debug', ...args)\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.deserialize)) {\n return opts.deserialize(mapper, response, opts)\n }\n if (isFunction(mapper.deserialize)) {\n return mapper.deserialize(mapper, response, opts)\n }\n if (opts.raw) {\n return response\n }\n return response ? ('data' in response ? response.data : response) : 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroy lifecycle hook\n op = opts.op = 'beforeDestroy'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy'\n self.dbg(op, mapper, id, opts)\n return self.DEL(\n self.getPath('destroy', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroy lifecycle hook\n op = opts.op = 'afterDestroy'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroyAll lifecycle hook\n op = opts.op = 'beforeDestroyAll'\n return resolve(self.beforeDestroyAll(mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll'\n self.dbg(op, mapper, query, opts)\n return self.DEL(\n self.getPath('destroyAll', mapper, null, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 = 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeFind lifecycle hook\n op = opts.op = 'beforeFind'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find'\n self.dbg(op, mapper, id, opts)\n return self.GET(\n self.getPath('find', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFind lifecycle hook\n op = opts.op = 'afterFind'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll'\n return resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll'\n self.dbg(op, mapper, query, opts)\n return self.GET(\n self.getPath('findAll', mapper, opts.params, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFindAll lifecycle hook\n op = opts.op = 'afterFindAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 || (opts.params = {})\n\n let endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : mapper.endpoint\n let parents = mapper.parents || (mapper.parent ? {\n [mapper.parent]: {\n key: mapper.parentKey,\n field: mapper.parentField\n }\n } : {})\n\n forOwn(parents, function (parent, parentName) {\n let item\n let parentKey = parent.key\n let parentField = parent.field\n let parentDef = mapper.getResource(parentName)\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 (isString(id) || isNumber(id)) {\n item = mapper.get(id)\n } else if (isObject(id)) {\n item = id\n }\n\n if (item) {\n parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null)\n }\n\n if (parentId) {\n delete opts.endpoint\n const _opts = {}\n forOwn(opts, function (value, key) {\n _opts[key] = value\n })\n _(_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 opts.basePath === undefined ? (mapper.basePath === undefined ? self.basePath : mapper.basePath) : opts.basePath,\n self.getEndpoint(mapper, (isString(id) || 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 /**\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 = copy(config, null, null, null, ['data', 'cache', 'timeout'])\n config = 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 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 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 resolve(self.afterHTTP(config, opts, response)).then(function (_response) {\n return _response || response\n })\n })\n },\n\n /**\n * Log the provided arguments at the specified leve.\n *\n * @name HttpAdapter#log\n * @method\n * @param {string} level Log level.\n * @param {...*} [args] Arguments to log.\n */\n log (level, ...args) {\n if (level && !args.length) {\n args.push(level)\n level = 'debug'\n }\n if (level === 'debug' && !this.debug) {\n return\n }\n const prefix = `${level.toUpperCase()}: (HttpAdapter)`\n if (console[level]) {\n console[level](prefix, ...args)\n } else {\n console.log(prefix, ...args)\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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.queryTransform)) {\n return opts.queryTransform(mapper, params, opts)\n }\n if (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 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 (isFunction(opts.serialize)) {\n return opts.serialize(mapper, data, opts)\n }\n if (isFunction(mapper.serialize)) {\n return mapper.serialize(mapper, data, opts)\n }\n return data\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdate lifecycle hook\n op = opts.op = 'beforeUpdate'\n return resolve(self[op](mapper, id, props, opts)).then(function () {\n op = opts.op = 'update'\n self.dbg(op, mapper, id, props, opts)\n return self.PUT(\n self.getPath('update', mapper, id, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdate lifecycle hook\n op = opts.op = 'afterUpdate'\n return resolve(self[op](mapper, id, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateAll lifecycle hook\n op = opts.op = 'beforeUpdateAll'\n return resolve(self[op](mapper, props, query, opts)).then(function () {\n op = opts.op = 'updateAll'\n self.dbg(op, mapper, props, query, opts)\n return self.PUT(\n self.getPath('updateAll', mapper, null, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateAll lifecycle hook\n op = opts.op = 'afterUpdateAll'\n return resolve(self[op](mapper, props, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'updateMany'\n self.dbg(op, mapper, records, opts)\n return self.PUT(\n self.getPath('updateMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateMany lifecycle hook\n op = opts.op = 'afterUpdateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n }\n})\n\n/**\n * Add an Http actions to a mapper.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.addAction = function (name, opts) {\n if (!name || !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 reject(err) }\n mapper[name] = function (id, _opts) {\n const self = this\n if (isObject(id)) {\n _opts = id\n }\n _opts = _opts || {}\n let adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http')\n let config = {}\n 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, isSorN(id) ? id : null, _opts)\n ]\n if (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 deepMixIn(config)(_opts)\n return 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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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 = extend\n\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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 **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"axios\"\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 12a4cf5e19962b949fc7","webpack:///./src/index.js","webpack:///external \"js-data\"","webpack:///external \"axios\""],"names":[],"mappings":"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","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_2__) {\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 12a4cf5e19962b949fc7\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nconst {\n _,\n addHiddenPropsToTarget,\n copy,\n deepMixIn,\n extend,\n fillIn,\n forOwn,\n get,\n isArray,\n isFunction,\n isNumber,\n isObject,\n isSorN,\n isString,\n isUndefined,\n resolve,\n reject,\n toJson\n} = utils\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 forOwn(params, function (val, key) {\n if (val === null || typeof val === 'undefined') {\n return\n }\n if (!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 (isObject(v)) {\n v = 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 noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n}\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#debug\n * @type {boolean}\n * @default false\n */\n debug: false,\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 * @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\n // Default values for arguments\n opts || (opts = {})\n\n fillIn(self, opts)\n fillIn(self, DEFAULTS)\n}\n\naddHiddenPropsToTarget(HttpAdapter.prototype, {\n /**\n * @name HttpAdapter#afterCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreate: noop2,\n\n /**\n * @name HttpAdapter#afterCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreateMany: noop2,\n\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#afterDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroy: noop2,\n\n /**\n * @name HttpAdapter#afterDestroyAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroyAll: noop2,\n\n /**\n * @name HttpAdapter#afterFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFind: noop2,\n\n /**\n * @name HttpAdapter#afterFindAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFindAll: 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#afterUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdate: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateAll: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateMany: noop2,\n\n /**\n * @name HttpAdapter#beforeCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n */\n beforeCreate: noop,\n\n /**\n * @name HttpAdapter#beforeCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeCreateMany: noop,\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#beforeDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeDestroy: noop,\n\n /**\n * @name HttpAdapter#beforeDestroyAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeDestroyAll: noop,\n\n /**\n * @name HttpAdapter#beforeFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeFind: noop,\n\n /**\n * @name HttpAdapter#beforeFindAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeFindAll: 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 /**\n * @name HttpAdapter#beforeUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n */\n beforeUpdate: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n */\n beforeUpdateAll: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeUpdateMany: noop,\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreate lifecycle hook\n op = opts.op = 'beforeCreate'\n return resolve(self[op](mapper, props, opts)).then(function () {\n op = opts.op = 'create'\n self.dbg(op, mapper, props, opts)\n return self.POST(\n self.getPath('create', mapper, props, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreate lifecycle hook\n op = opts.op = 'afterCreate'\n return resolve(self[op](mapper, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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} 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 createMany (mapper, records, opts) {\n const self = this\n let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreateMany lifecycle hook\n op = opts.op = 'beforeCreateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'createMany'\n self.dbg(op, mapper, records, opts)\n return self.POST(\n self.getPath('createMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreateMany lifecycle hook\n op = opts.op = 'afterCreateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n },\n\n /**\n * Call {@link HttpAdapter#log} at the \"debug\" level.\n *\n * @name HttpAdapter#dbg\n * @method\n * @param {...*} [args] Args passed to {@link HttpAdapter#log}.\n */\n dbg (...args) {\n this.log('debug', ...args)\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.deserialize)) {\n return opts.deserialize(mapper, response, opts)\n }\n if (isFunction(mapper.deserialize)) {\n return mapper.deserialize(mapper, response, opts)\n }\n if (opts.raw) {\n return response\n }\n return response ? ('data' in response ? response.data : response) : 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroy lifecycle hook\n op = opts.op = 'beforeDestroy'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy'\n self.dbg(op, mapper, id, opts)\n return self.DEL(\n self.getPath('destroy', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroy lifecycle hook\n op = opts.op = 'afterDestroy'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroyAll lifecycle hook\n op = opts.op = 'beforeDestroyAll'\n return resolve(self.beforeDestroyAll(mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll'\n self.dbg(op, mapper, query, opts)\n return self.DEL(\n self.getPath('destroyAll', mapper, null, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 = 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeFind lifecycle hook\n op = opts.op = 'beforeFind'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find'\n self.dbg(op, mapper, id, opts)\n return self.GET(\n self.getPath('find', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFind lifecycle hook\n op = opts.op = 'afterFind'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll'\n return resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll'\n self.dbg(op, mapper, query, opts)\n return self.GET(\n self.getPath('findAll', mapper, opts.params, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFindAll lifecycle hook\n op = opts.op = 'afterFindAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 || (opts.params = {})\n const relationList = mapper.relationList || []\n let endpoint = isUndefined(opts.endpoint) ? (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 (isObject(id)) {\n item = id\n }\n\n if (item) {\n parentId = parentId || def.getForeignKey(item) || (def.getLocalField(item) ? get(def.getLocalField(item), parentDef.idAttribute) : null)\n }\n\n if (parentId) {\n delete opts.endpoint\n const _opts = {}\n forOwn(opts, function (value, key) {\n _opts[key] = value\n })\n _(_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 isUndefined(opts.basePath) ? (isUndefined(mapper.basePath) ? self.basePath : mapper.basePath) : opts.basePath,\n self.getEndpoint(mapper, (isString(id) || 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 /**\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 = copy(config, null, null, null, ['data', 'cache', 'timeout'])\n config = 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 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 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 resolve(self.afterHTTP(config, opts, response)).then(function (_response) {\n return _response || response\n })\n })\n },\n\n /**\n * Log the provided arguments at the specified leve.\n *\n * @name HttpAdapter#log\n * @method\n * @param {string} level Log level.\n * @param {...*} [args] Arguments to log.\n */\n log (level, ...args) {\n if (level && !args.length) {\n args.push(level)\n level = 'debug'\n }\n if (level === 'debug' && !this.debug) {\n return\n }\n const prefix = `${level.toUpperCase()}: (HttpAdapter)`\n if (console[level]) {\n console[level](prefix, ...args)\n } else {\n console.log(prefix, ...args)\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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.queryTransform)) {\n return opts.queryTransform(mapper, params, opts)\n }\n if (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 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 (isFunction(opts.serialize)) {\n return opts.serialize(mapper, data, opts)\n }\n if (isFunction(mapper.serialize)) {\n return mapper.serialize(mapper, data, opts)\n }\n return data\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdate lifecycle hook\n op = opts.op = 'beforeUpdate'\n return resolve(self[op](mapper, id, props, opts)).then(function () {\n op = opts.op = 'update'\n self.dbg(op, mapper, id, props, opts)\n return self.PUT(\n self.getPath('update', mapper, id, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdate lifecycle hook\n op = opts.op = 'afterUpdate'\n return resolve(self[op](mapper, id, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateAll lifecycle hook\n op = opts.op = 'beforeUpdateAll'\n return resolve(self[op](mapper, props, query, opts)).then(function () {\n op = opts.op = 'updateAll'\n self.dbg(op, mapper, props, query, opts)\n return self.PUT(\n self.getPath('updateAll', mapper, null, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateAll lifecycle hook\n op = opts.op = 'afterUpdateAll'\n return resolve(self[op](mapper, props, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'updateMany'\n self.dbg(op, mapper, records, opts)\n return self.PUT(\n self.getPath('updateMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateMany lifecycle hook\n op = opts.op = 'afterUpdateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n }\n})\n\n/**\n * Add an Http actions to a mapper.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.addAction = function (name, opts) {\n if (!name || !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 reject(err) }\n mapper[name] = function (id, _opts) {\n const self = this\n if (isObject(id)) {\n _opts = id\n }\n _opts = _opts || {}\n let adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http')\n let config = {}\n 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, isSorN(id) ? id : null, _opts)\n ]\n if (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 deepMixIn(config)(_opts)\n return 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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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 = extend\n\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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 **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"axios\"\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/node/mocha.start.js b/node/mocha.start.js index 1c76d20..2cf4c91 100644 --- a/node/mocha.start.js +++ b/node/mocha.start.js @@ -12,6 +12,9 @@ before(function () { } } Test.assert = require('chai').assert + Test.assert.objectsEqual = function (a, b, m) { + Test.assert.deepEqual(JSON.parse(JSON.stringify(a)), JSON.parse(JSON.stringify(b)), m || (JSON.stringify(a) + ' should be equal to ' + JSON.stringify(b))) + } Test.sinon = require('sinon') Test.JSData = require('js-data') Test.HttpAdapter = require('./dist/js-data-http-node') diff --git a/node/package.json b/node/package.json index 183079f..f68d5e4 100644 --- a/node/package.json +++ b/node/package.json @@ -1,7 +1,7 @@ { "name": "js-data-http-node", "description": "Node.js HTTP adapter for js-data.", - "version": "3.0.0-alpha.5", + "version": "3.0.0-alpha.6", "homepage": "https://github.com/js-data/js-data-http", "repository": { "type": "git", @@ -18,7 +18,8 @@ "http", "node.js" ], - "peerDependencies": { - "axios": "0.9.x" + "dependencies": { + "axios": "^0.9.1", + "js-data": "^3.0.0-alpha.15" } } diff --git a/package.json b/package.json index 4a7a011..ccfd67a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "js-data-http", "description": "HTTP (XHR) adapter for js-data in the browser.", - "version": "3.0.0-alpha.5", + "version": "3.0.0-alpha.6", "homepage": "https://github.com/js-data/js-data-http", "repository": { "type": "git", diff --git a/src/index.js b/src/index.js index fe0485f..f7ec802 100644 --- a/src/index.js +++ b/src/index.js @@ -9,6 +9,7 @@ const { extend, fillIn, forOwn, + get, isArray, isFunction, isNumber, @@ -860,20 +861,16 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { const self = this opts || (opts = {}) opts.params || (opts.params = {}) + const relationList = mapper.relationList || [] + let endpoint = isUndefined(opts.endpoint) ? (isUndefined(mapper.endpoint) ? mapper.name : mapper.endpoint) : opts.endpoint - let endpoint = opts.hasOwnProperty('endpoint') ? opts.endpoint : mapper.endpoint - let parents = mapper.parents || (mapper.parent ? { - [mapper.parent]: { - key: mapper.parentKey, - field: mapper.parentField + relationList.forEach(function (def) { + if (def.type !== 'belongsTo' || !def.parent) { + return } - } : {}) - - forOwn(parents, function (parent, parentName) { let item - let parentKey = parent.key - let parentField = parent.field - let parentDef = mapper.getResource(parentName) + const parentKey = def.foreignKey + const parentDef = def.getRelation() let parentId = opts.params[parentKey] if (parentId === false || !parentKey || !parentDef) { @@ -884,14 +881,12 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { } else { delete opts.params[parentKey] - if (isString(id) || isNumber(id)) { - item = mapper.get(id) - } else if (isObject(id)) { + if (isObject(id)) { item = id } if (item) { - parentId = parentId || item[parentKey] || (item[parentField] ? item[parentField][parentDef.idAttribute] : null) + parentId = parentId || def.getForeignKey(item) || (def.getLocalField(item) ? get(def.getLocalField(item), parentDef.idAttribute) : null) } if (parentId) { @@ -901,7 +896,7 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { _opts[key] = value }) _(_opts, parentDef) - endpoint = makePath(self.getEndpoint(parentDef, parentId, _opts, parentId, endpoint)) + endpoint = makePath(self.getEndpoint(parentDef, parentId, _opts), parentId, endpoint) return false } } @@ -922,7 +917,7 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { const self = this opts || (opts = {}) const args = [ - opts.basePath === undefined ? (mapper.basePath === undefined ? self.basePath : mapper.basePath) : opts.basePath, + isUndefined(opts.basePath) ? (isUndefined(mapper.basePath) ? self.basePath : mapper.basePath) : opts.basePath, self.getEndpoint(mapper, (isString(id) || isNumber(id) || method === 'create') ? id : null, opts) ] if (method === 'find' || method === 'update' || method === 'destroy') { diff --git a/test/find.test.js b/test/find.test.js index 6f8146e..7edeb25 100644 --- a/test/find.test.js +++ b/test/find.test.js @@ -112,4 +112,104 @@ describe('find', function () { Test.assert.equal(Test.requests[1].method, 'GET') }) }) + + it('should work with multiple parents', function () { + var Test = this + var store = new Test.JSData.DataStore({ + mapperDefaults: { + basePath: 'api' + } + }) + store.registerAdapter('http', Test.adapter, { default: true }) + store.defineMapper('user', { + relations: { + hasMany: { + post: { + foreignKey: 'userId', + localField: 'posts' + } + } + } + }) + store.defineMapper('post', { + endpoint: 'posts', + relations: { + belongsTo: { + user: { + parent: true, + foreignKey: 'userId', + localField: 'user' + } + } + } + }) + store.defineMapper('comment', { + relations: { + belongsTo: { + post: { + parent: true, + foreignKey: 'postId', + localField: 'post' + }, + user: { + parent: true, + foreignKey: 'userId', + localField: 'user' + } + } + } + }) + + const post = { + id: 1, + userId: 10 + } + + const comment = { + id: 3, + postId: 1, + userId: 13 + } + + const comment2 = { + id: 4, + userId: 7 + } + + setTimeout(function () { + Test.requests[0].respond(200, { 'Content-Type': 'application/json' }, JSON.stringify(post)) + }, 30) + + return store.find('post', 1, { params: { userId: 10 } }) + .then(function (data) { + Test.assert.equal(1, Test.requests.length) + Test.assert.equal(Test.requests[0].url, 'api/user/10/posts/1') + Test.assert.equal(Test.requests[0].method, 'GET') + Test.assert.objectsEqual(data, post, 'post should have been found') + + setTimeout(function () { + Test.requests[1].respond(200, { 'Content-Type': 'application/json' }, JSON.stringify(comment)) + }, 30) + + return store.find('comment', 3, { params: { postId: 1, userId: 13 } }) + }) + .then(function (data) { + Test.assert.equal(2, Test.requests.length) + Test.assert.equal(Test.requests[1].url, 'api/user/13/posts/1/comment/3') + Test.assert.equal(Test.requests[1].method, 'GET') + Test.assert.objectsEqual(data, comment, 'comment should have been found') + + setTimeout(function () { + Test.requests[2].respond(200, { 'Content-Type': 'application/json' }, JSON.stringify(comment2)) + }, 30) + + return store.find('comment', 4, { params: { userId: 7 } }) + }) + .then(function (data) { + Test.assert.equal(3, Test.requests.length) + Test.assert.equal(Test.requests[2].url, 'api/user/7/comment/4') + Test.assert.equal(Test.requests[2].method, 'GET') + Test.assert.objectsEqual(data, comment2, 'comment should have been found') + }) + }) }) From 71c27d31ec965adb8a86be6d31290596e4a16937 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Sat, 27 Feb 2016 13:53:30 -0800 Subject: [PATCH 14/24] Added analytics to conf.json --- conf.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/conf.json b/conf.json index b1f4ca6..e6aed45 100644 --- a/conf.json +++ b/conf.json @@ -14,10 +14,14 @@ "templates": { "theme": "lumen", "systemName": "js-data-http", - "copyright": "js-data-http Copyright © 2014-2016 Jason Dobry", + "copyright": "js-data-http Copyright © 2014-2016 js-data-http project authors", "outputSourceFiles": true, "syntaxTheme": "dark", "linenums": true, - "footer": "
Back to js-data.io
" + "footer": "
Back to js-data.io
", + "analytics": { + "ua": "UA-55528236-2", + "domain": "api.js-data.io" + } } } \ No newline at end of file From 187d1a80bb2a88c295a585c0884da6e91c065f39 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Thu, 10 Mar 2016 20:12:47 -0800 Subject: [PATCH 15/24] 3.0.0-alpha.7 --- CHANGELOG.md | 6 + dist/js-data-http.js | 2431 +++++++++++++++++++++------- dist/js-data-http.js.map | 2 +- dist/js-data-http.min.js | 9 + dist/js-data-http.min.map | 4 + fetch/dist/js-data-fetch.js | 2039 ++++++++++++++++++----- fetch/dist/js-data-fetch.js.map | 2 +- fetch/dist/js-data-fetch.min.js | 2 +- fetch/dist/js-data-fetch.min.map | 2 +- fetch/karma.conf.js | 7 +- fetch/package.json | 6 +- karma.conf.js | 7 +- node/dist/js-data-http-node.js | 2041 ++++++++++++++++++----- node/dist/js-data-http-node.js.map | 2 +- node/package.json | 7 +- package.json | 25 +- scripts/authors.js | 19 +- scripts/banner.js | 20 +- scripts/version.js | 42 +- src/index.js | 607 ++----- 20 files changed, 5279 insertions(+), 2001 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ea6b5c8..b51980c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,12 @@ - #46 - Sending large payloads takes huge amount of time - thanks @ivanvoznyakovsky - #47 - perf(http): speed up preparation of http config with large payload - thanks @ivanvoznyakovsky +##### 3.0.0-alpha.7 - 10 March 2016 + +###### Other +- Now using js-data-repo-tools +- Now using js-data-adapter + ##### 3.0.0-alpha.6 - 23 February 2016 - getEndpoint now works with multiple parents diff --git a/dist/js-data-http.js b/dist/js-data-http.js index 226ae5c..1f6d3bc 100644 --- a/dist/js-data-http.js +++ b/dist/js-data-http.js @@ -60,8 +60,14 @@ return /******/ (function(modules) { // webpackBootstrap var _jsData = __webpack_require__(1); + var _jsDataAdapter = __webpack_require__(2); + + var _jsDataAdapter2 = _interopRequireDefault(_jsDataAdapter); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + /* global fetch:true Headers:true Request:true */ - var axios = __webpack_require__(2); + var axios = __webpack_require__(3); var _ = _jsData.utils._; var addHiddenPropsToTarget = _jsData.utils.addHiddenPropsToTarget; var copy = _jsData.utils.copy; @@ -88,6 +94,30 @@ return /******/ (function(modules) { // webpackBootstrap hasFetch = window && window.fetch; } catch (e) {} + var noop = function noop() { + var self = this; + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + var opts = args[args.length - 1]; + self.dbg.apply(self, [opts.op].concat(args)); + return resolve(); + }; + + var noop2 = function noop2() { + var self = this; + + for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + + var opts = args[args.length - 2]; + self.dbg.apply(self, [opts.op].concat(args)); + return resolve(); + }; + function isValidString(value) { return value != null && value !== ''; } @@ -96,8 +126,8 @@ return /******/ (function(modules) { // webpackBootstrap return items.filter(isValidString).join(separator); } function makePath() { - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; + for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { + args[_key3] = arguments[_key3]; } var result = join(args, '/'); @@ -140,27 +170,7 @@ return /******/ (function(modules) { // webpackBootstrap return url; } - var noop = function noop() { - var self = this; - - for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - - var opts = args[args.length - 1]; - self.dbg.apply(self, [opts.op].concat(args)); - }; - - var noop2 = function noop2() { - var self = this; - - for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { - args[_key3] = arguments[_key3]; - } - - var opts = args[args.length - 2]; - self.dbg.apply(self, [opts.op].concat(args)); - }; + var __super__ = _jsDataAdapter2.default.prototype; var DEFAULTS = { // Default and user-defined settings @@ -170,13 +180,6 @@ return /******/ (function(modules) { // webpackBootstrap */ basePath: '', - /** - * @name HttpAdapter#debug - * @type {boolean} - * @default false - */ - debug: false, - /** * @name HttpAdapter#forceTrailingSlash * @type {boolean} @@ -225,35 +228,27 @@ return /******/ (function(modules) { // webpackBootstrap */ function HttpAdapter(opts) { var self = this; - - // Default values for arguments opts || (opts = {}); - - fillIn(self, opts); - fillIn(self, DEFAULTS); + fillIn(opts, DEFAULTS); + _jsDataAdapter2.default.call(self, opts); } - addHiddenPropsToTarget(HttpAdapter.prototype, { - /** - * @name HttpAdapter#afterCreate - * @method - * @param {Object} mapper - * @param {Object} props - * @param {Object} opts - * @param {Object} data - */ - afterCreate: noop2, + // Setup prototype inheritance from Adapter + HttpAdapter.prototype = Object.create(_jsDataAdapter2.default.prototype, { + constructor: { + value: HttpAdapter, + enumerable: false, + writable: true, + configurable: true + } + }); - /** - * @name HttpAdapter#afterCreateMany - * @method - * @param {Object} mapper - * @param {Object} records - * @param {Object} opts - * @param {Object} data - */ - afterCreateMany: noop2, + Object.defineProperty(HttpAdapter, '__super__', { + configurable: true, + value: _jsDataAdapter2.default + }); + addHiddenPropsToTarget(HttpAdapter.prototype, { /** * @name HttpAdapter#afterDEL * @method @@ -264,46 +259,6 @@ return /******/ (function(modules) { // webpackBootstrap */ afterDEL: noop2, - /** - * @name HttpAdapter#afterDestroy - * @method - * @param {Object} mapper - * @param {(string|number)} id - * @param {Object} opts - * @param {Object} data - */ - afterDestroy: noop2, - - /** - * @name HttpAdapter#afterDestroyAll - * @method - * @param {Object} mapper - * @param {(string|number)} id - * @param {Object} opts - * @param {Object} data - */ - afterDestroyAll: noop2, - - /** - * @name HttpAdapter#afterFind - * @method - * @param {Object} mapper - * @param {(string|number)} id - * @param {Object} opts - * @param {Object} data - */ - afterFind: noop2, - - /** - * @name HttpAdapter#afterFindAll - * @method - * @param {Object} mapper - * @param {(string|number)} id - * @param {Object} opts - * @param {Object} data - */ - afterFindAll: noop2, - /** * @name HttpAdapter#afterGET * @method @@ -345,56 +300,6 @@ return /******/ (function(modules) { // webpackBootstrap */ afterPUT: noop2, - /** - * @name HttpAdapter#afterUpdate - * @method - * @param {Object} mapper - * @param {(string|number)} id - * @param {Object} props - * @param {Object} opts - * @param {Object} data - */ - afterUpdate: noop2, - - /** - * @name HttpAdapter#afterUpdateAll - * @method - * @param {Object} mapper - * @param {Object} props - * @param {Object} query - * @param {Object} opts - * @param {Object} data - */ - afterUpdateAll: noop2, - - /** - * @name HttpAdapter#afterUpdateMany - * @method - * @param {Object} mapper - * @param {Object} records - * @param {Object} opts - * @param {Object} data - */ - afterUpdateMany: noop2, - - /** - * @name HttpAdapter#beforeCreate - * @method - * @param {Object} mapper - * @param {Object} props - * @param {Object} opts - */ - beforeCreate: noop, - - /** - * @name HttpAdapter#beforeCreateMany - * @method - * @param {Object} mapper - * @param {Object} records - * @param {Object} opts - */ - beforeCreateMany: noop, - /** * @name HttpAdapter#beforeDEL * @method @@ -404,42 +309,6 @@ return /******/ (function(modules) { // webpackBootstrap */ beforeDEL: noop, - /** - * @name HttpAdapter#beforeDestroy - * @method - * @param {Object} mapper - * @param {(string|number)} id - * @param {Object} opts - */ - beforeDestroy: noop, - - /** - * @name HttpAdapter#beforeDestroyAll - * @method - * @param {Object} mapper - * @param {Object} query - * @param {Object} opts - */ - beforeDestroyAll: noop, - - /** - * @name HttpAdapter#beforeFind - * @method - * @param {Object} mapper - * @param {(string|number)} id - * @param {Object} opts - */ - beforeFind: noop, - - /** - * @name HttpAdapter#beforeFindAll - * @method - * @param {Object} mapper - * @param {Object} query - * @param {Object} opts - */ - beforeFindAll: noop, - /** * @name HttpAdapter#beforeGET * @method @@ -477,34 +346,64 @@ return /******/ (function(modules) { // webpackBootstrap */ beforePUT: noop, - /** - * @name HttpAdapter#beforeUpdate - * @method - * @param {Object} mapper - * @param {(string|number)} id - * @param {Object} props - * @param {Object} opts - */ - beforeUpdate: noop, - - /** - * @name HttpAdapter#beforeUpdateAll - * @method - * @param {Object} mapper - * @param {Object} props - * @param {Object} query - * @param {Object} opts - */ - beforeUpdateAll: noop, + _create: function _create(mapper, props, opts) { + var self = this; + return self.POST(self.getPath('create', mapper, props, opts), self.serialize(mapper, props, opts), opts).then(function (response) { + return self._end(mapper, opts, response); + }); + }, + _createMany: function _createMany(mapper, props, opts) { + var self = this; + return self.POST(self.getPath('createMany', mapper, null, opts), self.serialize(mapper, props, opts), opts).then(function (response) { + return self._end(mapper, opts, response); + }); + }, + _destroy: function _destroy(mapper, id, opts) { + var self = this; + return self.DEL(self.getPath('destroy', mapper, id, opts), opts).then(function (response) { + return self._end(mapper, opts, response); + }); + }, + _destroyAll: function _destroyAll(mapper, query, opts) { + var self = this; + return self.DEL(self.getPath('destroyAll', mapper, null, opts), opts).then(function (response) { + return self._end(mapper, opts, response); + }); + }, + _end: function _end(mapper, opts, response) { + return [this.deserialize(mapper, response.data, opts), response]; + }, + _find: function _find(mapper, id, opts) { + var self = this; + return self.GET(self.getPath('find', mapper, id, opts), opts).then(function (response) { + return self._end(mapper, opts, response); + }); + }, + _findAll: function _findAll(mapper, query, opts) { + var self = this; + return self.GET(self.getPath('findAll', mapper, opts.params, opts), opts).then(function (response) { + return self._end(mapper, opts, response); + }); + }, + _update: function _update(mapper, id, props, opts) { + var self = this; + return self.PUT(self.getPath('update', mapper, id, opts), self.serialize(mapper, props, opts), opts).then(function (response) { + return self._end(mapper, opts, response); + }); + }, + _updateAll: function _updateAll(mapper, props, query, opts) { + var self = this; + return self.PUT(self.getPath('updateAll', mapper, null, opts), self.serialize(mapper, props, opts), opts).then(function (response) { + return self._end(mapper, opts, response); + }); + }, + _updateMany: function _updateMany(mapper, records, opts) { + var self = this; + return self.PUT(self.getPath('updateMany', mapper, null, opts), self.serialize(mapper, records, opts), opts).then(function (response) { + return self._end(mapper, opts, response); + }); + }, - /** - * @name HttpAdapter#beforeUpdateMany - * @method - * @param {Object} mapper - * @param {Object} records - * @param {Object} opts - */ - beforeUpdateMany: noop, /** * Create a new the record from the provided `props`. @@ -520,28 +419,12 @@ return /******/ (function(modules) { // webpackBootstrap */ create: function create(mapper, props, opts) { var self = this; - var op = void 0; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(mapper, opts.params, opts); - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; - - // beforeCreate lifecycle hook - op = opts.op = 'beforeCreate'; - return resolve(self[op](mapper, props, opts)).then(function () { - op = opts.op = 'create'; - self.dbg(op, mapper, props, opts); - return self.POST(self.getPath('create', mapper, props, opts), self.serialize(mapper, props, opts), opts); - }).then(function (response) { - return self.deserialize(mapper, response, opts); - }).then(function (data) { - // afterCreate lifecycle hook - op = opts.op = 'afterCreate'; - return resolve(self[op](mapper, props, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data; - }); - }); + opts.suffix = self.getSuffix(mapper, opts); + + return __super__.create.call(self, mapper, props, opts); }, @@ -551,52 +434,20 @@ return /******/ (function(modules) { // webpackBootstrap * @name HttpAdapter#createMany * @method * @param {Object} mapper The mapper. - * @param {Array} records Array of property objects to send as the payload. + * @param {Array} props Array of property objects to send as the payload. * @param {Object} [opts] Configuration options. * @param {string} [opts.params] TODO * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO * @return {Promise} */ - createMany: function createMany(mapper, records, opts) { + createMany: function createMany(mapper, props, opts) { var self = this; - var op = void 0; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(mapper, opts.params, opts); - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; - - // beforeCreateMany lifecycle hook - op = opts.op = 'beforeCreateMany'; - return resolve(self[op](mapper, records, opts)).then(function () { - op = opts.op = 'createMany'; - self.dbg(op, mapper, records, opts); - return self.POST(self.getPath('createMany', mapper, null, opts), self.serialize(mapper, records, opts), opts); - }).then(function (response) { - return self.deserialize(mapper, response, opts); - }).then(function (data) { - // afterCreateMany lifecycle hook - op = opts.op = 'afterCreateMany'; - return resolve(self[op](mapper, records, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data; - }); - }); - }, - - - /** - * Call {@link HttpAdapter#log} at the "debug" level. - * - * @name HttpAdapter#dbg - * @method - * @param {...*} [args] Args passed to {@link HttpAdapter#log}. - */ - dbg: function dbg() { - for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { - args[_key4] = arguments[_key4]; - } + opts.suffix = self.getSuffix(mapper, opts); - this.log.apply(this, ['debug'].concat(args)); + return __super__.createMany.call(self, mapper, props, opts); }, @@ -657,10 +508,12 @@ return /******/ (function(modules) { // webpackBootstrap if (isFunction(mapper.deserialize)) { return mapper.deserialize(mapper, response, opts); } - if (opts.raw) { - return response; + if (response) { + if (response.hasOwnProperty('data')) { + return response.data; + } } - return response ? 'data' in response ? response.data : response : response; + return response; }, @@ -678,28 +531,12 @@ return /******/ (function(modules) { // webpackBootstrap */ destroy: function destroy(mapper, id, opts) { var self = this; - var op = void 0; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(mapper, opts.params, opts); - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; - - // beforeDestroy lifecycle hook - op = opts.op = 'beforeDestroy'; - return resolve(self[op](mapper, id, opts)).then(function () { - op = opts.op = 'destroy'; - self.dbg(op, mapper, id, opts); - return self.DEL(self.getPath('destroy', mapper, id, opts), opts); - }).then(function (response) { - return self.deserialize(mapper, response, opts); - }).then(function (data) { - // afterDestroy lifecycle hook - op = opts.op = 'afterDestroy'; - return resolve(self[op](mapper, id, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data; - }); - }); + opts.suffix = self.getSuffix(mapper, opts); + + return __super__.destroy.call(self, mapper, id, opts); }, @@ -717,30 +554,14 @@ return /******/ (function(modules) { // webpackBootstrap */ destroyAll: function destroyAll(mapper, query, opts) { var self = this; - var op = void 0; query || (query = {}); opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); deepMixIn(opts.params, query); opts.params = self.queryTransform(mapper, opts.params, opts); - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; - - // beforeDestroyAll lifecycle hook - op = opts.op = 'beforeDestroyAll'; - return resolve(self.beforeDestroyAll(mapper, query, opts)).then(function () { - op = opts.op = 'destroyAll'; - self.dbg(op, mapper, query, opts); - return self.DEL(self.getPath('destroyAll', mapper, null, opts), opts); - }).then(function (response) { - return self.deserialize(mapper, response, opts); - }).then(function (data) { - // afterDestroyAll lifecycle hook - op = opts.op = 'afterDestroyAll'; - return resolve(self[op](mapper, query, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data; - }); - }); + opts.suffix = self.getSuffix(mapper, opts); + + return __super__.destroyAll.call(self, mapper, query, opts); }, @@ -821,28 +642,12 @@ return /******/ (function(modules) { // webpackBootstrap */ find: function find(mapper, id, opts) { var self = this; - var op = void 0; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(mapper, opts.params, opts); - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; - - // beforeFind lifecycle hook - op = opts.op = 'beforeFind'; - return resolve(self[op](mapper, id, opts)).then(function () { - op = opts.op = 'find'; - self.dbg(op, mapper, id, opts); - return self.GET(self.getPath('find', mapper, id, opts), opts); - }).then(function (response) { - return self.deserialize(mapper, response, opts); - }).then(function (data) { - // afterFind lifecycle hook - op = opts.op = 'afterFind'; - return resolve(self[op](mapper, id, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data; - }); - }); + opts.suffix = self.getSuffix(mapper, opts); + + return __super__.find.call(self, mapper, id, opts); }, @@ -860,30 +665,14 @@ return /******/ (function(modules) { // webpackBootstrap */ findAll: function findAll(mapper, query, opts) { var self = this; - var op = void 0; query || (query = {}); opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; + opts.suffix = self.getSuffix(mapper, opts); deepMixIn(opts.params, query); opts.params = self.queryTransform(mapper, opts.params, opts); - // beforeFindAll lifecycle hook - op = opts.op = 'beforeFindAll'; - return resolve(self[op](mapper, query, opts)).then(function () { - op = opts.op = 'findAll'; - self.dbg(op, mapper, query, opts); - return self.GET(self.getPath('findAll', mapper, opts.params, opts), opts); - }).then(function (response) { - return self.deserialize(mapper, response, opts); - }).then(function (data) { - // afterFindAll lifecycle hook - op = opts.op = 'afterFindAll'; - return resolve(self[op](mapper, query, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data; - }); - }); + return __super__.findAll.call(self, mapper, query, opts); }, @@ -1004,6 +793,16 @@ return /******/ (function(modules) { // webpackBootstrap } return makePath.apply(_jsData.utils, args); }, + getSuffix: function getSuffix(mapper, opts) { + opts || (opts = {}); + if (isUndefined(opts.suffix)) { + if (isUndefined(mapper.suffix)) { + return this.suffix; + } + return mapper.suffix; + } + return opts.suffix; + }, /** @@ -1071,39 +870,6 @@ return /******/ (function(modules) { // webpackBootstrap }, - /** - * Log the provided arguments at the specified leve. - * - * @name HttpAdapter#log - * @method - * @param {string} level Log level. - * @param {...*} [args] Arguments to log. - */ - log: function log(level) { - for (var _len5 = arguments.length, args = Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) { - args[_key5 - 1] = arguments[_key5]; - } - - if (level && !args.length) { - args.push(level); - level = 'debug'; - } - if (level === 'debug' && !this.debug) { - return; - } - var prefix = level.toUpperCase() + ': (HttpAdapter)'; - if (console[level]) { - var _console2; - - (_console2 = console)[level].apply(_console2, [prefix].concat(args)); - } else { - var _console3; - - (_console3 = console).log.apply(_console3, [prefix].concat(args)); - } - }, - - /** * TODO * @@ -1257,28 +1023,12 @@ return /******/ (function(modules) { // webpackBootstrap */ update: function update(mapper, id, props, opts) { var self = this; - var op = void 0; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(mapper, opts.params, opts); - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; - - // beforeUpdate lifecycle hook - op = opts.op = 'beforeUpdate'; - return resolve(self[op](mapper, id, props, opts)).then(function () { - op = opts.op = 'update'; - self.dbg(op, mapper, id, props, opts); - return self.PUT(self.getPath('update', mapper, id, opts), self.serialize(mapper, props, opts), opts); - }).then(function (response) { - return self.deserialize(mapper, response, opts); - }).then(function (data) { - // afterUpdate lifecycle hook - op = opts.op = 'afterUpdate'; - return resolve(self[op](mapper, id, props, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data; - }); - }); + opts.suffix = self.getSuffix(mapper, opts); + + return __super__.update.call(self, mapper, id, props, opts); }, @@ -1295,30 +1045,14 @@ return /******/ (function(modules) { // webpackBootstrap */ updateAll: function updateAll(mapper, props, query, opts) { var self = this; - var op = void 0; query || (query = {}); opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); deepMixIn(opts.params, query); opts.params = self.queryTransform(mapper, opts.params, opts); - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; - - // beforeUpdateAll lifecycle hook - op = opts.op = 'beforeUpdateAll'; - return resolve(self[op](mapper, props, query, opts)).then(function () { - op = opts.op = 'updateAll'; - self.dbg(op, mapper, props, query, opts); - return self.PUT(self.getPath('updateAll', mapper, null, opts), self.serialize(mapper, props, opts), opts); - }).then(function (response) { - return self.deserialize(mapper, response, opts); - }).then(function (data) { - // afterUpdateAll lifecycle hook - op = opts.op = 'afterUpdateAll'; - return resolve(self[op](mapper, props, query, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data; - }); - }); + opts.suffix = self.getSuffix(mapper, opts); + + return __super__.updateAll.call(self, mapper, props, query, opts); }, @@ -1341,28 +1075,12 @@ return /******/ (function(modules) { // webpackBootstrap */ updateMany: function updateMany(mapper, records, opts) { var self = this; - var op = void 0; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(mapper, opts.params, opts); - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; - - // beforeUpdateMany lifecycle hook - op = opts.op = 'beforeUpdateMany'; - return resolve(self[op](mapper, records, opts)).then(function () { - op = opts.op = 'updateMany'; - self.dbg(op, mapper, records, opts); - return self.PUT(self.getPath('updateMany', mapper, null, opts), self.serialize(mapper, records, opts), opts); - }).then(function (response) { - return self.deserialize(mapper, response, opts); - }).then(function (data) { - // afterUpdateMany lifecycle hook - op = opts.op = 'afterUpdateMany'; - return resolve(self[op](mapper, records, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data; - }); - }); + opts.suffix = self.getSuffix(mapper, opts); + + return __super__.updateMany.call(self, mapper, records, opts); } }); @@ -1400,188 +1118,1645 @@ return /******/ (function(modules) { // webpackBootstrap }; mapper[name] = function (id, _opts) { var self = this; - if (isObject(id)) { - _opts = id; + if (isObject(id)) { + _opts = id; + } + _opts = _opts || {}; + var adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http'); + var config = {}; + fillIn(config, opts); + if (!_opts.hasOwnProperty('endpoint') && config.endpoint) { + _opts.endpoint = config.endpoint; + } + if (typeof _opts.getEndpoint === 'function') { + config.url = _opts.getEndpoint(self, _opts); + } else { + var _args = [_opts.basePath || self.basePath || adapter.basePath, adapter.getEndpoint(self, isSorN(id) ? id : null, _opts)]; + if (isSorN(id)) { + _args.push(id); + } + _args.push(opts.pathname || name); + config.url = makePath.apply(null, _args); + } + config.method = config.method || 'GET'; + config.mapper = self.name; + deepMixIn(config)(_opts); + return resolve(config).then(_opts.request || opts.request).then(function (config) { + return adapter.HTTP(config); + }).then(function (data) { + if (data && data.config) { + data.config.mapper = self.name; + } + return data; + }).then(_opts.response || opts.response, _opts.responseError || opts.responseError); + }; + return mapper; + }; + }; + + /** + * Add multiple Http actions to a mapper. See {@link HttpAdapter.addAction} for + * action configuration options. + * + * @name HttpAdapter.addActions + * @method + * @param {Object.} opts Object where the key is an action name + * and the value is the configuration for the action. + * @return {Function} Decoration function, which should be passed the mapper to + * decorate when invoked. + */ + HttpAdapter.addActions = function (opts) { + opts || (opts = {}); + return function (mapper) { + forOwn(mapper, function (value, key) { + HttpAdapter.addAction(key, value)(mapper); + }); + return mapper; + }; + }; + + /** + * Alternative to ES6 class syntax for extending `HttpAdapter`. + * + * __ES6__: + * ```javascript + * class MyHttpAdapter extends HttpAdapter { + * deserialize (Model, data, opts) { + * const data = super.deserialize(Model, data, opts) + * data.foo = 'bar' + * return data + * } + * } + * ``` + * + * __ES5__: + * ```javascript + * var instanceProps = { + * // override deserialize + * deserialize: function (Model, data, opts) { + * var Ctor = this.constructor + * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize + * // call the super deserialize + * var data = superDeserialize(Model, data, opts) + * data.foo = 'bar' + * return data + * }, + * say: function () { return 'hi' } + * } + * var classProps = { + * yell: function () { return 'HI' } + * } + * + * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps) + * var adapter = new MyHttpAdapter() + * adapter.say() // "hi" + * MyHttpAdapter.yell() // "HI" + * ``` + * + * @name HttpAdapter.extend + * @method + * @param {Object} [instanceProps] Properties that will be added to the + * prototype of the subclass. + * @param {Object} [classProps] Properties that will be added as static + * properties to the subclass itself. + * @return {Object} Subclass of `HttpAdapter`. + */ + HttpAdapter.extend = extend; + + /** + * Details of the current version of the `js-data-http` module. + * + * @name HttpAdapter.version + * @type {Object} + * @property {string} version.full The full semver value. + * @property {number} version.major The major version number. + * @property {number} version.minor The minor version number. + * @property {number} version.patch The patch version number. + * @property {(string|boolean)} version.alpha The alpha version value, + * otherwise `false` if the current version is not alpha. + * @property {(string|boolean)} version.beta The beta version value, + * otherwise `false` if the current version is not beta. + */ + HttpAdapter.version = { + full: '<%= pkg.version %>', + major: parseInt('<%= major %>', 10), + minor: parseInt('<%= minor %>', 10), + patch: parseInt('<%= patch %>', 10), + alpha: true ? '<%= alpha %>' : false, + beta: true ? '<%= beta %>' : false + }; + + /** + * Registered as `js-data-http` in NPM and Bower. The build of `js-data-http` + * that works on Node.js is registered in NPM as `js-data-http-node`. The build + * 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) { ... }) + * ``` + * + * @module js-data-http + */ + + module.exports = HttpAdapter; + +/***/ }, +/* 1 */ +/***/ function(module, exports) { + + module.exports = __WEBPACK_EXTERNAL_MODULE_1__; + +/***/ }, +/* 2 */ +/***/ function(module, exports, __webpack_require__) { + + (function (global, factory) { + true ? factory(__webpack_require__(1)) : + typeof define === 'function' && define.amd ? define('js-data-adapter', ['js-data'], factory) : + (factory(global.JSData)); + }(this, function (jsData) { 'use strict'; + + var babelHelpers = {}; + babelHelpers.typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { + return typeof obj; + } : function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; + }; + + babelHelpers.defineProperty = function (obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; + }; + + babelHelpers.slicedToArray = function () { + function sliceIterator(arr, i) { + var _arr = []; + var _n = true; + var _d = false; + var _e = undefined; + + try { + for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"]) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; + } + + return function (arr, i) { + if (Array.isArray(arr)) { + return arr; + } else if (Symbol.iterator in Object(arr)) { + return sliceIterator(arr, i); + } else { + throw new TypeError("Invalid attempt to destructure non-iterable instance"); + } + }; + }(); + + babelHelpers; + + var addHiddenPropsToTarget = jsData.utils.addHiddenPropsToTarget; + var deepFillIn = jsData.utils.deepFillIn; + var extend = jsData.utils.extend; + var fillIn = jsData.utils.fillIn; + var forEachRelation = jsData.utils.forEachRelation; + var get = jsData.utils.get; + var isArray = jsData.utils.isArray; + var isObject = jsData.utils.isObject; + var isUndefined = jsData.utils.isUndefined; + var omit = jsData.utils.omit; + var plainCopy = jsData.utils.plainCopy; + var resolve = jsData.utils.resolve; + + + var noop = function noop() { + var self = this; + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + var opts = args[args.length - 1]; + self.dbg.apply(self, [opts.op].concat(args)); + return resolve(); + }; + + var noop2 = function noop2() { + var self = this; + + for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + + var opts = args[args.length - 2]; + self.dbg.apply(self, [opts.op].concat(args)); + return resolve(); + }; + + var unique = function unique(array) { + var seen = {}; + var final = []; + array.forEach(function (item) { + if (item in seen) { + return; + } + final.push(item); + seen[item] = 0; + }); + return final; + }; + + var withoutRelations = function withoutRelations(mapper, props) { + return omit(props, mapper.relationFields || []); + }; + + var DEFAULTS = { + /** + * Whether to log debugging information. + * + * @name Adapter#debug + * @type {boolean} + * @default false + */ + debug: false, + + /** + * Whether to return a more detailed response object. + * + * @name Adapter#raw + * @type {boolean} + * @default false + */ + raw: false + }; + + /** + * Abstract class meant to be extended by adapters. + * + * @class Adapter + * @abstract + * @param {Object} [opts] Configuration opts. + * @param {boolean} [opts.debug=false] Whether to log debugging information. + * @param {boolean} [opts.raw=false] Whether to return a more detailed response + * object. + */ + function Adapter(opts) { + var self = this; + opts || (opts = {}); + fillIn(opts, DEFAULTS); + fillIn(self, opts); + } + + Adapter.reserved = ['orderBy', 'sort', 'limit', 'offset', 'skip', 'where']; + + /** + * Response object used when `raw` is `true`. May contain other fields in + * addition to `data`. + * + * @typedef {Object} Response + * @property {Object} data Response data. + * @property {string} op The operation for which the response was created. + */ + function Response(data, meta, op) { + var self = this; + meta || (meta = {}); + self.data = data; + fillIn(self, meta); + self.op = op; + } + + Adapter.Response = Response; + + /** + * Alternative to ES6 class syntax for extending `Adapter`. + * + * @name Adapter.extend + * @method + * @param {Object} [instanceProps] Properties that will be added to the + * prototype of the subclass. + * @param {Object} [classProps] Properties that will be added as static + * properties to the subclass itself. + * @return {Object} Subclass of `Adapter`. + */ + Adapter.extend = extend; + + addHiddenPropsToTarget(Adapter.prototype, { + /** + * Lifecycle method method called by create. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes create to wait for the Promise to resolve before continuing. + * + * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the created record. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by create. + * + * @name Adapter#afterCreate + * @method + * @param {Object} mapper The `mapper` argument passed to create. + * @param {Object} props The `props` argument passed to create. + * @param {Object} opts The `opts` argument passed to create. + * @property {string} opts.op `afterCreate` + * @param {Object|Response} response Created record or {@link Response}, depending on the value of `opts.raw`. + */ + afterCreate: noop2, + + /** + * Lifecycle method method called by createMany. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes createMany to wait for the Promise to resolve before continuing. + * + * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the created records. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by createMany. + * + * @name Adapter#afterCreate + * @method + * @param {Object} mapper The `mapper` argument passed to createMany. + * @param {Object[]} props The `props` argument passed to createMany. + * @param {Object} opts The `opts` argument passed to createMany. + * @property {string} opts.op `afterCreateMany` + * @param {Object[]|Response} response Created records or {@link Response}, depending on the value of `opts.raw`. + */ + afterCreateMany: noop2, + + /** + * Lifecycle method method called by destroy. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes destroy to wait for the Promise to resolve before continuing. + * + * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be `undefined`. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroy. + * + * @name Adapter#afterDestroy + * @method + * @param {Object} mapper The `mapper` argument passed to destroy. + * @param {(string|number)} id The `id` argument passed to destroy. + * @param {Object} opts The `opts` argument passed to destroy. + * @property {string} opts.op `afterDestroy` + * @param {undefined|Response} response `undefined` or {@link Response}, depending on the value of `opts.raw`. + */ + afterDestroy: noop2, + + /** + * Lifecycle method method called by destroyAll. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes destroyAll to wait for the Promise to resolve before continuing. + * + * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be `undefined`. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroyAll. + * + * @name Adapter#afterDestroyAll + * @method + * @param {Object} mapper The `mapper` argument passed to destroyAll. + * @param {Object} query The `query` argument passed to destroyAll. + * @param {Object} opts The `opts` argument passed to destroyAll. + * @property {string} opts.op `afterDestroyAll` + * @param {undefined|Response} response `undefined` or {@link Response}, depending on the value of `opts.raw`. + */ + afterDestroyAll: noop2, + + /** + * Lifecycle method method called by find. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes find to wait for the Promise to resolve before continuing. + * + * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the found record, if any. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by find. + * + * @name Adapter#afterFind + * @method + * @param {Object} mapper The `mapper` argument passed to find. + * @param {(string|number)} id The `id` argument passed to find. + * @param {Object} opts The `opts` argument passed to find. + * @property {string} opts.op `afterFind` + * @param {Object|Response} response The found record or {@link Response}, depending on the value of `opts.raw`. + */ + afterFind: noop2, + + /** + * Lifecycle method method called by findAll. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes findAll to wait for the Promise to resolve before continuing. + * + * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the found records, if any. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by findAll. + * + * @name Adapter#afterFindAll + * @method + * @param {Object} mapper The `mapper` argument passed to findAll. + * @param {Object} query The `query` argument passed to findAll. + * @param {Object} opts The `opts` argument passed to findAll. + * @property {string} opts.op `afterFindAll` + * @param {Object[]|Response} response The found records or {@link Response}, depending on the value of `opts.raw`. + */ + afterFindAll: noop2, + + /** + * Lifecycle method method called by update. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes update to wait for the Promise to resolve before continuing. + * + * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the updated record. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by update. + * + * @name Adapter#afterUpdate + * @method + * @param {Object} mapper The `mapper` argument passed to update. + * @param {(string|number)} id The `id` argument passed to update. + * @param {Object} props The `props` argument passed to update. + * @param {Object} opts The `opts` argument passed to update. + * @property {string} opts.op `afterUpdate` + * @param {Object|Response} response The updated record or {@link Response}, depending on the value of `opts.raw`. + */ + afterUpdate: noop2, + + /** + * Lifecycle method method called by updateAll. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes updateAll to wait for the Promise to resolve before continuing. + * + * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the updated records, if any. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateAll. + * + * @name Adapter#afterUpdateAll + * @method + * @param {Object} mapper The `mapper` argument passed to updateAll. + * @param {Object} props The `props` argument passed to updateAll. + * @param {Object} query The `query` argument passed to updateAll. + * @param {Object} opts The `opts` argument passed to updateAll. + * @property {string} opts.op `afterUpdateAll` + * @param {Object[]|Response} response The updated records or {@link Response}, depending on the value of `opts.raw`. + */ + afterUpdateAll: noop2, + + /** + * Lifecycle method method called by updateMany. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes updateMany to wait for the Promise to resolve before continuing. + * + * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the updated records, if any. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateMany. + * + * @name Adapter#afterUpdateMany + * @method + * @param {Object} mapper The `mapper` argument passed to updateMany. + * @param {Object[]} records The `records` argument passed to updateMany. + * @param {Object} opts The `opts` argument passed to updateMany. + * @property {string} opts.op `afterUpdateMany` + * @param {Object[]|Response} response The updated records or {@link Response}, depending on the value of `opts.raw`. + */ + afterUpdateMany: noop2, + + /** + * Lifecycle method method called by create. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes create to wait for the Promise to resolve before continuing. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by create. + * + * @name Adapter#beforeCreate + * @method + * @param {Object} mapper The `mapper` argument passed to create. + * @param {Object} props The `props` argument passed to create. + * @param {Object} opts The `opts` argument passed to create. + * @property {string} opts.op `beforeCreate` + */ + beforeCreate: noop, + + /** + * Lifecycle method method called by createMany. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes createMany to wait for the Promise to resolve before continuing. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by createMany. + * + * @name Adapter#beforeCreateMany + * @method + * @param {Object} mapper The `mapper` argument passed to createMany. + * @param {Object[]} props The `props` argument passed to createMany. + * @param {Object} opts The `opts` argument passed to createMany. + * @property {string} opts.op `beforeCreateMany` + */ + beforeCreateMany: noop, + + /** + * Lifecycle method method called by destroy. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes destroy to wait for the Promise to resolve before continuing. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroy. + * + * @name Adapter#beforeDestroy + * @method + * @param {Object} mapper The `mapper` argument passed to destroy. + * @param {(string|number)} id The `id` argument passed to destroy. + * @param {Object} opts The `opts` argument passed to destroy. + * @property {string} opts.op `beforeDestroy` + */ + beforeDestroy: noop, + + /** + * Lifecycle method method called by destroyAll. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes destroyAll to wait for the Promise to resolve before continuing. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroyAll. + * + * @name Adapter#beforeDestroyAll + * @method + * @param {Object} mapper The `mapper` argument passed to destroyAll. + * @param {Object} query The `query` argument passed to destroyAll. + * @param {Object} opts The `opts` argument passed to destroyAll. + * @property {string} opts.op `beforeDestroyAll` + */ + beforeDestroyAll: noop, + + /** + * Lifecycle method method called by find. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes find to wait for the Promise to resolve before continuing. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by find. + * + * @name Adapter#beforeFind + * @method + * @param {Object} mapper The `mapper` argument passed to find. + * @param {(string|number)} id The `id` argument passed to find. + * @param {Object} opts The `opts` argument passed to find. + * @property {string} opts.op `beforeFind` + */ + beforeFind: noop, + + /** + * Lifecycle method method called by findAll. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes findAll to wait for the Promise to resolve before continuing. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by findAll. + * + * @name Adapter#beforeFindAll + * @method + * @param {Object} mapper The `mapper` argument passed to findAll. + * @param {Object} query The `query` argument passed to findAll. + * @param {Object} opts The `opts` argument passed to findAll. + * @property {string} opts.op `beforeFindAll` + */ + beforeFindAll: noop, + + /** + * Lifecycle method method called by update. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes update to wait for the Promise to resolve before continuing. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by update. + * + * @name Adapter#beforeUpdate + * @method + * @param {Object} mapper The `mapper` argument passed to update. + * @param {(string|number)} id The `id` argument passed to update. + * @param {Object} props The `props` argument passed to update. + * @param {Object} opts The `opts` argument passed to update. + * @property {string} opts.op `beforeUpdate` + */ + beforeUpdate: noop, + + /** + * Lifecycle method method called by updateAll. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes updateAll to wait for the Promise to resolve before continuing. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateAll. + * + * @name Adapter#beforeUpdateAll + * @method + * @param {Object} mapper The `mapper` argument passed to updateAll. + * @param {Object} props The `props` argument passed to updateAll. + * @param {Object} query The `query` argument passed to updateAll. + * @param {Object} opts The `opts` argument passed to updateAll. + * @property {string} opts.op `beforeUpdateAll` + */ + beforeUpdateAll: noop, + + /** + * Lifecycle method method called by updateMany. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes updateMany to wait for the Promise to resolve before continuing. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateMany. + * + * @name Adapter#beforeUpdateMany + * @method + * @param {Object} mapper The `mapper` argument passed to updateMany. + * @param {Object[]} props The `props` argument passed to updateMany. + * @param {Object} opts The `opts` argument passed to updateMany. + * @property {string} opts.op `beforeUpdateMany` + */ + beforeUpdateMany: noop, + + /** + * Shortcut for `#log('debug'[, arg1[, arg2[, argn]]])`. + * + * @name Adapter#dbg + * @method + */ + dbg: function dbg() { + for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { + args[_key3] = arguments[_key3]; + } + + this.log.apply(this, ['debug'].concat(args)); + }, + + + /** + * Create a new record. Called by `Mapper#create`. + * + * @name Adapter#create + * @method + * @param {Object} mapper The mapper. + * @param {Object} props The record to be created. + * @param {Object} [opts] Configuration options. + * @param {boolean} [opts.raw=false] Whether to return a more detailed + * response object. + * @return {Promise} + */ + create: function create(mapper, props, opts) { + var self = this; + var op = void 0; + props || (props = {}); + opts || (opts = {}); + + // beforeCreate lifecycle hook + op = opts.op = 'beforeCreate'; + return resolve(self[op](mapper, props, opts)).then(function (_props) { + // Allow for re-assignment from lifecycle hook + props = isUndefined(_props) ? props : _props; + props = withoutRelations(mapper, props); + op = opts.op = 'create'; + self.dbg(op, mapper, props, opts); + return resolve(self._create(mapper, props, opts)); + }).then(function (results) { + var _results = babelHelpers.slicedToArray(results, 2); + + var data = _results[0]; + var result = _results[1]; + + result || (result = {}); + var response = new Response(data, result, 'create'); + response.created = data ? 1 : 0; + response = self.respond(response, opts); + + // afterCreate lifecycle hook + op = opts.op = 'afterCreate'; + return resolve(self[op](mapper, props, opts, response)).then(function (_response) { + // Allow for re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; + }); + }); + }, + + + /** + * Create multiple records in a single batch. Called by `Mapper#createMany`. + * + * @name Adapter#createMany + * @method + * @param {Object} mapper The mapper. + * @param {Object} props The records to be created. + * @param {Object} [opts] Configuration options. + * @param {boolean} [opts.raw=false] Whether to return a more detailed + * response object. + * @return {Promise} + */ + createMany: function createMany(mapper, props, opts) { + var self = this; + var op = void 0; + props || (props = {}); + opts || (opts = {}); + + // beforeCreateMany lifecycle hook + op = opts.op = 'beforeCreateMany'; + return resolve(self[op](mapper, props, opts)).then(function (_props) { + // Allow for re-assignment from lifecycle hook + props = isUndefined(_props) ? props : _props; + props = props.map(function (record) { + return withoutRelations(mapper, record); + }); + op = opts.op = 'createMany'; + self.dbg(op, mapper, props, opts); + return resolve(self._createMany(mapper, props, opts)); + }).then(function (results) { + var _results2 = babelHelpers.slicedToArray(results, 2); + + var data = _results2[0]; + var result = _results2[1]; + + data || (data = []); + result || (result = {}); + var response = new Response(data, result, 'createMany'); + response.created = data.length; + response = self.respond(response, opts); + + // afterCreateMany lifecycle hook + op = opts.op = 'afterCreateMany'; + return resolve(self[op](mapper, props, opts, response)).then(function (_response) { + // Allow for re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; + }); + }); + }, + + + /** + * Destroy the record with the given primary key. Called by + * `Mapper#destroy`. + * + * @name Adapter#destroy + * @method + * @param {Object} mapper The mapper. + * @param {(string|number)} id Primary key of the record to destroy. + * @param {Object} [opts] Configuration options. + * @param {boolean} [opts.raw=false] Whether to return a more detailed + * response object. + * @return {Promise} + */ + destroy: function destroy(mapper, id, opts) { + var self = this; + var op = void 0; + opts || (opts = {}); + + // beforeDestroy lifecycle hook + op = opts.op = 'beforeDestroy'; + return resolve(self[op](mapper, id, opts)).then(function () { + op = opts.op = 'destroy'; + self.dbg(op, mapper, id, opts); + return resolve(self._destroy(mapper, id, opts)); + }).then(function (results) { + var _results3 = babelHelpers.slicedToArray(results, 2); + + var data = _results3[0]; + var result = _results3[1]; + + result || (result = {}); + var response = new Response(data, result, 'destroy'); + response = self.respond(response, opts); + + // afterDestroy lifecycle hook + op = opts.op = 'afterDestroy'; + return resolve(self[op](mapper, id, opts, response)).then(function (_response) { + // Allow for re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; + }); + }); + }, + + + /** + * Destroy the records that match the selection query. Called by + * `Mapper#destroyAll`. + * + * @name Adapter#destroyAll + * @method + * @param {Object} mapper the mapper. + * @param {Object} [query] Selection query. + * @param {Object} [query.where] Filtering criteria. + * @param {string|Array} [query.orderBy] Sorting criteria. + * @param {string|Array} [query.sort] Same as `query.sort`. + * @param {number} [query.limit] Limit results. + * @param {number} [query.skip] Offset results. + * @param {number} [query.offset] Same as `query.skip`. + * @param {Object} [opts] Configuration options. + * @param {boolean} [opts.raw=false] Whether to return a more detailed + * response object. + * @return {Promise} + */ + destroyAll: function destroyAll(mapper, query, opts) { + var self = this; + var op = void 0; + query || (query = {}); + opts || (opts = {}); + + // beforeDestroyAll lifecycle hook + op = opts.op = 'beforeDestroyAll'; + return resolve(self[op](mapper, query, opts)).then(function () { + op = opts.op = 'destroyAll'; + self.dbg(op, mapper, query, opts); + return resolve(self._destroyAll(mapper, query, opts)); + }).then(function (results) { + var _results4 = babelHelpers.slicedToArray(results, 2); + + var data = _results4[0]; + var result = _results4[1]; + + result || (result = {}); + var response = new Response(data, result, 'destroyAll'); + response = self.respond(response, opts); + + // afterDestroyAll lifecycle hook + op = opts.op = 'afterDestroyAll'; + return resolve(self[op](mapper, query, opts, response)).then(function (_response) { + // Allow for re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; + }); + }); + }, + + + /** + * Return the foreignKey from the given record for the provided relationship. + * + * There may be reasons why you may want to override this method, like when + * the id of the parent doesn't exactly match up to the key on the child. + * + * Override with care. + * + * @name Adapter#makeHasManyForeignKey + * @method + * @return {*} + */ + makeHasManyForeignKey: function makeHasManyForeignKey(mapper, def, record) { + return def.getForeignKey(record); + }, + + + /** + * Return the localKeys from the given record for the provided relationship. + * + * Override with care. + * + * @name Adapter#makeHasManyLocalKeys + * @method + * @return {*} + */ + makeHasManyLocalKeys: function makeHasManyLocalKeys(mapper, def, record) { + var localKeys = []; + var itemKeys = get(record, def.localKeys) || []; + itemKeys = isArray(itemKeys) ? itemKeys : Object.keys(itemKeys); + localKeys = localKeys.concat(itemKeys); + return unique(localKeys).filter(function (x) { + return x; + }); + }, + + + /** + * Return the foreignKeys from the given record for the provided relationship. + * + * Override with care. + * + * @name Adapter#makeHasManyForeignKeys + * @method + * @return {*} + */ + makeHasManyForeignKeys: function makeHasManyForeignKeys(mapper, def, record) { + return get(record, mapper.idAttribute); + }, + + + /** + * Load a hasMany relationship. + * + * Override with care. + * + * @name Adapter#loadHasMany + * @method + * @return {Promise} + */ + loadHasMany: function loadHasMany(mapper, def, records, __opts) { + var self = this; + var singular = false; + + if (isObject(records) && !isArray(records)) { + singular = true; + records = [records]; + } + var IDs = records.map(function (record) { + return self.makeHasManyForeignKey(mapper, def, record); + }); + var query = { + where: {} + }; + var criteria = query.where[def.foreignKey] = {}; + if (singular) { + // more efficient query when we only have one record + criteria['=='] = IDs[0]; + } else { + criteria['in'] = IDs.filter(function (id) { + return id; + }); + } + return self.findAll(def.getRelation(), query, __opts).then(function (relatedItems) { + records.forEach(function (record) { + var attached = []; + // avoid unneccesary iteration when we only have one record + if (singular) { + attached = relatedItems; + } else { + relatedItems.forEach(function (relatedItem) { + if (get(relatedItem, def.foreignKey) === record[mapper.idAttribute]) { + attached.push(relatedItem); + } + }); + } + def.setLocalField(record, attached); + }); + }); + }, + loadHasManyLocalKeys: function loadHasManyLocalKeys(mapper, def, records, __opts) { + var self = this; + var record = void 0; + var relatedMapper = def.getRelation(); + + if (isObject(records) && !isArray(records)) { + record = records; + } + + if (record) { + return self.findAll(relatedMapper, { + where: babelHelpers.defineProperty({}, relatedMapper.idAttribute, { + 'in': self.makeHasManyLocalKeys(mapper, def, record) + }) + }, __opts).then(function (relatedItems) { + def.setLocalField(record, relatedItems); + }); + } else { + var _ret = function () { + var localKeys = []; + records.forEach(function (record) { + localKeys = localKeys.concat(self.self.makeHasManyLocalKeys(mapper, def, record)); + }); + return { + v: self.findAll(relatedMapper, { + where: babelHelpers.defineProperty({}, relatedMapper.idAttribute, { + 'in': unique(localKeys).filter(function (x) { + return x; + }) + }) + }, __opts).then(function (relatedItems) { + records.forEach(function (item) { + var attached = []; + var itemKeys = get(item, def.localKeys) || []; + itemKeys = isArray(itemKeys) ? itemKeys : Object.keys(itemKeys); + relatedItems.forEach(function (relatedItem) { + if (itemKeys && itemKeys.indexOf(relatedItem[relatedMapper.idAttribute]) !== -1) { + attached.push(relatedItem); + } + }); + def.setLocalField(item, attached); + }); + return relatedItems; + }) + }; + }(); + + if ((typeof _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === "object") return _ret.v; + } + }, + loadHasManyForeignKeys: function loadHasManyForeignKeys(mapper, def, records, __opts) { + var self = this; + var relatedMapper = def.getRelation(); + var idAttribute = mapper.idAttribute; + var record = void 0; + + if (isObject(records) && !isArray(records)) { + record = records; + } + + if (record) { + return self.findAll(def.getRelation(), { + where: babelHelpers.defineProperty({}, def.foreignKeys, { + 'contains': self.makeHasManyForeignKeys(mapper, def, record) + }) + }, __opts).then(function (relatedItems) { + def.setLocalField(record, relatedItems); + }); + } else { + return self.findAll(relatedMapper, { + where: babelHelpers.defineProperty({}, def.foreignKeys, { + 'isectNotEmpty': records.map(function (record) { + return self.makeHasManyForeignKeys(mapper, def, record); + }) + }) + }, __opts).then(function (relatedItems) { + var foreignKeysField = def.foreignKeys; + records.forEach(function (record) { + var _relatedItems = []; + var id = get(record, idAttribute); + relatedItems.forEach(function (relatedItem) { + var foreignKeys = get(relatedItems, foreignKeysField) || []; + if (foreignKeys.indexOf(id) !== -1) { + _relatedItems.push(relatedItem); + } + }); + def.setLocalField(record, _relatedItems); + }); + }); + } + }, + + + /** + * Load a hasOne relationship. + * + * Override with care. + * + * @name Adapter#loadHasOne + * @method + * @return {Promise} + */ + loadHasOne: function loadHasOne(mapper, def, records, __opts) { + if (isObject(records) && !isArray(records)) { + records = [records]; + } + return this.loadHasMany(mapper, def, records, __opts).then(function () { + records.forEach(function (record) { + var relatedData = def.getLocalField(record); + if (isArray(relatedData) && relatedData.length) { + def.setLocalField(record, relatedData[0]); + } + }); + }); + }, + + + /** + * Return the foreignKey from the given record for the provided relationship. + * + * Override with care. + * + * @name Adapter#makeBelongsToForeignKey + * @method + * @return {*} + */ + makeBelongsToForeignKey: function makeBelongsToForeignKey(mapper, def, record) { + return def.getForeignKey(record); + }, + + + /** + * Load a belongsTo relationship. + * + * Override with care. + * + * @name Adapter#loadBelongsTo + * @method + * @return {Promise} + */ + loadBelongsTo: function loadBelongsTo(mapper, def, records, __opts) { + var self = this; + var relationDef = def.getRelation(); + + if (isObject(records) && !isArray(records)) { + var _ret2 = function () { + var record = records; + return { + v: self.find(relationDef, self.makeBelongsToForeignKey(mapper, def, record), __opts).then(function (relatedItem) { + def.setLocalField(record, relatedItem); + }) + }; + }(); + + if ((typeof _ret2 === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret2)) === "object") return _ret2.v; + } else { + var keys = records.map(function (record) { + return self.makeBelongsToForeignKey(mapper, def, record); + }).filter(function (key) { + return key; + }); + return self.findAll(relationDef, { + where: babelHelpers.defineProperty({}, relationDef.idAttribute, { + 'in': keys + }) + }, __opts).then(function (relatedItems) { + records.forEach(function (record) { + relatedItems.forEach(function (relatedItem) { + if (relatedItem[relationDef.idAttribute] === record[def.foreignKey]) { + def.setLocalField(record, relatedItem); + } + }); + }); + }); + } + }, + + + /** + * Retrieve the record with the given primary key. Called by `Mapper#find`. + * + * @name Adapter#find + * @method + * @param {Object} mapper The mapper. + * @param {(string|number)} id Primary key of the record to retrieve. + * @param {Object} [opts] Configuration options. + * @param {boolean} [opts.raw=false] Whether to return a more detailed + * response object. + * @param {string[]} [opts.with=[]] Relations to eager load. + * @return {Promise} + */ + find: function find(mapper, id, opts) { + var self = this; + var record = void 0, + op = void 0; + opts || (opts = {}); + opts.with || (opts.with = []); + + // beforeFind lifecycle hook + op = opts.op = 'beforeFind'; + return resolve(self[op](mapper, id, opts)).then(function () { + op = opts.op = 'find'; + self.dbg(op, mapper, id, opts); + return resolve(self._find(mapper, id, opts)); + }).then(function (results) { + var _results5 = babelHelpers.slicedToArray(results, 1); + + var _record = _results5[0]; + + if (!_record) { + return; + } + record = _record; + var tasks = []; + + forEachRelation(mapper, opts, function (def, __opts) { + var task = void 0; + if (def.foreignKey && (def.type === 'hasOne' || def.type === 'hasMany')) { + if (def.type === 'hasOne') { + task = self.loadHasOne(mapper, def, record, __opts); + } else { + task = self.loadHasMany(mapper, def, record, __opts); + } + } else if (def.type === 'hasMany' && def.localKeys) { + task = self.loadHasManyLocalKeys(mapper, def, record, __opts); + } else if (def.type === 'hasMany' && def.foreignKeys) { + task = self.loadHasManyForeignKeys(mapper, def, record, __opts); + } else if (def.type === 'belongsTo') { + task = self.loadBelongsTo(mapper, def, record, __opts); + } + if (task) { + tasks.push(task); + } + }); + + return Promise.all(tasks); + }).then(function () { + var response = new Response(record, {}, 'find'); + response.found = record ? 1 : 0; + response = self.respond(response, opts); + + // afterFind lifecycle hook + op = opts.op = 'afterFind'; + return resolve(self[op](mapper, id, opts, response)).then(function (_response) { + // Allow for re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; + }); + }); + }, + + + /** + * Retrieve the records that match the selection query. + * + * @name Adapter#findAll + * @method + * @param {Object} mapper The mapper. + * @param {Object} [query] Selection query. + * @param {Object} [query.where] Filtering criteria. + * @param {string|Array} [query.orderBy] Sorting criteria. + * @param {string|Array} [query.sort] Same as `query.sort`. + * @param {number} [query.limit] Limit results. + * @param {number} [query.skip] Offset results. + * @param {number} [query.offset] Same as `query.skip`. + * @param {Object} [opts] Configuration options. + * @param {boolean} [opts.raw=false] Whether to return a more detailed + * response object. + * @param {string[]} [opts.with=[]] Relations to eager load. + * @return {Promise} + */ + findAll: function findAll(mapper, query, opts) { + var self = this; + opts || (opts = {}); + opts.with || (opts.with = []); + + var records = []; + var op = void 0; + var activeWith = opts._activeWith; + + if (isObject(activeWith)) { + var activeQuery = activeWith.query || {}; + if (activeWith.replace) { + query = activeQuery; + } else { + deepFillIn(query, activeQuery); + } } - _opts = _opts || {}; - var adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http'); - var config = {}; - fillIn(config, opts); - if (!_opts.hasOwnProperty('endpoint') && config.endpoint) { - _opts.endpoint = config.endpoint; + + // beforeFindAll lifecycle hook + op = opts.op = 'beforeFindAll'; + return resolve(self[op](mapper, query, opts)).then(function () { + op = opts.op = 'findAll'; + self.dbg(op, mapper, query, opts); + return resolve(self._findAll(mapper, query, opts)); + }).then(function (results) { + var _results6 = babelHelpers.slicedToArray(results, 1); + + var _records = _results6[0]; + + _records || (_records = []); + records = _records; + var tasks = []; + forEachRelation(mapper, opts, function (def, __opts) { + var task = void 0; + if (def.foreignKey && (def.type === 'hasOne' || def.type === 'hasMany')) { + if (def.type === 'hasMany') { + task = self.loadHasMany(mapper, def, records, __opts); + } else { + task = self.loadHasOne(mapper, def, records, __opts); + } + } else if (def.type === 'hasMany' && def.localKeys) { + task = self.loadHasManyLocalKeys(mapper, def, records, __opts); + } else if (def.type === 'hasMany' && def.foreignKeys) { + task = self.loadHasManyForeignKeys(mapper, def, records, __opts); + } else if (def.type === 'belongsTo') { + task = self.loadBelongsTo(mapper, def, records, __opts); + } + if (task) { + tasks.push(task); + } + }); + return Promise.all(tasks); + }).then(function () { + var response = new Response(records, {}, 'findAll'); + response.found = records.length; + response = self.respond(response, opts); + + // afterFindAll lifecycle hook + op = opts.op = 'afterFindAll'; + return resolve(self[op](mapper, query, opts, response)).then(function (_response) { + // Allow for re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; + }); + }); + }, + + + /** + * Resolve the value of the specified option based on the given options and + * this adapter's settings. Override with care. + * + * @name Adapter#getOpt + * @method + * @param {string} opt The name of the option. + * @param {Object} [opts] Configuration options. + * @return {*} The value of the specified option. + */ + getOpt: function getOpt(opt, opts) { + opts || (opts = {}); + return isUndefined(opts[opt]) ? plainCopy(this[opt]) : plainCopy(opts[opt]); + }, + + + /** + * Logging utility method. Override this method if you want to send log + * messages to something other than the console. + * + * @name Adapter#log + * @method + * @param {string} level Log level. + * @param {...*} values Values to log. + */ + log: function log(level) { + for (var _len4 = arguments.length, args = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) { + args[_key4 - 1] = arguments[_key4]; } - if (typeof _opts.getEndpoint === 'function') { - config.url = _opts.getEndpoint(self, _opts); + + if (level && !args.length) { + args.push(level); + level = 'debug'; + } + if (level === 'debug' && !this.debug) { + return; + } + var prefix = level.toUpperCase() + ': (Adapter)'; + if (console[level]) { + var _console; + + (_console = console)[level].apply(_console, [prefix].concat(args)); } else { - var _args = [_opts.basePath || self.basePath || adapter.basePath, adapter.getEndpoint(self, isSorN(id) ? id : null, _opts)]; - if (isSorN(id)) { - _args.push(id); - } - _args.push(opts.pathname || name); - config.url = makePath.apply(null, _args); + var _console2; + + (_console2 = console).log.apply(_console2, [prefix].concat(args)); } - config.method = config.method || 'GET'; - config.mapper = self.name; - deepMixIn(config)(_opts); - return resolve(config).then(_opts.request || opts.request).then(function (config) { - return adapter.HTTP(config); - }).then(function (data) { - if (data && data.config) { - data.config.mapper = self.name; - } - return data; - }).then(_opts.response || opts.response, _opts.responseError || opts.responseError); - }; - return mapper; - }; - }; + }, - /** - * Add multiple Http actions to a mapper. See {@link HttpAdapter.addAction} for - * action configuration options. - * - * @name HttpAdapter.addActions - * @method - * @param {Object.} opts Object where the key is an action name - * and the value is the configuration for the action. - * @return {Function} Decoration function, which should be passed the mapper to - * decorate when invoked. - */ - HttpAdapter.addActions = function (opts) { - opts || (opts = {}); - return function (mapper) { - forOwn(mapper, function (value, key) { - HttpAdapter.addAction(key, value)(mapper); - }); - return mapper; - }; - }; - /** - * Alternative to ES6 class syntax for extending `HttpAdapter`. - * - * __ES6__: - * ```javascript - * class MyHttpAdapter extends HttpAdapter { - * deserialize (Model, data, opts) { - * const data = super.deserialize(Model, data, opts) - * data.foo = 'bar' - * return data - * } - * } - * ``` - * - * __ES5__: - * ```javascript - * var instanceProps = { - * // override deserialize - * deserialize: function (Model, data, opts) { - * var Ctor = this.constructor - * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize - * // call the super deserialize - * var data = superDeserialize(Model, data, opts) - * data.foo = 'bar' - * return data - * }, - * say: function () { return 'hi' } - * } - * var classProps = { - * yell: function () { return 'HI' } - * } - * - * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps) - * var adapter = new MyHttpAdapter() - * adapter.say() // "hi" - * MyHttpAdapter.yell() // "HI" - * ``` - * - * @name HttpAdapter.extend - * @method - * @param {Object} [instanceProps] Properties that will be added to the - * prototype of the subclass. - * @param {Object} [classProps] Properties that will be added as static - * properties to the subclass itself. - * @return {Object} Subclass of `HttpAdapter`. - */ - HttpAdapter.extend = extend; + /** + * @name Adapter#respond + * @method + * @param {Object} response Response object. + * @param {Object} opts Configuration options. + * return {Object} If `opts.raw == true` then return `response`, else return + * `response.data`. + */ + respond: function respond(response, opts) { + return this.getOpt('raw', opts) ? response : response.data; + }, - /** - * Details of the current version of the `js-data-http` module. - * - * @name HttpAdapter.version - * @type {Object} - * @property {string} version.full The full semver value. - * @property {number} version.major The major version number. - * @property {number} version.minor The minor version number. - * @property {number} version.patch The patch version number. - * @property {(string|boolean)} version.alpha The alpha version value, - * otherwise `false` if the current version is not alpha. - * @property {(string|boolean)} version.beta The beta version value, - * otherwise `false` if the current version is not beta. - */ - HttpAdapter.version = { - full: '<%= pkg.version %>', - major: parseInt('<%= major %>', 10), - minor: parseInt('<%= minor %>', 10), - patch: parseInt('<%= patch %>', 10), - alpha: true ? '<%= alpha %>' : false, - beta: true ? '<%= beta %>' : false - }; - /** - * Registered as `js-data-http` in NPM and Bower. The build of `js-data-http` - * that works on Node.js is registered in NPM as `js-data-http-node`. The build - * 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) { ... }) - * ``` - * - * @module js-data-http - */ + /** + * Apply the given update to the record with the specified primary key. Called + * by `Mapper#update`. + * + * @name Adapter#update + * @method + * @param {Object} mapper The mapper. + * @param {(string|number)} id The primary key of the record to be updated. + * @param {Object} props The update to apply to the record. + * @param {Object} [opts] Configuration options. + * @param {boolean} [opts.raw=false] Whether to return a more detailed + * response object. + * @return {Promise} + */ + update: function update(mapper, id, props, opts) { + var self = this; + props || (props = {}); + opts || (opts = {}); + var op = void 0; + + // beforeUpdate lifecycle hook + op = opts.op = 'beforeUpdate'; + return resolve(self[op](mapper, id, props, opts)).then(function (_props) { + // Allow for re-assignment from lifecycle hook + props = isUndefined(_props) ? props : _props; + op = opts.op = 'update'; + self.dbg(op, mapper, id, props, opts); + return resolve(self._update(mapper, id, props, opts)); + }).then(function (results) { + var _results7 = babelHelpers.slicedToArray(results, 2); + + var data = _results7[0]; + var result = _results7[1]; + + result || (result = {}); + var response = new Response(data, result, 'update'); + response.updated = data ? 1 : 0; + response = self.respond(response, opts); + + // afterUpdate lifecycle hook + op = opts.op = 'afterUpdate'; + return resolve(self[op](mapper, id, props, opts, response)).then(function (_response) { + // Allow for re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; + }); + }); + }, - module.exports = HttpAdapter; - -/***/ }, -/* 1 */ -/***/ function(module, exports) { - - module.exports = __WEBPACK_EXTERNAL_MODULE_1__; + + /** + * Apply the given update to all records that match the selection query. + * Called by `Mapper#updateAll`. + * + * @name Adapter#updateAll + * @method + * @param {Object} mapper The mapper. + * @param {Object} props The update to apply to the selected records. + * @param {Object} [query] Selection query. + * @param {Object} [query.where] Filtering criteria. + * @param {string|Array} [query.orderBy] Sorting criteria. + * @param {string|Array} [query.sort] Same as `query.sort`. + * @param {number} [query.limit] Limit results. + * @param {number} [query.skip] Offset results. + * @param {number} [query.offset] Same as `query.skip`. + * @param {Object} [opts] Configuration options. + * @param {boolean} [opts.raw=false] Whether to return a more detailed + * response object. + * @return {Promise} + */ + updateAll: function updateAll(mapper, props, query, opts) { + var self = this; + props || (props = {}); + query || (query = {}); + opts || (opts = {}); + var op = void 0; + + // beforeUpdateAll lifecycle hook + op = opts.op = 'beforeUpdateAll'; + return resolve(self[op](mapper, props, query, opts)).then(function (_props) { + // Allow for re-assignment from lifecycle hook + props = isUndefined(_props) ? props : _props; + op = opts.op = 'updateAll'; + self.dbg(op, mapper, props, query, opts); + return resolve(self._updateAll(mapper, props, query, opts)); + }).then(function (results) { + var _results8 = babelHelpers.slicedToArray(results, 2); + + var data = _results8[0]; + var result = _results8[1]; + + data || (data = []); + result || (result = {}); + var response = new Response(data, result, 'updateAll'); + response.updated = data.length; + response = self.respond(response, opts); + + // afterUpdateAll lifecycle hook + op = opts.op = 'afterUpdateAll'; + return resolve(self[op](mapper, props, query, opts, response)).then(function (_response) { + // Allow for re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; + }); + }); + }, + + + /** + * Update the given records in a single batch. Called by `Mapper#updateMany`. + * + * @name Adapter#updateMany + * @method + * @param {Object} mapper The mapper. + * @param {Object[]} records The records to update. + * @param {Object} [opts] Configuration options. + * @param {boolean} [opts.raw=false] Whether to return a more detailed + * response object. + * @return {Promise} + */ + updateMany: function updateMany(mapper, records, opts) { + var self = this; + records || (records = []); + opts || (opts = {}); + var op = void 0; + var idAttribute = mapper.idAttribute; + + records = records.filter(function (record) { + return get(record, idAttribute); + }); + + // beforeUpdateMany lifecycle hook + op = opts.op = 'beforeUpdateMany'; + return resolve(self[op](mapper, records, opts)).then(function (_records) { + // Allow for re-assignment from lifecycle hook + records = isUndefined(_records) ? records : _records; + records = records.map(function (record) { + return withoutRelations(mapper, record); + }); + op = opts.op = 'updateMany'; + self.dbg(op, mapper, records, opts); + return resolve(self._updateMany(mapper, records, opts)); + }).then(function (results) { + var _results9 = babelHelpers.slicedToArray(results, 2); + + var data = _results9[0]; + var result = _results9[1]; + + data || (data = []); + result || (result = {}); + var response = new Response(data, result, 'updateMany'); + response.updated = data.length; + response = self.respond(response, opts); + + // afterUpdateMany lifecycle hook + op = opts.op = 'afterUpdateMany'; + return resolve(self[op](mapper, records, opts, response)).then(function (_response) { + // Allow for re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; + }); + }); + } + }); + + module.exports = Adapter; + + })); + //# sourceMappingURL=js-data-adapter.js.map /***/ }, -/* 2 */ +/* 3 */ /***/ function(module, exports, __webpack_require__) { - module.exports = __webpack_require__(3); + module.exports = __webpack_require__(4); /***/ }, -/* 3 */ +/* 4 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var defaults = __webpack_require__(4); - var utils = __webpack_require__(5); - var dispatchRequest = __webpack_require__(6); - var InterceptorManager = __webpack_require__(15); - var isAbsoluteURL = __webpack_require__(16); - var combineURLs = __webpack_require__(17); - var bind = __webpack_require__(18); - var transformData = __webpack_require__(11); + var defaults = __webpack_require__(5); + var utils = __webpack_require__(6); + var dispatchRequest = __webpack_require__(7); + var InterceptorManager = __webpack_require__(16); + var isAbsoluteURL = __webpack_require__(17); + var combineURLs = __webpack_require__(18); + var bind = __webpack_require__(19); + var transformData = __webpack_require__(12); function Axios(defaultConfig) { this.defaults = utils.merge({}, defaultConfig); @@ -1664,7 +2839,7 @@ return /******/ (function(modules) { // webpackBootstrap axios.all = function all(promises) { return Promise.all(promises); }; - axios.spread = __webpack_require__(19); + axios.spread = __webpack_require__(20); // Expose interceptors axios.interceptors = defaultInstance.interceptors; @@ -1695,12 +2870,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 4 */ +/* 5 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var utils = __webpack_require__(5); + var utils = __webpack_require__(6); var PROTECTION_PREFIX = /^\)\]\}',?\n/; var DEFAULT_CONTENT_TYPE = { @@ -1764,7 +2939,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 5 */ +/* 6 */ /***/ function(module, exports) { 'use strict'; @@ -2014,7 +3189,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 6 */ +/* 7 */ /***/ function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(process) {'use strict'; @@ -2036,10 +3211,10 @@ return /******/ (function(modules) { // webpackBootstrap adapter = config.adapter; } else if (typeof XMLHttpRequest !== 'undefined') { // For browsers use XHR adapter - adapter = __webpack_require__(8); + adapter = __webpack_require__(9); } else if (typeof process !== 'undefined') { // For node use HTTP adapter - adapter = __webpack_require__(8); + adapter = __webpack_require__(9); } if (typeof adapter === 'function') { @@ -2052,10 +3227,10 @@ return /******/ (function(modules) { // webpackBootstrap }; - /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7))) + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8))) /***/ }, -/* 7 */ +/* 8 */ /***/ function(module, exports) { // shim for using process in browser @@ -2152,17 +3327,17 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 8 */ +/* 9 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var utils = __webpack_require__(5); - var buildURL = __webpack_require__(9); - var parseHeaders = __webpack_require__(10); - var transformData = __webpack_require__(11); - var isURLSameOrigin = __webpack_require__(12); - var btoa = window.btoa || __webpack_require__(13); + var utils = __webpack_require__(6); + var buildURL = __webpack_require__(10); + var parseHeaders = __webpack_require__(11); + var transformData = __webpack_require__(12); + var isURLSameOrigin = __webpack_require__(13); + var btoa = window.btoa || __webpack_require__(14); module.exports = function xhrAdapter(resolve, reject, config) { var requestData = config.data; @@ -2237,7 +3412,7 @@ return /******/ (function(modules) { // webpackBootstrap // This is only done if running in a standard browser environment. // Specifically not if we're in a web worker, or react-native. if (utils.isStandardBrowserEnv()) { - var cookies = __webpack_require__(14); + var cookies = __webpack_require__(15); // Add xsrf header var xsrfValue = config.withCredentials || isURLSameOrigin(config.url) ? @@ -2288,12 +3463,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 9 */ +/* 10 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var utils = __webpack_require__(5); + var utils = __webpack_require__(6); function encode(val) { return encodeURIComponent(val). @@ -2361,12 +3536,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 10 */ +/* 11 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var utils = __webpack_require__(5); + var utils = __webpack_require__(6); /** * Parse headers into an object @@ -2404,12 +3579,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 11 */ +/* 12 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var utils = __webpack_require__(5); + var utils = __webpack_require__(6); /** * Transform the data for a request or a response @@ -2430,12 +3605,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 12 */ +/* 13 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var utils = __webpack_require__(5); + var utils = __webpack_require__(6); module.exports = ( utils.isStandardBrowserEnv() ? @@ -2504,7 +3679,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 13 */ +/* 14 */ /***/ function(module, exports) { 'use strict'; @@ -2546,12 +3721,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 14 */ +/* 15 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var utils = __webpack_require__(5); + var utils = __webpack_require__(6); module.exports = ( utils.isStandardBrowserEnv() ? @@ -2605,12 +3780,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 15 */ +/* 16 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var utils = __webpack_require__(5); + var utils = __webpack_require__(6); function InterceptorManager() { this.handlers = []; @@ -2663,7 +3838,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 16 */ +/* 17 */ /***/ function(module, exports) { 'use strict'; @@ -2683,7 +3858,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 17 */ +/* 18 */ /***/ function(module, exports) { 'use strict'; @@ -2701,7 +3876,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 18 */ +/* 19 */ /***/ function(module, exports) { 'use strict'; @@ -2718,7 +3893,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 19 */ +/* 20 */ /***/ function(module, exports) { 'use strict'; diff --git a/dist/js-data-http.js.map b/dist/js-data-http.js.map index 9e8793e..85af906 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 c25fee57fa59ccdb97ca","webpack:///./src/index.js","webpack:///external {\"amd\":\"js-data\",\"commonjs\":\"js-data\",\"commonjs2\":\"js-data\",\"root\":\"JSData\"}","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/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;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;;AAEA;AACA;AACA;AACA;AACA;;AAEA;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;;;;;;;ACvHD;;AAEA;;AAEA,iCAAgC;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;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;AACA;;;;;;;AC9DA;;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,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;;;;;;;ACnPA;;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;;AAEA;AACA;AACA;;AAEA;AACA,2CAA0C;AAC1C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;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;;AAEA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;;;;;;;ACjIA;;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;;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[\"HttpAdapter\"] = factory(require(\"js-data\"));\n\telse\n\t\troot[\"HttpAdapter\"] = 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 c25fee57fa59ccdb97ca\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nconst {\n _,\n addHiddenPropsToTarget,\n copy,\n deepMixIn,\n extend,\n fillIn,\n forOwn,\n get,\n isArray,\n isFunction,\n isNumber,\n isObject,\n isSorN,\n isString,\n isUndefined,\n resolve,\n reject,\n toJson\n} = utils\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 forOwn(params, function (val, key) {\n if (val === null || typeof val === 'undefined') {\n return\n }\n if (!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 (isObject(v)) {\n v = 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 noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n}\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#debug\n * @type {boolean}\n * @default false\n */\n debug: false,\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 * @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\n // Default values for arguments\n opts || (opts = {})\n\n fillIn(self, opts)\n fillIn(self, DEFAULTS)\n}\n\naddHiddenPropsToTarget(HttpAdapter.prototype, {\n /**\n * @name HttpAdapter#afterCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreate: noop2,\n\n /**\n * @name HttpAdapter#afterCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreateMany: noop2,\n\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#afterDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroy: noop2,\n\n /**\n * @name HttpAdapter#afterDestroyAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroyAll: noop2,\n\n /**\n * @name HttpAdapter#afterFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFind: noop2,\n\n /**\n * @name HttpAdapter#afterFindAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFindAll: 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#afterUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdate: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateAll: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateMany: noop2,\n\n /**\n * @name HttpAdapter#beforeCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n */\n beforeCreate: noop,\n\n /**\n * @name HttpAdapter#beforeCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeCreateMany: noop,\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#beforeDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeDestroy: noop,\n\n /**\n * @name HttpAdapter#beforeDestroyAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeDestroyAll: noop,\n\n /**\n * @name HttpAdapter#beforeFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeFind: noop,\n\n /**\n * @name HttpAdapter#beforeFindAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeFindAll: 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 /**\n * @name HttpAdapter#beforeUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n */\n beforeUpdate: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n */\n beforeUpdateAll: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeUpdateMany: noop,\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreate lifecycle hook\n op = opts.op = 'beforeCreate'\n return resolve(self[op](mapper, props, opts)).then(function () {\n op = opts.op = 'create'\n self.dbg(op, mapper, props, opts)\n return self.POST(\n self.getPath('create', mapper, props, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreate lifecycle hook\n op = opts.op = 'afterCreate'\n return resolve(self[op](mapper, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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} 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 createMany (mapper, records, opts) {\n const self = this\n let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreateMany lifecycle hook\n op = opts.op = 'beforeCreateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'createMany'\n self.dbg(op, mapper, records, opts)\n return self.POST(\n self.getPath('createMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreateMany lifecycle hook\n op = opts.op = 'afterCreateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n },\n\n /**\n * Call {@link HttpAdapter#log} at the \"debug\" level.\n *\n * @name HttpAdapter#dbg\n * @method\n * @param {...*} [args] Args passed to {@link HttpAdapter#log}.\n */\n dbg (...args) {\n this.log('debug', ...args)\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.deserialize)) {\n return opts.deserialize(mapper, response, opts)\n }\n if (isFunction(mapper.deserialize)) {\n return mapper.deserialize(mapper, response, opts)\n }\n if (opts.raw) {\n return response\n }\n return response ? ('data' in response ? response.data : response) : 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroy lifecycle hook\n op = opts.op = 'beforeDestroy'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy'\n self.dbg(op, mapper, id, opts)\n return self.DEL(\n self.getPath('destroy', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroy lifecycle hook\n op = opts.op = 'afterDestroy'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroyAll lifecycle hook\n op = opts.op = 'beforeDestroyAll'\n return resolve(self.beforeDestroyAll(mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll'\n self.dbg(op, mapper, query, opts)\n return self.DEL(\n self.getPath('destroyAll', mapper, null, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 = 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeFind lifecycle hook\n op = opts.op = 'beforeFind'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find'\n self.dbg(op, mapper, id, opts)\n return self.GET(\n self.getPath('find', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFind lifecycle hook\n op = opts.op = 'afterFind'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll'\n return resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll'\n self.dbg(op, mapper, query, opts)\n return self.GET(\n self.getPath('findAll', mapper, opts.params, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFindAll lifecycle hook\n op = opts.op = 'afterFindAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 || (opts.params = {})\n const relationList = mapper.relationList || []\n let endpoint = isUndefined(opts.endpoint) ? (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 (isObject(id)) {\n item = id\n }\n\n if (item) {\n parentId = parentId || def.getForeignKey(item) || (def.getLocalField(item) ? get(def.getLocalField(item), parentDef.idAttribute) : null)\n }\n\n if (parentId) {\n delete opts.endpoint\n const _opts = {}\n forOwn(opts, function (value, key) {\n _opts[key] = value\n })\n _(_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 isUndefined(opts.basePath) ? (isUndefined(mapper.basePath) ? self.basePath : mapper.basePath) : opts.basePath,\n self.getEndpoint(mapper, (isString(id) || 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 /**\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 = copy(config, null, null, null, ['data', 'cache', 'timeout'])\n config = 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 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 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 resolve(self.afterHTTP(config, opts, response)).then(function (_response) {\n return _response || response\n })\n })\n },\n\n /**\n * Log the provided arguments at the specified leve.\n *\n * @name HttpAdapter#log\n * @method\n * @param {string} level Log level.\n * @param {...*} [args] Arguments to log.\n */\n log (level, ...args) {\n if (level && !args.length) {\n args.push(level)\n level = 'debug'\n }\n if (level === 'debug' && !this.debug) {\n return\n }\n const prefix = `${level.toUpperCase()}: (HttpAdapter)`\n if (console[level]) {\n console[level](prefix, ...args)\n } else {\n console.log(prefix, ...args)\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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.queryTransform)) {\n return opts.queryTransform(mapper, params, opts)\n }\n if (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 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 (isFunction(opts.serialize)) {\n return opts.serialize(mapper, data, opts)\n }\n if (isFunction(mapper.serialize)) {\n return mapper.serialize(mapper, data, opts)\n }\n return data\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdate lifecycle hook\n op = opts.op = 'beforeUpdate'\n return resolve(self[op](mapper, id, props, opts)).then(function () {\n op = opts.op = 'update'\n self.dbg(op, mapper, id, props, opts)\n return self.PUT(\n self.getPath('update', mapper, id, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdate lifecycle hook\n op = opts.op = 'afterUpdate'\n return resolve(self[op](mapper, id, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateAll lifecycle hook\n op = opts.op = 'beforeUpdateAll'\n return resolve(self[op](mapper, props, query, opts)).then(function () {\n op = opts.op = 'updateAll'\n self.dbg(op, mapper, props, query, opts)\n return self.PUT(\n self.getPath('updateAll', mapper, null, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateAll lifecycle hook\n op = opts.op = 'afterUpdateAll'\n return resolve(self[op](mapper, props, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'updateMany'\n self.dbg(op, mapper, records, opts)\n return self.PUT(\n self.getPath('updateMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateMany lifecycle hook\n op = opts.op = 'afterUpdateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n }\n})\n\n/**\n * Add an Http actions to a mapper.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.addAction = function (name, opts) {\n if (!name || !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 reject(err) }\n mapper[name] = function (id, _opts) {\n const self = this\n if (isObject(id)) {\n _opts = id\n }\n _opts = _opts || {}\n let adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http')\n let config = {}\n 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, isSorN(id) ? id : null, _opts)\n ]\n if (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 deepMixIn(config)(_opts)\n return 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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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 = extend\n\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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 **/","module.exports = require('./lib/axios');\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/index.js\n ** module id = 2\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\naxios.create = function create(defaultConfig) {\n return new Axios(defaultConfig);\n};\n\n// Expose defaults\naxios.defaults = defaultInstance.defaults;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose interceptors\naxios.interceptors = defaultInstance.interceptors;\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 = 3\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 transformResponseJSON(data, headers) {\n if (utils.isFormData(data)) {\n return data;\n }\n if (utils.isArrayBuffer(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 transformResponseJSON(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\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/axios/lib/defaults.js\n ** module id = 4\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 * 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 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 = 5\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 = 6\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 = 7\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 = window.btoa || require('./../helpers/btoa');\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\n // For IE 8/9 CORS support\n // Only supports POST and GET calls and doesn't returns the response headers.\n if (window.XDomainRequest && !('withCredentials' in request) && !isURLSameOrigin(config.url)) {\n request = new window.XDomainRequest();\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 // Listen for ready state\n request.onload = function handleLoad() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = ['text', ''].indexOf(config.responseType || '') !== -1 ? 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 };\n\n // Resolve or reject the Promise based on the status\n ((response.status >= 200 && response.status < 300) ||\n (!('status' in request) && response.responseText) ?\n resolve :\n 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 // 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 if (utils.isArrayBuffer(requestData)) {\n requestData = new DataView(requestData);\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 = 8\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 = 9\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 = 10\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 = 11\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 = 12\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 InvalidCharacterError(message) {\n this.message = message;\n}\nInvalidCharacterError.prototype = new Error;\nInvalidCharacterError.prototype.code = 5;\nInvalidCharacterError.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 InvalidCharacterError('INVALID_CHARACTER_ERR: DOM Exception 5');\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 = 13\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 = 14\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 = 15\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 = 16\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 = 17\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 = 18\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 = 19\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 0066a2101c142550c7ec","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/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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O;AACP;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;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,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;;AAEA;;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,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,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;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;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,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;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;;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;AACA,iBAAgB;AAChB;AACA;AACA;AACA,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,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,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,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,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;;AAEA,EAAC;AACD,4C;;;;;;AC36CA,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;;AAEA;AACA;AACA;AACA;AACA;;AAEA;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;;;;;;;ACvHD;;AAEA;;AAEA,iCAAgC;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;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;AACA;;;;;;;AC9DA;;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,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;;;;;;;ACnPA;;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;;AAEA;AACA;AACA;;AAEA;AACA,2CAA0C;AAC1C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;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;;AAEA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;;;;;;;ACjIA;;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;;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[\"HttpAdapter\"] = factory(require(\"js-data\"));\n\telse\n\t\troot[\"HttpAdapter\"] = 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 0066a2101c142550c7ec\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nimport Adapter from 'js-data-adapter'\n\nconst {\n _,\n addHiddenPropsToTarget,\n copy,\n deepMixIn,\n extend,\n fillIn,\n forOwn,\n get,\n isArray,\n isFunction,\n isNumber,\n isObject,\n isSorN,\n isString,\n isUndefined,\n resolve,\n reject,\n toJson\n} = utils\n\nlet hasFetch = false\n\ntry {\n hasFetch = window && window.fetch\n} catch (e) {}\n\nconst noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n return resolve()\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n return resolve()\n}\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 forOwn(params, function (val, key) {\n if (val === null || typeof val === 'undefined') {\n return\n }\n if (!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 (isObject(v)) {\n v = 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 * @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 fillIn(opts, DEFAULTS)\n Adapter.call(self, opts)\n}\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\naddHiddenPropsToTarget(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 _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.data, 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 _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 * 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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.deserialize)) {\n return opts.deserialize(mapper, response, opts)\n }\n if (isFunction(mapper.deserialize)) {\n return mapper.deserialize(mapper, response, opts)\n }\n if (response) {\n if (response.hasOwnProperty('data')) {\n return response.data\n }\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\n 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 = 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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.suffix = self.getSuffix(mapper, opts)\n 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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 || (opts.params = {})\n const relationList = mapper.relationList || []\n let endpoint = isUndefined(opts.endpoint) ? (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 (isObject(id)) {\n item = id\n }\n\n if (item) {\n parentId = parentId || def.getForeignKey(item) || (def.getLocalField(item) ? get(def.getLocalField(item), parentDef.idAttribute) : null)\n }\n\n if (parentId) {\n delete opts.endpoint\n const _opts = {}\n forOwn(opts, function (value, key) {\n _opts[key] = value\n })\n _(_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 isUndefined(opts.basePath) ? (isUndefined(mapper.basePath) ? self.basePath : mapper.basePath) : opts.basePath,\n self.getEndpoint(mapper, (isString(id) || 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 getSuffix (mapper, opts) {\n opts || (opts = {})\n if (isUndefined(opts.suffix)) {\n if (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 = copy(config, null, null, null, ['data', 'cache', 'timeout'])\n config = 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 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 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 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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.queryTransform)) {\n return opts.queryTransform(mapper, params, opts)\n }\n if (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 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 (isFunction(opts.serialize)) {\n return opts.serialize(mapper, data, opts)\n }\n if (isFunction(mapper.serialize)) {\n return mapper.serialize(mapper, data, opts)\n }\n return data\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\n 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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 HttpAdapter.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 */\nHttpAdapter.addAction = function (name, opts) {\n if (!name || !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 reject(err) }\n mapper[name] = function (id, _opts) {\n const self = this\n if (isObject(id)) {\n _opts = id\n }\n _opts = _opts || {}\n let adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http')\n let config = {}\n 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, isSorN(id) ? id : null, _opts)\n ]\n if (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 deepMixIn(config)(_opts)\n return 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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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 = extend\n\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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(require('js-data')) :\n typeof define === 'function' && define.amd ? define('js-data-adapter', ['js-data'], factory) :\n (factory(global.JSData));\n}(this, function (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 addHiddenPropsToTarget = jsData.utils.addHiddenPropsToTarget;\n var deepFillIn = jsData.utils.deepFillIn;\n var extend = jsData.utils.extend;\n var fillIn = jsData.utils.fillIn;\n var forEachRelation = jsData.utils.forEachRelation;\n var get = jsData.utils.get;\n var isArray = jsData.utils.isArray;\n var isObject = jsData.utils.isObject;\n var isUndefined = jsData.utils.isUndefined;\n var omit = jsData.utils.omit;\n var plainCopy = jsData.utils.plainCopy;\n var resolve = jsData.utils.resolve;\n\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 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 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 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 fillIn(opts, DEFAULTS);\n fillIn(self, opts);\n }\n\n Adapter.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 * @typedef {Object} Response\n * @property {Object} data Response data.\n * @property {string} op The operation for which the response was created.\n */\n function Response(data, meta, op) {\n var self = this;\n meta || (meta = {});\n self.data = data;\n fillIn(self, meta);\n self.op = op;\n }\n\n Adapter.Response = Response;\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 = extend;\n\n addHiddenPropsToTarget(Adapter.prototype, {\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 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 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 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 * 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 resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n props = withoutRelations(mapper, props);\n op = opts.op = 'create';\n self.dbg(op, mapper, props, opts);\n return resolve(self._create(mapper, props, 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, '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 resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = 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 resolve(self._createMany(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 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 resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy';\n self.dbg(op, mapper, id, opts);\n return resolve(self._destroy(mapper, id, 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 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 resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll';\n self.dbg(op, mapper, query, opts);\n return resolve(self._destroyAll(mapper, query, 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, 'destroyAll');\n response = self.respond(response, opts);\n\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll';\n return resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return isUndefined(_response) ? response : _response;\n });\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 = get(record, def.localKeys) || [];\n itemKeys = 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 get(record, mapper.idAttribute);\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 (isObject(records) && !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 (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 (isObject(records) && !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 _ret = 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 = get(item, def.localKeys) || [];\n itemKeys = 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 _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === \"object\") return _ret.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 (isObject(records) && !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 = get(record, idAttribute);\n relatedItems.forEach(function (relatedItem) {\n var foreignKeys = 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 (isObject(records) && !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 (isArray(relatedData) && relatedData.length) {\n def.setLocalField(record, relatedData[0]);\n }\n });\n });\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 * 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 (isObject(records) && !isArray(records)) {\n var _ret2 = 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 _ret2 === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret2)) === \"object\") return _ret2.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 resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find';\n self.dbg(op, mapper, id, opts);\n return resolve(self._find(mapper, id, opts));\n }).then(function (results) {\n var _results5 = babelHelpers.slicedToArray(results, 1);\n\n var _record = _results5[0];\n\n if (!_record) {\n return;\n }\n record = _record;\n var tasks = [];\n\n 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 resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 (isObject(activeWith)) {\n var activeQuery = activeWith.query || {};\n if (activeWith.replace) {\n query = activeQuery;\n } else {\n deepFillIn(query, activeQuery);\n }\n }\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll';\n return resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll';\n self.dbg(op, mapper, query, opts);\n return resolve(self._findAll(mapper, query, opts));\n }).then(function (results) {\n var _results6 = babelHelpers.slicedToArray(results, 1);\n\n var _records = _results6[0];\n\n _records || (_records = []);\n records = _records;\n var tasks = [];\n 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 resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 isUndefined(opts[opt]) ? plainCopy(this[opt]) : plainCopy(opts[opt]);\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 * @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 resolve(self[op](mapper, id, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n op = opts.op = 'update';\n self.dbg(op, mapper, id, props, opts);\n return resolve(self._update(mapper, id, props, opts));\n }).then(function (results) {\n var _results7 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results7[0];\n var result = _results7[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 resolve(self[op](mapper, id, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, props, query, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n op = opts.op = 'updateAll';\n self.dbg(op, mapper, props, query, opts);\n return resolve(self._updateAll(mapper, props, 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 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 resolve(self[op](mapper, props, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 get(record, idAttribute);\n });\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany';\n return resolve(self[op](mapper, records, opts)).then(function (_records) {\n // Allow for re-assignment from lifecycle hook\n records = 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 resolve(self._updateMany(mapper, records, 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 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 resolve(self[op](mapper, records, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return isUndefined(_response) ? response : _response;\n });\n });\n }\n });\n\n module.exports = Adapter;\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\naxios.create = function create(defaultConfig) {\n return new Axios(defaultConfig);\n};\n\n// Expose defaults\naxios.defaults = defaultInstance.defaults;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose interceptors\naxios.interceptors = defaultInstance.interceptors;\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 transformResponseJSON(data, headers) {\n if (utils.isFormData(data)) {\n return data;\n }\n if (utils.isArrayBuffer(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 transformResponseJSON(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\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 * 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 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 = window.btoa || require('./../helpers/btoa');\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\n // For IE 8/9 CORS support\n // Only supports POST and GET calls and doesn't returns the response headers.\n if (window.XDomainRequest && !('withCredentials' in request) && !isURLSameOrigin(config.url)) {\n request = new window.XDomainRequest();\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 // Listen for ready state\n request.onload = function handleLoad() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = ['text', ''].indexOf(config.responseType || '') !== -1 ? 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 };\n\n // Resolve or reject the Promise based on the status\n ((response.status >= 200 && response.status < 300) ||\n (!('status' in request) && response.responseText) ?\n resolve :\n 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 // 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 if (utils.isArrayBuffer(requestData)) {\n requestData = new DataView(requestData);\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 InvalidCharacterError(message) {\n this.message = message;\n}\nInvalidCharacterError.prototype = new Error;\nInvalidCharacterError.prototype.code = 5;\nInvalidCharacterError.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 InvalidCharacterError('INVALID_CHARACTER_ERR: DOM Exception 5');\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\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 = 15\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 = 16\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 = 17\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 = 18\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 = 19\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 = 20\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 20cf0af..251fa41 100644 --- a/dist/js-data-http.min.js +++ b/dist/js-data-http.min.js @@ -1,5 +1,6 @@ /*! * js-data-http +<<<<<<< 71c27d31ec965adb8a86be6d31290596e4a16937 <<<<<<< 2cf30160e77226553e97988a45f3fcb29165092c <<<<<<< c4fb0646f59935877a8537ad264717c6cabf0ff3 * @version 2.2.1 - Homepage @@ -9,12 +10,16 @@ ======= * @version 3.0.0-alpha.6 - Homepage >>>>>>> 3.0.0-alpha.6 +======= +* @version 3.0.0-alpha.7 - Homepage +>>>>>>> 3.0.0-alpha.7 * @author Jason Dobry * @copyright (c) 2014-2015 Jason Dobry * @license MIT * * @overview HTTP adapter for js-data. */ +<<<<<<< 71c27d31ec965adb8a86be6d31290596e4a16937 <<<<<<< 2cf30160e77226553e97988a45f3fcb29165092c <<<<<<< c4fb0646f59935877a8537ad264717c6cabf0ff3 !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.DSHttpAdapter=t(require("js-data")):e.DSHttpAdapter=t(e.JSData)}(this,function(e){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={exports:{},id:n,loaded:!1};return e[n].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}([function(e,t,r){"use strict";function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a="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=function(){function e(e,t){for(var r=0;r=200&&t.status<300&&!o?(r.defaults.log&&r.defaults.log(i,t),t):(r.defaults.error&&r.defaults.error("FAILED: "+i,t),f.Promise.reject(t))}return r.defaults.error("FAILED",t),f.Promise.reject(t)}var r=this,n=new Date,o=e.data,i=e.cache,s=e.timeout;e=p(e,null,null,null,["data","cache","timeout"]),e=l(e,r.defaults.httpConfig),e.data=o,e.cache=i,e.timeout=s,"verbsUseBasePath"in e||(e.verbsUseBasePath=r.defaults.verbsUseBasePath),!e.urlOverride&&e.verbsUseBasePath&&(e.url=d(e.basePath||r.defaults.basePath,e.url)),r.defaults.forceTrailingSlash&&"/"!==e.url[e.url.length-1]&&!e.urlOverride&&(e.url+="/"),"object"===a(e.data)&&(e.data=c(e.data)),e.method=e.method.toUpperCase();var u=e.suffix||r.defaults.suffix;if(u&&e.url.substr(e.url.length-u.length)!==u&&!e.urlOverride&&(e.url+=u),!this.http)throw new Error("You have not configured this adapter with an http library!");return this.http(e).then(t,function(e){return t(e,!0)})}},{key:"GET",value:function(e,t){return t=t||{},t.method=t.method||"get",t.urlOverride=!!t.url,t.url=t.url||e,this.HTTP(t)}},{key:"POST",value:function(e,t,r){return r=r||{},r.method=r.method||"post",r.urlOverride=!!r.url,r.url=r.url||e,r.data=r.data||t,this.HTTP(r)}},{key:"PUT",value:function(e,t,r){return r=r||{},r.method=r.method||"put",r.urlOverride=!!r.url,r.url=r.url||e,r.data=r.data||t,this.HTTP(r)}},{key:"DEL",value:function(e,t){return t=t||{},t.method=t.method||"delete",t.urlOverride=!!t.url,t.url=t.url||e,this.HTTP(t)}},{key:"find",value:function(e,t,r){var n=this;return r=r?p(r):{},r.suffix=r.suffix||e.suffix,r.params=r.params||{},r.params=n.defaults.queryTransform(e,r.params),n.GET(n.getPath("find",e,t,r),r).then(function(t){var o=(r.deserialize?r.deserialize:n.defaults.deserialize)(e,t);return o?o:f.Promise.reject(new Error("Not Found!"))})}},{key:"findAll",value:function(e,t,r){var n=this;return r=r?p(r):{},r.suffix=r.suffix||e.suffix,r.params=r.params||{},t&&(t=n.defaults.queryTransform(e,t),l(r.params,t)),n.GET(n.getPath("findAll",e,t,r),r).then(function(t){return(r.deserialize?r.deserialize:n.defaults.deserialize)(e,t)})}},{key:"create",value:function(e,t,r){var n=this;return r=r?p(r):{},r.suffix=r.suffix||e.suffix,r.params=r.params||{},r.params=n.defaults.queryTransform(e,r.params),n.POST(n.getPath("create",e,t,r),r.serialize?r.serialize(e,t):n.defaults.serialize(e,t),r).then(function(t){return(r.deserialize?r.deserialize:n.defaults.deserialize)(e,t)})}},{key:"update",value:function(e,t,r,n){var o=this;return n=n?p(n):{},n.suffix=n.suffix||e.suffix,n.params=n.params||{},n.params=o.defaults.queryTransform(e,n.params),o.PUT(o.getPath("update",e,t,n),n.serialize?n.serialize(e,r):o.defaults.serialize(e,r),n).then(function(t){return(n.deserialize?n.deserialize:o.defaults.deserialize)(e,t)})}},{key:"updateAll",value:function(e,t,r,n){var o=this;return n=n?p(n):{},n.suffix=n.suffix||e.suffix,n.params=n.params||{},r&&(r=o.defaults.queryTransform(e,r),l(n.params,r)),this.PUT(o.getPath("updateAll",e,t,n),n.serialize?n.serialize(e,t):o.defaults.serialize(e,t),n).then(function(t){return(n.deserialize?n.deserialize:o.defaults.deserialize)(e,t)})}},{key:"destroy",value:function(e,t,r){var n=this;return r=r?p(r):{},r.suffix=r.suffix||e.suffix,r.params=r.params||{},r.params=n.defaults.queryTransform(e,r.params),n.DEL(n.getPath("destroy",e,t,r),r).then(function(t){return(r.deserialize?r.deserialize:n.defaults.deserialize)(e,t)})}},{key:"destroyAll",value:function(e,t,r){var n=this;return r=r?p(r):{},r.suffix=r.suffix||e.suffix,r.params=r.params||{},t&&(t=n.defaults.queryTransform(e,t),l(r.params,t)),this.DEL(n.getPath("destroyAll",e,t,r),r).then(function(t){return(r.deserialize?r.deserialize:n.defaults.deserialize)(e,t)})}}]),e}();g.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=g},function(t,r){t.exports=e},function(e,t,r){e.exports=r(3)},function(e,t,r){"use strict";function n(e){this.defaults=a.merge({},e),this.interceptors={request:new s,response:new s}}var o=r(4),a=r(5),i=r(6),s=r(15),u=r(16),f=r(17),l=r(18),c=r(11);n.prototype.request=function(e){"string"==typeof e&&(e=a.merge({url:arguments[0]},arguments[1])),e=a.merge(o,this.defaults,{method:"get"},e),e.baseURL&&!u(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=a.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),a.forEach(["delete","get","head","post","put","patch","common"],function(t){delete e.headers[t]});var t=[i,void 0],r=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;)r=r.then(t.shift(),t.shift());return r};var p=new n(o),d=e.exports=l(n.prototype.request,p);d.create=function(e){return new n(e)},d.defaults=p.defaults,d.all=function(e){return Promise.all(e)},d.spread=r(19),d.interceptors=p.interceptors,a.forEach(["delete","get","head"],function(e){n.prototype[e]=function(t,r){return this.request(a.merge(r||{},{method:e,url:t}))},d[e]=l(n.prototype[e],p)}),a.forEach(["post","put","patch"],function(e){n.prototype[e]=function(t,r,n){return this.request(a.merge(n||{},{method:e,url:t,data:r}))},d[e]=l(n.prototype[e],p)})},function(e,t,r){"use strict";var n=r(5),o=/^\)\]\}',?\n/,a={"Content-Type":"application/x-www-form-urlencoded"};e.exports={transformRequest:[function(e,t){return n.isFormData(e)?e:n.isArrayBuffer(e)?e:n.isArrayBufferView(e)?e.buffer:!n.isObject(e)||n.isFile(e)||n.isBlob(e)?e:(n.isUndefined(t)||(n.forEach(t,function(e,r){"content-type"===r.toLowerCase()&&(t["Content-Type"]=e)}),n.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:n.merge(a),post:n.merge(a),put:n.merge(a)},timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"}},function(e,t){"use strict";function r(e){return"[object Array]"===v.call(e)}function n(e){return"[object ArrayBuffer]"===v.call(e)}function o(e){return"[object FormData]"===v.call(e)}function a(e){var t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer}function i(e){return"string"==typeof e}function s(e){return"number"==typeof e}function u(e){return"undefined"==typeof e}function f(e){return null!==e&&"object"==typeof e}function l(e){return"[object Date]"===v.call(e)}function c(e){return"[object File]"===v.call(e)}function p(e){return"[object Blob]"===v.call(e)}function d(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function h(){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||r(e)||(e=[e]),r(e))for(var n=0,o=e.length;o>n;n++)t.call(null,e[n],n,e);else for(var a in e)e.hasOwnProperty(a)&&t.call(null,e[a],a,e)}function y(){function e(e,r){"object"==typeof t[r]&&"object"==typeof e?t[r]=y(t[r],e):t[r]=e}for(var t={},r=0,n=arguments.length;n>r;r++)m(arguments[r],e);return t}var v=Object.prototype.toString;e.exports={isArray:r,isArrayBuffer:n,isFormData:o,isArrayBufferView:a,isString:i,isNumber:s,isObject:f,isUndefined:u,isDate:l,isFile:c,isBlob:p,isStandardBrowserEnv:h,forEach:m,merge:y,trim:d}},function(e,t,r){(function(t){"use strict";e.exports=function(e){return new Promise(function(n,o){try{var a;"function"==typeof e.adapter?a=e.adapter:"undefined"!=typeof XMLHttpRequest?a=r(8):"undefined"!=typeof t&&(a=r(8)),"function"==typeof a&&a(n,o,e)}catch(e){o(e)}})}}).call(t,r(7))},function(e,t){function r(){f=!1,i.length?u=i.concat(u):l=-1,u.length&&n()}function n(){if(!f){var e=setTimeout(r);f=!0;for(var t=u.length;t;){for(i=u,u=[];++l1)for(var r=1;r=200&&o.status<300||!("status"in p)&&o.responseText?e:t)(o),p=null}},p.onerror=function(){t(new Error("Network Error")),p=null},n.isStandardBrowserEnv()){var m=r(14),y=f.withCredentials||s(f.url)?m.read(f.xsrfCookieName):void 0;y&&(c[f.xsrfHeaderName]=y)}if("setRequestHeader"in p&&n.forEach(c,function(e,t){"undefined"==typeof l&&"content-type"===t.toLowerCase()?delete c[t]:p.setRequestHeader(t,e)}),f.withCredentials&&(p.withCredentials=!0),f.responseType)try{p.responseType=f.responseType}catch(e){if("json"!==p.responseType)throw e}n.isArrayBuffer(l)&&(l=new DataView(l)),p.send(l)}},function(e,t,r){"use strict";function n(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,"]")}var o=r(5);e.exports=function(e,t,r){if(!t)return e;var a;if(r)a=r(t);else{var i=[];o.forEach(t,function(e,t){null!==e&&"undefined"!=typeof e&&(o.isArray(e)&&(t+="[]"),o.isArray(e)||(e=[e]),o.forEach(e,function(e){o.isDate(e)?e=e.toISOString():o.isObject(e)&&(e=JSON.stringify(e)),i.push(n(t)+"="+n(e))}))}),a=i.join("&")}return a&&(e+=(-1===e.indexOf("?")?"?":"&")+a),e}},function(e,t,r){"use strict";var n=r(5);e.exports=function(e){var t,r,o,a={};return e?(n.forEach(e.split("\n"),function(e){o=e.indexOf(":"),t=n.trim(e.substr(0,o)).toLowerCase(),r=n.trim(e.substr(o+1)),t&&(a[t]=a[t]?a[t]+", "+r:r)}),a):a}},function(e,t,r){"use strict";var n=r(5);e.exports=function(e,t,r){return n.forEach(r,function(r){e=r(e,t)}),e}},function(e,t,r){"use strict";var n=r(5);e.exports=n.isStandardBrowserEnv()?function(){function e(e){var t=e;return r&&(o.setAttribute("href",t),t=o.href),o.setAttribute("href",t),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}var t,r=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");return t=e(window.location.href),function(r){var o=n.isString(r)?e(r):r;return o.protocol===t.protocol&&o.host===t.host}}():function(){return function(){return!0}}()},function(e,t){"use strict";function r(e){this.message=e}function n(e){for(var t,n,a=String(e),i="",s=0,u=o;a.charAt(0|s)||(u="=",s%1);i+=u.charAt(63&t>>8-s%1*8)){if(n=a.charCodeAt(s+=.75),n>255)throw new r("INVALID_CHARACTER_ERR: DOM Exception 5");t=t<<8|n}return i}var o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";r.prototype=new Error,r.prototype.code=5,r.prototype.name="InvalidCharacterError",e.exports=n},function(e,t,r){"use strict";var n=r(5);e.exports=n.isStandardBrowserEnv()?function(){return{write:function(e,t,r,o,a,i){var s=[];s.push(e+"="+encodeURIComponent(t)),n.isNumber(r)&&s.push("expires="+new Date(r).toGMTString()),n.isString(o)&&s.push("path="+o),n.isString(a)&&s.push("domain="+a),i===!0&&s.push("secure"),document.cookie=s.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,r){"use strict";function n(){this.handlers=[]}var o=r(5);n.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},n.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},n.prototype.forEach=function(e){o.forEach(this.handlers,function(t){null!==t&&e(t)})},e.exports=n},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 r=new Array(arguments.length),n=0;nr;r++)t[r]=arguments[r];var n=o(t,"/");return n.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 r=[];return v(t,function(e,t){null!==e&&"undefined"!=typeof e&&(x(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():A(e)&&(e=D(e)),r.push(a(t)+"="+a(e))}))}),r.length>0&&(e+=(-1===e.indexOf("?")?"?":"&")+r.join("&")),e}function s(e){var t=this;e||(e={}),g(t,e),g(t,O)}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},c=r(1),p=r(2),l=c.utils._,d=c.utils.addHiddenPropsToTarget,h=c.utils.copy,m=c.utils.deepMixIn,y=c.utils.extend,g=c.utils.fillIn,v=c.utils.forOwn,b=c.utils.get,x=c.utils.isArray,T=c.utils.isFunction,w=c.utils.isNumber,A=c.utils.isObject,E=c.utils.isSorN,P=c.utils.isString,C=c.utils.isUndefined,S=c.utils.resolve,j=c.utils.reject,D=c.utils.toJson,U=!1;try{U=window&&window.fetch}catch(e){}var q=function(){for(var e=this,t=arguments.length,r=Array(t),n=0;t>n;n++)r[n]=arguments[n];var o=r[r.length-1];e.dbg.apply(e,[o.op].concat(r))},z=function(){for(var e=this,t=arguments.length,r=Array(t),n=0;t>n;n++)r[n]=arguments[n];var o=r[r.length-2];e.dbg.apply(e,[o.op].concat(r))},O={basePath:"",debug:!1,forceTrailingSlash:!1,http:p,httpConfig:{},suffix:"",useFetch:!1};d(s.prototype,{afterCreate:z,afterCreateMany:z,afterDEL:z,afterDestroy:z,afterDestroyAll:z,afterFind:z,afterFindAll:z,afterGET:z,afterHTTP:z,afterPOST:z,afterPUT:z,afterUpdate:z,afterUpdateAll:z,afterUpdateMany:z,beforeCreate:q,beforeCreateMany:q,beforeDEL:q,beforeDestroy:q,beforeDestroyAll:q,beforeFind:q,beforeFindAll:q,beforeGET:q,beforeHTTP:q,beforePOST:q,beforePUT:q,beforeUpdate:q,beforeUpdateAll:q,beforeUpdateMany:q,create:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeCreate",S(n[o](e,t,r)).then(function(){return o=r.op="create",n.dbg(o,e,t,r),n.POST(n.getPath("create",e,t,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterCreate",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},createMany:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeCreateMany",S(n[o](e,t,r)).then(function(){return o=r.op="createMany",n.dbg(o,e,t,r),n.POST(n.getPath("createMany",e,null,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterCreateMany",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},dbg:function(){for(var e=arguments.length,t=Array(e),r=0;e>r;r++)t[r]=arguments[r];this.log.apply(this,["debug"].concat(t))},DEL:function(e,t,r){var n=this,o=void 0;return t||(t={}),r||(r={}),t.url=e||t.url,t.method=t.method||"delete",o=r.op="beforeDEL",S(n[o](e,t,r)).then(function(i){return t=C(i)?t:i,o=r.op="DEL",n.dbg(o,e,t,r),n.HTTP(t,r)}).then(function(i){return o=r.op="afterDEL",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},deserialize:function(e,t,r){return r||(r={}),T(r.deserialize)?r.deserialize(e,t,r):T(e.deserialize)?e.deserialize(e,t,r):r.raw?t:t&&"data"in t?t.data:t},destroy:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeDestroy",S(n[o](e,t,r)).then(function(){return o=r.op="destroy",n.dbg(o,e,t,r),n.DEL(n.getPath("destroy",e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterDestroy",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},destroyAll:function(e,t,r){var n=this,o=void 0;return t||(t={}),r=r?h(r):{},r.params||(r.params={}),m(r.params,t),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeDestroyAll",S(n.beforeDestroyAll(e,t,r)).then(function(){return o=r.op="destroyAll",n.dbg(o,e,t,r),n.DEL(n.getPath("destroyAll",e,null,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterDestroyAll",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},error:function(){if(console){var e;(e=console)["function"==typeof console.error?"error":"log"].apply(e,arguments)}},fetch:function(e){function t(t,r){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}(function(e,t){var r={method:e.method,headers:new Headers(e.headers)};return e.data&&(r.body=D(e.data)),fetch(new Request(u(e.url,e.params),r)).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,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeFind",S(n[o](e,t,r)).then(function(){return o=r.op="find",n.dbg(o,e,t,r),n.GET(n.getPath("find",e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterFind",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},findAll:function(e,t,r){var n=this,o=void 0;return t||(t={}),r=r?h(r):{},r.params||(r.params={}),r.suffix=C(r.suffix)?e.suffix:r.suffix,m(r.params,t),r.params=n.queryTransform(e,r.params,r),o=r.op="beforeFindAll",S(n[o](e,t,r)).then(function(){return o=r.op="findAll",n.dbg(o,e,t,r),n.GET(n.getPath("findAll",e,r.params,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterFindAll",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},GET:function(e,t,r){var n=this,o=void 0;return t||(t={}),r||(r={}),t.url=e||t.url,t.method=t.method||"get",o=r.op="beforeGET",S(n[o](e,t,r)).then(function(i){return t=C(i)?t:i,o=r.op="GET",n.dbg(o,e,t,r),n.HTTP(t,r)}).then(function(i){return o=r.op="afterGET",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},getEndpoint:function(e,t,r){var n=this;r||(r={}),r.params||(r.params={});var o=e.relationList||[],a=C(r.endpoint)?C(e.endpoint)?e.name:e.endpoint:r.endpoint;return o.forEach(function(e){if("belongsTo"===e.type&&e.parent){var o=void 0,u=e.foreignKey,s=e.getRelation(),c=r.params[u];if(c===!1||!u||!s)return c===!1&&delete r.params[u],!1;if(delete r.params[u],A(t)&&(o=t),o&&(c=c||e.getForeignKey(o)||(e.getLocalField(o)?b(e.getLocalField(o),s.idAttribute):null)),c){var p=function(){delete r.endpoint;var e={};return v(r,function(t,r){e[r]=t}),l(e,s),a=i(n.getEndpoint(s,c,e),c,a),{v:!1}}();if("object"===("undefined"==typeof p?"undefined":f(p)))return p.v}}}),a},getPath:function(e,t,r,n){var o=this;n||(n={});var a=[C(n.basePath)?C(t.basePath)?o.basePath:t.basePath:n.basePath,o.getEndpoint(t,P(r)||w(r)||"create"===e?r:null,n)];return"find"!==e&&"update"!==e&&"destroy"!==e||a.push(r),i.apply(c.utils,a)},HTTP:function(e,t){function r(t){var r=o.toUTCString()+" - "+e.method.toUpperCase()+" "+e.url+" - "+t.status+" "+((new Date).getTime()-o.getTime())+"ms";return t.status>=200&&t.status<300?(n.log&&n.dbg("debug",r,t),t):(n.error&&n.error("'FAILED: "+r,t),j(t))}var n=this,o=new Date;t||(t={}),e=h(e),e=m(e,n.httpConfig),n.forceTrailingSlash&&"/"!==e.url[e.url.length-1]&&(e.url+="/"),e.method=e.method.toUpperCase();var i=e.suffix||t.suffix||n.suffix;if(i&&e.url.substr(e.url.length-i.length)!==i&&(e.url+=i),!n.http)throw new Error("You have not configured this adapter with an http library!");return S(n.beforeHTTP(e,t)).then(function(o){return e=o||e,U&&(n.useFetch||t.useFetch||!n.http)?n.fetch(e,t).then(r,r):n.http(e).then(r,r).catch(function(r){return n.responseError(r,e,t)})}).then(function(r){return S(n.afterHTTP(e,t,r)).then(function(e){return e||r})})},log:function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;t>n;n++)r[n-1]=arguments[n];if(e&&!r.length&&(r.push(e),e="debug"),"debug"!==e||this.debug){var o=e.toUpperCase()+": (HttpAdapter)";if(console[e]){var i;(i=console)[e].apply(i,[o].concat(r))}else{var a;(a=console).log.apply(a,[o].concat(r))}}},POST:function(e,t,r,n){var o=this,i=void 0;return r||(r={}),n||(n={}),r.url=e||r.url,r.data=t||r.data,r.method=r.method||"post",i=n.op="beforePOST",S(o[i](e,t,r,n)).then(function(a){return r=C(a)?r:a,i=n.op="POST",o.dbg(i,e,t,r,n),o.HTTP(r,n)}).then(function(a){return i=n.op="afterPOST",S(o[i](e,t,r,n,a)).then(function(e){return C(e)?a:e})})},PUT:function(e,t,r,n){var o=this,i=void 0;return r||(r={}),n||(n={}),r.url=e||r.url,r.data=t||r.data,r.method=r.method||"put",i=n.op="beforePUT",S(o[i](e,t,r,n)).then(function(a){return r=C(a)?r:a,i=n.op="PUT",o.dbg(i,e,t,r,n),o.HTTP(r,n)}).then(function(a){return i=n.op="afterPUT",S(o[i](e,t,r,n,a)).then(function(e){return C(e)?a:e})})},queryTransform:function(e,t,r){return r||(r={}),T(r.queryTransform)?r.queryTransform(e,t,r):T(e.queryTransform)?e.queryTransform(e,t,r):t},responseError:function(e,t,r){return j(e)},serialize:function(e,t,r){return r||(r={}),T(r.serialize)?r.serialize(e,t,r):T(e.serialize)?e.serialize(e,t,r):t},update:function(e,t,r,n){var o=this,i=void 0;return n=n?h(n):{},n.params||(n.params={}),n.params=o.queryTransform(e,n.params,n),n.suffix=C(n.suffix)?e.suffix:n.suffix,i=n.op="beforeUpdate",S(o[i](e,t,r,n)).then(function(){return i=n.op="update",o.dbg(i,e,t,r,n),o.PUT(o.getPath("update",e,t,n),o.serialize(e,r,n),n)}).then(function(t){return o.deserialize(e,t,n)}).then(function(a){return i=n.op="afterUpdate",S(o[i](e,t,r,n,a)).then(function(e){return C(e)?a:e})})},updateAll:function(e,t,r,n){var o=this,i=void 0;return r||(r={}),n=n?h(n):{},n.params||(n.params={}),m(n.params,r),n.params=o.queryTransform(e,n.params,n),n.suffix=C(n.suffix)?e.suffix:n.suffix,i=n.op="beforeUpdateAll",S(o[i](e,t,r,n)).then(function(){return i=n.op="updateAll",o.dbg(i,e,t,r,n),o.PUT(o.getPath("updateAll",e,null,n),o.serialize(e,t,n),n)}).then(function(t){return o.deserialize(e,t,n)}).then(function(a){return i=n.op="afterUpdateAll",S(o[i](e,t,r,n,a)).then(function(e){return C(e)?a:e})})},updateMany:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeUpdateMany",S(n[o](e,t,r)).then(function(){return o=r.op="updateMany",n.dbg(o,e,t,r),n.PUT(n.getPath("updateMany",e,null,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterUpdateMany",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})}}),s.addAction=function(e,t){if(!e||!P(e))throw new TypeError("action(name[, opts]): Expected: string, Found: "+("undefined"==typeof e?"undefined":f(e)));return function(r){if(r[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 j(e)},r[e]=function(r,n){var o=this;A(r)&&(n=r),n=n||{};var a=o.getAdapter(t.adapter||o.defaultAdapter||"http"),u={};if(g(u,t),!n.hasOwnProperty("endpoint")&&u.endpoint&&(n.endpoint=u.endpoint),"function"==typeof n.getEndpoint)u.url=n.getEndpoint(o,n);else{var s=[n.basePath||o.basePath||a.basePath,a.getEndpoint(o,E(r)?r:null,n)];E(r)&&s.push(r),s.push(t.pathname||e),u.url=i.apply(null,s)}return u.method=u.method||"GET",u.mapper=o.name,m(u)(n),S(u).then(n.request||t.request).then(function(e){return a.HTTP(e)}).then(function(e){return e&&e.config&&(e.config.mapper=o.name),e}).then(n.response||t.response,n.responseError||t.responseError)},r}},s.addActions=function(e){return e||(e={}),function(e){return v(e,function(t,r){s.addAction(r,t)(e)}),e}},s.extend=y,s.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=s},function(t,r){t.exports=e},function(e,t,r){e.exports=r(3)},function(e,t,r){"use strict";function n(e){this.defaults=i.merge({},e),this.interceptors={request:new u,response:new u}}var o=r(4),i=r(5),a=r(6),u=r(15),s=r(16),f=r(17),c=r(18),p=r(11);n.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=p(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=[a,void 0],r=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;)r=r.then(t.shift(),t.shift());return r};var l=new n(o),d=e.exports=c(n.prototype.request,l);d.create=function(e){return new n(e)},d.defaults=l.defaults,d.all=function(e){return Promise.all(e)},d.spread=r(19),d.interceptors=l.interceptors,i.forEach(["delete","get","head"],function(e){n.prototype[e]=function(t,r){return this.request(i.merge(r||{},{method:e,url:t}))},d[e]=c(n.prototype[e],l)}),i.forEach(["post","put","patch"],function(e){n.prototype[e]=function(t,r,n){return this.request(i.merge(n||{},{method:e,url:t,data:r}))},d[e]=c(n.prototype[e],l)})},function(e,t,r){"use strict";var n=r(5),o=/^\)\]\}',?\n/,i={"Content-Type":"application/x-www-form-urlencoded"};e.exports={transformRequest:[function(e,t){return n.isFormData(e)?e:n.isArrayBuffer(e)?e:n.isArrayBufferView(e)?e.buffer:!n.isObject(e)||n.isFile(e)||n.isBlob(e)?e:(n.isUndefined(t)||(n.forEach(t,function(e,r){"content-type"===r.toLowerCase()&&(t["Content-Type"]=e)}),n.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:n.merge(i),post:n.merge(i),put:n.merge(i)},timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"}},function(e,t){"use strict";function r(e){return"[object Array]"===g.call(e)}function n(e){return"[object ArrayBuffer]"===g.call(e)}function o(e){return"[object FormData]"===g.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 a(e){return"string"==typeof e}function u(e){return"number"==typeof e}function s(e){return"undefined"==typeof e}function f(e){return null!==e&&"object"==typeof e}function c(e){return"[object Date]"===g.call(e)}function p(e){return"[object File]"===g.call(e)}function l(e){return"[object Blob]"===g.call(e)}function d(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function h(){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||r(e)||(e=[e]),r(e))for(var n=0,o=e.length;o>n;n++)t.call(null,e[n],n,e);else for(var i in e)e.hasOwnProperty(i)&&t.call(null,e[i],i,e)}function y(){function e(e,r){"object"==typeof t[r]&&"object"==typeof e?t[r]=y(t[r],e):t[r]=e}for(var t={},r=0,n=arguments.length;n>r;r++)m(arguments[r],e);return t}var g=Object.prototype.toString;e.exports={isArray:r,isArrayBuffer:n,isFormData:o,isArrayBufferView:i,isString:a,isNumber:u,isObject:f,isUndefined:s,isDate:c,isFile:p,isBlob:l,isStandardBrowserEnv:h,forEach:m,merge:y,trim:d}},function(e,t,r){(function(t){"use strict";e.exports=function(e){return new Promise(function(n,o){try{var i;"function"==typeof e.adapter?i=e.adapter:"undefined"!=typeof XMLHttpRequest?i=r(8):"undefined"!=typeof t&&(i=r(8)),"function"==typeof i&&i(n,o,e)}catch(e){o(e)}})}}).call(t,r(7))},function(e,t){function r(){f=!1,a.length?s=a.concat(s):c=-1,s.length&&n()}function n(){if(!f){var e=setTimeout(r);f=!0;for(var t=s.length;t;){for(a=s,s=[];++c1)for(var r=1;r=200&&o.status<300||!("status"in l)&&o.responseText?e:t)(o),l=null}},l.onerror=function(){t(new Error("Network Error")),l=null},n.isStandardBrowserEnv()){var m=r(14),y=f.withCredentials||u(f.url)?m.read(f.xsrfCookieName):void 0;y&&(p[f.xsrfHeaderName]=y)}if("setRequestHeader"in l&&n.forEach(p,function(e,t){"undefined"==typeof c&&"content-type"===t.toLowerCase()?delete p[t]:l.setRequestHeader(t,e)}),f.withCredentials&&(l.withCredentials=!0),f.responseType)try{l.responseType=f.responseType}catch(e){if("json"!==l.responseType)throw e}n.isArrayBuffer(c)&&(c=new DataView(c)),l.send(c)}},function(e,t,r){"use strict";function n(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,"]")}var o=r(5);e.exports=function(e,t,r){if(!t)return e;var i;if(r)i=r(t);else{var a=[];o.forEach(t,function(e,t){null!==e&&"undefined"!=typeof e&&(o.isArray(e)&&(t+="[]"),o.isArray(e)||(e=[e]),o.forEach(e,function(e){o.isDate(e)?e=e.toISOString():o.isObject(e)&&(e=JSON.stringify(e)),a.push(n(t)+"="+n(e))}))}),i=a.join("&")}return i&&(e+=(-1===e.indexOf("?")?"?":"&")+i),e}},function(e,t,r){"use strict";var n=r(5);e.exports=function(e){var t,r,o,i={};return e?(n.forEach(e.split("\n"),function(e){o=e.indexOf(":"),t=n.trim(e.substr(0,o)).toLowerCase(),r=n.trim(e.substr(o+1)),t&&(i[t]=i[t]?i[t]+", "+r:r)}),i):i}},function(e,t,r){"use strict";var n=r(5);e.exports=function(e,t,r){return n.forEach(r,function(r){e=r(e,t)}),e}},function(e,t,r){"use strict";var n=r(5);e.exports=n.isStandardBrowserEnv()?function(){function e(e){var t=e;return r&&(o.setAttribute("href",t),t=o.href),o.setAttribute("href",t),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}var t,r=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");return t=e(window.location.href),function(r){var o=n.isString(r)?e(r):r;return o.protocol===t.protocol&&o.host===t.host}}():function(){return function(){return!0}}()},function(e,t){"use strict";function r(e){this.message=e}function n(e){for(var t,n,i=String(e),a="",u=0,s=o;i.charAt(0|u)||(s="=",u%1);a+=s.charAt(63&t>>8-u%1*8)){if(n=i.charCodeAt(u+=.75),n>255)throw new r("INVALID_CHARACTER_ERR: DOM Exception 5");t=t<<8|n}return a}var o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";r.prototype=new Error,r.prototype.code=5,r.prototype.name="InvalidCharacterError",e.exports=n},function(e,t,r){"use strict";var n=r(5);e.exports=n.isStandardBrowserEnv()?function(){return{write:function(e,t,r,o,i,a){var u=[];u.push(e+"="+encodeURIComponent(t)),n.isNumber(r)&&u.push("expires="+new Date(r).toGMTString()),n.isString(o)&&u.push("path="+o),n.isString(i)&&u.push("domain="+i),a===!0&&u.push("secure"),document.cookie=u.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,r){"use strict";function n(){this.handlers=[]}var o=r(5);n.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},n.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},n.prototype.forEach=function(e){o.forEach(this.handlers,function(t){null!==t&&e(t)})},e.exports=n},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 r=new Array(arguments.length),n=0;n>>>>>> 3.0.0-alpha.6 +======= +!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.HttpAdapter=t(require("js-data")):e.HttpAdapter=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 e&&e.__esModule?e:{default:e}}function o(e){return null!=e&&""!==e}function a(e,t){return t||(t=""),e.filter(o).join(t)}function i(){for(var e=arguments.length,t=Array(e),n=0;e>n;n++)t[n]=arguments[n];var r=a(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 s(e,t){if(!t)return e;var n=[];return w(t,function(e,t){null!==e&&"undefined"!=typeof e&&(x(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():S(e)&&(e=C(e)),n.push(u(t)+"="+u(e))}))}),n.length>0&&(e+=(-1===e.indexOf("?")?"?":"&")+n.join("&")),e}function f(e){var t=this;e||(e={}),A(e,_),d.default.call(t,e)}var c="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),p=n(2),d=r(p),h=n(3),y=l.utils._,g=l.utils.addHiddenPropsToTarget,m=l.utils.copy,v=l.utils.deepMixIn,b=l.utils.extend,A=l.utils.fillIn,w=l.utils.forOwn,T=l.utils.get,x=l.utils.isArray,E=l.utils.isFunction,P=l.utils.isNumber,S=l.utils.isObject,M=l.utils.isSorN,F=l.utils.isString,j=l.utils.isUndefined,O=l.utils.resolve,H=l.utils.reject,C=l.utils.toJson,L=!1;try{L=window&&window.fetch}catch(e){}var D=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var o=n[n.length-1];return e.dbg.apply(e,[o.op].concat(n)),O()},K=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var o=n[n.length-2];return e.dbg.apply(e,[o.op].concat(n)),O()},U=d.default.prototype,_={basePath:"",forceTrailingSlash:!1,http:h,httpConfig:{},suffix:"",useFetch:!1};f.prototype=Object.create(d.default.prototype,{constructor:{value:f,enumerable:!1,writable:!0,configurable:!0}}),Object.defineProperty(f,"__super__",{configurable:!0,value:d.default}),g(f.prototype,{afterDEL:K,afterGET:K,afterHTTP:K,afterPOST:K,afterPUT:K,beforeDEL:D,beforeGET:D,beforeHTTP:D,beforePOST:D,beforePUT:D,_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.data,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)})},_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)})},create:function(e,t,n){var r=this;return n=n?m(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),U.create.call(r,e,t,n)},createMany:function(e,t,n){var r=this;return n=n?m(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),U.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",O(r[o](e,t,n)).then(function(a){return t=j(a)?t:a,o=n.op="DEL",r.dbg(o,e,t,n),r.HTTP(t,n)}).then(function(a){return o=n.op="afterDEL",O(r[o](e,t,n,a)).then(function(e){return j(e)?a:e})})},deserialize:function(e,t,n){return n||(n={}),E(n.deserialize)?n.deserialize(e,t,n):E(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?m(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),U.destroy.call(r,e,t,n)},destroyAll:function(e,t,n){var r=this;return t||(t={}),n=n?m(n):{},n.params||(n.params={}),v(n.params,t),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),U.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=C(e.data)),fetch(new Request(s(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?m(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),U.find.call(r,e,t,n)},findAll:function(e,t,n){var r=this;return t||(t={}),n=n?m(n):{},n.params||(n.params={}),n.suffix=r.getSuffix(e,n),v(n.params,t),n.params=r.queryTransform(e,n.params,n),U.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",O(r[o](e,t,n)).then(function(a){return t=j(a)?t:a,o=n.op="GET",r.dbg(o,e,t,n),r.HTTP(t,n)}).then(function(a){return o=n.op="afterGET",O(r[o](e,t,n,a)).then(function(e){return j(e)?a:e})})},getEndpoint:function(e,t,n){var r=this;n||(n={}),n.params||(n.params={});var o=e.relationList||[],a=j(n.endpoint)?j(e.endpoint)?e.name:e.endpoint:n.endpoint;return o.forEach(function(e){if("belongsTo"===e.type&&e.parent){var o=void 0,u=e.foreignKey,s=e.getRelation(),f=n.params[u];if(f===!1||!u||!s)return f===!1&&delete n.params[u],!1;if(delete n.params[u],S(t)&&(o=t),o&&(f=f||e.getForeignKey(o)||(e.getLocalField(o)?T(e.getLocalField(o),s.idAttribute):null)),f){var l=function(){delete n.endpoint;var e={};return w(n,function(t,n){e[n]=t}),y(e,s),a=i(r.getEndpoint(s,f,e),f,a),{v:!1}}();if("object"===("undefined"==typeof l?"undefined":c(l)))return l.v}}}),a},getPath:function(e,t,n,r){var o=this;r||(r={});var a=[j(r.basePath)?j(t.basePath)?o.basePath:t.basePath:r.basePath,o.getEndpoint(t,F(n)||P(n)||"create"===e?n:null,r)];return"find"!==e&&"update"!==e&&"destroy"!==e||a.push(n),i.apply(l.utils,a)},getSuffix:function(e,t){return t||(t={}),j(t.suffix)?j(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),H(t))}var r=this,o=new Date;t||(t={}),e=m(e),e=v(e,r.httpConfig),r.forceTrailingSlash&&"/"!==e.url[e.url.length-1]&&(e.url+="/"),e.method=e.method.toUpperCase();var a=e.suffix||t.suffix||r.suffix;if(a&&e.url.substr(e.url.length-a.length)!==a&&(e.url+=a),!r.http)throw new Error("You have not configured this adapter with an http library!");return O(r.beforeHTTP(e,t)).then(function(o){return e=o||e,L&&(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 O(r.afterHTTP(e,t,n)).then(function(e){return e||n})})},POST:function(e,t,n,r){var o=this,a=void 0;return n||(n={}),r||(r={}),n.url=e||n.url,n.data=t||n.data,n.method=n.method||"post",a=r.op="beforePOST",O(o[a](e,t,n,r)).then(function(i){return n=j(i)?n:i,a=r.op="POST",o.dbg(a,e,t,n,r),o.HTTP(n,r)}).then(function(i){return a=r.op="afterPOST",O(o[a](e,t,n,r,i)).then(function(e){return j(e)?i:e})})},PUT:function(e,t,n,r){var o=this,a=void 0;return n||(n={}),r||(r={}),n.url=e||n.url,n.data=t||n.data,n.method=n.method||"put",a=r.op="beforePUT",O(o[a](e,t,n,r)).then(function(i){return n=j(i)?n:i,a=r.op="PUT",o.dbg(a,e,t,n,r),o.HTTP(n,r)}).then(function(i){return a=r.op="afterPUT",O(o[a](e,t,n,r,i)).then(function(e){return j(e)?i:e})})},queryTransform:function(e,t,n){return n||(n={}),E(n.queryTransform)?n.queryTransform(e,t,n):E(e.queryTransform)?e.queryTransform(e,t,n):t},responseError:function(e,t,n){return H(e)},serialize:function(e,t,n){return n||(n={}),E(n.serialize)?n.serialize(e,t,n):E(e.serialize)?e.serialize(e,t,n):t},update:function(e,t,n,r){var o=this;return r=r?m(r):{},r.params||(r.params={}),r.params=o.queryTransform(e,r.params,r),r.suffix=o.getSuffix(e,r),U.update.call(o,e,t,n,r)},updateAll:function(e,t,n,r){var o=this;return n||(n={}),r=r?m(r):{},r.params||(r.params={}),v(r.params,n),r.params=o.queryTransform(e,r.params,r),r.suffix=o.getSuffix(e,r),U.updateAll.call(o,e,t,n,r)},updateMany:function(e,t,n){var r=this;return n=n?m(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),U.updateMany.call(r,e,t,n)}}),f.addAction=function(e,t){if(!e||!F(e))throw new TypeError("action(name[, opts]): Expected: string, Found: "+("undefined"==typeof e?"undefined":c(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 H(e)},n[e]=function(n,r){var o=this;S(n)&&(r=n),r=r||{};var a=o.getAdapter(t.adapter||o.defaultAdapter||"http"),u={};if(A(u,t),!r.hasOwnProperty("endpoint")&&u.endpoint&&(r.endpoint=u.endpoint),"function"==typeof r.getEndpoint)u.url=r.getEndpoint(o,r);else{var s=[r.basePath||o.basePath||a.basePath,a.getEndpoint(o,M(n)?n:null,r)];M(n)&&s.push(n),s.push(t.pathname||e),u.url=i.apply(null,s)}return u.method=u.method||"GET",u.mapper=o.name,v(u)(r),O(u).then(r.request||t.request).then(function(e){return a.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}},f.addActions=function(e){return e||(e={}),function(e){return w(e,function(t,n){f.addAction(n,t)(e)}),e}},f.extend=b,f.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=f},function(t,n){t.exports=e},function(e,t,n){!function(e,t){t(n(1))}(this,function(t){"use strict";function n(e){var t=this;e||(e={}),u(e,A),u(t,e)}function r(e,t,n){var r=this;t||(t={}),r.data=e,u(r,t),r.op=n}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,a=void 0;try{for(var i,u=e[Symbol.iterator]();!(r=(i=u.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&u.return&&u.return()}finally{if(o)throw a}}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 a=t.utils.addHiddenPropsToTarget,i=t.utils.extend,u=t.utils.fillIn,s=t.utils.forEachRelation,f=t.utils.get,c=t.utils.isArray,l=t.utils.isObject,p=t.utils.isUndefined,d=t.utils.omit,h=t.utils.plainCopy,y=t.utils.resolve,g=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var o=n[n.length-1];return e.dbg.apply(e,[o.op].concat(n)),y()},m=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var o=n[n.length-2];return e.dbg.apply(e,[o.op].concat(n)),y()},v=function(e){var t={},n=[];return e.forEach(function(e){e in t||(n.push(e),t[e]=0)}),n},b=function(e,t){return d(t,e.relationFields||[])},A={debug:!1,raw:!1};n.reserved=["orderBy","sort","limit","offset","skip","where"],n.Response=r,n.extend=i,a(n.prototype,{afterCreate:m,afterCreateMany:m,afterDestroy:m,afterDestroyAll:m,afterFind:m,afterFindAll:m,afterUpdate:m,afterUpdateAll:m,afterUpdateMany:m,beforeCreate:g,beforeCreateMany:g,beforeDestroy:g,beforeDestroyAll:g,beforeFind:g,beforeFindAll:g,beforeUpdate:g,beforeUpdateAll:g,beforeUpdateMany:g,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))},create:function(e,t,n){var a=this,i=void 0;return t||(t={}),n||(n={}),i=n.op="beforeCreate",y(a[i](e,t,n)).then(function(r){return t=p(r)?t:r,t=b(e,t),i=n.op="create",a.dbg(i,e,t,n),y(a._create(e,t,n))}).then(function(u){var s=o.slicedToArray(u,2),f=s[0],c=s[1];c||(c={});var l=new r(f,c,"create");return l.created=f?1:0,l=a.respond(l,n),i=n.op="afterCreate",y(a[i](e,t,n,l)).then(function(e){return p(e)?l:e})})},createMany:function(e,t,n){var a=this,i=void 0;return t||(t={}),n||(n={}),i=n.op="beforeCreateMany",y(a[i](e,t,n)).then(function(r){return t=p(r)?t:r,t=t.map(function(t){return b(e,t)}),i=n.op="createMany",a.dbg(i,e,t,n),y(a._createMany(e,t,n))}).then(function(u){var s=o.slicedToArray(u,2),f=s[0],c=s[1];f||(f=[]),c||(c={});var l=new r(f,c,"createMany");return l.created=f.length,l=a.respond(l,n),i=n.op="afterCreateMany",y(a[i](e,t,n,l)).then(function(e){return p(e)?l:e})})},destroy:function(e,t,n){var a=this,i=void 0;return n||(n={}),i=n.op="beforeDestroy",y(a[i](e,t,n)).then(function(){return i=n.op="destroy",a.dbg(i,e,t,n),y(a._destroy(e,t,n))}).then(function(u){var s=o.slicedToArray(u,2),f=s[0],c=s[1];c||(c={});var l=new r(f,c,"destroy");return l=a.respond(l,n),i=n.op="afterDestroy",y(a[i](e,t,n,l)).then(function(e){return p(e)?l:e})})},destroyAll:function(e,t,n){var a=this,i=void 0;return t||(t={}),n||(n={}),i=n.op="beforeDestroyAll",y(a[i](e,t,n)).then(function(){return i=n.op="destroyAll",a.dbg(i,e,t,n),y(a._destroyAll(e,t,n))}).then(function(u){var s=o.slicedToArray(u,2),f=s[0],c=s[1];c||(c={});var l=new r(f,c,"destroyAll");return l=a.respond(l,n),i=n.op="afterDestroyAll",y(a[i](e,t,n,l)).then(function(e){return p(e)?l:e})})},makeHasManyForeignKey:function(e,t,n){return t.getForeignKey(n)},makeHasManyLocalKeys:function(e,t,n){var r=[],o=f(n,t.localKeys)||[];return o=c(o)?o:Object.keys(o),r=r.concat(o),v(r).filter(function(e){return e})},makeHasManyForeignKeys:function(e,t,n){return f(n,e.idAttribute)},loadHasMany:function(e,t,n,r){var o=this,a=!1;l(n)&&!c(n)&&(a=!0,n=[n]);var i=n.map(function(n){return o.makeHasManyForeignKey(e,t,n)}),u={where:{}},s=u.where[t.foreignKey]={};return a?s["=="]=i[0]:s.in=i.filter(function(e){return e}),o.findAll(t.getRelation(),u,r).then(function(r){n.forEach(function(n){var o=[];a?o=r:r.forEach(function(r){f(r,t.foreignKey)===n[e.idAttribute]&&o.push(r)}),t.setLocalField(n,o)})})},loadHasManyLocalKeys:function(e,t,n,r){var a=this,i=void 0,u=t.getRelation();if(l(n)&&!c(n)&&(i=n),i)return a.findAll(u,{where:o.defineProperty({},u.idAttribute,{in:a.makeHasManyLocalKeys(e,t,i)})},r).then(function(e){t.setLocalField(i,e)});var s=function(){var i=[];return n.forEach(function(n){i=i.concat(a.self.makeHasManyLocalKeys(e,t,n))}),{v:a.findAll(u,{where:o.defineProperty({},u.idAttribute,{in:v(i).filter(function(e){return e})})},r).then(function(e){return n.forEach(function(n){var r=[],o=f(n,t.localKeys)||[];o=c(o)?o:Object.keys(o),e.forEach(function(e){o&&-1!==o.indexOf(e[u.idAttribute])&&r.push(e)}),t.setLocalField(n,r)}),e})}}();return"object"===("undefined"==typeof s?"undefined":o.typeof(s))?s.v:void 0},loadHasManyForeignKeys:function(e,t,n,r){var a=this,i=t.getRelation(),u=e.idAttribute,s=void 0;return l(n)&&!c(n)&&(s=n),s?a.findAll(t.getRelation(),{where:o.defineProperty({},t.foreignKeys,{contains:a.makeHasManyForeignKeys(e,t,s)})},r).then(function(e){t.setLocalField(s,e)}):a.findAll(i,{where:o.defineProperty({},t.foreignKeys,{isectNotEmpty:n.map(function(n){return a.makeHasManyForeignKeys(e,t,n)})})},r).then(function(e){var r=t.foreignKeys;n.forEach(function(n){var o=[],a=f(n,u);e.forEach(function(t){var n=f(e,r)||[];-1!==n.indexOf(a)&&o.push(t)}),t.setLocalField(n,o)})})},loadHasOne:function(e,t,n,r){return l(n)&&!c(n)&&(n=[n]),this.loadHasMany(e,t,n,r).then(function(){n.forEach(function(e){var n=t.getLocalField(e);c(n)&&n.length&&t.setLocalField(e,n[0])})})},makeBelongsToForeignKey:function(e,t,n){return t.getForeignKey(n)},loadBelongsTo:function(e,t,n,r){var a=this,i=t.getRelation();if(!l(n)||c(n)){var u=n.map(function(n){return a.makeBelongsToForeignKey(e,t,n)}).filter(function(e){return e});return a.findAll(i,{where:o.defineProperty({},i.idAttribute,{in:u})},r).then(function(e){n.forEach(function(n){e.forEach(function(e){e[i.idAttribute]===n[t.foreignKey]&&t.setLocalField(n,e)})})})}var s=function(){var o=n;return{v:a.find(i,a.makeBelongsToForeignKey(e,t,o),r).then(function(e){t.setLocalField(o,e)})}}();return"object"===("undefined"==typeof s?"undefined":o.typeof(s))?s.v:void 0},find:function(e,t,n){var a=this,i=void 0,u=void 0;return n||(n={}),n.with||(n.with=[]),u=n.op="beforeFind",y(a[u](e,t,n)).then(function(){return u=n.op="find",a.dbg(u,e,t,n),y(a._find(e,t,n))}).then(function(t){var r=o.slicedToArray(t,1),u=r[0];if(u){i=u;var f=[];return s(e,n,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,i,n):"hasMany"===t.type&&t.foreignKeys?r=a.loadHasManyForeignKeys(e,t,i,n):"belongsTo"===t.type&&(r=a.loadBelongsTo(e,t,i,n)):r="hasOne"===t.type?a.loadHasOne(e,t,i,n):a.loadHasMany(e,t,i,n),r&&f.push(r)}),Promise.all(f)}}).then(function(){var o=new r(i,{},"find");return o.found=i?1:0,o=a.respond(o,n),u=n.op="afterFind",y(a[u](e,t,n,o)).then(function(e){return p(e)?o:e})})},findAll:function(e,t,n){var a=this;n||(n={}),n.with||(n.with=[]);var i=[],u=void 0;return u=n.op="beforeFindAll",y(a[u](e,t,n)).then(function(){return u=n.op="findAll",a.dbg(u,e,t,n),y(a._findAll(e,t,n))}).then(function(t){var r=o.slicedToArray(t,1),u=r[0];u||(u=[]),i=u;var f=[];return s(e,n,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,i,n):"hasMany"===t.type&&t.foreignKeys?r=a.loadHasManyForeignKeys(e,t,i,n):"belongsTo"===t.type&&(r=a.loadBelongsTo(e,t,i,n)):r="hasMany"===t.type?a.loadHasMany(e,t,i,n):a.loadHasOne(e,t,i,n),r&&f.push(r)}),Promise.all(f)}).then(function(){var o=new r(i,{},"findAll");return o.found=i.length,o=a.respond(o,n),u=n.op="afterFindAll",y(a[u](e,t,n,o)).then(function(e){return p(e)?o:e})})},getOpt:function(e,t){return t||(t={}),h(p(t[e])?this[e]:t[e])},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 a;(a=console)[e].apply(a,[o].concat(n))}else{var i;(i=console).log.apply(i,[o].concat(n))}}},respond:function(e,t){return this.getOpt("raw",t)?e:e.data},update:function(e,t,n,a){var i=this;n||(n={}),a||(a={});var u=void 0;return u=a.op="beforeUpdate",y(i[u](e,t,n,a)).then(function(r){return n=p(r)?n:r,u=a.op="update",i.dbg(u,e,t,n,a),y(i._update(e,t,n,a))}).then(function(s){var f=o.slicedToArray(s,2),c=f[0],l=f[1];l||(l={});var d=new r(c,l,"update");return d.updated=c?1:0,d=i.respond(d,a),u=a.op="afterUpdate",y(i[u](e,t,n,a,d)).then(function(e){return p(e)?d:e})})},updateAll:function(e,t,n,a){var i=this;t||(t={}),n||(n={}),a||(a={});var u=void 0;return u=a.op="beforeUpdateAll",y(i[u](e,t,n,a)).then(function(r){return t=p(r)?t:r,u=a.op="updateAll",i.dbg(u,e,t,n,a),y(i._updateAll(e,t,n,a))}).then(function(s){var f=o.slicedToArray(s,2),c=f[0],l=f[1];c||(c=[]),l||(l={});var d=new r(c,l,"updateAll");return d.updated=c.length,d=i.respond(d,a),u=a.op="afterUpdateAll",y(i[u](e,t,n,a,d)).then(function(e){return p(e)?d:e})})},updateMany:function(e,t,n){var a=this;t||(t=[]),n||(n={});var i=void 0,u=e.idAttribute;return t=t.filter(function(e){return f(e,u)}),i=n.op="beforeUpdateMany",y(a[i](e,t,n)).then(function(r){return t=p(r)?t:r,t=t.map(function(t){return b(e,t)}),i=n.op="updateMany",a.dbg(i,e,t,n),y(a._updateMany(e,t,n))}).then(function(u){var s=o.slicedToArray(u,2),f=s[0],c=s[1];f||(f=[]),c||(c={});var l=new r(f,c,"updateMany");return l.updated=f.length,l=a.respond(l,n),i=n.op="afterUpdateMany",y(a[i](e,t,n,l)).then(function(e){return p(e)?l:e})})}}),e.exports=n})},function(e,t,n){e.exports=n(4)},function(e,t,n){"use strict";function r(e){this.defaults=a.merge({},e),this.interceptors={request:new u,response:new u}}var o=n(5),a=n(6),i=n(7),u=n(16),s=n(17),f=n(18),c=n(19),l=n(12);r.prototype.request=function(e){"string"==typeof e&&(e=a.merge({url:arguments[0]},arguments[1])),e=a.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=l(e.data,e.headers,e.transformRequest),e.headers=a.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),a.forEach(["delete","get","head","post","put","patch","common"],function(t){delete e.headers[t]});var t=[i,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 p=new r(o),d=e.exports=c(r.prototype.request,p);d.create=function(e){return new r(e)},d.defaults=p.defaults,d.all=function(e){return Promise.all(e)},d.spread=n(20),d.interceptors=p.interceptors,a.forEach(["delete","get","head"],function(e){r.prototype[e]=function(t,n){return this.request(a.merge(n||{},{method:e,url:t}))},d[e]=c(r.prototype[e],p)}),a.forEach(["post","put","patch"],function(e){r.prototype[e]=function(t,n,r){return this.request(a.merge(r||{},{method:e,url:t,data:n}))},d[e]=c(r.prototype[e],p)})},function(e,t,n){"use strict";var r=n(6),o=/^\)\]\}',?\n/,a={"Content-Type":"application/x-www-form-urlencoded"};e.exports={transformRequest:[function(e,t){return r.isFormData(e)?e:r.isArrayBuffer(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(a),post:r.merge(a),put:r.merge(a)},timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"}},function(e,t){"use strict";function n(e){return"[object Array]"===m.call(e)}function r(e){return"[object ArrayBuffer]"===m.call(e)}function o(e){return"[object FormData]"===m.call(e)}function a(e){var t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer}function i(e){return"string"==typeof e}function u(e){return"number"==typeof e}function s(e){return"undefined"==typeof e}function f(e){return null!==e&&"object"==typeof e}function c(e){return"[object Date]"===m.call(e)}function l(e){return"[object File]"===m.call(e)}function p(e){return"[object Blob]"===m.call(e)}function d(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function h(){return"undefined"!=typeof window&&"undefined"!=typeof document&&"function"==typeof document.createElement}function y(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 a in e)e.hasOwnProperty(a)&&t.call(null,e[a],a,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++)y(arguments[n],e);return t}var m=Object.prototype.toString;e.exports={isArray:n,isArrayBuffer:r,isFormData:o,isArrayBufferView:a,isString:i,isNumber:u,isObject:f,isUndefined:s,isDate:c,isFile:l,isBlob:p,isStandardBrowserEnv:h,forEach:y,merge:g,trim:d}},function(e,t,n){(function(t){"use strict";e.exports=function(e){return new Promise(function(r,o){try{var a;"function"==typeof e.adapter?a=e.adapter:"undefined"!=typeof XMLHttpRequest?a=n(9):"undefined"!=typeof t&&(a=n(9)),"function"==typeof a&&a(r,o,e)}catch(e){o(e)}})}}).call(t,n(8))},function(e,t){function n(){f=!1,i.length?s=i.concat(s):c=-1,s.length&&r()}function r(){if(!f){var e=setTimeout(n);f=!0;for(var t=s.length;t;){for(i=s,s=[];++c1)for(var n=1;n=200&&o.status<300||!("status"in p)&&o.responseText?e:t)(o),p=null}},p.onerror=function(){t(new Error("Network Error")),p=null},r.isStandardBrowserEnv()){var y=n(15),g=f.withCredentials||u(f.url)?y.read(f.xsrfCookieName):void 0;g&&(l[f.xsrfHeaderName]=g)}if("setRequestHeader"in p&&r.forEach(l,function(e,t){"undefined"==typeof c&&"content-type"===t.toLowerCase()?delete l[t]:p.setRequestHeader(t,e)}),f.withCredentials&&(p.withCredentials=!0),f.responseType)try{p.responseType=f.responseType}catch(e){if("json"!==p.responseType)throw e}r.isArrayBuffer(c)&&(c=new DataView(c)),p.send(c)}},function(e,t,n){"use strict";function r(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,"]")}var o=n(6);e.exports=function(e,t,n){if(!t)return e;var a;if(n)a=n(t);else{var i=[];o.forEach(t,function(e,t){null!==e&&"undefined"!=typeof e&&(o.isArray(e)&&(t+="[]"),o.isArray(e)||(e=[e]),o.forEach(e,function(e){o.isDate(e)?e=e.toISOString():o.isObject(e)&&(e=JSON.stringify(e)),i.push(r(t)+"="+r(e))}))}),a=i.join("&")}return a&&(e+=(-1===e.indexOf("?")?"?":"&")+a),e}},function(e,t,n){"use strict";var r=n(6);e.exports=function(e){var t,n,o,a={};return e?(r.forEach(e.split("\n"),function(e){o=e.indexOf(":"),t=r.trim(e.substr(0,o)).toLowerCase(),n=r.trim(e.substr(o+1)),t&&(a[t]=a[t]?a[t]+", "+n:n)}),a):a}},function(e,t,n){"use strict";var r=n(6);e.exports=function(e,t,n){return r.forEach(n,function(n){e=n(e,t)}),e}},function(e,t,n){"use strict";var r=n(6);e.exports=r.isStandardBrowserEnv()?function(){function e(e){var t=e;return n&&(o.setAttribute("href",t),t=o.href),o.setAttribute("href",t),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}var t,n=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");return t=e(window.location.href),function(n){var o=r.isString(n)?e(n):n;return o.protocol===t.protocol&&o.host===t.host}}():function(){return function(){return!0}}()},function(e,t){"use strict";function n(e){this.message=e}function r(e){for(var t,r,a=String(e),i="",u=0,s=o;a.charAt(0|u)||(s="=",u%1);i+=s.charAt(63&t>>8-u%1*8)){if(r=a.charCodeAt(u+=.75),r>255)throw new n("INVALID_CHARACTER_ERR: DOM Exception 5");t=t<<8|r}return i}var o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";n.prototype=new Error,n.prototype.code=5,n.prototype.name="InvalidCharacterError",e.exports=r},function(e,t,n){"use strict";var r=n(6);e.exports=r.isStandardBrowserEnv()?function(){return{write:function(e,t,n,o,a,i){var u=[];u.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&u.push("expires="+new Date(n).toGMTString()),r.isString(o)&&u.push("path="+o),r.isString(a)&&u.push("domain="+a),i===!0&&u.push("secure"),document.cookie=u.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>>>>>> 3.0.0-alpha.7 diff --git a/dist/js-data-http.min.map b/dist/js-data-http.min.map index a0b4f16..887865b 100644 --- a/dist/js-data-http.min.map +++ b/dist/js-data-http.min.map @@ -1,3 +1,4 @@ +<<<<<<< 71c27d31ec965adb8a86be6d31290596e4a16937 <<<<<<< 2cf30160e77226553e97988a45f3fcb29165092c <<<<<<< c4fb0646f59935877a8537ad264717c6cabf0ff3 {"version":3,"sources":["dist/js-data-http.js"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_1__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","_classCallCheck","instance","Constructor","TypeError","_typeof","Symbol","iterator","constructor","_createClass","defineProperties","target","props","i","length","descriptor","protoProps","staticProps","prototype","JSData","axios","e","DSUtils","deepMixIn","removeCircular","copy","makePath","isString","isNumber","Defaults","resourceConfig","params","data","defaultsPrototype","basePath","forceTrailingSlash","httpConfig","verbsUseBasePath","DSHttpAdapter","options","defaults","console","log","a","b","info","error","http","endpoint","hasOwnProperty","parents","parent","parentKey","field","parentField","forOwn","parentName","_this2","item","parentDef","getResource","parentId","_sn","get","_o","idAttribute","_options","getEndpoint","_","method","_this","urlPath","apply","args","push","config","logResponse","isRejection","Error","message","Promise","reject","str","start","toUTCString","url","status","Date","getTime","payload","cache","timeout","urlOverride","toUpperCase","suffix","substr","then","HTTP","attrs","queryTransform","GET","getPath","deserialize","POST","serialize","PUT","DEL","version","full","major","parseInt","minor","patch","alpha","beta","Axios","defaultConfig","utils","merge","interceptors","request","InterceptorManager","response","dispatchRequest","isAbsoluteURL","combineURLs","bind","transformData","arguments","baseURL","withCredentials","headers","transformRequest","common","forEach","chain","undefined","promise","resolve","interceptor","unshift","fulfilled","rejected","shift","defaultInstance","create","all","promises","spread","PROTECTION_PREFIX","DEFAULT_CONTENT_TYPE","Content-Type","isFormData","isArrayBuffer","isArrayBufferView","buffer","isObject","isFile","isBlob","isUndefined","val","toLowerCase","JSON","stringify","transformResponse","replace","parse","Accept","post","put","xsrfCookieName","xsrfHeaderName","isArray","toString","result","ArrayBuffer","isView","isDate","trim","isStandardBrowserEnv","window","document","createElement","fn","l","assignValue","process","adapter","XMLHttpRequest","cleanUpNextTick","draining","currentQueue","queue","concat","queueIndex","drainQueue","setTimeout","len","run","clearTimeout","Item","fun","array","noop","nextTick","Array","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","binding","name","cwd","chdir","dir","umask","buildURL","parseHeaders","isURLSameOrigin","btoa","requestData","requestHeaders","XDomainRequest","auth","username","password","Authorization","open","paramsSerializer","onload","responseHeaders","getAllResponseHeaders","responseData","indexOf","responseType","responseText","statusText","onerror","cookies","xsrfValue","read","setRequestHeader","DataView","send","encode","encodeURIComponent","serializedParams","parts","v","toISOString","join","parsed","split","line","fns","resolveURL","href","msie","urlParsingNode","setAttribute","protocol","host","search","hash","hostname","port","pathname","charAt","originURL","test","navigator","userAgent","location","requestURL","InvalidCharacterError","input","block","charCode","String","output","idx","map","chars","charCodeAt","code","write","expires","path","domain","secure","cookie","toGMTString","match","RegExp","decodeURIComponent","remove","now","handlers","use","eject","h","relativeURL","thisArg","callback","arr"],"mappings":"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","file":"dist/js-data-http.min.js"} @@ -7,3 +8,6 @@ ======= {"version":3,"sources":["dist/js-data-http.js"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_1__","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","forOwn","key","isArray","forEach","v","window","toString","toISOString","isObject","toJson","push","indexOf","HttpAdapter","opts","self","fillIn","DEFAULTS","_typeof","Symbol","iterator","obj","constructor","_jsData","axios","_","utils","addHiddenPropsToTarget","copy","deepMixIn","extend","get","isFunction","isNumber","isSorN","isString","isUndefined","resolve","reject","hasFetch","fetch","e","noop","_len2","_key2","dbg","apply","op","concat","noop2","_len3","_key3","basePath","debug","forceTrailingSlash","http","httpConfig","suffix","useFetch","prototype","afterCreate","afterCreateMany","afterDEL","afterDestroy","afterDestroyAll","afterFind","afterFindAll","afterGET","afterHTTP","afterPOST","afterPUT","afterUpdate","afterUpdateAll","afterUpdateMany","beforeCreate","beforeCreateMany","beforeDEL","beforeDestroy","beforeDestroyAll","beforeFind","beforeFindAll","beforeGET","beforeHTTP","beforePOST","beforePUT","beforeUpdate","beforeUpdateAll","beforeUpdateMany","create","mapper","props","undefined","queryTransform","then","POST","getPath","serialize","response","deserialize","data","_data","createMany","records","_len4","_key4","log","DEL","config","method","_config","HTTP","_response","raw","destroy","destroyAll","query","error","console","_console","_fetch","_x","_x2","requestConfig","headers","Headers","body","Request","json","find","GET","findAll","getEndpoint","relationList","endpoint","name","def","type","parent","item","parentKey","foreignKey","parentDef","getRelation","parentId","getForeignKey","getLocalField","idAttribute","_ret","_opts","logResponse","str","start","toUTCString","toUpperCase","status","Date","getTime","substr","Error","catch","err","responseError","level","_len5","_key5","prefix","_console2","_console3","PUT","update","updateAll","updateMany","addAction","TypeError","request","adapter","getAdapter","defaultAdapter","hasOwnProperty","_args","pathname","addActions","version","full","major","parseInt","minor","patch","alpha","beta","Axios","defaultConfig","defaults","merge","interceptors","InterceptorManager","dispatchRequest","isAbsoluteURL","combineURLs","bind","transformData","baseURL","withCredentials","transformRequest","common","chain","promise","Promise","interceptor","unshift","fulfilled","rejected","shift","defaultInstance","all","promises","spread","PROTECTION_PREFIX","DEFAULT_CONTENT_TYPE","Content-Type","isFormData","isArrayBuffer","isArrayBufferView","buffer","isFile","isBlob","toLowerCase","JSON","stringify","transformResponse","parse","Accept","post","put","timeout","xsrfCookieName","xsrfHeaderName","ArrayBuffer","isView","isDate","trim","isStandardBrowserEnv","document","createElement","fn","i","l","assignValue","Object","process","XMLHttpRequest","cleanUpNextTick","draining","currentQueue","queue","queueIndex","drainQueue","setTimeout","len","run","clearTimeout","Item","fun","array","nextTick","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","binding","cwd","chdir","dir","umask","buildURL","parseHeaders","isURLSameOrigin","btoa","requestData","requestHeaders","XDomainRequest","auth","username","password","Authorization","open","paramsSerializer","onload","responseHeaders","getAllResponseHeaders","responseData","responseType","responseText","statusText","onerror","cookies","xsrfValue","read","setRequestHeader","DataView","send","serializedParams","parsed","split","line","fns","resolveURL","href","msie","urlParsingNode","setAttribute","protocol","host","search","hash","hostname","port","charAt","originURL","test","navigator","userAgent","location","requestURL","InvalidCharacterError","message","input","block","charCode","String","output","idx","map","chars","charCodeAt","code","write","expires","path","domain","secure","cookie","toGMTString","match","RegExp","decodeURIComponent","remove","now","handlers","use","eject","h","relativeURL","thisArg","callback","arr"],"mappings":"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","file":"dist/js-data-http.min.js"} >>>>>>> 3.0.0-alpha.6 +======= +{"version":3,"sources":["dist/js-data-http.js"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_1__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","isValidString","value","join","items","separator","filter","makePath","_len3","arguments","length","args","Array","_key3","result","replace","encode","val","encodeURIComponent","buildUrl","url","params","parts","forOwn","key","isArray","forEach","v","window","toString","toISOString","isObject","toJson","push","indexOf","HttpAdapter","opts","self","fillIn","DEFAULTS","_jsDataAdapter2","_typeof","Symbol","iterator","constructor","_jsData","_jsDataAdapter","axios","_","utils","addHiddenPropsToTarget","copy","deepMixIn","extend","get","isFunction","isNumber","isSorN","isString","isUndefined","resolve","reject","hasFetch","fetch","e","noop","_len","_key","dbg","apply","op","concat","noop2","_len2","_key2","__super__","prototype","basePath","forceTrailingSlash","http","httpConfig","suffix","useFetch","Object","create","enumerable","writable","configurable","defineProperty","afterDEL","afterGET","afterHTTP","afterPOST","afterPUT","beforeDEL","beforeGET","beforeHTTP","beforePOST","beforePUT","_create","mapper","props","POST","getPath","serialize","then","response","_end","_createMany","_destroy","DEL","_destroyAll","query","deserialize","data","_find","GET","_findAll","_update","PUT","_updateAll","_updateMany","records","queryTransform","getSuffix","createMany","config","method","_config","HTTP","_response","hasOwnProperty","destroy","destroyAll","error","console","_console","_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","idAttribute","_ret","_opts","logResponse","str","start","toUTCString","toUpperCase","status","Date","getTime","log","substr","Error","catch","err","responseError","update","updateAll","updateMany","addAction","TypeError","request","adapter","getAdapter","defaultAdapter","_args","pathname","addActions","version","full","major","parseInt","minor","patch","alpha","beta","global","jsData","Adapter","Response","meta","babelHelpers","typeof","slicedToArray","sliceIterator","arr","i","_arr","_n","_d","_e","undefined","_s","_i","next","done","forEachRelation","omit","plainCopy","unique","array","seen","final","withoutRelations","relationFields","debug","raw","reserved","afterCreate","afterCreateMany","afterDestroy","afterDestroyAll","afterFind","afterFindAll","afterUpdate","afterUpdateAll","afterUpdateMany","beforeCreate","beforeCreateMany","beforeDestroy","beforeDestroyAll","beforeFind","beforeFindAll","beforeUpdate","beforeUpdateAll","beforeUpdateMany","_props","results","_results","created","respond","map","record","_results2","_results3","_results4","makeHasManyForeignKey","makeHasManyLocalKeys","localKeys","itemKeys","keys","x","makeHasManyForeignKeys","loadHasMany","__opts","singular","IDs","where","criteria","relatedItems","attached","relatedItem","setLocalField","loadHasManyLocalKeys","relatedMapper","in","loadHasManyForeignKeys","foreignKeys","contains","isectNotEmpty","foreignKeysField","_relatedItems","loadHasOne","relatedData","makeBelongsToForeignKey","loadBelongsTo","relationDef","_ret2","with","_results5","_record","tasks","task","Promise","all","found","_results6","_records","getOpt","opt","level","_len4","_key4","prefix","_console2","_results7","updated","_results8","_results9","Axios","defaultConfig","defaults","merge","interceptors","InterceptorManager","dispatchRequest","isAbsoluteURL","combineURLs","bind","transformData","baseURL","withCredentials","transformRequest","common","chain","promise","interceptor","unshift","fulfilled","rejected","shift","defaultInstance","promises","spread","PROTECTION_PREFIX","DEFAULT_CONTENT_TYPE","Content-Type","isFormData","isArrayBuffer","isArrayBufferView","buffer","isFile","isBlob","toLowerCase","JSON","stringify","transformResponse","parse","Accept","post","put","timeout","xsrfCookieName","xsrfHeaderName","ArrayBuffer","isView","isDate","trim","isStandardBrowserEnv","document","createElement","fn","l","assignValue","process","XMLHttpRequest","cleanUpNextTick","draining","currentQueue","queue","queueIndex","drainQueue","setTimeout","len","run","clearTimeout","Item","fun","nextTick","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","binding","cwd","chdir","dir","umask","buildURL","parseHeaders","isURLSameOrigin","btoa","requestData","requestHeaders","XDomainRequest","auth","username","password","Authorization","open","paramsSerializer","onload","responseHeaders","getAllResponseHeaders","responseData","responseType","responseText","statusText","onerror","cookies","xsrfValue","read","setRequestHeader","DataView","send","serializedParams","parsed","split","line","fns","resolveURL","href","msie","urlParsingNode","setAttribute","protocol","host","search","hash","hostname","port","charAt","originURL","test","navigator","userAgent","location","requestURL","InvalidCharacterError","message","input","block","charCode","String","output","idx","chars","charCodeAt","code","write","expires","path","domain","secure","cookie","toGMTString","match","RegExp","decodeURIComponent","remove","now","handlers","use","eject","h","relativeURL","thisArg","callback"],"mappings":"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","file":"dist/js-data-http.min.js"} +>>>>>>> 3.0.0-alpha.7 diff --git a/fetch/dist/js-data-fetch.js b/fetch/dist/js-data-fetch.js index eb75b9f..d0a8f18 100644 --- a/fetch/dist/js-data-fetch.js +++ b/fetch/dist/js-data-fetch.js @@ -7,7 +7,7 @@ exports["HttpAdapter"] = factory(require("js-data"), require("undefined")); else root["HttpAdapter"] = factory(root["JSData"], root["undefined"]); -})(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_2__) { +})(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_3__) { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; @@ -60,8 +60,14 @@ return /******/ (function(modules) { // webpackBootstrap var _jsData = __webpack_require__(1); + var _jsDataAdapter = __webpack_require__(2); + + var _jsDataAdapter2 = _interopRequireDefault(_jsDataAdapter); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + /* global fetch:true Headers:true Request:true */ - var axios = __webpack_require__(2); + var axios = __webpack_require__(3); var _ = _jsData.utils._; var addHiddenPropsToTarget = _jsData.utils.addHiddenPropsToTarget; var copy = _jsData.utils.copy; @@ -88,6 +94,30 @@ return /******/ (function(modules) { // webpackBootstrap hasFetch = window && window.fetch; } catch (e) {} + var noop = function noop() { + var self = this; + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + var opts = args[args.length - 1]; + self.dbg.apply(self, [opts.op].concat(args)); + return resolve(); + }; + + var noop2 = function noop2() { + var self = this; + + for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + + var opts = args[args.length - 2]; + self.dbg.apply(self, [opts.op].concat(args)); + return resolve(); + }; + function isValidString(value) { return value != null && value !== ''; } @@ -96,8 +126,8 @@ return /******/ (function(modules) { // webpackBootstrap return items.filter(isValidString).join(separator); } function makePath() { - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; + for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { + args[_key3] = arguments[_key3]; } var result = join(args, '/'); @@ -140,27 +170,7 @@ return /******/ (function(modules) { // webpackBootstrap return url; } - var noop = function noop() { - var self = this; - - for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - - var opts = args[args.length - 1]; - self.dbg.apply(self, [opts.op].concat(args)); - }; - - var noop2 = function noop2() { - var self = this; - - for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { - args[_key3] = arguments[_key3]; - } - - var opts = args[args.length - 2]; - self.dbg.apply(self, [opts.op].concat(args)); - }; + var __super__ = _jsDataAdapter2.default.prototype; var DEFAULTS = { // Default and user-defined settings @@ -170,13 +180,6 @@ return /******/ (function(modules) { // webpackBootstrap */ basePath: '', - /** - * @name HttpAdapter#debug - * @type {boolean} - * @default false - */ - debug: false, - /** * @name HttpAdapter#forceTrailingSlash * @type {boolean} @@ -225,35 +228,27 @@ return /******/ (function(modules) { // webpackBootstrap */ function HttpAdapter(opts) { var self = this; - - // Default values for arguments opts || (opts = {}); - - fillIn(self, opts); - fillIn(self, DEFAULTS); + fillIn(opts, DEFAULTS); + _jsDataAdapter2.default.call(self, opts); } - addHiddenPropsToTarget(HttpAdapter.prototype, { - /** - * @name HttpAdapter#afterCreate - * @method - * @param {Object} mapper - * @param {Object} props - * @param {Object} opts - * @param {Object} data - */ - afterCreate: noop2, + // Setup prototype inheritance from Adapter + HttpAdapter.prototype = Object.create(_jsDataAdapter2.default.prototype, { + constructor: { + value: HttpAdapter, + enumerable: false, + writable: true, + configurable: true + } + }); - /** - * @name HttpAdapter#afterCreateMany - * @method - * @param {Object} mapper - * @param {Object} records - * @param {Object} opts - * @param {Object} data - */ - afterCreateMany: noop2, + Object.defineProperty(HttpAdapter, '__super__', { + configurable: true, + value: _jsDataAdapter2.default + }); + addHiddenPropsToTarget(HttpAdapter.prototype, { /** * @name HttpAdapter#afterDEL * @method @@ -264,46 +259,6 @@ return /******/ (function(modules) { // webpackBootstrap */ afterDEL: noop2, - /** - * @name HttpAdapter#afterDestroy - * @method - * @param {Object} mapper - * @param {(string|number)} id - * @param {Object} opts - * @param {Object} data - */ - afterDestroy: noop2, - - /** - * @name HttpAdapter#afterDestroyAll - * @method - * @param {Object} mapper - * @param {(string|number)} id - * @param {Object} opts - * @param {Object} data - */ - afterDestroyAll: noop2, - - /** - * @name HttpAdapter#afterFind - * @method - * @param {Object} mapper - * @param {(string|number)} id - * @param {Object} opts - * @param {Object} data - */ - afterFind: noop2, - - /** - * @name HttpAdapter#afterFindAll - * @method - * @param {Object} mapper - * @param {(string|number)} id - * @param {Object} opts - * @param {Object} data - */ - afterFindAll: noop2, - /** * @name HttpAdapter#afterGET * @method @@ -345,56 +300,6 @@ return /******/ (function(modules) { // webpackBootstrap */ afterPUT: noop2, - /** - * @name HttpAdapter#afterUpdate - * @method - * @param {Object} mapper - * @param {(string|number)} id - * @param {Object} props - * @param {Object} opts - * @param {Object} data - */ - afterUpdate: noop2, - - /** - * @name HttpAdapter#afterUpdateAll - * @method - * @param {Object} mapper - * @param {Object} props - * @param {Object} query - * @param {Object} opts - * @param {Object} data - */ - afterUpdateAll: noop2, - - /** - * @name HttpAdapter#afterUpdateMany - * @method - * @param {Object} mapper - * @param {Object} records - * @param {Object} opts - * @param {Object} data - */ - afterUpdateMany: noop2, - - /** - * @name HttpAdapter#beforeCreate - * @method - * @param {Object} mapper - * @param {Object} props - * @param {Object} opts - */ - beforeCreate: noop, - - /** - * @name HttpAdapter#beforeCreateMany - * @method - * @param {Object} mapper - * @param {Object} records - * @param {Object} opts - */ - beforeCreateMany: noop, - /** * @name HttpAdapter#beforeDEL * @method @@ -404,42 +309,6 @@ return /******/ (function(modules) { // webpackBootstrap */ beforeDEL: noop, - /** - * @name HttpAdapter#beforeDestroy - * @method - * @param {Object} mapper - * @param {(string|number)} id - * @param {Object} opts - */ - beforeDestroy: noop, - - /** - * @name HttpAdapter#beforeDestroyAll - * @method - * @param {Object} mapper - * @param {Object} query - * @param {Object} opts - */ - beforeDestroyAll: noop, - - /** - * @name HttpAdapter#beforeFind - * @method - * @param {Object} mapper - * @param {(string|number)} id - * @param {Object} opts - */ - beforeFind: noop, - - /** - * @name HttpAdapter#beforeFindAll - * @method - * @param {Object} mapper - * @param {Object} query - * @param {Object} opts - */ - beforeFindAll: noop, - /** * @name HttpAdapter#beforeGET * @method @@ -477,34 +346,64 @@ return /******/ (function(modules) { // webpackBootstrap */ beforePUT: noop, - /** - * @name HttpAdapter#beforeUpdate - * @method - * @param {Object} mapper - * @param {(string|number)} id - * @param {Object} props - * @param {Object} opts - */ - beforeUpdate: noop, - - /** - * @name HttpAdapter#beforeUpdateAll - * @method - * @param {Object} mapper - * @param {Object} props - * @param {Object} query - * @param {Object} opts - */ - beforeUpdateAll: noop, + _create: function _create(mapper, props, opts) { + var self = this; + return self.POST(self.getPath('create', mapper, props, opts), self.serialize(mapper, props, opts), opts).then(function (response) { + return self._end(mapper, opts, response); + }); + }, + _createMany: function _createMany(mapper, props, opts) { + var self = this; + return self.POST(self.getPath('createMany', mapper, null, opts), self.serialize(mapper, props, opts), opts).then(function (response) { + return self._end(mapper, opts, response); + }); + }, + _destroy: function _destroy(mapper, id, opts) { + var self = this; + return self.DEL(self.getPath('destroy', mapper, id, opts), opts).then(function (response) { + return self._end(mapper, opts, response); + }); + }, + _destroyAll: function _destroyAll(mapper, query, opts) { + var self = this; + return self.DEL(self.getPath('destroyAll', mapper, null, opts), opts).then(function (response) { + return self._end(mapper, opts, response); + }); + }, + _end: function _end(mapper, opts, response) { + return [this.deserialize(mapper, response.data, opts), response]; + }, + _find: function _find(mapper, id, opts) { + var self = this; + return self.GET(self.getPath('find', mapper, id, opts), opts).then(function (response) { + return self._end(mapper, opts, response); + }); + }, + _findAll: function _findAll(mapper, query, opts) { + var self = this; + return self.GET(self.getPath('findAll', mapper, opts.params, opts), opts).then(function (response) { + return self._end(mapper, opts, response); + }); + }, + _update: function _update(mapper, id, props, opts) { + var self = this; + return self.PUT(self.getPath('update', mapper, id, opts), self.serialize(mapper, props, opts), opts).then(function (response) { + return self._end(mapper, opts, response); + }); + }, + _updateAll: function _updateAll(mapper, props, query, opts) { + var self = this; + return self.PUT(self.getPath('updateAll', mapper, null, opts), self.serialize(mapper, props, opts), opts).then(function (response) { + return self._end(mapper, opts, response); + }); + }, + _updateMany: function _updateMany(mapper, records, opts) { + var self = this; + return self.PUT(self.getPath('updateMany', mapper, null, opts), self.serialize(mapper, records, opts), opts).then(function (response) { + return self._end(mapper, opts, response); + }); + }, - /** - * @name HttpAdapter#beforeUpdateMany - * @method - * @param {Object} mapper - * @param {Object} records - * @param {Object} opts - */ - beforeUpdateMany: noop, /** * Create a new the record from the provided `props`. @@ -520,28 +419,12 @@ return /******/ (function(modules) { // webpackBootstrap */ create: function create(mapper, props, opts) { var self = this; - var op = void 0; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(mapper, opts.params, opts); - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; - - // beforeCreate lifecycle hook - op = opts.op = 'beforeCreate'; - return resolve(self[op](mapper, props, opts)).then(function () { - op = opts.op = 'create'; - self.dbg(op, mapper, props, opts); - return self.POST(self.getPath('create', mapper, props, opts), self.serialize(mapper, props, opts), opts); - }).then(function (response) { - return self.deserialize(mapper, response, opts); - }).then(function (data) { - // afterCreate lifecycle hook - op = opts.op = 'afterCreate'; - return resolve(self[op](mapper, props, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data; - }); - }); + opts.suffix = self.getSuffix(mapper, opts); + + return __super__.create.call(self, mapper, props, opts); }, @@ -551,52 +434,20 @@ return /******/ (function(modules) { // webpackBootstrap * @name HttpAdapter#createMany * @method * @param {Object} mapper The mapper. - * @param {Array} records Array of property objects to send as the payload. + * @param {Array} props Array of property objects to send as the payload. * @param {Object} [opts] Configuration options. * @param {string} [opts.params] TODO * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO * @return {Promise} */ - createMany: function createMany(mapper, records, opts) { + createMany: function createMany(mapper, props, opts) { var self = this; - var op = void 0; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(mapper, opts.params, opts); - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; - - // beforeCreateMany lifecycle hook - op = opts.op = 'beforeCreateMany'; - return resolve(self[op](mapper, records, opts)).then(function () { - op = opts.op = 'createMany'; - self.dbg(op, mapper, records, opts); - return self.POST(self.getPath('createMany', mapper, null, opts), self.serialize(mapper, records, opts), opts); - }).then(function (response) { - return self.deserialize(mapper, response, opts); - }).then(function (data) { - // afterCreateMany lifecycle hook - op = opts.op = 'afterCreateMany'; - return resolve(self[op](mapper, records, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data; - }); - }); - }, - + opts.suffix = self.getSuffix(mapper, opts); - /** - * Call {@link HttpAdapter#log} at the "debug" level. - * - * @name HttpAdapter#dbg - * @method - * @param {...*} [args] Args passed to {@link HttpAdapter#log}. - */ - dbg: function dbg() { - for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { - args[_key4] = arguments[_key4]; - } - - this.log.apply(this, ['debug'].concat(args)); + return __super__.createMany.call(self, mapper, props, opts); }, @@ -657,10 +508,12 @@ return /******/ (function(modules) { // webpackBootstrap if (isFunction(mapper.deserialize)) { return mapper.deserialize(mapper, response, opts); } - if (opts.raw) { - return response; + if (response) { + if (response.hasOwnProperty('data')) { + return response.data; + } } - return response ? 'data' in response ? response.data : response : response; + return response; }, @@ -678,28 +531,12 @@ return /******/ (function(modules) { // webpackBootstrap */ destroy: function destroy(mapper, id, opts) { var self = this; - var op = void 0; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(mapper, opts.params, opts); - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; - - // beforeDestroy lifecycle hook - op = opts.op = 'beforeDestroy'; - return resolve(self[op](mapper, id, opts)).then(function () { - op = opts.op = 'destroy'; - self.dbg(op, mapper, id, opts); - return self.DEL(self.getPath('destroy', mapper, id, opts), opts); - }).then(function (response) { - return self.deserialize(mapper, response, opts); - }).then(function (data) { - // afterDestroy lifecycle hook - op = opts.op = 'afterDestroy'; - return resolve(self[op](mapper, id, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data; - }); - }); + opts.suffix = self.getSuffix(mapper, opts); + + return __super__.destroy.call(self, mapper, id, opts); }, @@ -717,30 +554,14 @@ return /******/ (function(modules) { // webpackBootstrap */ destroyAll: function destroyAll(mapper, query, opts) { var self = this; - var op = void 0; query || (query = {}); opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); deepMixIn(opts.params, query); opts.params = self.queryTransform(mapper, opts.params, opts); - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; - - // beforeDestroyAll lifecycle hook - op = opts.op = 'beforeDestroyAll'; - return resolve(self.beforeDestroyAll(mapper, query, opts)).then(function () { - op = opts.op = 'destroyAll'; - self.dbg(op, mapper, query, opts); - return self.DEL(self.getPath('destroyAll', mapper, null, opts), opts); - }).then(function (response) { - return self.deserialize(mapper, response, opts); - }).then(function (data) { - // afterDestroyAll lifecycle hook - op = opts.op = 'afterDestroyAll'; - return resolve(self[op](mapper, query, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data; - }); - }); + opts.suffix = self.getSuffix(mapper, opts); + + return __super__.destroyAll.call(self, mapper, query, opts); }, @@ -821,28 +642,12 @@ return /******/ (function(modules) { // webpackBootstrap */ find: function find(mapper, id, opts) { var self = this; - var op = void 0; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(mapper, opts.params, opts); - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; - - // beforeFind lifecycle hook - op = opts.op = 'beforeFind'; - return resolve(self[op](mapper, id, opts)).then(function () { - op = opts.op = 'find'; - self.dbg(op, mapper, id, opts); - return self.GET(self.getPath('find', mapper, id, opts), opts); - }).then(function (response) { - return self.deserialize(mapper, response, opts); - }).then(function (data) { - // afterFind lifecycle hook - op = opts.op = 'afterFind'; - return resolve(self[op](mapper, id, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data; - }); - }); + opts.suffix = self.getSuffix(mapper, opts); + + return __super__.find.call(self, mapper, id, opts); }, @@ -860,30 +665,14 @@ return /******/ (function(modules) { // webpackBootstrap */ findAll: function findAll(mapper, query, opts) { var self = this; - var op = void 0; query || (query = {}); opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; + opts.suffix = self.getSuffix(mapper, opts); deepMixIn(opts.params, query); opts.params = self.queryTransform(mapper, opts.params, opts); - // beforeFindAll lifecycle hook - op = opts.op = 'beforeFindAll'; - return resolve(self[op](mapper, query, opts)).then(function () { - op = opts.op = 'findAll'; - self.dbg(op, mapper, query, opts); - return self.GET(self.getPath('findAll', mapper, opts.params, opts), opts); - }).then(function (response) { - return self.deserialize(mapper, response, opts); - }).then(function (data) { - // afterFindAll lifecycle hook - op = opts.op = 'afterFindAll'; - return resolve(self[op](mapper, query, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data; - }); - }); + return __super__.findAll.call(self, mapper, query, opts); }, @@ -1004,6 +793,16 @@ return /******/ (function(modules) { // webpackBootstrap } return makePath.apply(_jsData.utils, args); }, + getSuffix: function getSuffix(mapper, opts) { + opts || (opts = {}); + if (isUndefined(opts.suffix)) { + if (isUndefined(mapper.suffix)) { + return this.suffix; + } + return mapper.suffix; + } + return opts.suffix; + }, /** @@ -1071,39 +870,6 @@ return /******/ (function(modules) { // webpackBootstrap }, - /** - * Log the provided arguments at the specified leve. - * - * @name HttpAdapter#log - * @method - * @param {string} level Log level. - * @param {...*} [args] Arguments to log. - */ - log: function log(level) { - for (var _len5 = arguments.length, args = Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) { - args[_key5 - 1] = arguments[_key5]; - } - - if (level && !args.length) { - args.push(level); - level = 'debug'; - } - if (level === 'debug' && !this.debug) { - return; - } - var prefix = level.toUpperCase() + ': (HttpAdapter)'; - if (console[level]) { - var _console2; - - (_console2 = console)[level].apply(_console2, [prefix].concat(args)); - } else { - var _console3; - - (_console3 = console).log.apply(_console3, [prefix].concat(args)); - } - }, - - /** * TODO * @@ -1257,28 +1023,12 @@ return /******/ (function(modules) { // webpackBootstrap */ update: function update(mapper, id, props, opts) { var self = this; - var op = void 0; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(mapper, opts.params, opts); - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; - - // beforeUpdate lifecycle hook - op = opts.op = 'beforeUpdate'; - return resolve(self[op](mapper, id, props, opts)).then(function () { - op = opts.op = 'update'; - self.dbg(op, mapper, id, props, opts); - return self.PUT(self.getPath('update', mapper, id, opts), self.serialize(mapper, props, opts), opts); - }).then(function (response) { - return self.deserialize(mapper, response, opts); - }).then(function (data) { - // afterUpdate lifecycle hook - op = opts.op = 'afterUpdate'; - return resolve(self[op](mapper, id, props, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data; - }); - }); + opts.suffix = self.getSuffix(mapper, opts); + + return __super__.update.call(self, mapper, id, props, opts); }, @@ -1295,30 +1045,14 @@ return /******/ (function(modules) { // webpackBootstrap */ updateAll: function updateAll(mapper, props, query, opts) { var self = this; - var op = void 0; query || (query = {}); opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); deepMixIn(opts.params, query); opts.params = self.queryTransform(mapper, opts.params, opts); - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; - - // beforeUpdateAll lifecycle hook - op = opts.op = 'beforeUpdateAll'; - return resolve(self[op](mapper, props, query, opts)).then(function () { - op = opts.op = 'updateAll'; - self.dbg(op, mapper, props, query, opts); - return self.PUT(self.getPath('updateAll', mapper, null, opts), self.serialize(mapper, props, opts), opts); - }).then(function (response) { - return self.deserialize(mapper, response, opts); - }).then(function (data) { - // afterUpdateAll lifecycle hook - op = opts.op = 'afterUpdateAll'; - return resolve(self[op](mapper, props, query, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data; - }); - }); + opts.suffix = self.getSuffix(mapper, opts); + + return __super__.updateAll.call(self, mapper, props, query, opts); }, @@ -1341,28 +1075,12 @@ return /******/ (function(modules) { // webpackBootstrap */ updateMany: function updateMany(mapper, records, opts) { var self = this; - var op = void 0; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(mapper, opts.params, opts); - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; - - // beforeUpdateMany lifecycle hook - op = opts.op = 'beforeUpdateMany'; - return resolve(self[op](mapper, records, opts)).then(function () { - op = opts.op = 'updateMany'; - self.dbg(op, mapper, records, opts); - return self.PUT(self.getPath('updateMany', mapper, null, opts), self.serialize(mapper, records, opts), opts); - }).then(function (response) { - return self.deserialize(mapper, response, opts); - }).then(function (data) { - // afterUpdateMany lifecycle hook - op = opts.op = 'afterUpdateMany'; - return resolve(self[op](mapper, records, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data; - }); - }); + opts.suffix = self.getSuffix(mapper, opts); + + return __super__.updateMany.call(self, mapper, records, opts); } }); @@ -1564,6 +1282,1463 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 2 */ +/***/ function(module, exports, __webpack_require__) { + + (function (global, factory) { + true ? factory(__webpack_require__(1)) : + typeof define === 'function' && define.amd ? define('js-data-adapter', ['js-data'], factory) : + (factory(global.JSData)); + }(this, function (jsData) { 'use strict'; + + var babelHelpers = {}; + babelHelpers.typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { + return typeof obj; + } : function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; + }; + + babelHelpers.defineProperty = function (obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; + }; + + babelHelpers.slicedToArray = function () { + function sliceIterator(arr, i) { + var _arr = []; + var _n = true; + var _d = false; + var _e = undefined; + + try { + for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"]) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; + } + + return function (arr, i) { + if (Array.isArray(arr)) { + return arr; + } else if (Symbol.iterator in Object(arr)) { + return sliceIterator(arr, i); + } else { + throw new TypeError("Invalid attempt to destructure non-iterable instance"); + } + }; + }(); + + babelHelpers; + + var addHiddenPropsToTarget = jsData.utils.addHiddenPropsToTarget; + var deepFillIn = jsData.utils.deepFillIn; + var extend = jsData.utils.extend; + var fillIn = jsData.utils.fillIn; + var forEachRelation = jsData.utils.forEachRelation; + var get = jsData.utils.get; + var isArray = jsData.utils.isArray; + var isObject = jsData.utils.isObject; + var isUndefined = jsData.utils.isUndefined; + var omit = jsData.utils.omit; + var plainCopy = jsData.utils.plainCopy; + var resolve = jsData.utils.resolve; + + + var noop = function noop() { + var self = this; + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + var opts = args[args.length - 1]; + self.dbg.apply(self, [opts.op].concat(args)); + return resolve(); + }; + + var noop2 = function noop2() { + var self = this; + + for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + + var opts = args[args.length - 2]; + self.dbg.apply(self, [opts.op].concat(args)); + return resolve(); + }; + + var unique = function unique(array) { + var seen = {}; + var final = []; + array.forEach(function (item) { + if (item in seen) { + return; + } + final.push(item); + seen[item] = 0; + }); + return final; + }; + + var withoutRelations = function withoutRelations(mapper, props) { + return omit(props, mapper.relationFields || []); + }; + + var DEFAULTS = { + /** + * Whether to log debugging information. + * + * @name Adapter#debug + * @type {boolean} + * @default false + */ + debug: false, + + /** + * Whether to return a more detailed response object. + * + * @name Adapter#raw + * @type {boolean} + * @default false + */ + raw: false + }; + + /** + * Abstract class meant to be extended by adapters. + * + * @class Adapter + * @abstract + * @param {Object} [opts] Configuration opts. + * @param {boolean} [opts.debug=false] Whether to log debugging information. + * @param {boolean} [opts.raw=false] Whether to return a more detailed response + * object. + */ + function Adapter(opts) { + var self = this; + opts || (opts = {}); + fillIn(opts, DEFAULTS); + fillIn(self, opts); + } + + Adapter.reserved = ['orderBy', 'sort', 'limit', 'offset', 'skip', 'where']; + + /** + * Response object used when `raw` is `true`. May contain other fields in + * addition to `data`. + * + * @typedef {Object} Response + * @property {Object} data Response data. + * @property {string} op The operation for which the response was created. + */ + function Response(data, meta, op) { + var self = this; + meta || (meta = {}); + self.data = data; + fillIn(self, meta); + self.op = op; + } + + Adapter.Response = Response; + + /** + * Alternative to ES6 class syntax for extending `Adapter`. + * + * @name Adapter.extend + * @method + * @param {Object} [instanceProps] Properties that will be added to the + * prototype of the subclass. + * @param {Object} [classProps] Properties that will be added as static + * properties to the subclass itself. + * @return {Object} Subclass of `Adapter`. + */ + Adapter.extend = extend; + + addHiddenPropsToTarget(Adapter.prototype, { + /** + * Lifecycle method method called by create. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes create to wait for the Promise to resolve before continuing. + * + * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the created record. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by create. + * + * @name Adapter#afterCreate + * @method + * @param {Object} mapper The `mapper` argument passed to create. + * @param {Object} props The `props` argument passed to create. + * @param {Object} opts The `opts` argument passed to create. + * @property {string} opts.op `afterCreate` + * @param {Object|Response} response Created record or {@link Response}, depending on the value of `opts.raw`. + */ + afterCreate: noop2, + + /** + * Lifecycle method method called by createMany. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes createMany to wait for the Promise to resolve before continuing. + * + * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the created records. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by createMany. + * + * @name Adapter#afterCreate + * @method + * @param {Object} mapper The `mapper` argument passed to createMany. + * @param {Object[]} props The `props` argument passed to createMany. + * @param {Object} opts The `opts` argument passed to createMany. + * @property {string} opts.op `afterCreateMany` + * @param {Object[]|Response} response Created records or {@link Response}, depending on the value of `opts.raw`. + */ + afterCreateMany: noop2, + + /** + * Lifecycle method method called by destroy. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes destroy to wait for the Promise to resolve before continuing. + * + * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be `undefined`. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroy. + * + * @name Adapter#afterDestroy + * @method + * @param {Object} mapper The `mapper` argument passed to destroy. + * @param {(string|number)} id The `id` argument passed to destroy. + * @param {Object} opts The `opts` argument passed to destroy. + * @property {string} opts.op `afterDestroy` + * @param {undefined|Response} response `undefined` or {@link Response}, depending on the value of `opts.raw`. + */ + afterDestroy: noop2, + + /** + * Lifecycle method method called by destroyAll. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes destroyAll to wait for the Promise to resolve before continuing. + * + * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be `undefined`. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroyAll. + * + * @name Adapter#afterDestroyAll + * @method + * @param {Object} mapper The `mapper` argument passed to destroyAll. + * @param {Object} query The `query` argument passed to destroyAll. + * @param {Object} opts The `opts` argument passed to destroyAll. + * @property {string} opts.op `afterDestroyAll` + * @param {undefined|Response} response `undefined` or {@link Response}, depending on the value of `opts.raw`. + */ + afterDestroyAll: noop2, + + /** + * Lifecycle method method called by find. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes find to wait for the Promise to resolve before continuing. + * + * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the found record, if any. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by find. + * + * @name Adapter#afterFind + * @method + * @param {Object} mapper The `mapper` argument passed to find. + * @param {(string|number)} id The `id` argument passed to find. + * @param {Object} opts The `opts` argument passed to find. + * @property {string} opts.op `afterFind` + * @param {Object|Response} response The found record or {@link Response}, depending on the value of `opts.raw`. + */ + afterFind: noop2, + + /** + * Lifecycle method method called by findAll. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes findAll to wait for the Promise to resolve before continuing. + * + * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the found records, if any. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by findAll. + * + * @name Adapter#afterFindAll + * @method + * @param {Object} mapper The `mapper` argument passed to findAll. + * @param {Object} query The `query` argument passed to findAll. + * @param {Object} opts The `opts` argument passed to findAll. + * @property {string} opts.op `afterFindAll` + * @param {Object[]|Response} response The found records or {@link Response}, depending on the value of `opts.raw`. + */ + afterFindAll: noop2, + + /** + * Lifecycle method method called by update. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes update to wait for the Promise to resolve before continuing. + * + * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the updated record. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by update. + * + * @name Adapter#afterUpdate + * @method + * @param {Object} mapper The `mapper` argument passed to update. + * @param {(string|number)} id The `id` argument passed to update. + * @param {Object} props The `props` argument passed to update. + * @param {Object} opts The `opts` argument passed to update. + * @property {string} opts.op `afterUpdate` + * @param {Object|Response} response The updated record or {@link Response}, depending on the value of `opts.raw`. + */ + afterUpdate: noop2, + + /** + * Lifecycle method method called by updateAll. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes updateAll to wait for the Promise to resolve before continuing. + * + * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the updated records, if any. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateAll. + * + * @name Adapter#afterUpdateAll + * @method + * @param {Object} mapper The `mapper` argument passed to updateAll. + * @param {Object} props The `props` argument passed to updateAll. + * @param {Object} query The `query` argument passed to updateAll. + * @param {Object} opts The `opts` argument passed to updateAll. + * @property {string} opts.op `afterUpdateAll` + * @param {Object[]|Response} response The updated records or {@link Response}, depending on the value of `opts.raw`. + */ + afterUpdateAll: noop2, + + /** + * Lifecycle method method called by updateMany. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes updateMany to wait for the Promise to resolve before continuing. + * + * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the updated records, if any. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateMany. + * + * @name Adapter#afterUpdateMany + * @method + * @param {Object} mapper The `mapper` argument passed to updateMany. + * @param {Object[]} records The `records` argument passed to updateMany. + * @param {Object} opts The `opts` argument passed to updateMany. + * @property {string} opts.op `afterUpdateMany` + * @param {Object[]|Response} response The updated records or {@link Response}, depending on the value of `opts.raw`. + */ + afterUpdateMany: noop2, + + /** + * Lifecycle method method called by create. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes create to wait for the Promise to resolve before continuing. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by create. + * + * @name Adapter#beforeCreate + * @method + * @param {Object} mapper The `mapper` argument passed to create. + * @param {Object} props The `props` argument passed to create. + * @param {Object} opts The `opts` argument passed to create. + * @property {string} opts.op `beforeCreate` + */ + beforeCreate: noop, + + /** + * Lifecycle method method called by createMany. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes createMany to wait for the Promise to resolve before continuing. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by createMany. + * + * @name Adapter#beforeCreateMany + * @method + * @param {Object} mapper The `mapper` argument passed to createMany. + * @param {Object[]} props The `props` argument passed to createMany. + * @param {Object} opts The `opts` argument passed to createMany. + * @property {string} opts.op `beforeCreateMany` + */ + beforeCreateMany: noop, + + /** + * Lifecycle method method called by destroy. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes destroy to wait for the Promise to resolve before continuing. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroy. + * + * @name Adapter#beforeDestroy + * @method + * @param {Object} mapper The `mapper` argument passed to destroy. + * @param {(string|number)} id The `id` argument passed to destroy. + * @param {Object} opts The `opts` argument passed to destroy. + * @property {string} opts.op `beforeDestroy` + */ + beforeDestroy: noop, + + /** + * Lifecycle method method called by destroyAll. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes destroyAll to wait for the Promise to resolve before continuing. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroyAll. + * + * @name Adapter#beforeDestroyAll + * @method + * @param {Object} mapper The `mapper` argument passed to destroyAll. + * @param {Object} query The `query` argument passed to destroyAll. + * @param {Object} opts The `opts` argument passed to destroyAll. + * @property {string} opts.op `beforeDestroyAll` + */ + beforeDestroyAll: noop, + + /** + * Lifecycle method method called by find. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes find to wait for the Promise to resolve before continuing. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by find. + * + * @name Adapter#beforeFind + * @method + * @param {Object} mapper The `mapper` argument passed to find. + * @param {(string|number)} id The `id` argument passed to find. + * @param {Object} opts The `opts` argument passed to find. + * @property {string} opts.op `beforeFind` + */ + beforeFind: noop, + + /** + * Lifecycle method method called by findAll. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes findAll to wait for the Promise to resolve before continuing. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by findAll. + * + * @name Adapter#beforeFindAll + * @method + * @param {Object} mapper The `mapper` argument passed to findAll. + * @param {Object} query The `query` argument passed to findAll. + * @param {Object} opts The `opts` argument passed to findAll. + * @property {string} opts.op `beforeFindAll` + */ + beforeFindAll: noop, + + /** + * Lifecycle method method called by update. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes update to wait for the Promise to resolve before continuing. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by update. + * + * @name Adapter#beforeUpdate + * @method + * @param {Object} mapper The `mapper` argument passed to update. + * @param {(string|number)} id The `id` argument passed to update. + * @param {Object} props The `props` argument passed to update. + * @param {Object} opts The `opts` argument passed to update. + * @property {string} opts.op `beforeUpdate` + */ + beforeUpdate: noop, + + /** + * Lifecycle method method called by updateAll. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes updateAll to wait for the Promise to resolve before continuing. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateAll. + * + * @name Adapter#beforeUpdateAll + * @method + * @param {Object} mapper The `mapper` argument passed to updateAll. + * @param {Object} props The `props` argument passed to updateAll. + * @param {Object} query The `query` argument passed to updateAll. + * @param {Object} opts The `opts` argument passed to updateAll. + * @property {string} opts.op `beforeUpdateAll` + */ + beforeUpdateAll: noop, + + /** + * Lifecycle method method called by updateMany. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes updateMany to wait for the Promise to resolve before continuing. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateMany. + * + * @name Adapter#beforeUpdateMany + * @method + * @param {Object} mapper The `mapper` argument passed to updateMany. + * @param {Object[]} props The `props` argument passed to updateMany. + * @param {Object} opts The `opts` argument passed to updateMany. + * @property {string} opts.op `beforeUpdateMany` + */ + beforeUpdateMany: noop, + + /** + * Shortcut for `#log('debug'[, arg1[, arg2[, argn]]])`. + * + * @name Adapter#dbg + * @method + */ + dbg: function dbg() { + for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { + args[_key3] = arguments[_key3]; + } + + this.log.apply(this, ['debug'].concat(args)); + }, + + + /** + * Create a new record. Called by `Mapper#create`. + * + * @name Adapter#create + * @method + * @param {Object} mapper The mapper. + * @param {Object} props The record to be created. + * @param {Object} [opts] Configuration options. + * @param {boolean} [opts.raw=false] Whether to return a more detailed + * response object. + * @return {Promise} + */ + create: function create(mapper, props, opts) { + var self = this; + var op = void 0; + props || (props = {}); + opts || (opts = {}); + + // beforeCreate lifecycle hook + op = opts.op = 'beforeCreate'; + return resolve(self[op](mapper, props, opts)).then(function (_props) { + // Allow for re-assignment from lifecycle hook + props = isUndefined(_props) ? props : _props; + props = withoutRelations(mapper, props); + op = opts.op = 'create'; + self.dbg(op, mapper, props, opts); + return resolve(self._create(mapper, props, opts)); + }).then(function (results) { + var _results = babelHelpers.slicedToArray(results, 2); + + var data = _results[0]; + var result = _results[1]; + + result || (result = {}); + var response = new Response(data, result, 'create'); + response.created = data ? 1 : 0; + response = self.respond(response, opts); + + // afterCreate lifecycle hook + op = opts.op = 'afterCreate'; + return resolve(self[op](mapper, props, opts, response)).then(function (_response) { + // Allow for re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; + }); + }); + }, + + + /** + * Create multiple records in a single batch. Called by `Mapper#createMany`. + * + * @name Adapter#createMany + * @method + * @param {Object} mapper The mapper. + * @param {Object} props The records to be created. + * @param {Object} [opts] Configuration options. + * @param {boolean} [opts.raw=false] Whether to return a more detailed + * response object. + * @return {Promise} + */ + createMany: function createMany(mapper, props, opts) { + var self = this; + var op = void 0; + props || (props = {}); + opts || (opts = {}); + + // beforeCreateMany lifecycle hook + op = opts.op = 'beforeCreateMany'; + return resolve(self[op](mapper, props, opts)).then(function (_props) { + // Allow for re-assignment from lifecycle hook + props = isUndefined(_props) ? props : _props; + props = props.map(function (record) { + return withoutRelations(mapper, record); + }); + op = opts.op = 'createMany'; + self.dbg(op, mapper, props, opts); + return resolve(self._createMany(mapper, props, opts)); + }).then(function (results) { + var _results2 = babelHelpers.slicedToArray(results, 2); + + var data = _results2[0]; + var result = _results2[1]; + + data || (data = []); + result || (result = {}); + var response = new Response(data, result, 'createMany'); + response.created = data.length; + response = self.respond(response, opts); + + // afterCreateMany lifecycle hook + op = opts.op = 'afterCreateMany'; + return resolve(self[op](mapper, props, opts, response)).then(function (_response) { + // Allow for re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; + }); + }); + }, + + + /** + * Destroy the record with the given primary key. Called by + * `Mapper#destroy`. + * + * @name Adapter#destroy + * @method + * @param {Object} mapper The mapper. + * @param {(string|number)} id Primary key of the record to destroy. + * @param {Object} [opts] Configuration options. + * @param {boolean} [opts.raw=false] Whether to return a more detailed + * response object. + * @return {Promise} + */ + destroy: function destroy(mapper, id, opts) { + var self = this; + var op = void 0; + opts || (opts = {}); + + // beforeDestroy lifecycle hook + op = opts.op = 'beforeDestroy'; + return resolve(self[op](mapper, id, opts)).then(function () { + op = opts.op = 'destroy'; + self.dbg(op, mapper, id, opts); + return resolve(self._destroy(mapper, id, opts)); + }).then(function (results) { + var _results3 = babelHelpers.slicedToArray(results, 2); + + var data = _results3[0]; + var result = _results3[1]; + + result || (result = {}); + var response = new Response(data, result, 'destroy'); + response = self.respond(response, opts); + + // afterDestroy lifecycle hook + op = opts.op = 'afterDestroy'; + return resolve(self[op](mapper, id, opts, response)).then(function (_response) { + // Allow for re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; + }); + }); + }, + + + /** + * Destroy the records that match the selection query. Called by + * `Mapper#destroyAll`. + * + * @name Adapter#destroyAll + * @method + * @param {Object} mapper the mapper. + * @param {Object} [query] Selection query. + * @param {Object} [query.where] Filtering criteria. + * @param {string|Array} [query.orderBy] Sorting criteria. + * @param {string|Array} [query.sort] Same as `query.sort`. + * @param {number} [query.limit] Limit results. + * @param {number} [query.skip] Offset results. + * @param {number} [query.offset] Same as `query.skip`. + * @param {Object} [opts] Configuration options. + * @param {boolean} [opts.raw=false] Whether to return a more detailed + * response object. + * @return {Promise} + */ + destroyAll: function destroyAll(mapper, query, opts) { + var self = this; + var op = void 0; + query || (query = {}); + opts || (opts = {}); + + // beforeDestroyAll lifecycle hook + op = opts.op = 'beforeDestroyAll'; + return resolve(self[op](mapper, query, opts)).then(function () { + op = opts.op = 'destroyAll'; + self.dbg(op, mapper, query, opts); + return resolve(self._destroyAll(mapper, query, opts)); + }).then(function (results) { + var _results4 = babelHelpers.slicedToArray(results, 2); + + var data = _results4[0]; + var result = _results4[1]; + + result || (result = {}); + var response = new Response(data, result, 'destroyAll'); + response = self.respond(response, opts); + + // afterDestroyAll lifecycle hook + op = opts.op = 'afterDestroyAll'; + return resolve(self[op](mapper, query, opts, response)).then(function (_response) { + // Allow for re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; + }); + }); + }, + + + /** + * Return the foreignKey from the given record for the provided relationship. + * + * There may be reasons why you may want to override this method, like when + * the id of the parent doesn't exactly match up to the key on the child. + * + * Override with care. + * + * @name Adapter#makeHasManyForeignKey + * @method + * @return {*} + */ + makeHasManyForeignKey: function makeHasManyForeignKey(mapper, def, record) { + return def.getForeignKey(record); + }, + + + /** + * Return the localKeys from the given record for the provided relationship. + * + * Override with care. + * + * @name Adapter#makeHasManyLocalKeys + * @method + * @return {*} + */ + makeHasManyLocalKeys: function makeHasManyLocalKeys(mapper, def, record) { + var localKeys = []; + var itemKeys = get(record, def.localKeys) || []; + itemKeys = isArray(itemKeys) ? itemKeys : Object.keys(itemKeys); + localKeys = localKeys.concat(itemKeys); + return unique(localKeys).filter(function (x) { + return x; + }); + }, + + + /** + * Return the foreignKeys from the given record for the provided relationship. + * + * Override with care. + * + * @name Adapter#makeHasManyForeignKeys + * @method + * @return {*} + */ + makeHasManyForeignKeys: function makeHasManyForeignKeys(mapper, def, record) { + return get(record, mapper.idAttribute); + }, + + + /** + * Load a hasMany relationship. + * + * Override with care. + * + * @name Adapter#loadHasMany + * @method + * @return {Promise} + */ + loadHasMany: function loadHasMany(mapper, def, records, __opts) { + var self = this; + var singular = false; + + if (isObject(records) && !isArray(records)) { + singular = true; + records = [records]; + } + var IDs = records.map(function (record) { + return self.makeHasManyForeignKey(mapper, def, record); + }); + var query = { + where: {} + }; + var criteria = query.where[def.foreignKey] = {}; + if (singular) { + // more efficient query when we only have one record + criteria['=='] = IDs[0]; + } else { + criteria['in'] = IDs.filter(function (id) { + return id; + }); + } + return self.findAll(def.getRelation(), query, __opts).then(function (relatedItems) { + records.forEach(function (record) { + var attached = []; + // avoid unneccesary iteration when we only have one record + if (singular) { + attached = relatedItems; + } else { + relatedItems.forEach(function (relatedItem) { + if (get(relatedItem, def.foreignKey) === record[mapper.idAttribute]) { + attached.push(relatedItem); + } + }); + } + def.setLocalField(record, attached); + }); + }); + }, + loadHasManyLocalKeys: function loadHasManyLocalKeys(mapper, def, records, __opts) { + var self = this; + var record = void 0; + var relatedMapper = def.getRelation(); + + if (isObject(records) && !isArray(records)) { + record = records; + } + + if (record) { + return self.findAll(relatedMapper, { + where: babelHelpers.defineProperty({}, relatedMapper.idAttribute, { + 'in': self.makeHasManyLocalKeys(mapper, def, record) + }) + }, __opts).then(function (relatedItems) { + def.setLocalField(record, relatedItems); + }); + } else { + var _ret = function () { + var localKeys = []; + records.forEach(function (record) { + localKeys = localKeys.concat(self.self.makeHasManyLocalKeys(mapper, def, record)); + }); + return { + v: self.findAll(relatedMapper, { + where: babelHelpers.defineProperty({}, relatedMapper.idAttribute, { + 'in': unique(localKeys).filter(function (x) { + return x; + }) + }) + }, __opts).then(function (relatedItems) { + records.forEach(function (item) { + var attached = []; + var itemKeys = get(item, def.localKeys) || []; + itemKeys = isArray(itemKeys) ? itemKeys : Object.keys(itemKeys); + relatedItems.forEach(function (relatedItem) { + if (itemKeys && itemKeys.indexOf(relatedItem[relatedMapper.idAttribute]) !== -1) { + attached.push(relatedItem); + } + }); + def.setLocalField(item, attached); + }); + return relatedItems; + }) + }; + }(); + + if ((typeof _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === "object") return _ret.v; + } + }, + loadHasManyForeignKeys: function loadHasManyForeignKeys(mapper, def, records, __opts) { + var self = this; + var relatedMapper = def.getRelation(); + var idAttribute = mapper.idAttribute; + var record = void 0; + + if (isObject(records) && !isArray(records)) { + record = records; + } + + if (record) { + return self.findAll(def.getRelation(), { + where: babelHelpers.defineProperty({}, def.foreignKeys, { + 'contains': self.makeHasManyForeignKeys(mapper, def, record) + }) + }, __opts).then(function (relatedItems) { + def.setLocalField(record, relatedItems); + }); + } else { + return self.findAll(relatedMapper, { + where: babelHelpers.defineProperty({}, def.foreignKeys, { + 'isectNotEmpty': records.map(function (record) { + return self.makeHasManyForeignKeys(mapper, def, record); + }) + }) + }, __opts).then(function (relatedItems) { + var foreignKeysField = def.foreignKeys; + records.forEach(function (record) { + var _relatedItems = []; + var id = get(record, idAttribute); + relatedItems.forEach(function (relatedItem) { + var foreignKeys = get(relatedItems, foreignKeysField) || []; + if (foreignKeys.indexOf(id) !== -1) { + _relatedItems.push(relatedItem); + } + }); + def.setLocalField(record, _relatedItems); + }); + }); + } + }, + + + /** + * Load a hasOne relationship. + * + * Override with care. + * + * @name Adapter#loadHasOne + * @method + * @return {Promise} + */ + loadHasOne: function loadHasOne(mapper, def, records, __opts) { + if (isObject(records) && !isArray(records)) { + records = [records]; + } + return this.loadHasMany(mapper, def, records, __opts).then(function () { + records.forEach(function (record) { + var relatedData = def.getLocalField(record); + if (isArray(relatedData) && relatedData.length) { + def.setLocalField(record, relatedData[0]); + } + }); + }); + }, + + + /** + * Return the foreignKey from the given record for the provided relationship. + * + * Override with care. + * + * @name Adapter#makeBelongsToForeignKey + * @method + * @return {*} + */ + makeBelongsToForeignKey: function makeBelongsToForeignKey(mapper, def, record) { + return def.getForeignKey(record); + }, + + + /** + * Load a belongsTo relationship. + * + * Override with care. + * + * @name Adapter#loadBelongsTo + * @method + * @return {Promise} + */ + loadBelongsTo: function loadBelongsTo(mapper, def, records, __opts) { + var self = this; + var relationDef = def.getRelation(); + + if (isObject(records) && !isArray(records)) { + var _ret2 = function () { + var record = records; + return { + v: self.find(relationDef, self.makeBelongsToForeignKey(mapper, def, record), __opts).then(function (relatedItem) { + def.setLocalField(record, relatedItem); + }) + }; + }(); + + if ((typeof _ret2 === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret2)) === "object") return _ret2.v; + } else { + var keys = records.map(function (record) { + return self.makeBelongsToForeignKey(mapper, def, record); + }).filter(function (key) { + return key; + }); + return self.findAll(relationDef, { + where: babelHelpers.defineProperty({}, relationDef.idAttribute, { + 'in': keys + }) + }, __opts).then(function (relatedItems) { + records.forEach(function (record) { + relatedItems.forEach(function (relatedItem) { + if (relatedItem[relationDef.idAttribute] === record[def.foreignKey]) { + def.setLocalField(record, relatedItem); + } + }); + }); + }); + } + }, + + + /** + * Retrieve the record with the given primary key. Called by `Mapper#find`. + * + * @name Adapter#find + * @method + * @param {Object} mapper The mapper. + * @param {(string|number)} id Primary key of the record to retrieve. + * @param {Object} [opts] Configuration options. + * @param {boolean} [opts.raw=false] Whether to return a more detailed + * response object. + * @param {string[]} [opts.with=[]] Relations to eager load. + * @return {Promise} + */ + find: function find(mapper, id, opts) { + var self = this; + var record = void 0, + op = void 0; + opts || (opts = {}); + opts.with || (opts.with = []); + + // beforeFind lifecycle hook + op = opts.op = 'beforeFind'; + return resolve(self[op](mapper, id, opts)).then(function () { + op = opts.op = 'find'; + self.dbg(op, mapper, id, opts); + return resolve(self._find(mapper, id, opts)); + }).then(function (results) { + var _results5 = babelHelpers.slicedToArray(results, 1); + + var _record = _results5[0]; + + if (!_record) { + return; + } + record = _record; + var tasks = []; + + forEachRelation(mapper, opts, function (def, __opts) { + var task = void 0; + if (def.foreignKey && (def.type === 'hasOne' || def.type === 'hasMany')) { + if (def.type === 'hasOne') { + task = self.loadHasOne(mapper, def, record, __opts); + } else { + task = self.loadHasMany(mapper, def, record, __opts); + } + } else if (def.type === 'hasMany' && def.localKeys) { + task = self.loadHasManyLocalKeys(mapper, def, record, __opts); + } else if (def.type === 'hasMany' && def.foreignKeys) { + task = self.loadHasManyForeignKeys(mapper, def, record, __opts); + } else if (def.type === 'belongsTo') { + task = self.loadBelongsTo(mapper, def, record, __opts); + } + if (task) { + tasks.push(task); + } + }); + + return Promise.all(tasks); + }).then(function () { + var response = new Response(record, {}, 'find'); + response.found = record ? 1 : 0; + response = self.respond(response, opts); + + // afterFind lifecycle hook + op = opts.op = 'afterFind'; + return resolve(self[op](mapper, id, opts, response)).then(function (_response) { + // Allow for re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; + }); + }); + }, + + + /** + * Retrieve the records that match the selection query. + * + * @name Adapter#findAll + * @method + * @param {Object} mapper The mapper. + * @param {Object} [query] Selection query. + * @param {Object} [query.where] Filtering criteria. + * @param {string|Array} [query.orderBy] Sorting criteria. + * @param {string|Array} [query.sort] Same as `query.sort`. + * @param {number} [query.limit] Limit results. + * @param {number} [query.skip] Offset results. + * @param {number} [query.offset] Same as `query.skip`. + * @param {Object} [opts] Configuration options. + * @param {boolean} [opts.raw=false] Whether to return a more detailed + * response object. + * @param {string[]} [opts.with=[]] Relations to eager load. + * @return {Promise} + */ + findAll: function findAll(mapper, query, opts) { + var self = this; + opts || (opts = {}); + opts.with || (opts.with = []); + + var records = []; + var op = void 0; + var activeWith = opts._activeWith; + + if (isObject(activeWith)) { + var activeQuery = activeWith.query || {}; + if (activeWith.replace) { + query = activeQuery; + } else { + deepFillIn(query, activeQuery); + } + } + + // beforeFindAll lifecycle hook + op = opts.op = 'beforeFindAll'; + return resolve(self[op](mapper, query, opts)).then(function () { + op = opts.op = 'findAll'; + self.dbg(op, mapper, query, opts); + return resolve(self._findAll(mapper, query, opts)); + }).then(function (results) { + var _results6 = babelHelpers.slicedToArray(results, 1); + + var _records = _results6[0]; + + _records || (_records = []); + records = _records; + var tasks = []; + forEachRelation(mapper, opts, function (def, __opts) { + var task = void 0; + if (def.foreignKey && (def.type === 'hasOne' || def.type === 'hasMany')) { + if (def.type === 'hasMany') { + task = self.loadHasMany(mapper, def, records, __opts); + } else { + task = self.loadHasOne(mapper, def, records, __opts); + } + } else if (def.type === 'hasMany' && def.localKeys) { + task = self.loadHasManyLocalKeys(mapper, def, records, __opts); + } else if (def.type === 'hasMany' && def.foreignKeys) { + task = self.loadHasManyForeignKeys(mapper, def, records, __opts); + } else if (def.type === 'belongsTo') { + task = self.loadBelongsTo(mapper, def, records, __opts); + } + if (task) { + tasks.push(task); + } + }); + return Promise.all(tasks); + }).then(function () { + var response = new Response(records, {}, 'findAll'); + response.found = records.length; + response = self.respond(response, opts); + + // afterFindAll lifecycle hook + op = opts.op = 'afterFindAll'; + return resolve(self[op](mapper, query, opts, response)).then(function (_response) { + // Allow for re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; + }); + }); + }, + + + /** + * Resolve the value of the specified option based on the given options and + * this adapter's settings. Override with care. + * + * @name Adapter#getOpt + * @method + * @param {string} opt The name of the option. + * @param {Object} [opts] Configuration options. + * @return {*} The value of the specified option. + */ + getOpt: function getOpt(opt, opts) { + opts || (opts = {}); + return isUndefined(opts[opt]) ? plainCopy(this[opt]) : plainCopy(opts[opt]); + }, + + + /** + * Logging utility method. Override this method if you want to send log + * messages to something other than the console. + * + * @name Adapter#log + * @method + * @param {string} level Log level. + * @param {...*} values Values to log. + */ + log: function log(level) { + for (var _len4 = arguments.length, args = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) { + args[_key4 - 1] = arguments[_key4]; + } + + if (level && !args.length) { + args.push(level); + level = 'debug'; + } + if (level === 'debug' && !this.debug) { + return; + } + var prefix = level.toUpperCase() + ': (Adapter)'; + if (console[level]) { + var _console; + + (_console = console)[level].apply(_console, [prefix].concat(args)); + } else { + var _console2; + + (_console2 = console).log.apply(_console2, [prefix].concat(args)); + } + }, + + + /** + * @name Adapter#respond + * @method + * @param {Object} response Response object. + * @param {Object} opts Configuration options. + * return {Object} If `opts.raw == true` then return `response`, else return + * `response.data`. + */ + respond: function respond(response, opts) { + return this.getOpt('raw', opts) ? response : response.data; + }, + + + /** + * Apply the given update to the record with the specified primary key. Called + * by `Mapper#update`. + * + * @name Adapter#update + * @method + * @param {Object} mapper The mapper. + * @param {(string|number)} id The primary key of the record to be updated. + * @param {Object} props The update to apply to the record. + * @param {Object} [opts] Configuration options. + * @param {boolean} [opts.raw=false] Whether to return a more detailed + * response object. + * @return {Promise} + */ + update: function update(mapper, id, props, opts) { + var self = this; + props || (props = {}); + opts || (opts = {}); + var op = void 0; + + // beforeUpdate lifecycle hook + op = opts.op = 'beforeUpdate'; + return resolve(self[op](mapper, id, props, opts)).then(function (_props) { + // Allow for re-assignment from lifecycle hook + props = isUndefined(_props) ? props : _props; + op = opts.op = 'update'; + self.dbg(op, mapper, id, props, opts); + return resolve(self._update(mapper, id, props, opts)); + }).then(function (results) { + var _results7 = babelHelpers.slicedToArray(results, 2); + + var data = _results7[0]; + var result = _results7[1]; + + result || (result = {}); + var response = new Response(data, result, 'update'); + response.updated = data ? 1 : 0; + response = self.respond(response, opts); + + // afterUpdate lifecycle hook + op = opts.op = 'afterUpdate'; + return resolve(self[op](mapper, id, props, opts, response)).then(function (_response) { + // Allow for re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; + }); + }); + }, + + + /** + * Apply the given update to all records that match the selection query. + * Called by `Mapper#updateAll`. + * + * @name Adapter#updateAll + * @method + * @param {Object} mapper The mapper. + * @param {Object} props The update to apply to the selected records. + * @param {Object} [query] Selection query. + * @param {Object} [query.where] Filtering criteria. + * @param {string|Array} [query.orderBy] Sorting criteria. + * @param {string|Array} [query.sort] Same as `query.sort`. + * @param {number} [query.limit] Limit results. + * @param {number} [query.skip] Offset results. + * @param {number} [query.offset] Same as `query.skip`. + * @param {Object} [opts] Configuration options. + * @param {boolean} [opts.raw=false] Whether to return a more detailed + * response object. + * @return {Promise} + */ + updateAll: function updateAll(mapper, props, query, opts) { + var self = this; + props || (props = {}); + query || (query = {}); + opts || (opts = {}); + var op = void 0; + + // beforeUpdateAll lifecycle hook + op = opts.op = 'beforeUpdateAll'; + return resolve(self[op](mapper, props, query, opts)).then(function (_props) { + // Allow for re-assignment from lifecycle hook + props = isUndefined(_props) ? props : _props; + op = opts.op = 'updateAll'; + self.dbg(op, mapper, props, query, opts); + return resolve(self._updateAll(mapper, props, query, opts)); + }).then(function (results) { + var _results8 = babelHelpers.slicedToArray(results, 2); + + var data = _results8[0]; + var result = _results8[1]; + + data || (data = []); + result || (result = {}); + var response = new Response(data, result, 'updateAll'); + response.updated = data.length; + response = self.respond(response, opts); + + // afterUpdateAll lifecycle hook + op = opts.op = 'afterUpdateAll'; + return resolve(self[op](mapper, props, query, opts, response)).then(function (_response) { + // Allow for re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; + }); + }); + }, + + + /** + * Update the given records in a single batch. Called by `Mapper#updateMany`. + * + * @name Adapter#updateMany + * @method + * @param {Object} mapper The mapper. + * @param {Object[]} records The records to update. + * @param {Object} [opts] Configuration options. + * @param {boolean} [opts.raw=false] Whether to return a more detailed + * response object. + * @return {Promise} + */ + updateMany: function updateMany(mapper, records, opts) { + var self = this; + records || (records = []); + opts || (opts = {}); + var op = void 0; + var idAttribute = mapper.idAttribute; + + records = records.filter(function (record) { + return get(record, idAttribute); + }); + + // beforeUpdateMany lifecycle hook + op = opts.op = 'beforeUpdateMany'; + return resolve(self[op](mapper, records, opts)).then(function (_records) { + // Allow for re-assignment from lifecycle hook + records = isUndefined(_records) ? records : _records; + records = records.map(function (record) { + return withoutRelations(mapper, record); + }); + op = opts.op = 'updateMany'; + self.dbg(op, mapper, records, opts); + return resolve(self._updateMany(mapper, records, opts)); + }).then(function (results) { + var _results9 = babelHelpers.slicedToArray(results, 2); + + var data = _results9[0]; + var result = _results9[1]; + + data || (data = []); + result || (result = {}); + var response = new Response(data, result, 'updateMany'); + response.updated = data.length; + response = self.respond(response, opts); + + // afterUpdateMany lifecycle hook + op = opts.op = 'afterUpdateMany'; + return resolve(self[op](mapper, records, opts, response)).then(function (_response) { + // Allow for re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; + }); + }); + } + }); + + module.exports = Adapter; + + })); + //# sourceMappingURL=js-data-adapter.js.map + +/***/ }, +/* 3 */ /***/ function(module, exports) { module.exports = undefined; diff --git a/fetch/dist/js-data-fetch.js.map b/fetch/dist/js-data-fetch.js.map index 7981cb0..a219de8 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 37c363e8987cce6dd3cd","webpack:///./src/index.js","webpack:///external {\"amd\":\"js-data\",\"commonjs\":\"js-data\",\"commonjs2\":\"js-data\",\"root\":\"JSData\"}","webpack:///external \"undefined\""],"names":[],"mappings":"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","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[\"HttpAdapter\"] = factory(require(\"js-data\"), require(\"undefined\"));\n\telse\n\t\troot[\"HttpAdapter\"] = factory(root[\"JSData\"], root[\"undefined\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_2__) {\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 37c363e8987cce6dd3cd\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nconst {\n _,\n addHiddenPropsToTarget,\n copy,\n deepMixIn,\n extend,\n fillIn,\n forOwn,\n get,\n isArray,\n isFunction,\n isNumber,\n isObject,\n isSorN,\n isString,\n isUndefined,\n resolve,\n reject,\n toJson\n} = utils\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 forOwn(params, function (val, key) {\n if (val === null || typeof val === 'undefined') {\n return\n }\n if (!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 (isObject(v)) {\n v = 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 noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n}\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#debug\n * @type {boolean}\n * @default false\n */\n debug: false,\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 * @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\n // Default values for arguments\n opts || (opts = {})\n\n fillIn(self, opts)\n fillIn(self, DEFAULTS)\n}\n\naddHiddenPropsToTarget(HttpAdapter.prototype, {\n /**\n * @name HttpAdapter#afterCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreate: noop2,\n\n /**\n * @name HttpAdapter#afterCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreateMany: noop2,\n\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#afterDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroy: noop2,\n\n /**\n * @name HttpAdapter#afterDestroyAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroyAll: noop2,\n\n /**\n * @name HttpAdapter#afterFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFind: noop2,\n\n /**\n * @name HttpAdapter#afterFindAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFindAll: 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#afterUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdate: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateAll: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateMany: noop2,\n\n /**\n * @name HttpAdapter#beforeCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n */\n beforeCreate: noop,\n\n /**\n * @name HttpAdapter#beforeCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeCreateMany: noop,\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#beforeDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeDestroy: noop,\n\n /**\n * @name HttpAdapter#beforeDestroyAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeDestroyAll: noop,\n\n /**\n * @name HttpAdapter#beforeFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeFind: noop,\n\n /**\n * @name HttpAdapter#beforeFindAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeFindAll: 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 /**\n * @name HttpAdapter#beforeUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n */\n beforeUpdate: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n */\n beforeUpdateAll: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeUpdateMany: noop,\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreate lifecycle hook\n op = opts.op = 'beforeCreate'\n return resolve(self[op](mapper, props, opts)).then(function () {\n op = opts.op = 'create'\n self.dbg(op, mapper, props, opts)\n return self.POST(\n self.getPath('create', mapper, props, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreate lifecycle hook\n op = opts.op = 'afterCreate'\n return resolve(self[op](mapper, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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} 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 createMany (mapper, records, opts) {\n const self = this\n let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreateMany lifecycle hook\n op = opts.op = 'beforeCreateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'createMany'\n self.dbg(op, mapper, records, opts)\n return self.POST(\n self.getPath('createMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreateMany lifecycle hook\n op = opts.op = 'afterCreateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n },\n\n /**\n * Call {@link HttpAdapter#log} at the \"debug\" level.\n *\n * @name HttpAdapter#dbg\n * @method\n * @param {...*} [args] Args passed to {@link HttpAdapter#log}.\n */\n dbg (...args) {\n this.log('debug', ...args)\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.deserialize)) {\n return opts.deserialize(mapper, response, opts)\n }\n if (isFunction(mapper.deserialize)) {\n return mapper.deserialize(mapper, response, opts)\n }\n if (opts.raw) {\n return response\n }\n return response ? ('data' in response ? response.data : response) : 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroy lifecycle hook\n op = opts.op = 'beforeDestroy'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy'\n self.dbg(op, mapper, id, opts)\n return self.DEL(\n self.getPath('destroy', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroy lifecycle hook\n op = opts.op = 'afterDestroy'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroyAll lifecycle hook\n op = opts.op = 'beforeDestroyAll'\n return resolve(self.beforeDestroyAll(mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll'\n self.dbg(op, mapper, query, opts)\n return self.DEL(\n self.getPath('destroyAll', mapper, null, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 = 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeFind lifecycle hook\n op = opts.op = 'beforeFind'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find'\n self.dbg(op, mapper, id, opts)\n return self.GET(\n self.getPath('find', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFind lifecycle hook\n op = opts.op = 'afterFind'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll'\n return resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll'\n self.dbg(op, mapper, query, opts)\n return self.GET(\n self.getPath('findAll', mapper, opts.params, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFindAll lifecycle hook\n op = opts.op = 'afterFindAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 || (opts.params = {})\n const relationList = mapper.relationList || []\n let endpoint = isUndefined(opts.endpoint) ? (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 (isObject(id)) {\n item = id\n }\n\n if (item) {\n parentId = parentId || def.getForeignKey(item) || (def.getLocalField(item) ? get(def.getLocalField(item), parentDef.idAttribute) : null)\n }\n\n if (parentId) {\n delete opts.endpoint\n const _opts = {}\n forOwn(opts, function (value, key) {\n _opts[key] = value\n })\n _(_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 isUndefined(opts.basePath) ? (isUndefined(mapper.basePath) ? self.basePath : mapper.basePath) : opts.basePath,\n self.getEndpoint(mapper, (isString(id) || 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 /**\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 = copy(config, null, null, null, ['data', 'cache', 'timeout'])\n config = 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 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 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 resolve(self.afterHTTP(config, opts, response)).then(function (_response) {\n return _response || response\n })\n })\n },\n\n /**\n * Log the provided arguments at the specified leve.\n *\n * @name HttpAdapter#log\n * @method\n * @param {string} level Log level.\n * @param {...*} [args] Arguments to log.\n */\n log (level, ...args) {\n if (level && !args.length) {\n args.push(level)\n level = 'debug'\n }\n if (level === 'debug' && !this.debug) {\n return\n }\n const prefix = `${level.toUpperCase()}: (HttpAdapter)`\n if (console[level]) {\n console[level](prefix, ...args)\n } else {\n console.log(prefix, ...args)\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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.queryTransform)) {\n return opts.queryTransform(mapper, params, opts)\n }\n if (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 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 (isFunction(opts.serialize)) {\n return opts.serialize(mapper, data, opts)\n }\n if (isFunction(mapper.serialize)) {\n return mapper.serialize(mapper, data, opts)\n }\n return data\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdate lifecycle hook\n op = opts.op = 'beforeUpdate'\n return resolve(self[op](mapper, id, props, opts)).then(function () {\n op = opts.op = 'update'\n self.dbg(op, mapper, id, props, opts)\n return self.PUT(\n self.getPath('update', mapper, id, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdate lifecycle hook\n op = opts.op = 'afterUpdate'\n return resolve(self[op](mapper, id, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateAll lifecycle hook\n op = opts.op = 'beforeUpdateAll'\n return resolve(self[op](mapper, props, query, opts)).then(function () {\n op = opts.op = 'updateAll'\n self.dbg(op, mapper, props, query, opts)\n return self.PUT(\n self.getPath('updateAll', mapper, null, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateAll lifecycle hook\n op = opts.op = 'afterUpdateAll'\n return resolve(self[op](mapper, props, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'updateMany'\n self.dbg(op, mapper, records, opts)\n return self.PUT(\n self.getPath('updateMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateMany lifecycle hook\n op = opts.op = 'afterUpdateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n }\n})\n\n/**\n * Add an Http actions to a mapper.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.addAction = function (name, opts) {\n if (!name || !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 reject(err) }\n mapper[name] = function (id, _opts) {\n const self = this\n if (isObject(id)) {\n _opts = id\n }\n _opts = _opts || {}\n let adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http')\n let config = {}\n 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, isSorN(id) ? id : null, _opts)\n ]\n if (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 deepMixIn(config)(_opts)\n return 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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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 = extend\n\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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 **/","module.exports = undefined;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"undefined\"\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 55397fa8efa8fe82e50f","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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O;AACP;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;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,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;;AAEA;;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,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,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;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;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,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;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;;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;AACA,iBAAgB;AAChB;AACA;AACA;AACA,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,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,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,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,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;;AAEA,EAAC;AACD,4C;;;;;;AC36CA,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[\"HttpAdapter\"] = factory(require(\"js-data\"), require(\"undefined\"));\n\telse\n\t\troot[\"HttpAdapter\"] = 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 55397fa8efa8fe82e50f\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nimport Adapter from 'js-data-adapter'\n\nconst {\n _,\n addHiddenPropsToTarget,\n copy,\n deepMixIn,\n extend,\n fillIn,\n forOwn,\n get,\n isArray,\n isFunction,\n isNumber,\n isObject,\n isSorN,\n isString,\n isUndefined,\n resolve,\n reject,\n toJson\n} = utils\n\nlet hasFetch = false\n\ntry {\n hasFetch = window && window.fetch\n} catch (e) {}\n\nconst noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n return resolve()\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n return resolve()\n}\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 forOwn(params, function (val, key) {\n if (val === null || typeof val === 'undefined') {\n return\n }\n if (!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 (isObject(v)) {\n v = 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 * @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 fillIn(opts, DEFAULTS)\n Adapter.call(self, opts)\n}\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\naddHiddenPropsToTarget(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 _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.data, 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 _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 * 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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.deserialize)) {\n return opts.deserialize(mapper, response, opts)\n }\n if (isFunction(mapper.deserialize)) {\n return mapper.deserialize(mapper, response, opts)\n }\n if (response) {\n if (response.hasOwnProperty('data')) {\n return response.data\n }\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\n 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 = 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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.suffix = self.getSuffix(mapper, opts)\n 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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 || (opts.params = {})\n const relationList = mapper.relationList || []\n let endpoint = isUndefined(opts.endpoint) ? (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 (isObject(id)) {\n item = id\n }\n\n if (item) {\n parentId = parentId || def.getForeignKey(item) || (def.getLocalField(item) ? get(def.getLocalField(item), parentDef.idAttribute) : null)\n }\n\n if (parentId) {\n delete opts.endpoint\n const _opts = {}\n forOwn(opts, function (value, key) {\n _opts[key] = value\n })\n _(_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 isUndefined(opts.basePath) ? (isUndefined(mapper.basePath) ? self.basePath : mapper.basePath) : opts.basePath,\n self.getEndpoint(mapper, (isString(id) || 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 getSuffix (mapper, opts) {\n opts || (opts = {})\n if (isUndefined(opts.suffix)) {\n if (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 = copy(config, null, null, null, ['data', 'cache', 'timeout'])\n config = 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 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 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 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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.queryTransform)) {\n return opts.queryTransform(mapper, params, opts)\n }\n if (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 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 (isFunction(opts.serialize)) {\n return opts.serialize(mapper, data, opts)\n }\n if (isFunction(mapper.serialize)) {\n return mapper.serialize(mapper, data, opts)\n }\n return data\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\n 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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 HttpAdapter.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 */\nHttpAdapter.addAction = function (name, opts) {\n if (!name || !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 reject(err) }\n mapper[name] = function (id, _opts) {\n const self = this\n if (isObject(id)) {\n _opts = id\n }\n _opts = _opts || {}\n let adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http')\n let config = {}\n 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, isSorN(id) ? id : null, _opts)\n ]\n if (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 deepMixIn(config)(_opts)\n return 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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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 = extend\n\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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(require('js-data')) :\n typeof define === 'function' && define.amd ? define('js-data-adapter', ['js-data'], factory) :\n (factory(global.JSData));\n}(this, function (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 addHiddenPropsToTarget = jsData.utils.addHiddenPropsToTarget;\n var deepFillIn = jsData.utils.deepFillIn;\n var extend = jsData.utils.extend;\n var fillIn = jsData.utils.fillIn;\n var forEachRelation = jsData.utils.forEachRelation;\n var get = jsData.utils.get;\n var isArray = jsData.utils.isArray;\n var isObject = jsData.utils.isObject;\n var isUndefined = jsData.utils.isUndefined;\n var omit = jsData.utils.omit;\n var plainCopy = jsData.utils.plainCopy;\n var resolve = jsData.utils.resolve;\n\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 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 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 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 fillIn(opts, DEFAULTS);\n fillIn(self, opts);\n }\n\n Adapter.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 * @typedef {Object} Response\n * @property {Object} data Response data.\n * @property {string} op The operation for which the response was created.\n */\n function Response(data, meta, op) {\n var self = this;\n meta || (meta = {});\n self.data = data;\n fillIn(self, meta);\n self.op = op;\n }\n\n Adapter.Response = Response;\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 = extend;\n\n addHiddenPropsToTarget(Adapter.prototype, {\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 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 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 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 * 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 resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n props = withoutRelations(mapper, props);\n op = opts.op = 'create';\n self.dbg(op, mapper, props, opts);\n return resolve(self._create(mapper, props, 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, '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 resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = 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 resolve(self._createMany(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 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 resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy';\n self.dbg(op, mapper, id, opts);\n return resolve(self._destroy(mapper, id, 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 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 resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll';\n self.dbg(op, mapper, query, opts);\n return resolve(self._destroyAll(mapper, query, 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, 'destroyAll');\n response = self.respond(response, opts);\n\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll';\n return resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return isUndefined(_response) ? response : _response;\n });\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 = get(record, def.localKeys) || [];\n itemKeys = 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 get(record, mapper.idAttribute);\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 (isObject(records) && !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 (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 (isObject(records) && !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 _ret = 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 = get(item, def.localKeys) || [];\n itemKeys = 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 _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === \"object\") return _ret.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 (isObject(records) && !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 = get(record, idAttribute);\n relatedItems.forEach(function (relatedItem) {\n var foreignKeys = 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 (isObject(records) && !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 (isArray(relatedData) && relatedData.length) {\n def.setLocalField(record, relatedData[0]);\n }\n });\n });\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 * 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 (isObject(records) && !isArray(records)) {\n var _ret2 = 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 _ret2 === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret2)) === \"object\") return _ret2.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 resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find';\n self.dbg(op, mapper, id, opts);\n return resolve(self._find(mapper, id, opts));\n }).then(function (results) {\n var _results5 = babelHelpers.slicedToArray(results, 1);\n\n var _record = _results5[0];\n\n if (!_record) {\n return;\n }\n record = _record;\n var tasks = [];\n\n 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 resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 (isObject(activeWith)) {\n var activeQuery = activeWith.query || {};\n if (activeWith.replace) {\n query = activeQuery;\n } else {\n deepFillIn(query, activeQuery);\n }\n }\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll';\n return resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll';\n self.dbg(op, mapper, query, opts);\n return resolve(self._findAll(mapper, query, opts));\n }).then(function (results) {\n var _results6 = babelHelpers.slicedToArray(results, 1);\n\n var _records = _results6[0];\n\n _records || (_records = []);\n records = _records;\n var tasks = [];\n 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 resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 isUndefined(opts[opt]) ? plainCopy(this[opt]) : plainCopy(opts[opt]);\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 * @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 resolve(self[op](mapper, id, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n op = opts.op = 'update';\n self.dbg(op, mapper, id, props, opts);\n return resolve(self._update(mapper, id, props, opts));\n }).then(function (results) {\n var _results7 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results7[0];\n var result = _results7[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 resolve(self[op](mapper, id, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, props, query, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n op = opts.op = 'updateAll';\n self.dbg(op, mapper, props, query, opts);\n return resolve(self._updateAll(mapper, props, 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 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 resolve(self[op](mapper, props, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 get(record, idAttribute);\n });\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany';\n return resolve(self[op](mapper, records, opts)).then(function (_records) {\n // Allow for re-assignment from lifecycle hook\n records = 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 resolve(self._updateMany(mapper, records, 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 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 resolve(self[op](mapper, records, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return isUndefined(_response) ? response : _response;\n });\n });\n }\n });\n\n module.exports = Adapter;\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 d84535d..9475a01 100644 --- a/fetch/dist/js-data-fetch.min.js +++ b/fetch/dist/js-data-fetch.min.js @@ -1,2 +1,2 @@ -!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.HttpAdapter=t(require("js-data"),require("undefined")):e.HttpAdapter=t(e.JSData,e.undefined)}(this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={exports:{},id:n,loaded:!1};return e[n].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}([function(e,t,r){"use strict";function n(e){return null!=e&&""!==e}function o(e,t){return t||(t=""),e.filter(n).join(t)}function a(){for(var e=arguments.length,t=Array(e),r=0;e>r;r++)t[r]=arguments[r];var n=o(t,"/");return n.replace(/([^:\/]|^)\/{2,}/g,"$1/")}function i(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 r=[];return b(t,function(e,t){null!==e&&"undefined"!=typeof e&&(v(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():A(e)&&(e=S(e)),r.push(i(t)+"="+i(e))}))}),r.length>0&&(e+=(-1===e.indexOf("?")?"?":"&")+r.join("&")),e}function f(e){var t=this;e||(e={}),y(t,e),y(t,j)}var s="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},p=r(1),d=r(2),l=p.utils._,c=p.utils.addHiddenPropsToTarget,h=p.utils.copy,m=p.utils.deepMixIn,g=p.utils.extend,y=p.utils.fillIn,b=p.utils.forOwn,T=p.utils.get,v=p.utils.isArray,x=p.utils.isFunction,P=p.utils.isNumber,A=p.utils.isObject,E=p.utils.isSorN,U=p.utils.isString,z=p.utils.isUndefined,q=p.utils.resolve,D=p.utils.reject,S=p.utils.toJson,w=!1;try{w=window&&window.fetch}catch(e){}var F=function(){for(var e=this,t=arguments.length,r=Array(t),n=0;t>n;n++)r[n]=arguments[n];var o=r[r.length-1];e.dbg.apply(e,[o.op].concat(r))},C=function(){for(var e=this,t=arguments.length,r=Array(t),n=0;t>n;n++)r[n]=arguments[n];var o=r[r.length-2];e.dbg.apply(e,[o.op].concat(r))},j={basePath:"",debug:!1,forceTrailingSlash:!1,http:d,httpConfig:{},suffix:"",useFetch:!1};c(f.prototype,{afterCreate:C,afterCreateMany:C,afterDEL:C,afterDestroy:C,afterDestroyAll:C,afterFind:C,afterFindAll:C,afterGET:C,afterHTTP:C,afterPOST:C,afterPUT:C,afterUpdate:C,afterUpdateAll:C,afterUpdateMany:C,beforeCreate:F,beforeCreateMany:F,beforeDEL:F,beforeDestroy:F,beforeDestroyAll:F,beforeFind:F,beforeFindAll:F,beforeGET:F,beforeHTTP:F,beforePOST:F,beforePUT:F,beforeUpdate:F,beforeUpdateAll:F,beforeUpdateMany:F,create:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=z(r.suffix)?e.suffix:r.suffix,o=r.op="beforeCreate",q(n[o](e,t,r)).then(function(){return o=r.op="create",n.dbg(o,e,t,r),n.POST(n.getPath("create",e,t,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterCreate",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})},createMany:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=z(r.suffix)?e.suffix:r.suffix,o=r.op="beforeCreateMany",q(n[o](e,t,r)).then(function(){return o=r.op="createMany",n.dbg(o,e,t,r),n.POST(n.getPath("createMany",e,null,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterCreateMany",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})},dbg:function(){for(var e=arguments.length,t=Array(e),r=0;e>r;r++)t[r]=arguments[r];this.log.apply(this,["debug"].concat(t))},DEL:function(e,t,r){var n=this,o=void 0;return t||(t={}),r||(r={}),t.url=e||t.url,t.method=t.method||"delete",o=r.op="beforeDEL",q(n[o](e,t,r)).then(function(a){return t=z(a)?t:a,o=r.op="DEL",n.dbg(o,e,t,r),n.HTTP(t,r)}).then(function(a){return o=r.op="afterDEL",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})},deserialize:function(e,t,r){return r||(r={}),x(r.deserialize)?r.deserialize(e,t,r):x(e.deserialize)?e.deserialize(e,t,r):r.raw?t:t&&"data"in t?t.data:t},destroy:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=z(r.suffix)?e.suffix:r.suffix,o=r.op="beforeDestroy",q(n[o](e,t,r)).then(function(){return o=r.op="destroy",n.dbg(o,e,t,r),n.DEL(n.getPath("destroy",e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterDestroy",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})},destroyAll:function(e,t,r){var n=this,o=void 0;return t||(t={}),r=r?h(r):{},r.params||(r.params={}),m(r.params,t),r.params=n.queryTransform(e,r.params,r),r.suffix=z(r.suffix)?e.suffix:r.suffix,o=r.op="beforeDestroyAll",q(n.beforeDestroyAll(e,t,r)).then(function(){return o=r.op="destroyAll",n.dbg(o,e,t,r),n.DEL(n.getPath("destroyAll",e,null,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterDestroyAll",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})},error:function(){if(console){var e;(e=console)["function"==typeof console.error?"error":"log"].apply(e,arguments)}},fetch:function(e){function t(t,r){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}(function(e,t){var r={method:e.method,headers:new Headers(e.headers)};return e.data&&(r.body=S(e.data)),fetch(new Request(u(e.url,e.params),r)).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,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=z(r.suffix)?e.suffix:r.suffix,o=r.op="beforeFind",q(n[o](e,t,r)).then(function(){return o=r.op="find",n.dbg(o,e,t,r),n.GET(n.getPath("find",e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterFind",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})},findAll:function(e,t,r){var n=this,o=void 0;return t||(t={}),r=r?h(r):{},r.params||(r.params={}),r.suffix=z(r.suffix)?e.suffix:r.suffix,m(r.params,t),r.params=n.queryTransform(e,r.params,r),o=r.op="beforeFindAll",q(n[o](e,t,r)).then(function(){return o=r.op="findAll",n.dbg(o,e,t,r),n.GET(n.getPath("findAll",e,r.params,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterFindAll",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})},GET:function(e,t,r){var n=this,o=void 0;return t||(t={}),r||(r={}),t.url=e||t.url,t.method=t.method||"get",o=r.op="beforeGET",q(n[o](e,t,r)).then(function(a){return t=z(a)?t:a,o=r.op="GET",n.dbg(o,e,t,r),n.HTTP(t,r)}).then(function(a){return o=r.op="afterGET",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})},getEndpoint:function(e,t,r){var n=this;r||(r={}),r.params||(r.params={});var o=e.relationList||[],i=z(r.endpoint)?z(e.endpoint)?e.name:e.endpoint:r.endpoint;return o.forEach(function(e){if("belongsTo"===e.type&&e.parent){var o=void 0,u=e.foreignKey,f=e.getRelation(),p=r.params[u];if(p===!1||!u||!f)return p===!1&&delete r.params[u],!1;if(delete r.params[u],A(t)&&(o=t),o&&(p=p||e.getForeignKey(o)||(e.getLocalField(o)?T(e.getLocalField(o),f.idAttribute):null)),p){var d=function(){delete r.endpoint;var e={};return b(r,function(t,r){e[r]=t}),l(e,f),i=a(n.getEndpoint(f,p,e),p,i),{v:!1}}();if("object"===("undefined"==typeof d?"undefined":s(d)))return d.v}}}),i},getPath:function(e,t,r,n){var o=this;n||(n={});var i=[z(n.basePath)?z(t.basePath)?o.basePath:t.basePath:n.basePath,o.getEndpoint(t,U(r)||P(r)||"create"===e?r:null,n)];return"find"!==e&&"update"!==e&&"destroy"!==e||i.push(r),a.apply(p.utils,i)},HTTP:function(e,t){function r(t){var r=o.toUTCString()+" - "+e.method.toUpperCase()+" "+e.url+" - "+t.status+" "+((new Date).getTime()-o.getTime())+"ms";return t.status>=200&&t.status<300?(n.log&&n.dbg("debug",r,t),t):(n.error&&n.error("'FAILED: "+r,t),D(t))}var n=this,o=new Date;t||(t={}),e=h(e),e=m(e,n.httpConfig),n.forceTrailingSlash&&"/"!==e.url[e.url.length-1]&&(e.url+="/"),e.method=e.method.toUpperCase();var a=e.suffix||t.suffix||n.suffix;if(a&&e.url.substr(e.url.length-a.length)!==a&&(e.url+=a),!n.http)throw new Error("You have not configured this adapter with an http library!");return q(n.beforeHTTP(e,t)).then(function(o){return e=o||e,w&&(n.useFetch||t.useFetch||!n.http)?n.fetch(e,t).then(r,r):n.http(e).then(r,r).catch(function(r){return n.responseError(r,e,t)})}).then(function(r){return q(n.afterHTTP(e,t,r)).then(function(e){return e||r})})},log:function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;t>n;n++)r[n-1]=arguments[n];if(e&&!r.length&&(r.push(e),e="debug"),"debug"!==e||this.debug){var o=e.toUpperCase()+": (HttpAdapter)";if(console[e]){var a;(a=console)[e].apply(a,[o].concat(r))}else{var i;(i=console).log.apply(i,[o].concat(r))}}},POST:function(e,t,r,n){var o=this,a=void 0;return r||(r={}),n||(n={}),r.url=e||r.url,r.data=t||r.data,r.method=r.method||"post",a=n.op="beforePOST",q(o[a](e,t,r,n)).then(function(i){return r=z(i)?r:i,a=n.op="POST",o.dbg(a,e,t,r,n),o.HTTP(r,n)}).then(function(i){return a=n.op="afterPOST",q(o[a](e,t,r,n,i)).then(function(e){return z(e)?i:e})})},PUT:function(e,t,r,n){var o=this,a=void 0;return r||(r={}),n||(n={}),r.url=e||r.url,r.data=t||r.data,r.method=r.method||"put",a=n.op="beforePUT",q(o[a](e,t,r,n)).then(function(i){return r=z(i)?r:i,a=n.op="PUT",o.dbg(a,e,t,r,n),o.HTTP(r,n)}).then(function(i){return a=n.op="afterPUT",q(o[a](e,t,r,n,i)).then(function(e){return z(e)?i:e})})},queryTransform:function(e,t,r){return r||(r={}),x(r.queryTransform)?r.queryTransform(e,t,r):x(e.queryTransform)?e.queryTransform(e,t,r):t},responseError:function(e,t,r){return D(e)},serialize:function(e,t,r){return r||(r={}),x(r.serialize)?r.serialize(e,t,r):x(e.serialize)?e.serialize(e,t,r):t},update:function(e,t,r,n){var o=this,a=void 0;return n=n?h(n):{},n.params||(n.params={}),n.params=o.queryTransform(e,n.params,n),n.suffix=z(n.suffix)?e.suffix:n.suffix,a=n.op="beforeUpdate",q(o[a](e,t,r,n)).then(function(){return a=n.op="update",o.dbg(a,e,t,r,n),o.PUT(o.getPath("update",e,t,n),o.serialize(e,r,n),n)}).then(function(t){return o.deserialize(e,t,n)}).then(function(i){return a=n.op="afterUpdate",q(o[a](e,t,r,n,i)).then(function(e){return z(e)?i:e})})},updateAll:function(e,t,r,n){var o=this,a=void 0;return r||(r={}),n=n?h(n):{},n.params||(n.params={}),m(n.params,r),n.params=o.queryTransform(e,n.params,n),n.suffix=z(n.suffix)?e.suffix:n.suffix,a=n.op="beforeUpdateAll",q(o[a](e,t,r,n)).then(function(){return a=n.op="updateAll",o.dbg(a,e,t,r,n),o.PUT(o.getPath("updateAll",e,null,n),o.serialize(e,t,n),n)}).then(function(t){return o.deserialize(e,t,n)}).then(function(i){return a=n.op="afterUpdateAll",q(o[a](e,t,r,n,i)).then(function(e){return z(e)?i:e})})},updateMany:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=z(r.suffix)?e.suffix:r.suffix,o=r.op="beforeUpdateMany",q(n[o](e,t,r)).then(function(){return o=r.op="updateMany",n.dbg(o,e,t,r),n.PUT(n.getPath("updateMany",e,null,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(a){return o=r.op="afterUpdateMany",q(n[o](e,t,r,a)).then(function(e){return z(e)?a:e})})}}),f.addAction=function(e,t){if(!e||!U(e))throw new TypeError("action(name[, opts]): Expected: string, Found: "+("undefined"==typeof e?"undefined":s(e)));return function(r){if(r[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 D(e)},r[e]=function(r,n){var o=this;A(r)&&(n=r),n=n||{};var i=o.getAdapter(t.adapter||o.defaultAdapter||"http"),u={};if(y(u,t),!n.hasOwnProperty("endpoint")&&u.endpoint&&(n.endpoint=u.endpoint),"function"==typeof n.getEndpoint)u.url=n.getEndpoint(o,n);else{var f=[n.basePath||o.basePath||i.basePath,i.getEndpoint(o,E(r)?r:null,n)];E(r)&&f.push(r),f.push(t.pathname||e),u.url=a.apply(null,f)}return u.method=u.method||"GET",u.mapper=o.name,m(u)(n),q(u).then(n.request||t.request).then(function(e){return i.HTTP(e)}).then(function(e){return e&&e.config&&(e.config.mapper=o.name),e}).then(n.response||t.response,n.responseError||t.responseError)},r}},f.addActions=function(e){return e||(e={}),function(e){return b(e,function(t,r){f.addAction(r,t)(e)}),e}},f.extend=g,f.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=f},function(t,r){t.exports=e},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.HttpAdapter=t(require("js-data"),require("undefined")):e.HttpAdapter=t(e.JSData,e.undefined)}(this,function(e,t){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 e&&e.__esModule?e:{default:e}}function o(e){return null!=e&&""!==e}function a(e,t){return t||(t=""),e.filter(o).join(t)}function i(){for(var e=arguments.length,t=Array(e),n=0;e>n;n++)t[n]=arguments[n];var r=a(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 f(e,t){if(!t)return e;var n=[];return A(t,function(e,t){null!==e&&"undefined"!=typeof e&&(x(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():w(e)&&(e=O(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={}),T(e,D),p.default.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},c=n(1),d=n(2),p=r(d),h=n(3),y=c.utils._,g=c.utils.addHiddenPropsToTarget,v=c.utils.copy,m=c.utils.deepMixIn,b=c.utils.extend,T=c.utils.fillIn,A=c.utils.forOwn,P=c.utils.get,x=c.utils.isArray,M=c.utils.isFunction,E=c.utils.isNumber,w=c.utils.isObject,F=c.utils.isSorN,S=c.utils.isString,H=c.utils.isUndefined,K=c.utils.resolve,_=c.utils.reject,O=c.utils.toJson,U=!1;try{U=window&&window.fetch}catch(e){}var L=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var o=n[n.length-1];return e.dbg.apply(e,[o.op].concat(n)),K()},j=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var o=n[n.length-2];return e.dbg.apply(e,[o.op].concat(n)),K()},q=p.default.prototype,D={basePath:"",forceTrailingSlash:!1,http:h,httpConfig:{},suffix:"",useFetch:!1};s.prototype=Object.create(p.default.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}),Object.defineProperty(s,"__super__",{configurable:!0,value:p.default}),g(s.prototype,{afterDEL:j,afterGET:j,afterHTTP:j,afterPOST:j,afterPUT:j,beforeDEL:L,beforeGET:L,beforeHTTP:L,beforePOST:L,beforePUT:L,_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.data,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)})},_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)})},create:function(e,t,n){var r=this;return n=n?v(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),q.create.call(r,e,t,n)},createMany:function(e,t,n){var r=this;return n=n?v(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),q.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",K(r[o](e,t,n)).then(function(a){return t=H(a)?t:a,o=n.op="DEL",r.dbg(o,e,t,n),r.HTTP(t,n)}).then(function(a){return o=n.op="afterDEL",K(r[o](e,t,n,a)).then(function(e){return H(e)?a:e})})},deserialize:function(e,t,n){return n||(n={}),M(n.deserialize)?n.deserialize(e,t,n):M(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?v(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),q.destroy.call(r,e,t,n)},destroyAll:function(e,t,n){var r=this;return t||(t={}),n=n?v(n):{},n.params||(n.params={}),m(n.params,t),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),q.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=O(e.data)),fetch(new Request(f(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?v(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),q.find.call(r,e,t,n)},findAll:function(e,t,n){var r=this;return t||(t={}),n=n?v(n):{},n.params||(n.params={}),n.suffix=r.getSuffix(e,n),m(n.params,t),n.params=r.queryTransform(e,n.params,n),q.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",K(r[o](e,t,n)).then(function(a){return t=H(a)?t:a,o=n.op="GET",r.dbg(o,e,t,n),r.HTTP(t,n)}).then(function(a){return o=n.op="afterGET",K(r[o](e,t,n,a)).then(function(e){return H(e)?a:e})})},getEndpoint:function(e,t,n){var r=this;n||(n={}),n.params||(n.params={});var o=e.relationList||[],a=H(n.endpoint)?H(e.endpoint)?e.name:e.endpoint:n.endpoint;return o.forEach(function(e){if("belongsTo"===e.type&&e.parent){var o=void 0,u=e.foreignKey,f=e.getRelation(),s=n.params[u];if(s===!1||!u||!f)return s===!1&&delete n.params[u],!1;if(delete n.params[u],w(t)&&(o=t),o&&(s=s||e.getForeignKey(o)||(e.getLocalField(o)?P(e.getLocalField(o),f.idAttribute):null)),s){var c=function(){delete n.endpoint;var e={};return A(n,function(t,n){e[n]=t}),y(e,f),a=i(r.getEndpoint(f,s,e),s,a),{v:!1}}();if("object"===("undefined"==typeof c?"undefined":l(c)))return c.v}}}),a},getPath:function(e,t,n,r){var o=this;r||(r={});var a=[H(r.basePath)?H(t.basePath)?o.basePath:t.basePath:r.basePath,o.getEndpoint(t,S(n)||E(n)||"create"===e?n:null,r)];return"find"!==e&&"update"!==e&&"destroy"!==e||a.push(n),i.apply(c.utils,a)},getSuffix:function(e,t){return t||(t={}),H(t.suffix)?H(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),_(t))}var r=this,o=new Date;t||(t={}),e=v(e),e=m(e,r.httpConfig),r.forceTrailingSlash&&"/"!==e.url[e.url.length-1]&&(e.url+="/"),e.method=e.method.toUpperCase();var a=e.suffix||t.suffix||r.suffix;if(a&&e.url.substr(e.url.length-a.length)!==a&&(e.url+=a),!r.http)throw new Error("You have not configured this adapter with an http library!");return K(r.beforeHTTP(e,t)).then(function(o){return e=o||e,U&&(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 K(r.afterHTTP(e,t,n)).then(function(e){return e||n})})},POST:function(e,t,n,r){var o=this,a=void 0;return n||(n={}),r||(r={}),n.url=e||n.url,n.data=t||n.data,n.method=n.method||"post",a=r.op="beforePOST",K(o[a](e,t,n,r)).then(function(i){return n=H(i)?n:i,a=r.op="POST",o.dbg(a,e,t,n,r),o.HTTP(n,r)}).then(function(i){return a=r.op="afterPOST",K(o[a](e,t,n,r,i)).then(function(e){return H(e)?i:e})})},PUT:function(e,t,n,r){var o=this,a=void 0;return n||(n={}),r||(r={}),n.url=e||n.url,n.data=t||n.data,n.method=n.method||"put",a=r.op="beforePUT",K(o[a](e,t,n,r)).then(function(i){return n=H(i)?n:i,a=r.op="PUT",o.dbg(a,e,t,n,r),o.HTTP(n,r)}).then(function(i){return a=r.op="afterPUT",K(o[a](e,t,n,r,i)).then(function(e){return H(e)?i:e})})},queryTransform:function(e,t,n){return n||(n={}),M(n.queryTransform)?n.queryTransform(e,t,n):M(e.queryTransform)?e.queryTransform(e,t,n):t},responseError:function(e,t,n){return _(e)},serialize:function(e,t,n){return n||(n={}),M(n.serialize)?n.serialize(e,t,n):M(e.serialize)?e.serialize(e,t,n):t},update:function(e,t,n,r){var o=this;return r=r?v(r):{},r.params||(r.params={}),r.params=o.queryTransform(e,r.params,r),r.suffix=o.getSuffix(e,r),q.update.call(o,e,t,n,r)},updateAll:function(e,t,n,r){var o=this;return n||(n={}),r=r?v(r):{},r.params||(r.params={}),m(r.params,n),r.params=o.queryTransform(e,r.params,r),r.suffix=o.getSuffix(e,r),q.updateAll.call(o,e,t,n,r)},updateMany:function(e,t,n){var r=this;return n=n?v(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),q.updateMany.call(r,e,t,n)}}),s.addAction=function(e,t){if(!e||!S(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 _(e)},n[e]=function(n,r){var o=this;w(n)&&(r=n),r=r||{};var a=o.getAdapter(t.adapter||o.defaultAdapter||"http"),u={};if(T(u,t),!r.hasOwnProperty("endpoint")&&u.endpoint&&(r.endpoint=u.endpoint),"function"==typeof r.getEndpoint)u.url=r.getEndpoint(o,r);else{var f=[r.basePath||o.basePath||a.basePath,a.getEndpoint(o,F(n)?n:null,r)];F(n)&&f.push(n),f.push(t.pathname||e),u.url=i.apply(null,f)}return u.method=u.method||"GET",u.mapper=o.name,m(u)(r),K(u).then(r.request||t.request).then(function(e){return a.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}},s.addActions=function(e){return e||(e={}),function(e){return A(e,function(t,n){s.addAction(n,t)(e)}),e}},s.extend=b,s.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=s},function(t,n){t.exports=e},function(e,t,n){!function(e,t){t(n(1))}(this,function(t){"use strict";function n(e){var t=this;e||(e={}),u(e,T),u(t,e)}function r(e,t,n){var r=this;t||(t={}),r.data=e,u(r,t),r.op=n}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,a=void 0;try{for(var i,u=e[Symbol.iterator]();!(r=(i=u.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&u.return&&u.return()}finally{if(o)throw a}}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 a=t.utils.addHiddenPropsToTarget,i=t.utils.extend,u=t.utils.fillIn,f=t.utils.forEachRelation,s=t.utils.get,l=t.utils.isArray,c=t.utils.isObject,d=t.utils.isUndefined,p=t.utils.omit,h=t.utils.plainCopy,y=t.utils.resolve,g=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var o=n[n.length-1];return e.dbg.apply(e,[o.op].concat(n)),y()},v=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var o=n[n.length-2];return e.dbg.apply(e,[o.op].concat(n)),y()},m=function(e){var t={},n=[];return e.forEach(function(e){e in t||(n.push(e),t[e]=0)}),n},b=function(e,t){return p(t,e.relationFields||[])},T={debug:!1,raw:!1};n.reserved=["orderBy","sort","limit","offset","skip","where"],n.Response=r,n.extend=i,a(n.prototype,{afterCreate:v,afterCreateMany:v,afterDestroy:v,afterDestroyAll:v,afterFind:v,afterFindAll:v,afterUpdate:v,afterUpdateAll:v,afterUpdateMany:v,beforeCreate:g,beforeCreateMany:g,beforeDestroy:g,beforeDestroyAll:g,beforeFind:g,beforeFindAll:g,beforeUpdate:g,beforeUpdateAll:g,beforeUpdateMany:g,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))},create:function(e,t,n){var a=this,i=void 0;return t||(t={}),n||(n={}),i=n.op="beforeCreate",y(a[i](e,t,n)).then(function(r){return t=d(r)?t:r,t=b(e,t),i=n.op="create",a.dbg(i,e,t,n),y(a._create(e,t,n))}).then(function(u){var f=o.slicedToArray(u,2),s=f[0],l=f[1];l||(l={});var c=new r(s,l,"create");return c.created=s?1:0,c=a.respond(c,n),i=n.op="afterCreate",y(a[i](e,t,n,c)).then(function(e){return d(e)?c:e})})},createMany:function(e,t,n){var a=this,i=void 0;return t||(t={}),n||(n={}),i=n.op="beforeCreateMany",y(a[i](e,t,n)).then(function(r){return t=d(r)?t:r,t=t.map(function(t){return b(e,t)}),i=n.op="createMany",a.dbg(i,e,t,n),y(a._createMany(e,t,n))}).then(function(u){var f=o.slicedToArray(u,2),s=f[0],l=f[1];s||(s=[]),l||(l={});var c=new r(s,l,"createMany");return c.created=s.length,c=a.respond(c,n),i=n.op="afterCreateMany",y(a[i](e,t,n,c)).then(function(e){return d(e)?c:e})})},destroy:function(e,t,n){var a=this,i=void 0;return n||(n={}),i=n.op="beforeDestroy",y(a[i](e,t,n)).then(function(){return i=n.op="destroy",a.dbg(i,e,t,n),y(a._destroy(e,t,n))}).then(function(u){var f=o.slicedToArray(u,2),s=f[0],l=f[1];l||(l={});var c=new r(s,l,"destroy");return c=a.respond(c,n),i=n.op="afterDestroy",y(a[i](e,t,n,c)).then(function(e){return d(e)?c:e})})},destroyAll:function(e,t,n){var a=this,i=void 0;return t||(t={}),n||(n={}),i=n.op="beforeDestroyAll",y(a[i](e,t,n)).then(function(){return i=n.op="destroyAll",a.dbg(i,e,t,n),y(a._destroyAll(e,t,n))}).then(function(u){var f=o.slicedToArray(u,2),s=f[0],l=f[1];l||(l={});var c=new r(s,l,"destroyAll");return c=a.respond(c,n),i=n.op="afterDestroyAll",y(a[i](e,t,n,c)).then(function(e){return d(e)?c:e})})},makeHasManyForeignKey:function(e,t,n){return t.getForeignKey(n)},makeHasManyLocalKeys:function(e,t,n){var r=[],o=s(n,t.localKeys)||[];return o=l(o)?o:Object.keys(o),r=r.concat(o),m(r).filter(function(e){return e})},makeHasManyForeignKeys:function(e,t,n){return s(n,e.idAttribute)},loadHasMany:function(e,t,n,r){var o=this,a=!1;c(n)&&!l(n)&&(a=!0,n=[n]);var i=n.map(function(n){return o.makeHasManyForeignKey(e,t,n)}),u={where:{}},f=u.where[t.foreignKey]={};return a?f["=="]=i[0]:f.in=i.filter(function(e){return e}),o.findAll(t.getRelation(),u,r).then(function(r){n.forEach(function(n){var o=[];a?o=r:r.forEach(function(r){s(r,t.foreignKey)===n[e.idAttribute]&&o.push(r)}),t.setLocalField(n,o)})})},loadHasManyLocalKeys:function(e,t,n,r){var a=this,i=void 0,u=t.getRelation();if(c(n)&&!l(n)&&(i=n),i)return a.findAll(u,{where:o.defineProperty({},u.idAttribute,{in:a.makeHasManyLocalKeys(e,t,i)})},r).then(function(e){t.setLocalField(i,e)});var f=function(){var i=[];return n.forEach(function(n){i=i.concat(a.self.makeHasManyLocalKeys(e,t,n))}),{v:a.findAll(u,{where:o.defineProperty({},u.idAttribute,{in:m(i).filter(function(e){return e})})},r).then(function(e){return n.forEach(function(n){var r=[],o=s(n,t.localKeys)||[];o=l(o)?o:Object.keys(o),e.forEach(function(e){o&&-1!==o.indexOf(e[u.idAttribute])&&r.push(e)}),t.setLocalField(n,r)}),e})}}();return"object"===("undefined"==typeof f?"undefined":o.typeof(f))?f.v:void 0},loadHasManyForeignKeys:function(e,t,n,r){var a=this,i=t.getRelation(),u=e.idAttribute,f=void 0;return c(n)&&!l(n)&&(f=n),f?a.findAll(t.getRelation(),{where:o.defineProperty({},t.foreignKeys,{contains:a.makeHasManyForeignKeys(e,t,f)})},r).then(function(e){t.setLocalField(f,e)}):a.findAll(i,{where:o.defineProperty({},t.foreignKeys,{isectNotEmpty:n.map(function(n){return a.makeHasManyForeignKeys(e,t,n)})})},r).then(function(e){var r=t.foreignKeys;n.forEach(function(n){var o=[],a=s(n,u);e.forEach(function(t){var n=s(e,r)||[];-1!==n.indexOf(a)&&o.push(t)}),t.setLocalField(n,o)})})},loadHasOne:function(e,t,n,r){return c(n)&&!l(n)&&(n=[n]),this.loadHasMany(e,t,n,r).then(function(){n.forEach(function(e){var n=t.getLocalField(e);l(n)&&n.length&&t.setLocalField(e,n[0])})})},makeBelongsToForeignKey:function(e,t,n){return t.getForeignKey(n)},loadBelongsTo:function(e,t,n,r){var a=this,i=t.getRelation();if(!c(n)||l(n)){var u=n.map(function(n){return a.makeBelongsToForeignKey(e,t,n)}).filter(function(e){return e});return a.findAll(i,{where:o.defineProperty({},i.idAttribute,{in:u})},r).then(function(e){n.forEach(function(n){e.forEach(function(e){e[i.idAttribute]===n[t.foreignKey]&&t.setLocalField(n,e)})})})}var f=function(){var o=n;return{v:a.find(i,a.makeBelongsToForeignKey(e,t,o),r).then(function(e){t.setLocalField(o,e)})}}();return"object"===("undefined"==typeof f?"undefined":o.typeof(f))?f.v:void 0},find:function(e,t,n){var a=this,i=void 0,u=void 0;return n||(n={}),n.with||(n.with=[]),u=n.op="beforeFind",y(a[u](e,t,n)).then(function(){return u=n.op="find",a.dbg(u,e,t,n),y(a._find(e,t,n))}).then(function(t){var r=o.slicedToArray(t,1),u=r[0];if(u){i=u;var s=[];return f(e,n,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,i,n):"hasMany"===t.type&&t.foreignKeys?r=a.loadHasManyForeignKeys(e,t,i,n):"belongsTo"===t.type&&(r=a.loadBelongsTo(e,t,i,n)):r="hasOne"===t.type?a.loadHasOne(e,t,i,n):a.loadHasMany(e,t,i,n),r&&s.push(r)}),Promise.all(s)}}).then(function(){var o=new r(i,{},"find");return o.found=i?1:0,o=a.respond(o,n),u=n.op="afterFind",y(a[u](e,t,n,o)).then(function(e){return d(e)?o:e})})},findAll:function(e,t,n){var a=this;n||(n={}),n.with||(n.with=[]);var i=[],u=void 0;return u=n.op="beforeFindAll",y(a[u](e,t,n)).then(function(){return u=n.op="findAll",a.dbg(u,e,t,n),y(a._findAll(e,t,n))}).then(function(t){var r=o.slicedToArray(t,1),u=r[0];u||(u=[]),i=u;var s=[];return f(e,n,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,i,n):"hasMany"===t.type&&t.foreignKeys?r=a.loadHasManyForeignKeys(e,t,i,n):"belongsTo"===t.type&&(r=a.loadBelongsTo(e,t,i,n)):r="hasMany"===t.type?a.loadHasMany(e,t,i,n):a.loadHasOne(e,t,i,n),r&&s.push(r)}),Promise.all(s)}).then(function(){var o=new r(i,{},"findAll");return o.found=i.length,o=a.respond(o,n),u=n.op="afterFindAll",y(a[u](e,t,n,o)).then(function(e){return d(e)?o:e})})},getOpt:function(e,t){return t||(t={}),h(d(t[e])?this[e]:t[e])},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 a;(a=console)[e].apply(a,[o].concat(n))}else{var i;(i=console).log.apply(i,[o].concat(n))}}},respond:function(e,t){return this.getOpt("raw",t)?e:e.data},update:function(e,t,n,a){var i=this;n||(n={}),a||(a={});var u=void 0;return u=a.op="beforeUpdate",y(i[u](e,t,n,a)).then(function(r){return n=d(r)?n:r,u=a.op="update",i.dbg(u,e,t,n,a),y(i._update(e,t,n,a))}).then(function(f){var s=o.slicedToArray(f,2),l=s[0],c=s[1];c||(c={});var p=new r(l,c,"update");return p.updated=l?1:0,p=i.respond(p,a),u=a.op="afterUpdate",y(i[u](e,t,n,a,p)).then(function(e){return d(e)?p:e})})},updateAll:function(e,t,n,a){var i=this;t||(t={}),n||(n={}),a||(a={});var u=void 0;return u=a.op="beforeUpdateAll",y(i[u](e,t,n,a)).then(function(r){return t=d(r)?t:r,u=a.op="updateAll",i.dbg(u,e,t,n,a),y(i._updateAll(e,t,n,a))}).then(function(f){var s=o.slicedToArray(f,2),l=s[0],c=s[1];l||(l=[]),c||(c={});var p=new r(l,c,"updateAll");return p.updated=l.length,p=i.respond(p,a),u=a.op="afterUpdateAll",y(i[u](e,t,n,a,p)).then(function(e){return d(e)?p:e})})},updateMany:function(e,t,n){var a=this;t||(t=[]),n||(n={});var i=void 0,u=e.idAttribute;return t=t.filter(function(e){return s(e,u)}),i=n.op="beforeUpdateMany",y(a[i](e,t,n)).then(function(r){return t=d(r)?t:r,t=t.map(function(t){return b(e,t)}),i=n.op="updateMany",a.dbg(i,e,t,n),y(a._updateMany(e,t,n))}).then(function(u){var f=o.slicedToArray(u,2),s=f[0],l=f[1];s||(s=[]),l||(l={});var c=new r(s,l,"updateMany");return c.updated=s.length,c=a.respond(c,n),i=n.op="afterUpdateMany",y(a[i](e,t,n,c)).then(function(e){return d(e)?c:e})})}}),e.exports=n})},function(e,t){e.exports=void 0}])}); //# sourceMappingURL=fetch/dist/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 abc74fc..6f8c1f0 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_2__","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","forOwn","key","isArray","forEach","v","window","toString","toISOString","isObject","toJson","push","indexOf","HttpAdapter","opts","self","fillIn","DEFAULTS","_typeof","Symbol","iterator","obj","constructor","_jsData","axios","_","utils","addHiddenPropsToTarget","copy","deepMixIn","extend","get","isFunction","isNumber","isSorN","isString","isUndefined","resolve","reject","hasFetch","fetch","e","noop","_len2","_key2","dbg","apply","op","concat","noop2","_len3","_key3","basePath","debug","forceTrailingSlash","http","httpConfig","suffix","useFetch","prototype","afterCreate","afterCreateMany","afterDEL","afterDestroy","afterDestroyAll","afterFind","afterFindAll","afterGET","afterHTTP","afterPOST","afterPUT","afterUpdate","afterUpdateAll","afterUpdateMany","beforeCreate","beforeCreateMany","beforeDEL","beforeDestroy","beforeDestroyAll","beforeFind","beforeFindAll","beforeGET","beforeHTTP","beforePOST","beforePUT","beforeUpdate","beforeUpdateAll","beforeUpdateMany","create","mapper","props","undefined","queryTransform","then","POST","getPath","serialize","response","deserialize","data","_data","createMany","records","_len4","_key4","log","DEL","config","method","_config","HTTP","_response","raw","destroy","destroyAll","query","error","console","_console","_fetch","_x","_x2","requestConfig","headers","Headers","body","Request","json","find","GET","findAll","getEndpoint","relationList","endpoint","name","def","type","parent","item","parentKey","foreignKey","parentDef","getRelation","parentId","getForeignKey","getLocalField","idAttribute","_ret","_opts","logResponse","str","start","toUTCString","toUpperCase","status","Date","getTime","substr","Error","catch","err","responseError","level","_len5","_key5","prefix","_console2","_console3","PUT","update","updateAll","updateMany","addAction","TypeError","request","adapter","getAdapter","defaultAdapter","hasOwnProperty","_args","pathname","addActions","version","full","major","parseInt","minor","patch","alpha","beta"],"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","_interopRequireDefault","obj","__esModule","default","isValidString","value","join","items","separator","filter","makePath","_len3","arguments","length","args","Array","_key3","result","replace","encode","val","encodeURIComponent","buildUrl","url","params","parts","forOwn","key","isArray","forEach","v","window","toString","toISOString","isObject","toJson","push","indexOf","HttpAdapter","opts","self","fillIn","DEFAULTS","_jsDataAdapter2","_typeof","Symbol","iterator","constructor","_jsData","_jsDataAdapter","axios","_","utils","addHiddenPropsToTarget","copy","deepMixIn","extend","get","isFunction","isNumber","isSorN","isString","isUndefined","resolve","reject","hasFetch","fetch","e","noop","_len","_key","dbg","apply","op","concat","noop2","_len2","_key2","__super__","prototype","basePath","forceTrailingSlash","http","httpConfig","suffix","useFetch","Object","create","enumerable","writable","configurable","defineProperty","afterDEL","afterGET","afterHTTP","afterPOST","afterPUT","beforeDEL","beforeGET","beforeHTTP","beforePOST","beforePUT","_create","mapper","props","POST","getPath","serialize","then","response","_end","_createMany","_destroy","DEL","_destroyAll","query","deserialize","data","_find","GET","_findAll","_update","PUT","_updateAll","_updateMany","records","queryTransform","getSuffix","createMany","config","method","_config","HTTP","_response","hasOwnProperty","destroy","destroyAll","error","console","_console","_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","idAttribute","_ret","_opts","logResponse","str","start","toUTCString","toUpperCase","status","Date","getTime","log","substr","Error","catch","err","responseError","update","updateAll","updateMany","addAction","TypeError","request","adapter","getAdapter","defaultAdapter","_args","pathname","addActions","version","full","major","parseInt","minor","patch","alpha","beta","global","jsData","Adapter","Response","meta","babelHelpers","typeof","slicedToArray","sliceIterator","arr","i","_arr","_n","_d","_e","undefined","_s","_i","next","done","forEachRelation","omit","plainCopy","unique","array","seen","final","withoutRelations","relationFields","debug","raw","reserved","afterCreate","afterCreateMany","afterDestroy","afterDestroyAll","afterFind","afterFindAll","afterUpdate","afterUpdateAll","afterUpdateMany","beforeCreate","beforeCreateMany","beforeDestroy","beforeDestroyAll","beforeFind","beforeFindAll","beforeUpdate","beforeUpdateAll","beforeUpdateMany","_props","results","_results","created","respond","map","record","_results2","_results3","_results4","makeHasManyForeignKey","makeHasManyLocalKeys","localKeys","itemKeys","keys","x","makeHasManyForeignKeys","loadHasMany","__opts","singular","IDs","where","criteria","relatedItems","attached","relatedItem","setLocalField","loadHasManyLocalKeys","relatedMapper","in","loadHasManyForeignKeys","foreignKeys","contains","isectNotEmpty","foreignKeysField","_relatedItems","loadHasOne","relatedData","makeBelongsToForeignKey","loadBelongsTo","relationDef","_ret2","with","_results5","_record","tasks","task","Promise","all","found","_results6","_records","getOpt","opt","level","_len4","_key4","prefix","_console2","_results7","updated","_results8","_results9"],"mappings":"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","file":"fetch/dist/js-data-fetch.min.js"} \ No newline at end of file diff --git a/fetch/karma.conf.js b/fetch/karma.conf.js index ecbd4cb..866b314 100644 --- a/fetch/karma.conf.js +++ b/fetch/karma.conf.js @@ -46,13 +46,12 @@ module.exports = function (config) { 'karma-mocha', 'karma-chai', 'karma-phantomjs-launcher', - 'karma-browserstack-launcher', - 'karma-junit-reporter' + 'karma-browserstack-launcher' ], autoWatch: false, browsers: browsers, files: [ - 'node_modules/es6-promise/dist/es6-promise.js', + 'node_modules/babel-polyfill/dist/polyfill.js', 'node_modules/js-data/dist/js-data.js', 'fetch/dist/js-data-fetch.js', 'fetch/karma.start.js', @@ -63,7 +62,7 @@ module.exports = function (config) { accessKey: process.env.BROWSERSTACK_ACCESS_KEY }, customLaunchers: customLaunchers, - reporters: ['dots', 'junit'], + reporters: ['dots'], junitReporter: { outputDir: process.env.CIRCLE_TEST_REPORTS || 'junit', outputFile: undefined, diff --git a/fetch/package.json b/fetch/package.json index b355d5f..056cd98 100644 --- a/fetch/package.json +++ b/fetch/package.json @@ -1,7 +1,7 @@ { "name": "js-data-fetch", "description": "HTTP adapter for js-data that uses the fetch API.", - "version": "3.0.0-alpha.6", + "version": "3.0.0-alpha.7", "homepage": "https://github.com/js-data/js-data-http", "repository": { "type": "git", @@ -18,7 +18,7 @@ "http", "fetch" ], - "dependencies": { - "js-data": "^3.0.0-alpha.15" + "peerDependencies": { + "js-data": "^3.0.0-alpha.16" } } diff --git a/karma.conf.js b/karma.conf.js index 5d2ad5e..bd3db1e 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -46,13 +46,12 @@ module.exports = function (config) { 'karma-mocha', 'karma-chai', 'karma-phantomjs-launcher', - 'karma-browserstack-launcher', - 'karma-junit-reporter' + 'karma-browserstack-launcher' ], autoWatch: false, browsers: browsers, files: [ - 'node_modules/es6-promise/dist/es6-promise.js', + 'node_modules/babel-polyfill/dist/polyfill.js', 'node_modules/js-data/dist/js-data.js', 'dist/js-data-http.js', 'karma.start.js', @@ -63,7 +62,7 @@ module.exports = function (config) { accessKey: process.env.BROWSERSTACK_ACCESS_KEY }, customLaunchers: customLaunchers, - reporters: ['dots', 'junit'], + reporters: ['dots'], junitReporter: { outputDir: process.env.CIRCLE_TEST_REPORTS || 'junit', outputFile: undefined, diff --git a/node/dist/js-data-http-node.js b/node/dist/js-data-http-node.js index bd85e2c..354c987 100644 --- a/node/dist/js-data-http-node.js +++ b/node/dist/js-data-http-node.js @@ -7,7 +7,7 @@ var a = typeof exports === 'object' ? factory(require("js-data"), require("axios")) : factory(root["js-data"], root["axios"]); for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; } -})(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_2__) { +})(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_3__) { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; @@ -60,8 +60,14 @@ return /******/ (function(modules) { // webpackBootstrap var _jsData = __webpack_require__(1); + var _jsDataAdapter = __webpack_require__(2); + + var _jsDataAdapter2 = _interopRequireDefault(_jsDataAdapter); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + /* global fetch:true Headers:true Request:true */ - var axios = __webpack_require__(2); + var axios = __webpack_require__(3); var _ = _jsData.utils._; var addHiddenPropsToTarget = _jsData.utils.addHiddenPropsToTarget; var copy = _jsData.utils.copy; @@ -88,6 +94,30 @@ return /******/ (function(modules) { // webpackBootstrap hasFetch = window && window.fetch; } catch (e) {} + var noop = function noop() { + var self = this; + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + var opts = args[args.length - 1]; + self.dbg.apply(self, [opts.op].concat(args)); + return resolve(); + }; + + var noop2 = function noop2() { + var self = this; + + for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + + var opts = args[args.length - 2]; + self.dbg.apply(self, [opts.op].concat(args)); + return resolve(); + }; + function isValidString(value) { return value != null && value !== ''; } @@ -96,8 +126,8 @@ return /******/ (function(modules) { // webpackBootstrap return items.filter(isValidString).join(separator); } function makePath() { - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; + for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { + args[_key3] = arguments[_key3]; } var result = join(args, '/'); @@ -140,27 +170,7 @@ return /******/ (function(modules) { // webpackBootstrap return url; } - var noop = function noop() { - var self = this; - - for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - - var opts = args[args.length - 1]; - self.dbg.apply(self, [opts.op].concat(args)); - }; - - var noop2 = function noop2() { - var self = this; - - for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { - args[_key3] = arguments[_key3]; - } - - var opts = args[args.length - 2]; - self.dbg.apply(self, [opts.op].concat(args)); - }; + var __super__ = _jsDataAdapter2.default.prototype; var DEFAULTS = { // Default and user-defined settings @@ -170,13 +180,6 @@ return /******/ (function(modules) { // webpackBootstrap */ basePath: '', - /** - * @name HttpAdapter#debug - * @type {boolean} - * @default false - */ - debug: false, - /** * @name HttpAdapter#forceTrailingSlash * @type {boolean} @@ -225,35 +228,27 @@ return /******/ (function(modules) { // webpackBootstrap */ function HttpAdapter(opts) { var self = this; - - // Default values for arguments opts || (opts = {}); - - fillIn(self, opts); - fillIn(self, DEFAULTS); + fillIn(opts, DEFAULTS); + _jsDataAdapter2.default.call(self, opts); } - addHiddenPropsToTarget(HttpAdapter.prototype, { - /** - * @name HttpAdapter#afterCreate - * @method - * @param {Object} mapper - * @param {Object} props - * @param {Object} opts - * @param {Object} data - */ - afterCreate: noop2, + // Setup prototype inheritance from Adapter + HttpAdapter.prototype = Object.create(_jsDataAdapter2.default.prototype, { + constructor: { + value: HttpAdapter, + enumerable: false, + writable: true, + configurable: true + } + }); - /** - * @name HttpAdapter#afterCreateMany - * @method - * @param {Object} mapper - * @param {Object} records - * @param {Object} opts - * @param {Object} data - */ - afterCreateMany: noop2, + Object.defineProperty(HttpAdapter, '__super__', { + configurable: true, + value: _jsDataAdapter2.default + }); + addHiddenPropsToTarget(HttpAdapter.prototype, { /** * @name HttpAdapter#afterDEL * @method @@ -264,46 +259,6 @@ return /******/ (function(modules) { // webpackBootstrap */ afterDEL: noop2, - /** - * @name HttpAdapter#afterDestroy - * @method - * @param {Object} mapper - * @param {(string|number)} id - * @param {Object} opts - * @param {Object} data - */ - afterDestroy: noop2, - - /** - * @name HttpAdapter#afterDestroyAll - * @method - * @param {Object} mapper - * @param {(string|number)} id - * @param {Object} opts - * @param {Object} data - */ - afterDestroyAll: noop2, - - /** - * @name HttpAdapter#afterFind - * @method - * @param {Object} mapper - * @param {(string|number)} id - * @param {Object} opts - * @param {Object} data - */ - afterFind: noop2, - - /** - * @name HttpAdapter#afterFindAll - * @method - * @param {Object} mapper - * @param {(string|number)} id - * @param {Object} opts - * @param {Object} data - */ - afterFindAll: noop2, - /** * @name HttpAdapter#afterGET * @method @@ -345,56 +300,6 @@ return /******/ (function(modules) { // webpackBootstrap */ afterPUT: noop2, - /** - * @name HttpAdapter#afterUpdate - * @method - * @param {Object} mapper - * @param {(string|number)} id - * @param {Object} props - * @param {Object} opts - * @param {Object} data - */ - afterUpdate: noop2, - - /** - * @name HttpAdapter#afterUpdateAll - * @method - * @param {Object} mapper - * @param {Object} props - * @param {Object} query - * @param {Object} opts - * @param {Object} data - */ - afterUpdateAll: noop2, - - /** - * @name HttpAdapter#afterUpdateMany - * @method - * @param {Object} mapper - * @param {Object} records - * @param {Object} opts - * @param {Object} data - */ - afterUpdateMany: noop2, - - /** - * @name HttpAdapter#beforeCreate - * @method - * @param {Object} mapper - * @param {Object} props - * @param {Object} opts - */ - beforeCreate: noop, - - /** - * @name HttpAdapter#beforeCreateMany - * @method - * @param {Object} mapper - * @param {Object} records - * @param {Object} opts - */ - beforeCreateMany: noop, - /** * @name HttpAdapter#beforeDEL * @method @@ -404,42 +309,6 @@ return /******/ (function(modules) { // webpackBootstrap */ beforeDEL: noop, - /** - * @name HttpAdapter#beforeDestroy - * @method - * @param {Object} mapper - * @param {(string|number)} id - * @param {Object} opts - */ - beforeDestroy: noop, - - /** - * @name HttpAdapter#beforeDestroyAll - * @method - * @param {Object} mapper - * @param {Object} query - * @param {Object} opts - */ - beforeDestroyAll: noop, - - /** - * @name HttpAdapter#beforeFind - * @method - * @param {Object} mapper - * @param {(string|number)} id - * @param {Object} opts - */ - beforeFind: noop, - - /** - * @name HttpAdapter#beforeFindAll - * @method - * @param {Object} mapper - * @param {Object} query - * @param {Object} opts - */ - beforeFindAll: noop, - /** * @name HttpAdapter#beforeGET * @method @@ -477,34 +346,64 @@ return /******/ (function(modules) { // webpackBootstrap */ beforePUT: noop, - /** - * @name HttpAdapter#beforeUpdate - * @method - * @param {Object} mapper - * @param {(string|number)} id - * @param {Object} props - * @param {Object} opts - */ - beforeUpdate: noop, - - /** - * @name HttpAdapter#beforeUpdateAll - * @method - * @param {Object} mapper - * @param {Object} props - * @param {Object} query - * @param {Object} opts - */ - beforeUpdateAll: noop, + _create: function _create(mapper, props, opts) { + var self = this; + return self.POST(self.getPath('create', mapper, props, opts), self.serialize(mapper, props, opts), opts).then(function (response) { + return self._end(mapper, opts, response); + }); + }, + _createMany: function _createMany(mapper, props, opts) { + var self = this; + return self.POST(self.getPath('createMany', mapper, null, opts), self.serialize(mapper, props, opts), opts).then(function (response) { + return self._end(mapper, opts, response); + }); + }, + _destroy: function _destroy(mapper, id, opts) { + var self = this; + return self.DEL(self.getPath('destroy', mapper, id, opts), opts).then(function (response) { + return self._end(mapper, opts, response); + }); + }, + _destroyAll: function _destroyAll(mapper, query, opts) { + var self = this; + return self.DEL(self.getPath('destroyAll', mapper, null, opts), opts).then(function (response) { + return self._end(mapper, opts, response); + }); + }, + _end: function _end(mapper, opts, response) { + return [this.deserialize(mapper, response.data, opts), response]; + }, + _find: function _find(mapper, id, opts) { + var self = this; + return self.GET(self.getPath('find', mapper, id, opts), opts).then(function (response) { + return self._end(mapper, opts, response); + }); + }, + _findAll: function _findAll(mapper, query, opts) { + var self = this; + return self.GET(self.getPath('findAll', mapper, opts.params, opts), opts).then(function (response) { + return self._end(mapper, opts, response); + }); + }, + _update: function _update(mapper, id, props, opts) { + var self = this; + return self.PUT(self.getPath('update', mapper, id, opts), self.serialize(mapper, props, opts), opts).then(function (response) { + return self._end(mapper, opts, response); + }); + }, + _updateAll: function _updateAll(mapper, props, query, opts) { + var self = this; + return self.PUT(self.getPath('updateAll', mapper, null, opts), self.serialize(mapper, props, opts), opts).then(function (response) { + return self._end(mapper, opts, response); + }); + }, + _updateMany: function _updateMany(mapper, records, opts) { + var self = this; + return self.PUT(self.getPath('updateMany', mapper, null, opts), self.serialize(mapper, records, opts), opts).then(function (response) { + return self._end(mapper, opts, response); + }); + }, - /** - * @name HttpAdapter#beforeUpdateMany - * @method - * @param {Object} mapper - * @param {Object} records - * @param {Object} opts - */ - beforeUpdateMany: noop, /** * Create a new the record from the provided `props`. @@ -520,28 +419,12 @@ return /******/ (function(modules) { // webpackBootstrap */ create: function create(mapper, props, opts) { var self = this; - var op = void 0; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(mapper, opts.params, opts); - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; - - // beforeCreate lifecycle hook - op = opts.op = 'beforeCreate'; - return resolve(self[op](mapper, props, opts)).then(function () { - op = opts.op = 'create'; - self.dbg(op, mapper, props, opts); - return self.POST(self.getPath('create', mapper, props, opts), self.serialize(mapper, props, opts), opts); - }).then(function (response) { - return self.deserialize(mapper, response, opts); - }).then(function (data) { - // afterCreate lifecycle hook - op = opts.op = 'afterCreate'; - return resolve(self[op](mapper, props, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data; - }); - }); + opts.suffix = self.getSuffix(mapper, opts); + + return __super__.create.call(self, mapper, props, opts); }, @@ -551,52 +434,20 @@ return /******/ (function(modules) { // webpackBootstrap * @name HttpAdapter#createMany * @method * @param {Object} mapper The mapper. - * @param {Array} records Array of property objects to send as the payload. + * @param {Array} props Array of property objects to send as the payload. * @param {Object} [opts] Configuration options. * @param {string} [opts.params] TODO * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO * @return {Promise} */ - createMany: function createMany(mapper, records, opts) { + createMany: function createMany(mapper, props, opts) { var self = this; - var op = void 0; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(mapper, opts.params, opts); - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; - - // beforeCreateMany lifecycle hook - op = opts.op = 'beforeCreateMany'; - return resolve(self[op](mapper, records, opts)).then(function () { - op = opts.op = 'createMany'; - self.dbg(op, mapper, records, opts); - return self.POST(self.getPath('createMany', mapper, null, opts), self.serialize(mapper, records, opts), opts); - }).then(function (response) { - return self.deserialize(mapper, response, opts); - }).then(function (data) { - // afterCreateMany lifecycle hook - op = opts.op = 'afterCreateMany'; - return resolve(self[op](mapper, records, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data; - }); - }); - }, - + opts.suffix = self.getSuffix(mapper, opts); - /** - * Call {@link HttpAdapter#log} at the "debug" level. - * - * @name HttpAdapter#dbg - * @method - * @param {...*} [args] Args passed to {@link HttpAdapter#log}. - */ - dbg: function dbg() { - for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { - args[_key4] = arguments[_key4]; - } - - this.log.apply(this, ['debug'].concat(args)); + return __super__.createMany.call(self, mapper, props, opts); }, @@ -657,10 +508,12 @@ return /******/ (function(modules) { // webpackBootstrap if (isFunction(mapper.deserialize)) { return mapper.deserialize(mapper, response, opts); } - if (opts.raw) { - return response; + if (response) { + if (response.hasOwnProperty('data')) { + return response.data; + } } - return response ? 'data' in response ? response.data : response : response; + return response; }, @@ -678,28 +531,12 @@ return /******/ (function(modules) { // webpackBootstrap */ destroy: function destroy(mapper, id, opts) { var self = this; - var op = void 0; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(mapper, opts.params, opts); - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; - - // beforeDestroy lifecycle hook - op = opts.op = 'beforeDestroy'; - return resolve(self[op](mapper, id, opts)).then(function () { - op = opts.op = 'destroy'; - self.dbg(op, mapper, id, opts); - return self.DEL(self.getPath('destroy', mapper, id, opts), opts); - }).then(function (response) { - return self.deserialize(mapper, response, opts); - }).then(function (data) { - // afterDestroy lifecycle hook - op = opts.op = 'afterDestroy'; - return resolve(self[op](mapper, id, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data; - }); - }); + opts.suffix = self.getSuffix(mapper, opts); + + return __super__.destroy.call(self, mapper, id, opts); }, @@ -717,30 +554,14 @@ return /******/ (function(modules) { // webpackBootstrap */ destroyAll: function destroyAll(mapper, query, opts) { var self = this; - var op = void 0; query || (query = {}); opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); deepMixIn(opts.params, query); opts.params = self.queryTransform(mapper, opts.params, opts); - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; - - // beforeDestroyAll lifecycle hook - op = opts.op = 'beforeDestroyAll'; - return resolve(self.beforeDestroyAll(mapper, query, opts)).then(function () { - op = opts.op = 'destroyAll'; - self.dbg(op, mapper, query, opts); - return self.DEL(self.getPath('destroyAll', mapper, null, opts), opts); - }).then(function (response) { - return self.deserialize(mapper, response, opts); - }).then(function (data) { - // afterDestroyAll lifecycle hook - op = opts.op = 'afterDestroyAll'; - return resolve(self[op](mapper, query, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data; - }); - }); + opts.suffix = self.getSuffix(mapper, opts); + + return __super__.destroyAll.call(self, mapper, query, opts); }, @@ -821,28 +642,12 @@ return /******/ (function(modules) { // webpackBootstrap */ find: function find(mapper, id, opts) { var self = this; - var op = void 0; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(mapper, opts.params, opts); - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; - - // beforeFind lifecycle hook - op = opts.op = 'beforeFind'; - return resolve(self[op](mapper, id, opts)).then(function () { - op = opts.op = 'find'; - self.dbg(op, mapper, id, opts); - return self.GET(self.getPath('find', mapper, id, opts), opts); - }).then(function (response) { - return self.deserialize(mapper, response, opts); - }).then(function (data) { - // afterFind lifecycle hook - op = opts.op = 'afterFind'; - return resolve(self[op](mapper, id, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data; - }); - }); + opts.suffix = self.getSuffix(mapper, opts); + + return __super__.find.call(self, mapper, id, opts); }, @@ -860,30 +665,14 @@ return /******/ (function(modules) { // webpackBootstrap */ findAll: function findAll(mapper, query, opts) { var self = this; - var op = void 0; query || (query = {}); opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; + opts.suffix = self.getSuffix(mapper, opts); deepMixIn(opts.params, query); opts.params = self.queryTransform(mapper, opts.params, opts); - // beforeFindAll lifecycle hook - op = opts.op = 'beforeFindAll'; - return resolve(self[op](mapper, query, opts)).then(function () { - op = opts.op = 'findAll'; - self.dbg(op, mapper, query, opts); - return self.GET(self.getPath('findAll', mapper, opts.params, opts), opts); - }).then(function (response) { - return self.deserialize(mapper, response, opts); - }).then(function (data) { - // afterFindAll lifecycle hook - op = opts.op = 'afterFindAll'; - return resolve(self[op](mapper, query, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data; - }); - }); + return __super__.findAll.call(self, mapper, query, opts); }, @@ -1004,6 +793,16 @@ return /******/ (function(modules) { // webpackBootstrap } return makePath.apply(_jsData.utils, args); }, + getSuffix: function getSuffix(mapper, opts) { + opts || (opts = {}); + if (isUndefined(opts.suffix)) { + if (isUndefined(mapper.suffix)) { + return this.suffix; + } + return mapper.suffix; + } + return opts.suffix; + }, /** @@ -1071,39 +870,6 @@ return /******/ (function(modules) { // webpackBootstrap }, - /** - * Log the provided arguments at the specified leve. - * - * @name HttpAdapter#log - * @method - * @param {string} level Log level. - * @param {...*} [args] Arguments to log. - */ - log: function log(level) { - for (var _len5 = arguments.length, args = Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) { - args[_key5 - 1] = arguments[_key5]; - } - - if (level && !args.length) { - args.push(level); - level = 'debug'; - } - if (level === 'debug' && !this.debug) { - return; - } - var prefix = level.toUpperCase() + ': (HttpAdapter)'; - if (console[level]) { - var _console2; - - (_console2 = console)[level].apply(_console2, [prefix].concat(args)); - } else { - var _console3; - - (_console3 = console).log.apply(_console3, [prefix].concat(args)); - } - }, - - /** * TODO * @@ -1257,28 +1023,12 @@ return /******/ (function(modules) { // webpackBootstrap */ update: function update(mapper, id, props, opts) { var self = this; - var op = void 0; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(mapper, opts.params, opts); - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; - - // beforeUpdate lifecycle hook - op = opts.op = 'beforeUpdate'; - return resolve(self[op](mapper, id, props, opts)).then(function () { - op = opts.op = 'update'; - self.dbg(op, mapper, id, props, opts); - return self.PUT(self.getPath('update', mapper, id, opts), self.serialize(mapper, props, opts), opts); - }).then(function (response) { - return self.deserialize(mapper, response, opts); - }).then(function (data) { - // afterUpdate lifecycle hook - op = opts.op = 'afterUpdate'; - return resolve(self[op](mapper, id, props, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data; - }); - }); + opts.suffix = self.getSuffix(mapper, opts); + + return __super__.update.call(self, mapper, id, props, opts); }, @@ -1295,30 +1045,14 @@ return /******/ (function(modules) { // webpackBootstrap */ updateAll: function updateAll(mapper, props, query, opts) { var self = this; - var op = void 0; query || (query = {}); opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); deepMixIn(opts.params, query); opts.params = self.queryTransform(mapper, opts.params, opts); - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; - - // beforeUpdateAll lifecycle hook - op = opts.op = 'beforeUpdateAll'; - return resolve(self[op](mapper, props, query, opts)).then(function () { - op = opts.op = 'updateAll'; - self.dbg(op, mapper, props, query, opts); - return self.PUT(self.getPath('updateAll', mapper, null, opts), self.serialize(mapper, props, opts), opts); - }).then(function (response) { - return self.deserialize(mapper, response, opts); - }).then(function (data) { - // afterUpdateAll lifecycle hook - op = opts.op = 'afterUpdateAll'; - return resolve(self[op](mapper, props, query, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data; - }); - }); + opts.suffix = self.getSuffix(mapper, opts); + + return __super__.updateAll.call(self, mapper, props, query, opts); }, @@ -1341,28 +1075,12 @@ return /******/ (function(modules) { // webpackBootstrap */ updateMany: function updateMany(mapper, records, opts) { var self = this; - var op = void 0; opts = opts ? copy(opts) : {}; opts.params || (opts.params = {}); opts.params = self.queryTransform(mapper, opts.params, opts); - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix; - - // beforeUpdateMany lifecycle hook - op = opts.op = 'beforeUpdateMany'; - return resolve(self[op](mapper, records, opts)).then(function () { - op = opts.op = 'updateMany'; - self.dbg(op, mapper, records, opts); - return self.PUT(self.getPath('updateMany', mapper, null, opts), self.serialize(mapper, records, opts), opts); - }).then(function (response) { - return self.deserialize(mapper, response, opts); - }).then(function (data) { - // afterUpdateMany lifecycle hook - op = opts.op = 'afterUpdateMany'; - return resolve(self[op](mapper, records, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data; - }); - }); + opts.suffix = self.getSuffix(mapper, opts); + + return __super__.updateMany.call(self, mapper, records, opts); } }); @@ -1564,9 +1282,1466 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 2 */ +/***/ function(module, exports, __webpack_require__) { + + (function (global, factory) { + true ? factory(__webpack_require__(1)) : + typeof define === 'function' && define.amd ? define('js-data-adapter', ['js-data'], factory) : + (factory(global.JSData)); + }(this, function (jsData) { 'use strict'; + + var babelHelpers = {}; + babelHelpers.typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { + return typeof obj; + } : function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; + }; + + babelHelpers.defineProperty = function (obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; + }; + + babelHelpers.slicedToArray = function () { + function sliceIterator(arr, i) { + var _arr = []; + var _n = true; + var _d = false; + var _e = undefined; + + try { + for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"]) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; + } + + return function (arr, i) { + if (Array.isArray(arr)) { + return arr; + } else if (Symbol.iterator in Object(arr)) { + return sliceIterator(arr, i); + } else { + throw new TypeError("Invalid attempt to destructure non-iterable instance"); + } + }; + }(); + + babelHelpers; + + var addHiddenPropsToTarget = jsData.utils.addHiddenPropsToTarget; + var deepFillIn = jsData.utils.deepFillIn; + var extend = jsData.utils.extend; + var fillIn = jsData.utils.fillIn; + var forEachRelation = jsData.utils.forEachRelation; + var get = jsData.utils.get; + var isArray = jsData.utils.isArray; + var isObject = jsData.utils.isObject; + var isUndefined = jsData.utils.isUndefined; + var omit = jsData.utils.omit; + var plainCopy = jsData.utils.plainCopy; + var resolve = jsData.utils.resolve; + + + var noop = function noop() { + var self = this; + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + var opts = args[args.length - 1]; + self.dbg.apply(self, [opts.op].concat(args)); + return resolve(); + }; + + var noop2 = function noop2() { + var self = this; + + for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + + var opts = args[args.length - 2]; + self.dbg.apply(self, [opts.op].concat(args)); + return resolve(); + }; + + var unique = function unique(array) { + var seen = {}; + var final = []; + array.forEach(function (item) { + if (item in seen) { + return; + } + final.push(item); + seen[item] = 0; + }); + return final; + }; + + var withoutRelations = function withoutRelations(mapper, props) { + return omit(props, mapper.relationFields || []); + }; + + var DEFAULTS = { + /** + * Whether to log debugging information. + * + * @name Adapter#debug + * @type {boolean} + * @default false + */ + debug: false, + + /** + * Whether to return a more detailed response object. + * + * @name Adapter#raw + * @type {boolean} + * @default false + */ + raw: false + }; + + /** + * Abstract class meant to be extended by adapters. + * + * @class Adapter + * @abstract + * @param {Object} [opts] Configuration opts. + * @param {boolean} [opts.debug=false] Whether to log debugging information. + * @param {boolean} [opts.raw=false] Whether to return a more detailed response + * object. + */ + function Adapter(opts) { + var self = this; + opts || (opts = {}); + fillIn(opts, DEFAULTS); + fillIn(self, opts); + } + + Adapter.reserved = ['orderBy', 'sort', 'limit', 'offset', 'skip', 'where']; + + /** + * Response object used when `raw` is `true`. May contain other fields in + * addition to `data`. + * + * @typedef {Object} Response + * @property {Object} data Response data. + * @property {string} op The operation for which the response was created. + */ + function Response(data, meta, op) { + var self = this; + meta || (meta = {}); + self.data = data; + fillIn(self, meta); + self.op = op; + } + + Adapter.Response = Response; + + /** + * Alternative to ES6 class syntax for extending `Adapter`. + * + * @name Adapter.extend + * @method + * @param {Object} [instanceProps] Properties that will be added to the + * prototype of the subclass. + * @param {Object} [classProps] Properties that will be added as static + * properties to the subclass itself. + * @return {Object} Subclass of `Adapter`. + */ + Adapter.extend = extend; + + addHiddenPropsToTarget(Adapter.prototype, { + /** + * Lifecycle method method called by create. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes create to wait for the Promise to resolve before continuing. + * + * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the created record. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by create. + * + * @name Adapter#afterCreate + * @method + * @param {Object} mapper The `mapper` argument passed to create. + * @param {Object} props The `props` argument passed to create. + * @param {Object} opts The `opts` argument passed to create. + * @property {string} opts.op `afterCreate` + * @param {Object|Response} response Created record or {@link Response}, depending on the value of `opts.raw`. + */ + afterCreate: noop2, + + /** + * Lifecycle method method called by createMany. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes createMany to wait for the Promise to resolve before continuing. + * + * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the created records. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by createMany. + * + * @name Adapter#afterCreate + * @method + * @param {Object} mapper The `mapper` argument passed to createMany. + * @param {Object[]} props The `props` argument passed to createMany. + * @param {Object} opts The `opts` argument passed to createMany. + * @property {string} opts.op `afterCreateMany` + * @param {Object[]|Response} response Created records or {@link Response}, depending on the value of `opts.raw`. + */ + afterCreateMany: noop2, + + /** + * Lifecycle method method called by destroy. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes destroy to wait for the Promise to resolve before continuing. + * + * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be `undefined`. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroy. + * + * @name Adapter#afterDestroy + * @method + * @param {Object} mapper The `mapper` argument passed to destroy. + * @param {(string|number)} id The `id` argument passed to destroy. + * @param {Object} opts The `opts` argument passed to destroy. + * @property {string} opts.op `afterDestroy` + * @param {undefined|Response} response `undefined` or {@link Response}, depending on the value of `opts.raw`. + */ + afterDestroy: noop2, + + /** + * Lifecycle method method called by destroyAll. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes destroyAll to wait for the Promise to resolve before continuing. + * + * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be `undefined`. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroyAll. + * + * @name Adapter#afterDestroyAll + * @method + * @param {Object} mapper The `mapper` argument passed to destroyAll. + * @param {Object} query The `query` argument passed to destroyAll. + * @param {Object} opts The `opts` argument passed to destroyAll. + * @property {string} opts.op `afterDestroyAll` + * @param {undefined|Response} response `undefined` or {@link Response}, depending on the value of `opts.raw`. + */ + afterDestroyAll: noop2, + + /** + * Lifecycle method method called by find. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes find to wait for the Promise to resolve before continuing. + * + * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the found record, if any. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by find. + * + * @name Adapter#afterFind + * @method + * @param {Object} mapper The `mapper` argument passed to find. + * @param {(string|number)} id The `id` argument passed to find. + * @param {Object} opts The `opts` argument passed to find. + * @property {string} opts.op `afterFind` + * @param {Object|Response} response The found record or {@link Response}, depending on the value of `opts.raw`. + */ + afterFind: noop2, + + /** + * Lifecycle method method called by findAll. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes findAll to wait for the Promise to resolve before continuing. + * + * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the found records, if any. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by findAll. + * + * @name Adapter#afterFindAll + * @method + * @param {Object} mapper The `mapper` argument passed to findAll. + * @param {Object} query The `query` argument passed to findAll. + * @param {Object} opts The `opts` argument passed to findAll. + * @property {string} opts.op `afterFindAll` + * @param {Object[]|Response} response The found records or {@link Response}, depending on the value of `opts.raw`. + */ + afterFindAll: noop2, + + /** + * Lifecycle method method called by update. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes update to wait for the Promise to resolve before continuing. + * + * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the updated record. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by update. + * + * @name Adapter#afterUpdate + * @method + * @param {Object} mapper The `mapper` argument passed to update. + * @param {(string|number)} id The `id` argument passed to update. + * @param {Object} props The `props` argument passed to update. + * @param {Object} opts The `opts` argument passed to update. + * @property {string} opts.op `afterUpdate` + * @param {Object|Response} response The updated record or {@link Response}, depending on the value of `opts.raw`. + */ + afterUpdate: noop2, + + /** + * Lifecycle method method called by updateAll. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes updateAll to wait for the Promise to resolve before continuing. + * + * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the updated records, if any. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateAll. + * + * @name Adapter#afterUpdateAll + * @method + * @param {Object} mapper The `mapper` argument passed to updateAll. + * @param {Object} props The `props` argument passed to updateAll. + * @param {Object} query The `query` argument passed to updateAll. + * @param {Object} opts The `opts` argument passed to updateAll. + * @property {string} opts.op `afterUpdateAll` + * @param {Object[]|Response} response The updated records or {@link Response}, depending on the value of `opts.raw`. + */ + afterUpdateAll: noop2, + + /** + * Lifecycle method method called by updateMany. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes updateMany to wait for the Promise to resolve before continuing. + * + * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the updated records, if any. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateMany. + * + * @name Adapter#afterUpdateMany + * @method + * @param {Object} mapper The `mapper` argument passed to updateMany. + * @param {Object[]} records The `records` argument passed to updateMany. + * @param {Object} opts The `opts` argument passed to updateMany. + * @property {string} opts.op `afterUpdateMany` + * @param {Object[]|Response} response The updated records or {@link Response}, depending on the value of `opts.raw`. + */ + afterUpdateMany: noop2, + + /** + * Lifecycle method method called by create. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes create to wait for the Promise to resolve before continuing. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by create. + * + * @name Adapter#beforeCreate + * @method + * @param {Object} mapper The `mapper` argument passed to create. + * @param {Object} props The `props` argument passed to create. + * @param {Object} opts The `opts` argument passed to create. + * @property {string} opts.op `beforeCreate` + */ + beforeCreate: noop, + + /** + * Lifecycle method method called by createMany. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes createMany to wait for the Promise to resolve before continuing. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by createMany. + * + * @name Adapter#beforeCreateMany + * @method + * @param {Object} mapper The `mapper` argument passed to createMany. + * @param {Object[]} props The `props` argument passed to createMany. + * @param {Object} opts The `opts` argument passed to createMany. + * @property {string} opts.op `beforeCreateMany` + */ + beforeCreateMany: noop, + + /** + * Lifecycle method method called by destroy. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes destroy to wait for the Promise to resolve before continuing. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroy. + * + * @name Adapter#beforeDestroy + * @method + * @param {Object} mapper The `mapper` argument passed to destroy. + * @param {(string|number)} id The `id` argument passed to destroy. + * @param {Object} opts The `opts` argument passed to destroy. + * @property {string} opts.op `beforeDestroy` + */ + beforeDestroy: noop, + + /** + * Lifecycle method method called by destroyAll. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes destroyAll to wait for the Promise to resolve before continuing. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by destroyAll. + * + * @name Adapter#beforeDestroyAll + * @method + * @param {Object} mapper The `mapper` argument passed to destroyAll. + * @param {Object} query The `query` argument passed to destroyAll. + * @param {Object} opts The `opts` argument passed to destroyAll. + * @property {string} opts.op `beforeDestroyAll` + */ + beforeDestroyAll: noop, + + /** + * Lifecycle method method called by find. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes find to wait for the Promise to resolve before continuing. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by find. + * + * @name Adapter#beforeFind + * @method + * @param {Object} mapper The `mapper` argument passed to find. + * @param {(string|number)} id The `id` argument passed to find. + * @param {Object} opts The `opts` argument passed to find. + * @property {string} opts.op `beforeFind` + */ + beforeFind: noop, + + /** + * Lifecycle method method called by findAll. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes findAll to wait for the Promise to resolve before continuing. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by findAll. + * + * @name Adapter#beforeFindAll + * @method + * @param {Object} mapper The `mapper` argument passed to findAll. + * @param {Object} query The `query` argument passed to findAll. + * @param {Object} opts The `opts` argument passed to findAll. + * @property {string} opts.op `beforeFindAll` + */ + beforeFindAll: noop, + + /** + * Lifecycle method method called by update. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes update to wait for the Promise to resolve before continuing. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by update. + * + * @name Adapter#beforeUpdate + * @method + * @param {Object} mapper The `mapper` argument passed to update. + * @param {(string|number)} id The `id` argument passed to update. + * @param {Object} props The `props` argument passed to update. + * @param {Object} opts The `opts` argument passed to update. + * @property {string} opts.op `beforeUpdate` + */ + beforeUpdate: noop, + + /** + * Lifecycle method method called by updateAll. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes updateAll to wait for the Promise to resolve before continuing. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateAll. + * + * @name Adapter#beforeUpdateAll + * @method + * @param {Object} mapper The `mapper` argument passed to updateAll. + * @param {Object} props The `props` argument passed to updateAll. + * @param {Object} query The `query` argument passed to updateAll. + * @param {Object} opts The `opts` argument passed to updateAll. + * @property {string} opts.op `beforeUpdateAll` + */ + beforeUpdateAll: noop, + + /** + * Lifecycle method method called by updateMany. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes updateMany to wait for the Promise to resolve before continuing. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by updateMany. + * + * @name Adapter#beforeUpdateMany + * @method + * @param {Object} mapper The `mapper` argument passed to updateMany. + * @param {Object[]} props The `props` argument passed to updateMany. + * @param {Object} opts The `opts` argument passed to updateMany. + * @property {string} opts.op `beforeUpdateMany` + */ + beforeUpdateMany: noop, + + /** + * Shortcut for `#log('debug'[, arg1[, arg2[, argn]]])`. + * + * @name Adapter#dbg + * @method + */ + dbg: function dbg() { + for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { + args[_key3] = arguments[_key3]; + } + + this.log.apply(this, ['debug'].concat(args)); + }, + + + /** + * Create a new record. Called by `Mapper#create`. + * + * @name Adapter#create + * @method + * @param {Object} mapper The mapper. + * @param {Object} props The record to be created. + * @param {Object} [opts] Configuration options. + * @param {boolean} [opts.raw=false] Whether to return a more detailed + * response object. + * @return {Promise} + */ + create: function create(mapper, props, opts) { + var self = this; + var op = void 0; + props || (props = {}); + opts || (opts = {}); + + // beforeCreate lifecycle hook + op = opts.op = 'beforeCreate'; + return resolve(self[op](mapper, props, opts)).then(function (_props) { + // Allow for re-assignment from lifecycle hook + props = isUndefined(_props) ? props : _props; + props = withoutRelations(mapper, props); + op = opts.op = 'create'; + self.dbg(op, mapper, props, opts); + return resolve(self._create(mapper, props, opts)); + }).then(function (results) { + var _results = babelHelpers.slicedToArray(results, 2); + + var data = _results[0]; + var result = _results[1]; + + result || (result = {}); + var response = new Response(data, result, 'create'); + response.created = data ? 1 : 0; + response = self.respond(response, opts); + + // afterCreate lifecycle hook + op = opts.op = 'afterCreate'; + return resolve(self[op](mapper, props, opts, response)).then(function (_response) { + // Allow for re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; + }); + }); + }, + + + /** + * Create multiple records in a single batch. Called by `Mapper#createMany`. + * + * @name Adapter#createMany + * @method + * @param {Object} mapper The mapper. + * @param {Object} props The records to be created. + * @param {Object} [opts] Configuration options. + * @param {boolean} [opts.raw=false] Whether to return a more detailed + * response object. + * @return {Promise} + */ + createMany: function createMany(mapper, props, opts) { + var self = this; + var op = void 0; + props || (props = {}); + opts || (opts = {}); + + // beforeCreateMany lifecycle hook + op = opts.op = 'beforeCreateMany'; + return resolve(self[op](mapper, props, opts)).then(function (_props) { + // Allow for re-assignment from lifecycle hook + props = isUndefined(_props) ? props : _props; + props = props.map(function (record) { + return withoutRelations(mapper, record); + }); + op = opts.op = 'createMany'; + self.dbg(op, mapper, props, opts); + return resolve(self._createMany(mapper, props, opts)); + }).then(function (results) { + var _results2 = babelHelpers.slicedToArray(results, 2); + + var data = _results2[0]; + var result = _results2[1]; + + data || (data = []); + result || (result = {}); + var response = new Response(data, result, 'createMany'); + response.created = data.length; + response = self.respond(response, opts); + + // afterCreateMany lifecycle hook + op = opts.op = 'afterCreateMany'; + return resolve(self[op](mapper, props, opts, response)).then(function (_response) { + // Allow for re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; + }); + }); + }, + + + /** + * Destroy the record with the given primary key. Called by + * `Mapper#destroy`. + * + * @name Adapter#destroy + * @method + * @param {Object} mapper The mapper. + * @param {(string|number)} id Primary key of the record to destroy. + * @param {Object} [opts] Configuration options. + * @param {boolean} [opts.raw=false] Whether to return a more detailed + * response object. + * @return {Promise} + */ + destroy: function destroy(mapper, id, opts) { + var self = this; + var op = void 0; + opts || (opts = {}); + + // beforeDestroy lifecycle hook + op = opts.op = 'beforeDestroy'; + return resolve(self[op](mapper, id, opts)).then(function () { + op = opts.op = 'destroy'; + self.dbg(op, mapper, id, opts); + return resolve(self._destroy(mapper, id, opts)); + }).then(function (results) { + var _results3 = babelHelpers.slicedToArray(results, 2); + + var data = _results3[0]; + var result = _results3[1]; + + result || (result = {}); + var response = new Response(data, result, 'destroy'); + response = self.respond(response, opts); + + // afterDestroy lifecycle hook + op = opts.op = 'afterDestroy'; + return resolve(self[op](mapper, id, opts, response)).then(function (_response) { + // Allow for re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; + }); + }); + }, + + + /** + * Destroy the records that match the selection query. Called by + * `Mapper#destroyAll`. + * + * @name Adapter#destroyAll + * @method + * @param {Object} mapper the mapper. + * @param {Object} [query] Selection query. + * @param {Object} [query.where] Filtering criteria. + * @param {string|Array} [query.orderBy] Sorting criteria. + * @param {string|Array} [query.sort] Same as `query.sort`. + * @param {number} [query.limit] Limit results. + * @param {number} [query.skip] Offset results. + * @param {number} [query.offset] Same as `query.skip`. + * @param {Object} [opts] Configuration options. + * @param {boolean} [opts.raw=false] Whether to return a more detailed + * response object. + * @return {Promise} + */ + destroyAll: function destroyAll(mapper, query, opts) { + var self = this; + var op = void 0; + query || (query = {}); + opts || (opts = {}); + + // beforeDestroyAll lifecycle hook + op = opts.op = 'beforeDestroyAll'; + return resolve(self[op](mapper, query, opts)).then(function () { + op = opts.op = 'destroyAll'; + self.dbg(op, mapper, query, opts); + return resolve(self._destroyAll(mapper, query, opts)); + }).then(function (results) { + var _results4 = babelHelpers.slicedToArray(results, 2); + + var data = _results4[0]; + var result = _results4[1]; + + result || (result = {}); + var response = new Response(data, result, 'destroyAll'); + response = self.respond(response, opts); + + // afterDestroyAll lifecycle hook + op = opts.op = 'afterDestroyAll'; + return resolve(self[op](mapper, query, opts, response)).then(function (_response) { + // Allow for re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; + }); + }); + }, + + + /** + * Return the foreignKey from the given record for the provided relationship. + * + * There may be reasons why you may want to override this method, like when + * the id of the parent doesn't exactly match up to the key on the child. + * + * Override with care. + * + * @name Adapter#makeHasManyForeignKey + * @method + * @return {*} + */ + makeHasManyForeignKey: function makeHasManyForeignKey(mapper, def, record) { + return def.getForeignKey(record); + }, + + + /** + * Return the localKeys from the given record for the provided relationship. + * + * Override with care. + * + * @name Adapter#makeHasManyLocalKeys + * @method + * @return {*} + */ + makeHasManyLocalKeys: function makeHasManyLocalKeys(mapper, def, record) { + var localKeys = []; + var itemKeys = get(record, def.localKeys) || []; + itemKeys = isArray(itemKeys) ? itemKeys : Object.keys(itemKeys); + localKeys = localKeys.concat(itemKeys); + return unique(localKeys).filter(function (x) { + return x; + }); + }, + + + /** + * Return the foreignKeys from the given record for the provided relationship. + * + * Override with care. + * + * @name Adapter#makeHasManyForeignKeys + * @method + * @return {*} + */ + makeHasManyForeignKeys: function makeHasManyForeignKeys(mapper, def, record) { + return get(record, mapper.idAttribute); + }, + + + /** + * Load a hasMany relationship. + * + * Override with care. + * + * @name Adapter#loadHasMany + * @method + * @return {Promise} + */ + loadHasMany: function loadHasMany(mapper, def, records, __opts) { + var self = this; + var singular = false; + + if (isObject(records) && !isArray(records)) { + singular = true; + records = [records]; + } + var IDs = records.map(function (record) { + return self.makeHasManyForeignKey(mapper, def, record); + }); + var query = { + where: {} + }; + var criteria = query.where[def.foreignKey] = {}; + if (singular) { + // more efficient query when we only have one record + criteria['=='] = IDs[0]; + } else { + criteria['in'] = IDs.filter(function (id) { + return id; + }); + } + return self.findAll(def.getRelation(), query, __opts).then(function (relatedItems) { + records.forEach(function (record) { + var attached = []; + // avoid unneccesary iteration when we only have one record + if (singular) { + attached = relatedItems; + } else { + relatedItems.forEach(function (relatedItem) { + if (get(relatedItem, def.foreignKey) === record[mapper.idAttribute]) { + attached.push(relatedItem); + } + }); + } + def.setLocalField(record, attached); + }); + }); + }, + loadHasManyLocalKeys: function loadHasManyLocalKeys(mapper, def, records, __opts) { + var self = this; + var record = void 0; + var relatedMapper = def.getRelation(); + + if (isObject(records) && !isArray(records)) { + record = records; + } + + if (record) { + return self.findAll(relatedMapper, { + where: babelHelpers.defineProperty({}, relatedMapper.idAttribute, { + 'in': self.makeHasManyLocalKeys(mapper, def, record) + }) + }, __opts).then(function (relatedItems) { + def.setLocalField(record, relatedItems); + }); + } else { + var _ret = function () { + var localKeys = []; + records.forEach(function (record) { + localKeys = localKeys.concat(self.self.makeHasManyLocalKeys(mapper, def, record)); + }); + return { + v: self.findAll(relatedMapper, { + where: babelHelpers.defineProperty({}, relatedMapper.idAttribute, { + 'in': unique(localKeys).filter(function (x) { + return x; + }) + }) + }, __opts).then(function (relatedItems) { + records.forEach(function (item) { + var attached = []; + var itemKeys = get(item, def.localKeys) || []; + itemKeys = isArray(itemKeys) ? itemKeys : Object.keys(itemKeys); + relatedItems.forEach(function (relatedItem) { + if (itemKeys && itemKeys.indexOf(relatedItem[relatedMapper.idAttribute]) !== -1) { + attached.push(relatedItem); + } + }); + def.setLocalField(item, attached); + }); + return relatedItems; + }) + }; + }(); + + if ((typeof _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === "object") return _ret.v; + } + }, + loadHasManyForeignKeys: function loadHasManyForeignKeys(mapper, def, records, __opts) { + var self = this; + var relatedMapper = def.getRelation(); + var idAttribute = mapper.idAttribute; + var record = void 0; + + if (isObject(records) && !isArray(records)) { + record = records; + } + + if (record) { + return self.findAll(def.getRelation(), { + where: babelHelpers.defineProperty({}, def.foreignKeys, { + 'contains': self.makeHasManyForeignKeys(mapper, def, record) + }) + }, __opts).then(function (relatedItems) { + def.setLocalField(record, relatedItems); + }); + } else { + return self.findAll(relatedMapper, { + where: babelHelpers.defineProperty({}, def.foreignKeys, { + 'isectNotEmpty': records.map(function (record) { + return self.makeHasManyForeignKeys(mapper, def, record); + }) + }) + }, __opts).then(function (relatedItems) { + var foreignKeysField = def.foreignKeys; + records.forEach(function (record) { + var _relatedItems = []; + var id = get(record, idAttribute); + relatedItems.forEach(function (relatedItem) { + var foreignKeys = get(relatedItems, foreignKeysField) || []; + if (foreignKeys.indexOf(id) !== -1) { + _relatedItems.push(relatedItem); + } + }); + def.setLocalField(record, _relatedItems); + }); + }); + } + }, + + + /** + * Load a hasOne relationship. + * + * Override with care. + * + * @name Adapter#loadHasOne + * @method + * @return {Promise} + */ + loadHasOne: function loadHasOne(mapper, def, records, __opts) { + if (isObject(records) && !isArray(records)) { + records = [records]; + } + return this.loadHasMany(mapper, def, records, __opts).then(function () { + records.forEach(function (record) { + var relatedData = def.getLocalField(record); + if (isArray(relatedData) && relatedData.length) { + def.setLocalField(record, relatedData[0]); + } + }); + }); + }, + + + /** + * Return the foreignKey from the given record for the provided relationship. + * + * Override with care. + * + * @name Adapter#makeBelongsToForeignKey + * @method + * @return {*} + */ + makeBelongsToForeignKey: function makeBelongsToForeignKey(mapper, def, record) { + return def.getForeignKey(record); + }, + + + /** + * Load a belongsTo relationship. + * + * Override with care. + * + * @name Adapter#loadBelongsTo + * @method + * @return {Promise} + */ + loadBelongsTo: function loadBelongsTo(mapper, def, records, __opts) { + var self = this; + var relationDef = def.getRelation(); + + if (isObject(records) && !isArray(records)) { + var _ret2 = function () { + var record = records; + return { + v: self.find(relationDef, self.makeBelongsToForeignKey(mapper, def, record), __opts).then(function (relatedItem) { + def.setLocalField(record, relatedItem); + }) + }; + }(); + + if ((typeof _ret2 === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret2)) === "object") return _ret2.v; + } else { + var keys = records.map(function (record) { + return self.makeBelongsToForeignKey(mapper, def, record); + }).filter(function (key) { + return key; + }); + return self.findAll(relationDef, { + where: babelHelpers.defineProperty({}, relationDef.idAttribute, { + 'in': keys + }) + }, __opts).then(function (relatedItems) { + records.forEach(function (record) { + relatedItems.forEach(function (relatedItem) { + if (relatedItem[relationDef.idAttribute] === record[def.foreignKey]) { + def.setLocalField(record, relatedItem); + } + }); + }); + }); + } + }, + + + /** + * Retrieve the record with the given primary key. Called by `Mapper#find`. + * + * @name Adapter#find + * @method + * @param {Object} mapper The mapper. + * @param {(string|number)} id Primary key of the record to retrieve. + * @param {Object} [opts] Configuration options. + * @param {boolean} [opts.raw=false] Whether to return a more detailed + * response object. + * @param {string[]} [opts.with=[]] Relations to eager load. + * @return {Promise} + */ + find: function find(mapper, id, opts) { + var self = this; + var record = void 0, + op = void 0; + opts || (opts = {}); + opts.with || (opts.with = []); + + // beforeFind lifecycle hook + op = opts.op = 'beforeFind'; + return resolve(self[op](mapper, id, opts)).then(function () { + op = opts.op = 'find'; + self.dbg(op, mapper, id, opts); + return resolve(self._find(mapper, id, opts)); + }).then(function (results) { + var _results5 = babelHelpers.slicedToArray(results, 1); + + var _record = _results5[0]; + + if (!_record) { + return; + } + record = _record; + var tasks = []; + + forEachRelation(mapper, opts, function (def, __opts) { + var task = void 0; + if (def.foreignKey && (def.type === 'hasOne' || def.type === 'hasMany')) { + if (def.type === 'hasOne') { + task = self.loadHasOne(mapper, def, record, __opts); + } else { + task = self.loadHasMany(mapper, def, record, __opts); + } + } else if (def.type === 'hasMany' && def.localKeys) { + task = self.loadHasManyLocalKeys(mapper, def, record, __opts); + } else if (def.type === 'hasMany' && def.foreignKeys) { + task = self.loadHasManyForeignKeys(mapper, def, record, __opts); + } else if (def.type === 'belongsTo') { + task = self.loadBelongsTo(mapper, def, record, __opts); + } + if (task) { + tasks.push(task); + } + }); + + return Promise.all(tasks); + }).then(function () { + var response = new Response(record, {}, 'find'); + response.found = record ? 1 : 0; + response = self.respond(response, opts); + + // afterFind lifecycle hook + op = opts.op = 'afterFind'; + return resolve(self[op](mapper, id, opts, response)).then(function (_response) { + // Allow for re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; + }); + }); + }, + + + /** + * Retrieve the records that match the selection query. + * + * @name Adapter#findAll + * @method + * @param {Object} mapper The mapper. + * @param {Object} [query] Selection query. + * @param {Object} [query.where] Filtering criteria. + * @param {string|Array} [query.orderBy] Sorting criteria. + * @param {string|Array} [query.sort] Same as `query.sort`. + * @param {number} [query.limit] Limit results. + * @param {number} [query.skip] Offset results. + * @param {number} [query.offset] Same as `query.skip`. + * @param {Object} [opts] Configuration options. + * @param {boolean} [opts.raw=false] Whether to return a more detailed + * response object. + * @param {string[]} [opts.with=[]] Relations to eager load. + * @return {Promise} + */ + findAll: function findAll(mapper, query, opts) { + var self = this; + opts || (opts = {}); + opts.with || (opts.with = []); + + var records = []; + var op = void 0; + var activeWith = opts._activeWith; + + if (isObject(activeWith)) { + var activeQuery = activeWith.query || {}; + if (activeWith.replace) { + query = activeQuery; + } else { + deepFillIn(query, activeQuery); + } + } + + // beforeFindAll lifecycle hook + op = opts.op = 'beforeFindAll'; + return resolve(self[op](mapper, query, opts)).then(function () { + op = opts.op = 'findAll'; + self.dbg(op, mapper, query, opts); + return resolve(self._findAll(mapper, query, opts)); + }).then(function (results) { + var _results6 = babelHelpers.slicedToArray(results, 1); + + var _records = _results6[0]; + + _records || (_records = []); + records = _records; + var tasks = []; + forEachRelation(mapper, opts, function (def, __opts) { + var task = void 0; + if (def.foreignKey && (def.type === 'hasOne' || def.type === 'hasMany')) { + if (def.type === 'hasMany') { + task = self.loadHasMany(mapper, def, records, __opts); + } else { + task = self.loadHasOne(mapper, def, records, __opts); + } + } else if (def.type === 'hasMany' && def.localKeys) { + task = self.loadHasManyLocalKeys(mapper, def, records, __opts); + } else if (def.type === 'hasMany' && def.foreignKeys) { + task = self.loadHasManyForeignKeys(mapper, def, records, __opts); + } else if (def.type === 'belongsTo') { + task = self.loadBelongsTo(mapper, def, records, __opts); + } + if (task) { + tasks.push(task); + } + }); + return Promise.all(tasks); + }).then(function () { + var response = new Response(records, {}, 'findAll'); + response.found = records.length; + response = self.respond(response, opts); + + // afterFindAll lifecycle hook + op = opts.op = 'afterFindAll'; + return resolve(self[op](mapper, query, opts, response)).then(function (_response) { + // Allow for re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; + }); + }); + }, + + + /** + * Resolve the value of the specified option based on the given options and + * this adapter's settings. Override with care. + * + * @name Adapter#getOpt + * @method + * @param {string} opt The name of the option. + * @param {Object} [opts] Configuration options. + * @return {*} The value of the specified option. + */ + getOpt: function getOpt(opt, opts) { + opts || (opts = {}); + return isUndefined(opts[opt]) ? plainCopy(this[opt]) : plainCopy(opts[opt]); + }, + + + /** + * Logging utility method. Override this method if you want to send log + * messages to something other than the console. + * + * @name Adapter#log + * @method + * @param {string} level Log level. + * @param {...*} values Values to log. + */ + log: function log(level) { + for (var _len4 = arguments.length, args = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) { + args[_key4 - 1] = arguments[_key4]; + } + + if (level && !args.length) { + args.push(level); + level = 'debug'; + } + if (level === 'debug' && !this.debug) { + return; + } + var prefix = level.toUpperCase() + ': (Adapter)'; + if (console[level]) { + var _console; + + (_console = console)[level].apply(_console, [prefix].concat(args)); + } else { + var _console2; + + (_console2 = console).log.apply(_console2, [prefix].concat(args)); + } + }, + + + /** + * @name Adapter#respond + * @method + * @param {Object} response Response object. + * @param {Object} opts Configuration options. + * return {Object} If `opts.raw == true` then return `response`, else return + * `response.data`. + */ + respond: function respond(response, opts) { + return this.getOpt('raw', opts) ? response : response.data; + }, + + + /** + * Apply the given update to the record with the specified primary key. Called + * by `Mapper#update`. + * + * @name Adapter#update + * @method + * @param {Object} mapper The mapper. + * @param {(string|number)} id The primary key of the record to be updated. + * @param {Object} props The update to apply to the record. + * @param {Object} [opts] Configuration options. + * @param {boolean} [opts.raw=false] Whether to return a more detailed + * response object. + * @return {Promise} + */ + update: function update(mapper, id, props, opts) { + var self = this; + props || (props = {}); + opts || (opts = {}); + var op = void 0; + + // beforeUpdate lifecycle hook + op = opts.op = 'beforeUpdate'; + return resolve(self[op](mapper, id, props, opts)).then(function (_props) { + // Allow for re-assignment from lifecycle hook + props = isUndefined(_props) ? props : _props; + op = opts.op = 'update'; + self.dbg(op, mapper, id, props, opts); + return resolve(self._update(mapper, id, props, opts)); + }).then(function (results) { + var _results7 = babelHelpers.slicedToArray(results, 2); + + var data = _results7[0]; + var result = _results7[1]; + + result || (result = {}); + var response = new Response(data, result, 'update'); + response.updated = data ? 1 : 0; + response = self.respond(response, opts); + + // afterUpdate lifecycle hook + op = opts.op = 'afterUpdate'; + return resolve(self[op](mapper, id, props, opts, response)).then(function (_response) { + // Allow for re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; + }); + }); + }, + + + /** + * Apply the given update to all records that match the selection query. + * Called by `Mapper#updateAll`. + * + * @name Adapter#updateAll + * @method + * @param {Object} mapper The mapper. + * @param {Object} props The update to apply to the selected records. + * @param {Object} [query] Selection query. + * @param {Object} [query.where] Filtering criteria. + * @param {string|Array} [query.orderBy] Sorting criteria. + * @param {string|Array} [query.sort] Same as `query.sort`. + * @param {number} [query.limit] Limit results. + * @param {number} [query.skip] Offset results. + * @param {number} [query.offset] Same as `query.skip`. + * @param {Object} [opts] Configuration options. + * @param {boolean} [opts.raw=false] Whether to return a more detailed + * response object. + * @return {Promise} + */ + updateAll: function updateAll(mapper, props, query, opts) { + var self = this; + props || (props = {}); + query || (query = {}); + opts || (opts = {}); + var op = void 0; + + // beforeUpdateAll lifecycle hook + op = opts.op = 'beforeUpdateAll'; + return resolve(self[op](mapper, props, query, opts)).then(function (_props) { + // Allow for re-assignment from lifecycle hook + props = isUndefined(_props) ? props : _props; + op = opts.op = 'updateAll'; + self.dbg(op, mapper, props, query, opts); + return resolve(self._updateAll(mapper, props, query, opts)); + }).then(function (results) { + var _results8 = babelHelpers.slicedToArray(results, 2); + + var data = _results8[0]; + var result = _results8[1]; + + data || (data = []); + result || (result = {}); + var response = new Response(data, result, 'updateAll'); + response.updated = data.length; + response = self.respond(response, opts); + + // afterUpdateAll lifecycle hook + op = opts.op = 'afterUpdateAll'; + return resolve(self[op](mapper, props, query, opts, response)).then(function (_response) { + // Allow for re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; + }); + }); + }, + + + /** + * Update the given records in a single batch. Called by `Mapper#updateMany`. + * + * @name Adapter#updateMany + * @method + * @param {Object} mapper The mapper. + * @param {Object[]} records The records to update. + * @param {Object} [opts] Configuration options. + * @param {boolean} [opts.raw=false] Whether to return a more detailed + * response object. + * @return {Promise} + */ + updateMany: function updateMany(mapper, records, opts) { + var self = this; + records || (records = []); + opts || (opts = {}); + var op = void 0; + var idAttribute = mapper.idAttribute; + + records = records.filter(function (record) { + return get(record, idAttribute); + }); + + // beforeUpdateMany lifecycle hook + op = opts.op = 'beforeUpdateMany'; + return resolve(self[op](mapper, records, opts)).then(function (_records) { + // Allow for re-assignment from lifecycle hook + records = isUndefined(_records) ? records : _records; + records = records.map(function (record) { + return withoutRelations(mapper, record); + }); + op = opts.op = 'updateMany'; + self.dbg(op, mapper, records, opts); + return resolve(self._updateMany(mapper, records, opts)); + }).then(function (results) { + var _results9 = babelHelpers.slicedToArray(results, 2); + + var data = _results9[0]; + var result = _results9[1]; + + data || (data = []); + result || (result = {}); + var response = new Response(data, result, 'updateMany'); + response.updated = data.length; + response = self.respond(response, opts); + + // afterUpdateMany lifecycle hook + op = opts.op = 'afterUpdateMany'; + return resolve(self[op](mapper, records, opts, response)).then(function (_response) { + // Allow for re-assignment from lifecycle hook + return isUndefined(_response) ? response : _response; + }); + }); + } + }); + + module.exports = Adapter; + + })); + //# sourceMappingURL=js-data-adapter.js.map + +/***/ }, +/* 3 */ /***/ function(module, exports) { - module.exports = __WEBPACK_EXTERNAL_MODULE_2__; + module.exports = __WEBPACK_EXTERNAL_MODULE_3__; /***/ } /******/ ]) diff --git a/node/dist/js-data-http-node.js.map b/node/dist/js-data-http-node.js.map index 0ecf2de..2c658b8 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 12a4cf5e19962b949fc7","webpack:///./src/index.js","webpack:///external \"js-data\"","webpack:///external \"axios\""],"names":[],"mappings":"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","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_2__) {\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 12a4cf5e19962b949fc7\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nconst {\n _,\n addHiddenPropsToTarget,\n copy,\n deepMixIn,\n extend,\n fillIn,\n forOwn,\n get,\n isArray,\n isFunction,\n isNumber,\n isObject,\n isSorN,\n isString,\n isUndefined,\n resolve,\n reject,\n toJson\n} = utils\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 forOwn(params, function (val, key) {\n if (val === null || typeof val === 'undefined') {\n return\n }\n if (!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 (isObject(v)) {\n v = 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 noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n}\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#debug\n * @type {boolean}\n * @default false\n */\n debug: false,\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 * @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\n // Default values for arguments\n opts || (opts = {})\n\n fillIn(self, opts)\n fillIn(self, DEFAULTS)\n}\n\naddHiddenPropsToTarget(HttpAdapter.prototype, {\n /**\n * @name HttpAdapter#afterCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreate: noop2,\n\n /**\n * @name HttpAdapter#afterCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterCreateMany: noop2,\n\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#afterDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroy: noop2,\n\n /**\n * @name HttpAdapter#afterDestroyAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterDestroyAll: noop2,\n\n /**\n * @name HttpAdapter#afterFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFind: noop2,\n\n /**\n * @name HttpAdapter#afterFindAll\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n * @param {Object} data\n */\n afterFindAll: 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#afterUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdate: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateAll: noop2,\n\n /**\n * @name HttpAdapter#afterUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n * @param {Object} data\n */\n afterUpdateMany: noop2,\n\n /**\n * @name HttpAdapter#beforeCreate\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} opts\n */\n beforeCreate: noop,\n\n /**\n * @name HttpAdapter#beforeCreateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeCreateMany: noop,\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#beforeDestroy\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeDestroy: noop,\n\n /**\n * @name HttpAdapter#beforeDestroyAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeDestroyAll: noop,\n\n /**\n * @name HttpAdapter#beforeFind\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} opts\n */\n beforeFind: noop,\n\n /**\n * @name HttpAdapter#beforeFindAll\n * @method\n * @param {Object} mapper\n * @param {Object} query\n * @param {Object} opts\n */\n beforeFindAll: 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 /**\n * @name HttpAdapter#beforeUpdate\n * @method\n * @param {Object} mapper\n * @param {(string|number)} id\n * @param {Object} props\n * @param {Object} opts\n */\n beforeUpdate: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateAll\n * @method\n * @param {Object} mapper\n * @param {Object} props\n * @param {Object} query\n * @param {Object} opts\n */\n beforeUpdateAll: noop,\n\n /**\n * @name HttpAdapter#beforeUpdateMany\n * @method\n * @param {Object} mapper\n * @param {Object} records\n * @param {Object} opts\n */\n beforeUpdateMany: noop,\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreate lifecycle hook\n op = opts.op = 'beforeCreate'\n return resolve(self[op](mapper, props, opts)).then(function () {\n op = opts.op = 'create'\n self.dbg(op, mapper, props, opts)\n return self.POST(\n self.getPath('create', mapper, props, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreate lifecycle hook\n op = opts.op = 'afterCreate'\n return resolve(self[op](mapper, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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} 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 createMany (mapper, records, opts) {\n const self = this\n let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeCreateMany lifecycle hook\n op = opts.op = 'beforeCreateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'createMany'\n self.dbg(op, mapper, records, opts)\n return self.POST(\n self.getPath('createMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterCreateMany lifecycle hook\n op = opts.op = 'afterCreateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n },\n\n /**\n * Call {@link HttpAdapter#log} at the \"debug\" level.\n *\n * @name HttpAdapter#dbg\n * @method\n * @param {...*} [args] Args passed to {@link HttpAdapter#log}.\n */\n dbg (...args) {\n this.log('debug', ...args)\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.deserialize)) {\n return opts.deserialize(mapper, response, opts)\n }\n if (isFunction(mapper.deserialize)) {\n return mapper.deserialize(mapper, response, opts)\n }\n if (opts.raw) {\n return response\n }\n return response ? ('data' in response ? response.data : response) : 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroy lifecycle hook\n op = opts.op = 'beforeDestroy'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy'\n self.dbg(op, mapper, id, opts)\n return self.DEL(\n self.getPath('destroy', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroy lifecycle hook\n op = opts.op = 'afterDestroy'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeDestroyAll lifecycle hook\n op = opts.op = 'beforeDestroyAll'\n return resolve(self.beforeDestroyAll(mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll'\n self.dbg(op, mapper, query, opts)\n return self.DEL(\n self.getPath('destroyAll', mapper, null, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 = 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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeFind lifecycle hook\n op = opts.op = 'beforeFind'\n return resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find'\n self.dbg(op, mapper, id, opts)\n return self.GET(\n self.getPath('find', mapper, id, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFind lifecycle hook\n op = opts.op = 'afterFind'\n return resolve(self[op](mapper, id, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll'\n return resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll'\n self.dbg(op, mapper, query, opts)\n return self.GET(\n self.getPath('findAll', mapper, opts.params, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterFindAll lifecycle hook\n op = opts.op = 'afterFindAll'\n return resolve(self[op](mapper, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 || (opts.params = {})\n const relationList = mapper.relationList || []\n let endpoint = isUndefined(opts.endpoint) ? (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 (isObject(id)) {\n item = id\n }\n\n if (item) {\n parentId = parentId || def.getForeignKey(item) || (def.getLocalField(item) ? get(def.getLocalField(item), parentDef.idAttribute) : null)\n }\n\n if (parentId) {\n delete opts.endpoint\n const _opts = {}\n forOwn(opts, function (value, key) {\n _opts[key] = value\n })\n _(_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 isUndefined(opts.basePath) ? (isUndefined(mapper.basePath) ? self.basePath : mapper.basePath) : opts.basePath,\n self.getEndpoint(mapper, (isString(id) || 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 /**\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 = copy(config, null, null, null, ['data', 'cache', 'timeout'])\n config = 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 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 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 resolve(self.afterHTTP(config, opts, response)).then(function (_response) {\n return _response || response\n })\n })\n },\n\n /**\n * Log the provided arguments at the specified leve.\n *\n * @name HttpAdapter#log\n * @method\n * @param {string} level Log level.\n * @param {...*} [args] Arguments to log.\n */\n log (level, ...args) {\n if (level && !args.length) {\n args.push(level)\n level = 'debug'\n }\n if (level === 'debug' && !this.debug) {\n return\n }\n const prefix = `${level.toUpperCase()}: (HttpAdapter)`\n if (console[level]) {\n console[level](prefix, ...args)\n } else {\n console.log(prefix, ...args)\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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.queryTransform)) {\n return opts.queryTransform(mapper, params, opts)\n }\n if (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 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 (isFunction(opts.serialize)) {\n return opts.serialize(mapper, data, opts)\n }\n if (isFunction(mapper.serialize)) {\n return mapper.serialize(mapper, data, opts)\n }\n return data\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdate lifecycle hook\n op = opts.op = 'beforeUpdate'\n return resolve(self[op](mapper, id, props, opts)).then(function () {\n op = opts.op = 'update'\n self.dbg(op, mapper, id, props, opts)\n return self.PUT(\n self.getPath('update', mapper, id, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdate lifecycle hook\n op = opts.op = 'afterUpdate'\n return resolve(self[op](mapper, id, props, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n query || (query = {})\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n deepMixIn(opts.params, query)\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateAll lifecycle hook\n op = opts.op = 'beforeUpdateAll'\n return resolve(self[op](mapper, props, query, opts)).then(function () {\n op = opts.op = 'updateAll'\n self.dbg(op, mapper, props, query, opts)\n return self.PUT(\n self.getPath('updateAll', mapper, null, opts),\n self.serialize(mapper, props, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateAll lifecycle hook\n op = opts.op = 'afterUpdateAll'\n return resolve(self[op](mapper, props, query, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\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 let op\n opts = opts ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.params = self.queryTransform(mapper, opts.params, opts)\n opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany'\n return resolve(self[op](mapper, records, opts)).then(function () {\n op = opts.op = 'updateMany'\n self.dbg(op, mapper, records, opts)\n return self.PUT(\n self.getPath('updateMany', mapper, null, opts),\n self.serialize(mapper, records, opts),\n opts\n )\n }).then(function (response) {\n return self.deserialize(mapper, response, opts)\n }).then(function (data) {\n // afterUpdateMany lifecycle hook\n op = opts.op = 'afterUpdateMany'\n return resolve(self[op](mapper, records, opts, data)).then(function (_data) {\n // Allow re-assignment from lifecycle hook\n return isUndefined(_data) ? data : _data\n })\n })\n }\n})\n\n/**\n * Add an Http actions to a mapper.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.addAction = function (name, opts) {\n if (!name || !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 reject(err) }\n mapper[name] = function (id, _opts) {\n const self = this\n if (isObject(id)) {\n _opts = id\n }\n _opts = _opts || {}\n let adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http')\n let config = {}\n 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, isSorN(id) ? id : null, _opts)\n ]\n if (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 deepMixIn(config)(_opts)\n return 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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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 = extend\n\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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 **/","module.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"axios\"\n ** module id = 2\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 78e84a8e31491c279a63","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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O;AACP;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;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,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;;AAEA;;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,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,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;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;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,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;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;;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;AACA,iBAAgB;AAChB;AACA;AACA;AACA,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,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,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,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,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;;AAEA,EAAC;AACD,4C;;;;;;AC36CA,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 78e84a8e31491c279a63\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nimport Adapter from 'js-data-adapter'\n\nconst {\n _,\n addHiddenPropsToTarget,\n copy,\n deepMixIn,\n extend,\n fillIn,\n forOwn,\n get,\n isArray,\n isFunction,\n isNumber,\n isObject,\n isSorN,\n isString,\n isUndefined,\n resolve,\n reject,\n toJson\n} = utils\n\nlet hasFetch = false\n\ntry {\n hasFetch = window && window.fetch\n} catch (e) {}\n\nconst noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n return resolve()\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n return resolve()\n}\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 forOwn(params, function (val, key) {\n if (val === null || typeof val === 'undefined') {\n return\n }\n if (!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 (isObject(v)) {\n v = 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 * @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 fillIn(opts, DEFAULTS)\n Adapter.call(self, opts)\n}\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\naddHiddenPropsToTarget(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 _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.data, 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 _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 * 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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.deserialize)) {\n return opts.deserialize(mapper, response, opts)\n }\n if (isFunction(mapper.deserialize)) {\n return mapper.deserialize(mapper, response, opts)\n }\n if (response) {\n if (response.hasOwnProperty('data')) {\n return response.data\n }\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\n 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 = 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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.suffix = self.getSuffix(mapper, opts)\n 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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 || (opts.params = {})\n const relationList = mapper.relationList || []\n let endpoint = isUndefined(opts.endpoint) ? (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 (isObject(id)) {\n item = id\n }\n\n if (item) {\n parentId = parentId || def.getForeignKey(item) || (def.getLocalField(item) ? get(def.getLocalField(item), parentDef.idAttribute) : null)\n }\n\n if (parentId) {\n delete opts.endpoint\n const _opts = {}\n forOwn(opts, function (value, key) {\n _opts[key] = value\n })\n _(_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 isUndefined(opts.basePath) ? (isUndefined(mapper.basePath) ? self.basePath : mapper.basePath) : opts.basePath,\n self.getEndpoint(mapper, (isString(id) || 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 getSuffix (mapper, opts) {\n opts || (opts = {})\n if (isUndefined(opts.suffix)) {\n if (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 = copy(config, null, null, null, ['data', 'cache', 'timeout'])\n config = 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 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 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 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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.queryTransform)) {\n return opts.queryTransform(mapper, params, opts)\n }\n if (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 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 (isFunction(opts.serialize)) {\n return opts.serialize(mapper, data, opts)\n }\n if (isFunction(mapper.serialize)) {\n return mapper.serialize(mapper, data, opts)\n }\n return data\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\n 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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 HttpAdapter.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 */\nHttpAdapter.addAction = function (name, opts) {\n if (!name || !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 reject(err) }\n mapper[name] = function (id, _opts) {\n const self = this\n if (isObject(id)) {\n _opts = id\n }\n _opts = _opts || {}\n let adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http')\n let config = {}\n 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, isSorN(id) ? id : null, _opts)\n ]\n if (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 deepMixIn(config)(_opts)\n return 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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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 = extend\n\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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(require('js-data')) :\n typeof define === 'function' && define.amd ? define('js-data-adapter', ['js-data'], factory) :\n (factory(global.JSData));\n}(this, function (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 addHiddenPropsToTarget = jsData.utils.addHiddenPropsToTarget;\n var deepFillIn = jsData.utils.deepFillIn;\n var extend = jsData.utils.extend;\n var fillIn = jsData.utils.fillIn;\n var forEachRelation = jsData.utils.forEachRelation;\n var get = jsData.utils.get;\n var isArray = jsData.utils.isArray;\n var isObject = jsData.utils.isObject;\n var isUndefined = jsData.utils.isUndefined;\n var omit = jsData.utils.omit;\n var plainCopy = jsData.utils.plainCopy;\n var resolve = jsData.utils.resolve;\n\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 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 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 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 fillIn(opts, DEFAULTS);\n fillIn(self, opts);\n }\n\n Adapter.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 * @typedef {Object} Response\n * @property {Object} data Response data.\n * @property {string} op The operation for which the response was created.\n */\n function Response(data, meta, op) {\n var self = this;\n meta || (meta = {});\n self.data = data;\n fillIn(self, meta);\n self.op = op;\n }\n\n Adapter.Response = Response;\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 = extend;\n\n addHiddenPropsToTarget(Adapter.prototype, {\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 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 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 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 * 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 resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n props = withoutRelations(mapper, props);\n op = opts.op = 'create';\n self.dbg(op, mapper, props, opts);\n return resolve(self._create(mapper, props, 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, '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 resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = 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 resolve(self._createMany(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 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 resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy';\n self.dbg(op, mapper, id, opts);\n return resolve(self._destroy(mapper, id, 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 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 resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll';\n self.dbg(op, mapper, query, opts);\n return resolve(self._destroyAll(mapper, query, 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, 'destroyAll');\n response = self.respond(response, opts);\n\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll';\n return resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return isUndefined(_response) ? response : _response;\n });\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 = get(record, def.localKeys) || [];\n itemKeys = 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 get(record, mapper.idAttribute);\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 (isObject(records) && !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 (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 (isObject(records) && !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 _ret = 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 = get(item, def.localKeys) || [];\n itemKeys = 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 _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === \"object\") return _ret.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 (isObject(records) && !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 = get(record, idAttribute);\n relatedItems.forEach(function (relatedItem) {\n var foreignKeys = 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 (isObject(records) && !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 (isArray(relatedData) && relatedData.length) {\n def.setLocalField(record, relatedData[0]);\n }\n });\n });\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 * 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 (isObject(records) && !isArray(records)) {\n var _ret2 = 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 _ret2 === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret2)) === \"object\") return _ret2.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 resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find';\n self.dbg(op, mapper, id, opts);\n return resolve(self._find(mapper, id, opts));\n }).then(function (results) {\n var _results5 = babelHelpers.slicedToArray(results, 1);\n\n var _record = _results5[0];\n\n if (!_record) {\n return;\n }\n record = _record;\n var tasks = [];\n\n 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 resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 (isObject(activeWith)) {\n var activeQuery = activeWith.query || {};\n if (activeWith.replace) {\n query = activeQuery;\n } else {\n deepFillIn(query, activeQuery);\n }\n }\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll';\n return resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll';\n self.dbg(op, mapper, query, opts);\n return resolve(self._findAll(mapper, query, opts));\n }).then(function (results) {\n var _results6 = babelHelpers.slicedToArray(results, 1);\n\n var _records = _results6[0];\n\n _records || (_records = []);\n records = _records;\n var tasks = [];\n 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 resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 isUndefined(opts[opt]) ? plainCopy(this[opt]) : plainCopy(opts[opt]);\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 * @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 resolve(self[op](mapper, id, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n op = opts.op = 'update';\n self.dbg(op, mapper, id, props, opts);\n return resolve(self._update(mapper, id, props, opts));\n }).then(function (results) {\n var _results7 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results7[0];\n var result = _results7[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 resolve(self[op](mapper, id, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, props, query, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n op = opts.op = 'updateAll';\n self.dbg(op, mapper, props, query, opts);\n return resolve(self._updateAll(mapper, props, 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 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 resolve(self[op](mapper, props, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 get(record, idAttribute);\n });\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany';\n return resolve(self[op](mapper, records, opts)).then(function (_records) {\n // Allow for re-assignment from lifecycle hook\n records = 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 resolve(self._updateMany(mapper, records, 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 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 resolve(self[op](mapper, records, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return isUndefined(_response) ? response : _response;\n });\n });\n }\n });\n\n module.exports = Adapter;\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 diff --git a/node/package.json b/node/package.json index f68d5e4..c1fa59c 100644 --- a/node/package.json +++ b/node/package.json @@ -1,7 +1,7 @@ { "name": "js-data-http-node", "description": "Node.js HTTP adapter for js-data.", - "version": "3.0.0-alpha.6", + "version": "3.0.0-alpha.7", "homepage": "https://github.com/js-data/js-data-http", "repository": { "type": "git", @@ -19,7 +19,10 @@ "node.js" ], "dependencies": { + "js-data-adapter": "^0.2.1" + }, + "peerDependencies": { "axios": "^0.9.1", - "js-data": "^3.0.0-alpha.15" + "js-data": "^3.0.0-alpha.16" } } diff --git a/package.json b/package.json index ccfd67a..2ced04f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "js-data-http", "description": "HTTP (XHR) adapter for js-data in the browser.", - "version": "3.0.0-alpha.6", + "version": "3.0.0-alpha.7", "homepage": "https://github.com/js-data/js-data-http", "repository": { "type": "git", @@ -36,8 +36,8 @@ ] }, "scripts": { - "lint": "standard karma.start.js karma.conf.js src/**/*.js test/*.test.js fetch/karma.*.js node/mocha.start.js", - "doc": "jsdoc -c conf.json src && node scripts/cleanup.js", + "lint": "repo-tools lint karma.start.js karma.conf.js src/**/*.js test/*.test.js fetch/karma.*.js node/mocha.start.js scripts/*.js", + "doc": "jsdoc -c conf.json src node_modules/js-data-adapter/src && node scripts/cleanup.js", "webpack": "webpack --config webpack.config.js && webpack --config node/webpack.config.js && webpack --config fetch/webpack.config.js", "min": "uglifyjs dist/js-data-http.js -o dist/js-data-http.min.js --source-map dist/js-data-http.min.map --source-map-url js-data-http.min.map -v -m -c --screw-ie8", "min_fetch": "uglifyjs fetch/dist/js-data-fetch.js -o fetch/dist/js-data-fetch.min.js --source-map fetch/dist/js-data-fetch.min.map --source-map-url js-data-fetch.min.map -v -m -c --screw-ie8", @@ -51,41 +51,38 @@ "mocha": "mocha -t 20000 -R dot -r source-map-support/register node/mocha.start.js test/*.test.js", "cover": "istanbul cover -x node/dist/js-data-http-node-tests.js --hook-run-in-context node_modules/mocha/bin/_mocha -- -t 20000 -R dot -r source-map-support/register node/mocha.start.js test/*.test.js", "test": "npm run build && npm run karma && npm run karma_fetch && npm run cover", - "release": "npm test && npm run doc && node scripts/authors.js", + "repo-tools": "repo-tools updates && repo-tools changelog && repo-tools authors", + "release": "npm test && npm run doc && npm run repo-tools", "ci": "npm test && cat ./coverage/lcov.info | coveralls || true" }, - "dependencies": { - "js-data": "^3.0.0-alpha.15" + "peerDependencies": { + "js-data": "^3.0.0-alpha.16" }, "devDependencies": { "axios": "0.9.1", "babel-core": "6.7.2", - "babel-eslint": "5.0.0", "babel-loader": "6.2.4", "babel-plugin-syntax-async-functions": "6.5.0", - "babel-plugin-transform-regenerator": "6.5.2", - "babel-polyfill": "6.5.0", + "babel-plugin-transform-regenerator": "6.6.5", + "babel-polyfill": "6.7.2", "babel-preset-es2015": "6.6.0", "babel-preset-stage-0": "6.5.0", "chai": "3.5.0", "coveralls": "2.11.8", - "es6-promise": "3.1.2", - "ink-docstrap": "1.1.2", "istanbul": "0.4.2", + "js-data-adapter": "0.2.1", + "js-data-repo-tools": "0.2.0", "jsdoc": "3.4.0", "karma": "0.13.22", "karma-browserstack-launcher": "0.1.10", "karma-chai": "0.1.0", - "karma-coverage": "0.5.3", "karma-mocha": "0.2.2", "karma-phantomjs-launcher": "1.0.0", "karma-sinon": "1.0.4", "mocha": "2.4.5", - "mout": "0.12.0", "phantomjs-prebuilt": "2.1.5", "sinon": "1.17.3", "source-map-support": "0.4.0", - "standard": "6.0.8", "uglify-js": "2.6.2", "webpack": "1.12.14" } diff --git a/scripts/authors.js b/scripts/authors.js index 975e552..778dc8f 100644 --- a/scripts/authors.js +++ b/scripts/authors.js @@ -1,16 +1,17 @@ var fs = require('fs') var exec = require('child_process').exec +var path = require('path') console.log('Writing AUTHORS file...') -var authorsFile = fs.readFileSync(__dirname + '/AUTHORS', { +var authorsFile = fs.readFileSync(path.join(__dirname, '/AUTHORS'), { encoding: 'utf-8' }) -var contributorsFile = fs.readFileSync(__dirname + '/CONTRIBUTORS', { +var contributorsFile = fs.readFileSync(path.join(__dirname, '/CONTRIBUTORS'), { encoding: 'utf-8' }) -var tty = process.platform === 'win32' ? 'CON' : '/dev/tty'; +var tty = process.platform === 'win32' ? 'CON' : '/dev/tty' exec('git shortlog -s -e < ' + tty, function (err, stdout, stderr) { if (err) { @@ -27,13 +28,13 @@ exec('git shortlog -s -e < ' + tty, function (err, stdout, stderr) { // Add to or otherwise modify "names" if necessary - fs.writeFileSync(__dirname + '/../AUTHORS', authorsFile + names.join('\n'), { + fs.writeFileSync(path.join(__dirname, '/../AUTHORS'), authorsFile + names.join('\n'), { encoding: 'utf-8' }) - fs.writeFileSync(__dirname + '/../fetch/AUTHORS', authorsFile + names.join('\n'), { + fs.writeFileSync(path.join(__dirname, '/../fetch/AUTHORS'), authorsFile + names.join('\n'), { encoding: 'utf-8' }) - fs.writeFileSync(__dirname + '/../node/AUTHORS', authorsFile + names.join('\n'), { + fs.writeFileSync(path.join(__dirname, '/../node/AUTHORS'), authorsFile + names.join('\n'), { encoding: 'utf-8' }) console.log('Done!') @@ -43,13 +44,13 @@ exec('git shortlog -s -e < ' + tty, function (err, stdout, stderr) { // Add to or otherwise modify "names" if necessary - fs.writeFileSync(__dirname + '/../CONTRIBUTORS', contributorsFile + names.join('\n'), { + fs.writeFileSync(path.join(__dirname, '/../CONTRIBUTORS'), contributorsFile + names.join('\n'), { encoding: 'utf-8' }) - fs.writeFileSync(__dirname + '/../fetch/CONTRIBUTORS', contributorsFile + names.join('\n'), { + fs.writeFileSync(path.join(__dirname, '/../fetch/CONTRIBUTORS'), contributorsFile + names.join('\n'), { encoding: 'utf-8' }) - fs.writeFileSync(__dirname + '/../node/CONTRIBUTORS', contributorsFile + names.join('\n'), { + fs.writeFileSync(path.join(__dirname, '/../node/CONTRIBUTORS'), contributorsFile + names.join('\n'), { encoding: 'utf-8' }) console.log('Done!') diff --git a/scripts/banner.js b/scripts/banner.js index a932aca..5493e4e 100644 --- a/scripts/banner.js +++ b/scripts/banner.js @@ -1,5 +1,5 @@ -var fs = require('fs'); -var pkg = require('../package.json'); +var fs = require('fs') +var pkg = require('../package.json') var banner = '/*!\n' + '* js-data-http\n' + @@ -9,22 +9,22 @@ var banner = '/*!\n' + '* @license MIT \n' + '*\n' + '* @overview HTTP adapter for js-data.\n' + - '*/\n'; + '*/\n' -console.log('Adding banner to dist/ files...'); +console.log('Adding banner to dist/ files...') -function addBanner(filepath) { +function addBanner (filepath) { var contents = fs.readFileSync(filepath, { encoding: 'utf-8' - }); + }) if (contents.substr(0, 3) !== '/*!') { fs.writeFileSync(filepath, banner + contents, { encoding: 'utf-8' - }); + }) } } -addBanner('dist/js-data-http.js'); -addBanner('dist/js-data-http.min.js'); +addBanner('dist/js-data-http.js') +addBanner('dist/js-data-http.min.js') -console.log('Done!'); +console.log('Done!') diff --git a/scripts/version.js b/scripts/version.js index 8e11b36..c1452c8 100644 --- a/scripts/version.js +++ b/scripts/version.js @@ -1,41 +1,39 @@ -var fs = require('fs'); -var pkg = require('../package.json'); +var fs = require('fs') +var pkg = require('../package.json') -console.log('Adding version to dist/ files...'); +console.log('Adding version to dist/ files...') -function version(filepath) { +function version (filepath) { var file = fs.readFileSync(filepath, { encoding: 'utf-8' - }); + }) - file = file.replace(/<%= pkg\.version %>/gi, pkg.version); + file = file.replace(/<%= pkg\.version %>/gi, pkg.version) - var parts = pkg.version.split('-'); - var numbers = parts[0].split('.'); + var parts = pkg.version.split('-') + var numbers = parts[0].split('.') - file = file.replace(/<%= major %>/gi, numbers[0]); - file = file.replace(/<%= minor %>/gi, numbers[1]); - file = file.replace(/<%= patch %>/gi, numbers[2]); + file = file.replace(/<%= major %>/gi, numbers[0]) + file = file.replace(/<%= minor %>/gi, numbers[1]) + file = file.replace(/<%= patch %>/gi, numbers[2]) if (pkg.version.indexOf('alpha') !== -1) { - file = file.replace(/<%= alpha %>/gi, parts[1].replace('alpha.', '') + (parts.length > 2 ? '-' + parts[2] : '')); - } - else { - file = file.replace(/<%= alpha %>/gi, false); + file = file.replace(/<%= alpha %>/gi, parts[1].replace('alpha.', '') + (parts.length > 2 ? '-' + parts[2] : '')) + } else { + file = file.replace(/<%= alpha %>/gi, false) } if (pkg.version.indexOf('beta') !== -1) { - file = file.replace(/<%= beta %>/gi, parts[1].replace('beta.', '') + (parts.length > 2 ? '-' + parts[2] : '')); - } - else { - file = file.replace(/<%= beta %>/gi, false); + file = file.replace(/<%= beta %>/gi, parts[1].replace('beta.', '') + (parts.length > 2 ? '-' + parts[2] : '')) + } else { + file = file.replace(/<%= beta %>/gi, false) } fs.writeFileSync(filepath, file, { encoding: 'utf-8' - }); + }) } -version('dist/js-data-http.js'); +version('dist/js-data-http.js') -console.log('Done!'); +console.log('Done!') diff --git a/src/index.js b/src/index.js index f7ec802..4673c1a 100644 --- a/src/index.js +++ b/src/index.js @@ -1,6 +1,8 @@ /* global fetch:true Headers:true Request:true */ const axios = require('axios') import {utils} from 'js-data' +import Adapter from 'js-data-adapter' + const { _, addHiddenPropsToTarget, @@ -28,6 +30,20 @@ try { hasFetch = window && window.fetch } catch (e) {} +const noop = function (...args) { + const self = this + const opts = args[args.length - 1] + self.dbg(opts.op, ...args) + return resolve() +} + +const noop2 = function (...args) { + const self = this + const opts = args[args.length - 2] + self.dbg(opts.op, ...args) + return resolve() +} + function isValidString (value) { return (value != null && value !== '') } @@ -83,17 +99,7 @@ function buildUrl (url, params) { return url } -const noop = function (...args) { - const self = this - const opts = args[args.length - 1] - self.dbg(opts.op, ...args) -} - -const noop2 = function (...args) { - const self = this - const opts = args[args.length - 2] - self.dbg(opts.op, ...args) -} +const __super__ = Adapter.prototype const DEFAULTS = { // Default and user-defined settings @@ -103,13 +109,6 @@ const DEFAULTS = { */ basePath: '', - /** - * @name HttpAdapter#debug - * @type {boolean} - * @default false - */ - debug: false, - /** * @name HttpAdapter#forceTrailingSlash * @type {boolean} @@ -158,35 +157,27 @@ const DEFAULTS = { */ function HttpAdapter (opts) { const self = this - - // Default values for arguments opts || (opts = {}) - - fillIn(self, opts) - fillIn(self, DEFAULTS) + fillIn(opts, DEFAULTS) + Adapter.call(self, opts) } -addHiddenPropsToTarget(HttpAdapter.prototype, { - /** - * @name HttpAdapter#afterCreate - * @method - * @param {Object} mapper - * @param {Object} props - * @param {Object} opts - * @param {Object} data - */ - afterCreate: noop2, +// Setup prototype inheritance from Adapter +HttpAdapter.prototype = Object.create(Adapter.prototype, { + constructor: { + value: HttpAdapter, + enumerable: false, + writable: true, + configurable: true + } +}) - /** - * @name HttpAdapter#afterCreateMany - * @method - * @param {Object} mapper - * @param {Object} records - * @param {Object} opts - * @param {Object} data - */ - afterCreateMany: noop2, +Object.defineProperty(HttpAdapter, '__super__', { + configurable: true, + value: Adapter +}) +addHiddenPropsToTarget(HttpAdapter.prototype, { /** * @name HttpAdapter#afterDEL * @method @@ -197,46 +188,6 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { */ afterDEL: noop2, - /** - * @name HttpAdapter#afterDestroy - * @method - * @param {Object} mapper - * @param {(string|number)} id - * @param {Object} opts - * @param {Object} data - */ - afterDestroy: noop2, - - /** - * @name HttpAdapter#afterDestroyAll - * @method - * @param {Object} mapper - * @param {(string|number)} id - * @param {Object} opts - * @param {Object} data - */ - afterDestroyAll: noop2, - - /** - * @name HttpAdapter#afterFind - * @method - * @param {Object} mapper - * @param {(string|number)} id - * @param {Object} opts - * @param {Object} data - */ - afterFind: noop2, - - /** - * @name HttpAdapter#afterFindAll - * @method - * @param {Object} mapper - * @param {(string|number)} id - * @param {Object} opts - * @param {Object} data - */ - afterFindAll: noop2, - /** * @name HttpAdapter#afterGET * @method @@ -278,56 +229,6 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { */ afterPUT: noop2, - /** - * @name HttpAdapter#afterUpdate - * @method - * @param {Object} mapper - * @param {(string|number)} id - * @param {Object} props - * @param {Object} opts - * @param {Object} data - */ - afterUpdate: noop2, - - /** - * @name HttpAdapter#afterUpdateAll - * @method - * @param {Object} mapper - * @param {Object} props - * @param {Object} query - * @param {Object} opts - * @param {Object} data - */ - afterUpdateAll: noop2, - - /** - * @name HttpAdapter#afterUpdateMany - * @method - * @param {Object} mapper - * @param {Object} records - * @param {Object} opts - * @param {Object} data - */ - afterUpdateMany: noop2, - - /** - * @name HttpAdapter#beforeCreate - * @method - * @param {Object} mapper - * @param {Object} props - * @param {Object} opts - */ - beforeCreate: noop, - - /** - * @name HttpAdapter#beforeCreateMany - * @method - * @param {Object} mapper - * @param {Object} records - * @param {Object} opts - */ - beforeCreateMany: noop, - /** * @name HttpAdapter#beforeDEL * @method @@ -337,42 +238,6 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { */ beforeDEL: noop, - /** - * @name HttpAdapter#beforeDestroy - * @method - * @param {Object} mapper - * @param {(string|number)} id - * @param {Object} opts - */ - beforeDestroy: noop, - - /** - * @name HttpAdapter#beforeDestroyAll - * @method - * @param {Object} mapper - * @param {Object} query - * @param {Object} opts - */ - beforeDestroyAll: noop, - - /** - * @name HttpAdapter#beforeFind - * @method - * @param {Object} mapper - * @param {(string|number)} id - * @param {Object} opts - */ - beforeFind: noop, - - /** - * @name HttpAdapter#beforeFindAll - * @method - * @param {Object} mapper - * @param {Object} query - * @param {Object} opts - */ - beforeFindAll: noop, - /** * @name HttpAdapter#beforeGET * @method @@ -410,34 +275,104 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { */ beforePUT: noop, - /** - * @name HttpAdapter#beforeUpdate - * @method - * @param {Object} mapper - * @param {(string|number)} id - * @param {Object} props - * @param {Object} opts - */ - beforeUpdate: noop, + _create (mapper, props, opts) { + const self = this + return self.POST( + self.getPath('create', mapper, props, opts), + self.serialize(mapper, props, opts), + opts + ).then(function (response) { + return self._end(mapper, opts, response) + }) + }, - /** - * @name HttpAdapter#beforeUpdateAll - * @method - * @param {Object} mapper - * @param {Object} props - * @param {Object} query - * @param {Object} opts - */ - beforeUpdateAll: noop, + _createMany (mapper, props, opts) { + const self = this + return self.POST( + self.getPath('createMany', mapper, null, opts), + self.serialize(mapper, props, opts), + opts + ).then(function (response) { + return self._end(mapper, opts, response) + }) + }, - /** - * @name HttpAdapter#beforeUpdateMany - * @method - * @param {Object} mapper - * @param {Object} records - * @param {Object} opts - */ - beforeUpdateMany: noop, + _destroy (mapper, id, opts) { + const self = this + return self.DEL( + self.getPath('destroy', mapper, id, opts), + opts + ).then(function (response) { + return self._end(mapper, opts, response) + }) + }, + + _destroyAll (mapper, query, opts) { + const self = this + return self.DEL( + self.getPath('destroyAll', mapper, null, opts), + opts + ).then(function (response) { + return self._end(mapper, opts, response) + }) + }, + + _end (mapper, opts, response) { + return [this.deserialize(mapper, response.data, opts), response] + }, + + _find (mapper, id, opts) { + const self = this + return self.GET( + self.getPath('find', mapper, id, opts), + opts + ).then(function (response) { + return self._end(mapper, opts, response) + }) + }, + + _findAll (mapper, query, opts) { + const self = this + return self.GET( + self.getPath('findAll', mapper, opts.params, opts), + opts + ).then(function (response) { + return self._end(mapper, opts, response) + }) + }, + + _update (mapper, id, props, opts) { + const self = this + return self.PUT( + self.getPath('update', mapper, id, opts), + self.serialize(mapper, props, opts), + opts + ).then(function (response) { + return self._end(mapper, opts, response) + }) + }, + + _updateAll (mapper, props, query, opts) { + const self = this + return self.PUT( + self.getPath('updateAll', mapper, null, opts), + self.serialize(mapper, props, opts), + opts + ).then(function (response) { + return self._end(mapper, opts, response) + }) + }, + + _updateMany (mapper, records, opts) { + const self = this + return self.PUT( + self.getPath('updateMany', mapper, null, opts), + self.serialize(mapper, records, opts), + opts + ).then(function (response) { + return self._end(mapper, opts, response) + }) + }, /** * Create a new the record from the provided `props`. @@ -453,32 +388,12 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { */ create (mapper, props, opts) { const self = this - let op opts = opts ? copy(opts) : {} opts.params || (opts.params = {}) opts.params = self.queryTransform(mapper, opts.params, opts) - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix - - // beforeCreate lifecycle hook - op = opts.op = 'beforeCreate' - return resolve(self[op](mapper, props, opts)).then(function () { - op = opts.op = 'create' - self.dbg(op, mapper, props, opts) - return self.POST( - self.getPath('create', mapper, props, opts), - self.serialize(mapper, props, opts), - opts - ) - }).then(function (response) { - return self.deserialize(mapper, response, opts) - }).then(function (data) { - // afterCreate lifecycle hook - op = opts.op = 'afterCreate' - return resolve(self[op](mapper, props, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data - }) - }) + opts.suffix = self.getSuffix(mapper, opts) + + return __super__.create.call(self, mapper, props, opts) }, /** @@ -487,51 +402,20 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { * @name HttpAdapter#createMany * @method * @param {Object} mapper The mapper. - * @param {Array} records Array of property objects to send as the payload. + * @param {Array} props Array of property objects to send as the payload. * @param {Object} [opts] Configuration options. * @param {string} [opts.params] TODO * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO * @return {Promise} */ - createMany (mapper, records, opts) { + createMany (mapper, props, opts) { const self = this - let op opts = opts ? copy(opts) : {} opts.params || (opts.params = {}) opts.params = self.queryTransform(mapper, opts.params, opts) - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix - - // beforeCreateMany lifecycle hook - op = opts.op = 'beforeCreateMany' - return resolve(self[op](mapper, records, opts)).then(function () { - op = opts.op = 'createMany' - self.dbg(op, mapper, records, opts) - return self.POST( - self.getPath('createMany', mapper, null, opts), - self.serialize(mapper, records, opts), - opts - ) - }).then(function (response) { - return self.deserialize(mapper, response, opts) - }).then(function (data) { - // afterCreateMany lifecycle hook - op = opts.op = 'afterCreateMany' - return resolve(self[op](mapper, records, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data - }) - }) - }, + opts.suffix = self.getSuffix(mapper, opts) - /** - * Call {@link HttpAdapter#log} at the "debug" level. - * - * @name HttpAdapter#dbg - * @method - * @param {...*} [args] Args passed to {@link HttpAdapter#log}. - */ - dbg (...args) { - this.log('debug', ...args) + return __super__.createMany.call(self, mapper, props, opts) }, /** @@ -590,10 +474,12 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { if (isFunction(mapper.deserialize)) { return mapper.deserialize(mapper, response, opts) } - if (opts.raw) { - return response + if (response) { + if (response.hasOwnProperty('data')) { + return response.data + } } - return response ? ('data' in response ? response.data : response) : response + return response }, /** @@ -610,31 +496,12 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { */ destroy (mapper, id, opts) { const self = this - let op opts = opts ? copy(opts) : {} opts.params || (opts.params = {}) opts.params = self.queryTransform(mapper, opts.params, opts) - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix - - // beforeDestroy lifecycle hook - op = opts.op = 'beforeDestroy' - return resolve(self[op](mapper, id, opts)).then(function () { - op = opts.op = 'destroy' - self.dbg(op, mapper, id, opts) - return self.DEL( - self.getPath('destroy', mapper, id, opts), - opts - ) - }).then(function (response) { - return self.deserialize(mapper, response, opts) - }).then(function (data) { - // afterDestroy lifecycle hook - op = opts.op = 'afterDestroy' - return resolve(self[op](mapper, id, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data - }) - }) + opts.suffix = self.getSuffix(mapper, opts) + + return __super__.destroy.call(self, mapper, id, opts) }, /** @@ -651,33 +518,14 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { */ destroyAll (mapper, query, opts) { const self = this - let op query || (query = {}) opts = opts ? copy(opts) : {} opts.params || (opts.params = {}) deepMixIn(opts.params, query) opts.params = self.queryTransform(mapper, opts.params, opts) - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix - - // beforeDestroyAll lifecycle hook - op = opts.op = 'beforeDestroyAll' - return resolve(self.beforeDestroyAll(mapper, query, opts)).then(function () { - op = opts.op = 'destroyAll' - self.dbg(op, mapper, query, opts) - return self.DEL( - self.getPath('destroyAll', mapper, null, opts), - opts - ) - }).then(function (response) { - return self.deserialize(mapper, response, opts) - }).then(function (data) { - // afterDestroyAll lifecycle hook - op = opts.op = 'afterDestroyAll' - return resolve(self[op](mapper, query, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data - }) - }) + opts.suffix = self.getSuffix(mapper, opts) + + return __super__.destroyAll.call(self, mapper, query, opts) }, /** @@ -743,31 +591,12 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { */ find (mapper, id, opts) { const self = this - let op opts = opts ? copy(opts) : {} opts.params || (opts.params = {}) opts.params = self.queryTransform(mapper, opts.params, opts) - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix - - // beforeFind lifecycle hook - op = opts.op = 'beforeFind' - return resolve(self[op](mapper, id, opts)).then(function () { - op = opts.op = 'find' - self.dbg(op, mapper, id, opts) - return self.GET( - self.getPath('find', mapper, id, opts), - opts - ) - }).then(function (response) { - return self.deserialize(mapper, response, opts) - }).then(function (data) { - // afterFind lifecycle hook - op = opts.op = 'afterFind' - return resolve(self[op](mapper, id, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data - }) - }) + opts.suffix = self.getSuffix(mapper, opts) + + return __super__.find.call(self, mapper, id, opts) }, /** @@ -784,33 +613,14 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { */ findAll (mapper, query, opts) { const self = this - let op query || (query = {}) opts = opts ? copy(opts) : {} opts.params || (opts.params = {}) - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix + opts.suffix = self.getSuffix(mapper, opts) deepMixIn(opts.params, query) opts.params = self.queryTransform(mapper, opts.params, opts) - // beforeFindAll lifecycle hook - op = opts.op = 'beforeFindAll' - return resolve(self[op](mapper, query, opts)).then(function () { - op = opts.op = 'findAll' - self.dbg(op, mapper, query, opts) - return self.GET( - self.getPath('findAll', mapper, opts.params, opts), - opts - ) - }).then(function (response) { - return self.deserialize(mapper, response, opts) - }).then(function (data) { - // afterFindAll lifecycle hook - op = opts.op = 'afterFindAll' - return resolve(self[op](mapper, query, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data - }) - }) + return __super__.findAll.call(self, mapper, query, opts) }, /** @@ -926,6 +736,17 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { return makePath.apply(utils, args) }, + getSuffix (mapper, opts) { + opts || (opts = {}) + if (isUndefined(opts.suffix)) { + if (isUndefined(mapper.suffix)) { + return this.suffix + } + return mapper.suffix + } + return opts.suffix + }, + /** * Make an Http request. * @@ -990,30 +811,6 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { }) }, - /** - * Log the provided arguments at the specified leve. - * - * @name HttpAdapter#log - * @method - * @param {string} level Log level. - * @param {...*} [args] Arguments to log. - */ - log (level, ...args) { - if (level && !args.length) { - args.push(level) - level = 'debug' - } - if (level === 'debug' && !this.debug) { - return - } - const prefix = `${level.toUpperCase()}: (HttpAdapter)` - if (console[level]) { - console[level](prefix, ...args) - } else { - console.log(prefix, ...args) - } - }, - /** * TODO * @@ -1162,32 +959,12 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { */ update (mapper, id, props, opts) { const self = this - let op opts = opts ? copy(opts) : {} opts.params || (opts.params = {}) opts.params = self.queryTransform(mapper, opts.params, opts) - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix - - // beforeUpdate lifecycle hook - op = opts.op = 'beforeUpdate' - return resolve(self[op](mapper, id, props, opts)).then(function () { - op = opts.op = 'update' - self.dbg(op, mapper, id, props, opts) - return self.PUT( - self.getPath('update', mapper, id, opts), - self.serialize(mapper, props, opts), - opts - ) - }).then(function (response) { - return self.deserialize(mapper, response, opts) - }).then(function (data) { - // afterUpdate lifecycle hook - op = opts.op = 'afterUpdate' - return resolve(self[op](mapper, id, props, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data - }) - }) + opts.suffix = self.getSuffix(mapper, opts) + + return __super__.update.call(self, mapper, id, props, opts) }, /** @@ -1203,34 +980,14 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { */ updateAll (mapper, props, query, opts) { const self = this - let op query || (query = {}) opts = opts ? copy(opts) : {} opts.params || (opts.params = {}) deepMixIn(opts.params, query) opts.params = self.queryTransform(mapper, opts.params, opts) - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix - - // beforeUpdateAll lifecycle hook - op = opts.op = 'beforeUpdateAll' - return resolve(self[op](mapper, props, query, opts)).then(function () { - op = opts.op = 'updateAll' - self.dbg(op, mapper, props, query, opts) - return self.PUT( - self.getPath('updateAll', mapper, null, opts), - self.serialize(mapper, props, opts), - opts - ) - }).then(function (response) { - return self.deserialize(mapper, response, opts) - }).then(function (data) { - // afterUpdateAll lifecycle hook - op = opts.op = 'afterUpdateAll' - return resolve(self[op](mapper, props, query, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data - }) - }) + opts.suffix = self.getSuffix(mapper, opts) + + return __super__.updateAll.call(self, mapper, props, query, opts) }, /** @@ -1252,32 +1009,12 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { */ updateMany (mapper, records, opts) { const self = this - let op opts = opts ? copy(opts) : {} opts.params || (opts.params = {}) opts.params = self.queryTransform(mapper, opts.params, opts) - opts.suffix = isUndefined(opts.suffix) ? mapper.suffix : opts.suffix - - // beforeUpdateMany lifecycle hook - op = opts.op = 'beforeUpdateMany' - return resolve(self[op](mapper, records, opts)).then(function () { - op = opts.op = 'updateMany' - self.dbg(op, mapper, records, opts) - return self.PUT( - self.getPath('updateMany', mapper, null, opts), - self.serialize(mapper, records, opts), - opts - ) - }).then(function (response) { - return self.deserialize(mapper, response, opts) - }).then(function (data) { - // afterUpdateMany lifecycle hook - op = opts.op = 'afterUpdateMany' - return resolve(self[op](mapper, records, opts, data)).then(function (_data) { - // Allow re-assignment from lifecycle hook - return isUndefined(_data) ? data : _data - }) - }) + opts.suffix = self.getSuffix(mapper, opts) + + return __super__.updateMany.call(self, mapper, records, opts) } }) From 5fd2620efa8985e2f7fa87c40fd4a09c13c50656 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Thu, 17 Mar 2016 16:59:22 -0700 Subject: [PATCH 16/24] 3.0.0-alpha.8 --- CHANGELOG.md | 4 ++++ dist/js-data-http.js | 21 ++++++++++++++------ dist/js-data-http.min.js | 33 +++----------------------------- dist/js-data-http.min.map | 14 +------------- fetch/dist/js-data-fetch.min.js | 4 ++-- fetch/dist/js-data-fetch.min.map | 2 +- fetch/package.json | 4 ++-- node/package.json | 2 +- package.json | 6 +++--- 9 files changed, 32 insertions(+), 58 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b51980c..5f805dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +##### 3.0.0-alpha.8 - 17 March 2016 + +- Rebased master + ##### 2.2.1 - 17 March 2016 ###### Backwards compatible bug fixes diff --git a/dist/js-data-http.js b/dist/js-data-http.js index 1f6d3bc..4b16af4 100644 --- a/dist/js-data-http.js +++ b/dist/js-data-http.js @@ -1,3 +1,12 @@ +/*! +* js-data-http +* @version 3.0.0-alpha.8 - Homepage +* @author Jason Dobry +* @copyright (c) 2014-2015 Jason Dobry +* @license MIT +* +* @overview HTTP adapter for js-data. +*/ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(require("js-data")); @@ -1238,12 +1247,12 @@ return /******/ (function(modules) { // webpackBootstrap * otherwise `false` if the current version is not beta. */ HttpAdapter.version = { - full: '<%= pkg.version %>', - major: parseInt('<%= major %>', 10), - minor: parseInt('<%= minor %>', 10), - patch: parseInt('<%= patch %>', 10), - alpha: true ? '<%= alpha %>' : false, - beta: true ? '<%= beta %>' : false + full: '3.0.0-alpha.8', + major: parseInt('3', 10), + minor: parseInt('0', 10), + patch: parseInt('0', 10), + alpha: true ? '8' : false, + beta: true ? 'false' : false }; /** diff --git a/dist/js-data-http.min.js b/dist/js-data-http.min.js index 251fa41..cae9336 100644 --- a/dist/js-data-http.min.js +++ b/dist/js-data-http.min.js @@ -1,38 +1,11 @@ /*! * js-data-http -<<<<<<< 71c27d31ec965adb8a86be6d31290596e4a16937 -<<<<<<< 2cf30160e77226553e97988a45f3fcb29165092c -<<<<<<< c4fb0646f59935877a8537ad264717c6cabf0ff3 -* @version 2.2.1 - Homepage -======= -* @version 3.0.0-alpha.5 - Homepage ->>>>>>> Rebase -======= -* @version 3.0.0-alpha.6 - Homepage ->>>>>>> 3.0.0-alpha.6 -======= -* @version 3.0.0-alpha.7 - Homepage ->>>>>>> 3.0.0-alpha.7 +* @version 3.0.0-alpha.8 - Homepage * @author Jason Dobry * @copyright (c) 2014-2015 Jason Dobry * @license MIT * * @overview HTTP adapter for js-data. */ -<<<<<<< 71c27d31ec965adb8a86be6d31290596e4a16937 -<<<<<<< 2cf30160e77226553e97988a45f3fcb29165092c -<<<<<<< c4fb0646f59935877a8537ad264717c6cabf0ff3 -!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.DSHttpAdapter=t(require("js-data")):e.DSHttpAdapter=t(e.JSData)}(this,function(e){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={exports:{},id:n,loaded:!1};return e[n].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}([function(e,t,r){"use strict";function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a="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=function(){function e(e,t){for(var r=0;r=200&&t.status<300&&!o?(r.defaults.log&&r.defaults.log(i,t),t):(r.defaults.error&&r.defaults.error("FAILED: "+i,t),f.Promise.reject(t))}return r.defaults.error("FAILED",t),f.Promise.reject(t)}var r=this,n=new Date,o=e.data,i=e.cache,s=e.timeout;e=p(e,null,null,null,["data","cache","timeout"]),e=l(e,r.defaults.httpConfig),e.data=o,e.cache=i,e.timeout=s,"verbsUseBasePath"in e||(e.verbsUseBasePath=r.defaults.verbsUseBasePath),!e.urlOverride&&e.verbsUseBasePath&&(e.url=d(e.basePath||r.defaults.basePath,e.url)),r.defaults.forceTrailingSlash&&"/"!==e.url[e.url.length-1]&&!e.urlOverride&&(e.url+="/"),"object"===a(e.data)&&(e.data=c(e.data)),e.method=e.method.toUpperCase();var u=e.suffix||r.defaults.suffix;if(u&&e.url.substr(e.url.length-u.length)!==u&&!e.urlOverride&&(e.url+=u),!this.http)throw new Error("You have not configured this adapter with an http library!");return this.http(e).then(t,function(e){return t(e,!0)})}},{key:"GET",value:function(e,t){return t=t||{},t.method=t.method||"get",t.urlOverride=!!t.url,t.url=t.url||e,this.HTTP(t)}},{key:"POST",value:function(e,t,r){return r=r||{},r.method=r.method||"post",r.urlOverride=!!r.url,r.url=r.url||e,r.data=r.data||t,this.HTTP(r)}},{key:"PUT",value:function(e,t,r){return r=r||{},r.method=r.method||"put",r.urlOverride=!!r.url,r.url=r.url||e,r.data=r.data||t,this.HTTP(r)}},{key:"DEL",value:function(e,t){return t=t||{},t.method=t.method||"delete",t.urlOverride=!!t.url,t.url=t.url||e,this.HTTP(t)}},{key:"find",value:function(e,t,r){var n=this;return r=r?p(r):{},r.suffix=r.suffix||e.suffix,r.params=r.params||{},r.params=n.defaults.queryTransform(e,r.params),n.GET(n.getPath("find",e,t,r),r).then(function(t){var o=(r.deserialize?r.deserialize:n.defaults.deserialize)(e,t);return o?o:f.Promise.reject(new Error("Not Found!"))})}},{key:"findAll",value:function(e,t,r){var n=this;return r=r?p(r):{},r.suffix=r.suffix||e.suffix,r.params=r.params||{},t&&(t=n.defaults.queryTransform(e,t),l(r.params,t)),n.GET(n.getPath("findAll",e,t,r),r).then(function(t){return(r.deserialize?r.deserialize:n.defaults.deserialize)(e,t)})}},{key:"create",value:function(e,t,r){var n=this;return r=r?p(r):{},r.suffix=r.suffix||e.suffix,r.params=r.params||{},r.params=n.defaults.queryTransform(e,r.params),n.POST(n.getPath("create",e,t,r),r.serialize?r.serialize(e,t):n.defaults.serialize(e,t),r).then(function(t){return(r.deserialize?r.deserialize:n.defaults.deserialize)(e,t)})}},{key:"update",value:function(e,t,r,n){var o=this;return n=n?p(n):{},n.suffix=n.suffix||e.suffix,n.params=n.params||{},n.params=o.defaults.queryTransform(e,n.params),o.PUT(o.getPath("update",e,t,n),n.serialize?n.serialize(e,r):o.defaults.serialize(e,r),n).then(function(t){return(n.deserialize?n.deserialize:o.defaults.deserialize)(e,t)})}},{key:"updateAll",value:function(e,t,r,n){var o=this;return n=n?p(n):{},n.suffix=n.suffix||e.suffix,n.params=n.params||{},r&&(r=o.defaults.queryTransform(e,r),l(n.params,r)),this.PUT(o.getPath("updateAll",e,t,n),n.serialize?n.serialize(e,t):o.defaults.serialize(e,t),n).then(function(t){return(n.deserialize?n.deserialize:o.defaults.deserialize)(e,t)})}},{key:"destroy",value:function(e,t,r){var n=this;return r=r?p(r):{},r.suffix=r.suffix||e.suffix,r.params=r.params||{},r.params=n.defaults.queryTransform(e,r.params),n.DEL(n.getPath("destroy",e,t,r),r).then(function(t){return(r.deserialize?r.deserialize:n.defaults.deserialize)(e,t)})}},{key:"destroyAll",value:function(e,t,r){var n=this;return r=r?p(r):{},r.suffix=r.suffix||e.suffix,r.params=r.params||{},t&&(t=n.defaults.queryTransform(e,t),l(r.params,t)),this.DEL(n.getPath("destroyAll",e,t,r),r).then(function(t){return(r.deserialize?r.deserialize:n.defaults.deserialize)(e,t)})}}]),e}();g.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=g},function(t,r){t.exports=e},function(e,t,r){e.exports=r(3)},function(e,t,r){"use strict";function n(e){this.defaults=a.merge({},e),this.interceptors={request:new s,response:new s}}var o=r(4),a=r(5),i=r(6),s=r(15),u=r(16),f=r(17),l=r(18),c=r(11);n.prototype.request=function(e){"string"==typeof e&&(e=a.merge({url:arguments[0]},arguments[1])),e=a.merge(o,this.defaults,{method:"get"},e),e.baseURL&&!u(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=a.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),a.forEach(["delete","get","head","post","put","patch","common"],function(t){delete e.headers[t]});var t=[i,void 0],r=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;)r=r.then(t.shift(),t.shift());return r};var p=new n(o),d=e.exports=l(n.prototype.request,p);d.create=function(e){return new n(e)},d.defaults=p.defaults,d.all=function(e){return Promise.all(e)},d.spread=r(19),d.interceptors=p.interceptors,a.forEach(["delete","get","head"],function(e){n.prototype[e]=function(t,r){return this.request(a.merge(r||{},{method:e,url:t}))},d[e]=l(n.prototype[e],p)}),a.forEach(["post","put","patch"],function(e){n.prototype[e]=function(t,r,n){return this.request(a.merge(n||{},{method:e,url:t,data:r}))},d[e]=l(n.prototype[e],p)})},function(e,t,r){"use strict";var n=r(5),o=/^\)\]\}',?\n/,a={"Content-Type":"application/x-www-form-urlencoded"};e.exports={transformRequest:[function(e,t){return n.isFormData(e)?e:n.isArrayBuffer(e)?e:n.isArrayBufferView(e)?e.buffer:!n.isObject(e)||n.isFile(e)||n.isBlob(e)?e:(n.isUndefined(t)||(n.forEach(t,function(e,r){"content-type"===r.toLowerCase()&&(t["Content-Type"]=e)}),n.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:n.merge(a),post:n.merge(a),put:n.merge(a)},timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"}},function(e,t){"use strict";function r(e){return"[object Array]"===v.call(e)}function n(e){return"[object ArrayBuffer]"===v.call(e)}function o(e){return"[object FormData]"===v.call(e)}function a(e){var t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer}function i(e){return"string"==typeof e}function s(e){return"number"==typeof e}function u(e){return"undefined"==typeof e}function f(e){return null!==e&&"object"==typeof e}function l(e){return"[object Date]"===v.call(e)}function c(e){return"[object File]"===v.call(e)}function p(e){return"[object Blob]"===v.call(e)}function d(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function h(){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||r(e)||(e=[e]),r(e))for(var n=0,o=e.length;o>n;n++)t.call(null,e[n],n,e);else for(var a in e)e.hasOwnProperty(a)&&t.call(null,e[a],a,e)}function y(){function e(e,r){"object"==typeof t[r]&&"object"==typeof e?t[r]=y(t[r],e):t[r]=e}for(var t={},r=0,n=arguments.length;n>r;r++)m(arguments[r],e);return t}var v=Object.prototype.toString;e.exports={isArray:r,isArrayBuffer:n,isFormData:o,isArrayBufferView:a,isString:i,isNumber:s,isObject:f,isUndefined:u,isDate:l,isFile:c,isBlob:p,isStandardBrowserEnv:h,forEach:m,merge:y,trim:d}},function(e,t,r){(function(t){"use strict";e.exports=function(e){return new Promise(function(n,o){try{var a;"function"==typeof e.adapter?a=e.adapter:"undefined"!=typeof XMLHttpRequest?a=r(8):"undefined"!=typeof t&&(a=r(8)),"function"==typeof a&&a(n,o,e)}catch(e){o(e)}})}}).call(t,r(7))},function(e,t){function r(){f=!1,i.length?u=i.concat(u):l=-1,u.length&&n()}function n(){if(!f){var e=setTimeout(r);f=!0;for(var t=u.length;t;){for(i=u,u=[];++l1)for(var r=1;r=200&&o.status<300||!("status"in p)&&o.responseText?e:t)(o),p=null}},p.onerror=function(){t(new Error("Network Error")),p=null},n.isStandardBrowserEnv()){var m=r(14),y=f.withCredentials||s(f.url)?m.read(f.xsrfCookieName):void 0;y&&(c[f.xsrfHeaderName]=y)}if("setRequestHeader"in p&&n.forEach(c,function(e,t){"undefined"==typeof l&&"content-type"===t.toLowerCase()?delete c[t]:p.setRequestHeader(t,e)}),f.withCredentials&&(p.withCredentials=!0),f.responseType)try{p.responseType=f.responseType}catch(e){if("json"!==p.responseType)throw e}n.isArrayBuffer(l)&&(l=new DataView(l)),p.send(l)}},function(e,t,r){"use strict";function n(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,"]")}var o=r(5);e.exports=function(e,t,r){if(!t)return e;var a;if(r)a=r(t);else{var i=[];o.forEach(t,function(e,t){null!==e&&"undefined"!=typeof e&&(o.isArray(e)&&(t+="[]"),o.isArray(e)||(e=[e]),o.forEach(e,function(e){o.isDate(e)?e=e.toISOString():o.isObject(e)&&(e=JSON.stringify(e)),i.push(n(t)+"="+n(e))}))}),a=i.join("&")}return a&&(e+=(-1===e.indexOf("?")?"?":"&")+a),e}},function(e,t,r){"use strict";var n=r(5);e.exports=function(e){var t,r,o,a={};return e?(n.forEach(e.split("\n"),function(e){o=e.indexOf(":"),t=n.trim(e.substr(0,o)).toLowerCase(),r=n.trim(e.substr(o+1)),t&&(a[t]=a[t]?a[t]+", "+r:r)}),a):a}},function(e,t,r){"use strict";var n=r(5);e.exports=function(e,t,r){return n.forEach(r,function(r){e=r(e,t)}),e}},function(e,t,r){"use strict";var n=r(5);e.exports=n.isStandardBrowserEnv()?function(){function e(e){var t=e;return r&&(o.setAttribute("href",t),t=o.href),o.setAttribute("href",t),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}var t,r=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");return t=e(window.location.href),function(r){var o=n.isString(r)?e(r):r;return o.protocol===t.protocol&&o.host===t.host}}():function(){return function(){return!0}}()},function(e,t){"use strict";function r(e){this.message=e}function n(e){for(var t,n,a=String(e),i="",s=0,u=o;a.charAt(0|s)||(u="=",s%1);i+=u.charAt(63&t>>8-s%1*8)){if(n=a.charCodeAt(s+=.75),n>255)throw new r("INVALID_CHARACTER_ERR: DOM Exception 5");t=t<<8|n}return i}var o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";r.prototype=new Error,r.prototype.code=5,r.prototype.name="InvalidCharacterError",e.exports=n},function(e,t,r){"use strict";var n=r(5);e.exports=n.isStandardBrowserEnv()?function(){return{write:function(e,t,r,o,a,i){var s=[];s.push(e+"="+encodeURIComponent(t)),n.isNumber(r)&&s.push("expires="+new Date(r).toGMTString()),n.isString(o)&&s.push("path="+o),n.isString(a)&&s.push("domain="+a),i===!0&&s.push("secure"),document.cookie=s.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,r){"use strict";function n(){this.handlers=[]}var o=r(5);n.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},n.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},n.prototype.forEach=function(e){o.forEach(this.handlers,function(t){null!==t&&e(t)})},e.exports=n},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 r=new Array(arguments.length),n=0;nr;r++)t[r]=arguments[r];var n=i(t,"/");return n.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 s(e,t){if(!t)return e;var r=[];return b(t,function(e,t){null!==e&&"undefined"!=typeof e&&(x(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():A(e)&&(e=D(e)),r.push(u(t)+"="+u(e))}))}),r.length>0&&(e+=(-1===e.indexOf("?")?"?":"&")+r.join("&")),e}function f(e){var t=this;e||(e={}),v(t,e),v(t,z)}var c="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},p=r(1),l=r(2),d=p.utils._,h=p.utils.addHiddenPropsToTarget,m=p.utils.copy,y=p.utils.deepMixIn,g=p.utils.extend,v=p.utils.fillIn,b=p.utils.forOwn,x=p.utils.isArray,T=p.utils.isFunction,w=p.utils.isNumber,A=p.utils.isObject,E=p.utils.isSorN,P=p.utils.isString,C=p.utils.isUndefined,S=p.utils.resolve,j=p.utils.reject,D=p.utils.toJson,U=!1;try{U=window&&window.fetch}catch(e){}var q=function(){for(var e=this,t=arguments.length,r=Array(t),n=0;t>n;n++)r[n]=arguments[n];var o=r[r.length-1];e.dbg.apply(e,[o.op].concat(r))},O=function(){for(var e=this,t=arguments.length,r=Array(t),n=0;t>n;n++)r[n]=arguments[n];var o=r[r.length-2];e.dbg.apply(e,[o.op].concat(r))},z={basePath:"",debug:!1,forceTrailingSlash:!1,http:l,httpConfig:{},suffix:"",useFetch:!1};h(f.prototype,{afterCreate:O,afterCreateMany:O,afterDEL:O,afterDestroy:O,afterDestroyAll:O,afterFind:O,afterFindAll:O,afterGET:O,afterHTTP:O,afterPOST:O,afterPUT:O,afterUpdate:O,afterUpdateAll:O,afterUpdateMany:O,beforeCreate:q,beforeCreateMany:q,beforeDEL:q,beforeDestroy:q,beforeDestroyAll:q,beforeFind:q,beforeFindAll:q,beforeGET:q,beforeHTTP:q,beforePOST:q,beforePUT:q,beforeUpdate:q,beforeUpdateAll:q,beforeUpdateMany:q,create:function(e,t,r){var n=this,o=void 0;return r=r?m(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeCreate",S(n[o](e,t,r)).then(function(){return o=r.op="create",n.dbg(o,e,t,r),n.POST(n.getPath("create",e,t,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterCreate",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},createMany:function(e,t,r){var n=this,o=void 0;return r=r?m(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeCreateMany",S(n[o](e,t,r)).then(function(){return o=r.op="createMany",n.dbg(o,e,t,r),n.POST(n.getPath("createMany",e,null,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterCreateMany",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},dbg:function(){for(var e=arguments.length,t=Array(e),r=0;e>r;r++)t[r]=arguments[r];this.log.apply(this,["debug"].concat(t))},DEL:function(e,t,r){var n=this,o=void 0;return t||(t={}),r||(r={}),t.url=e||t.url,t.method=t.method||"delete",o=r.op="beforeDEL",S(n[o](e,t,r)).then(function(i){return t=C(i)?t:i,o=r.op="DEL",n.dbg(o,e,t,r),n.HTTP(t,r)}).then(function(i){return o=r.op="afterDEL",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},deserialize:function(e,t,r){return r||(r={}),T(r.deserialize)?r.deserialize(e,t,r):T(e.deserialize)?e.deserialize(e,t,r):r.raw?t:t&&"data"in t?t.data:t},destroy:function(e,t,r){var n=this,o=void 0;return r=r?m(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeDestroy",S(n[o](e,t,r)).then(function(){return o=r.op="destroy",n.dbg(o,e,t,r),n.DEL(n.getPath("destroy",e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterDestroy",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},destroyAll:function(e,t,r){var n=this,o=void 0;return t||(t={}),r=r?m(r):{},r.params||(r.params={}),y(r.params,t),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeDestroyAll",S(n.beforeDestroyAll(e,t,r)).then(function(){return o=r.op="destroyAll",n.dbg(o,e,t,r),n.DEL(n.getPath("destroyAll",e,null,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterDestroyAll",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},error:function(){if(console){var e;(e=console)["function"==typeof console.error?"error":"log"].apply(e,arguments)}},fetch:function(e){function t(t,r){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}(function(e,t){var r={method:e.method,headers:new Headers(e.headers)};return e.data&&(r.body=D(e.data)),fetch(new Request(s(e.url,e.params),r)).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,r){var n=this,o=void 0;return r=r?m(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeFind",S(n[o](e,t,r)).then(function(){return o=r.op="find",n.dbg(o,e,t,r),n.GET(n.getPath("find",e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterFind",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},findAll:function(e,t,r){var n=this,o=void 0;return t||(t={}),r=r?m(r):{},r.params||(r.params={}),r.suffix=C(r.suffix)?e.suffix:r.suffix,y(r.params,t),r.params=n.queryTransform(e,r.params,r),o=r.op="beforeFindAll",S(n[o](e,t,r)).then(function(){return o=r.op="findAll",n.dbg(o,e,t,r),n.GET(n.getPath("findAll",e,r.params,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterFindAll",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},GET:function(e,t,r){var n=this,o=void 0;return t||(t={}),r||(r={}),t.url=e||t.url,t.method=t.method||"get",o=r.op="beforeGET",S(n[o](e,t,r)).then(function(i){return t=C(i)?t:i,o=r.op="GET",n.dbg(o,e,t,r),n.HTTP(t,r)}).then(function(i){return o=r.op="afterGET",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},getEndpoint:function(e,t,r){var o=this;r||(r={}),r.params||(r.params={});var i=r.hasOwnProperty("endpoint")?r.endpoint:e.endpoint,u=e.parents||(e.parent?n({},e.parent,{key:e.parentKey,field:e.parentField}):{});return b(u,function(n,u){var s=void 0,f=n.key,p=n.field,l=e.getResource(u),h=r.params[f];if(h===!1||!f||!l)return h===!1&&delete r.params[f],!1;if(delete r.params[f],P(t)||w(t)?s=e.get(t):A(t)&&(s=t),s&&(h=h||s[f]||(s[p]?s[p][l.idAttribute]:null)),h){var m=function(){delete r.endpoint;var e={};return b(r,function(t,r){e[r]=t}),d(e,l),i=a(o.getEndpoint(l,h,e,h,i)),{v:!1}}();if("object"===("undefined"==typeof m?"undefined":c(m)))return m.v}}),i},getPath:function(e,t,r,n){var o=this;n||(n={});var i=[void 0===n.basePath?void 0===t.basePath?o.basePath:t.basePath:n.basePath,o.getEndpoint(t,P(r)||w(r)||"create"===e?r:null,n)];return"find"!==e&&"update"!==e&&"destroy"!==e||i.push(r),a.apply(p.utils,i)},HTTP:function(e,t){function r(t){var r=o.toUTCString()+" - "+e.method.toUpperCase()+" "+e.url+" - "+t.status+" "+((new Date).getTime()-o.getTime())+"ms";return t.status>=200&&t.status<300?(n.log&&n.dbg("debug",r,t),t):(n.error&&n.error("'FAILED: "+r,t),j(t))}var n=this,o=new Date;t||(t={}),e=m(e),e=y(e,n.httpConfig),n.forceTrailingSlash&&"/"!==e.url[e.url.length-1]&&(e.url+="/"),e.method=e.method.toUpperCase();var i=e.suffix||t.suffix||n.suffix;if(i&&e.url.substr(e.url.length-i.length)!==i&&(e.url+=i),!n.http)throw new Error("You have not configured this adapter with an http library!");return S(n.beforeHTTP(e,t)).then(function(o){return e=o||e,U&&(n.useFetch||t.useFetch||!n.http)?n.fetch(e,t).then(r,r):n.http(e).then(r,r).catch(function(r){return n.responseError(r,e,t)})}).then(function(r){return S(n.afterHTTP(e,t,r)).then(function(e){return e||r})})},log:function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;t>n;n++)r[n-1]=arguments[n];if(e&&!r.length&&(r.push(e),e="debug"),"debug"!==e||this.debug){var o=e.toUpperCase()+": (HttpAdapter)";if(console[e]){var i;(i=console)[e].apply(i,[o].concat(r))}else{var a;(a=console).log.apply(a,[o].concat(r))}}},POST:function(e,t,r,n){var o=this,i=void 0;return r||(r={}),n||(n={}),r.url=e||r.url,r.data=t||r.data,r.method=r.method||"post",i=n.op="beforePOST",S(o[i](e,t,r,n)).then(function(a){return r=C(a)?r:a,i=n.op="POST",o.dbg(i,e,t,r,n),o.HTTP(r,n)}).then(function(a){return i=n.op="afterPOST",S(o[i](e,t,r,n,a)).then(function(e){return C(e)?a:e})})},PUT:function(e,t,r,n){var o=this,i=void 0;return r||(r={}),n||(n={}),r.url=e||r.url,r.data=t||r.data,r.method=r.method||"put",i=n.op="beforePUT",S(o[i](e,t,r,n)).then(function(a){return r=C(a)?r:a,i=n.op="PUT",o.dbg(i,e,t,r,n),o.HTTP(r,n)}).then(function(a){return i=n.op="afterPUT",S(o[i](e,t,r,n,a)).then(function(e){return C(e)?a:e})})},queryTransform:function(e,t,r){return r||(r={}),T(r.queryTransform)?r.queryTransform(e,t,r):T(e.queryTransform)?e.queryTransform(e,t,r):t},responseError:function(e,t,r){return j(e)},serialize:function(e,t,r){return r||(r={}),T(r.serialize)?r.serialize(e,t,r):T(e.serialize)?e.serialize(e,t,r):t},update:function(e,t,r,n){var o=this,i=void 0;return n=n?m(n):{},n.params||(n.params={}),n.params=o.queryTransform(e,n.params,n),n.suffix=C(n.suffix)?e.suffix:n.suffix,i=n.op="beforeUpdate",S(o[i](e,t,r,n)).then(function(){return i=n.op="update",o.dbg(i,e,t,r,n),o.PUT(o.getPath("update",e,t,n),o.serialize(e,r,n),n)}).then(function(t){return o.deserialize(e,t,n)}).then(function(a){return i=n.op="afterUpdate",S(o[i](e,t,r,n,a)).then(function(e){return C(e)?a:e})})},updateAll:function(e,t,r,n){var o=this,i=void 0;return r||(r={}),n=n?m(n):{},n.params||(n.params={}),y(n.params,r),n.params=o.queryTransform(e,n.params,n),n.suffix=C(n.suffix)?e.suffix:n.suffix,i=n.op="beforeUpdateAll",S(o[i](e,t,r,n)).then(function(){return i=n.op="updateAll",o.dbg(i,e,t,r,n),o.PUT(o.getPath("updateAll",e,null,n),o.serialize(e,t,n),n)}).then(function(t){return o.deserialize(e,t,n)}).then(function(a){return i=n.op="afterUpdateAll",S(o[i](e,t,r,n,a)).then(function(e){return C(e)?a:e})})},updateMany:function(e,t,r){var n=this,o=void 0;return r=r?m(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeUpdateMany",S(n[o](e,t,r)).then(function(){return o=r.op="updateMany",n.dbg(o,e,t,r),n.PUT(n.getPath("updateMany",e,null,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterUpdateMany",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})}}),f.addAction=function(e,t){if(!e||!P(e))throw new TypeError("action(name[, opts]): Expected: string, Found: "+("undefined"==typeof e?"undefined":c(e)));return function(r){if(r[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 j(e)},r[e]=function(r,n){var o=this;A(r)&&(n=r),n=n||{};var i=o.getAdapter(t.adapter||o.defaultAdapter||"http"),u={};if(v(u,t),!n.hasOwnProperty("endpoint")&&u.endpoint&&(n.endpoint=u.endpoint),"function"==typeof n.getEndpoint)u.url=n.getEndpoint(o,n);else{var s=[n.basePath||o.basePath||i.basePath,i.getEndpoint(o,E(r)?r:null,n)];E(r)&&s.push(r),s.push(t.pathname||e),u.url=a.apply(null,s)}return u.method=u.method||"GET",u.mapper=o.name,y(u)(n),S(u).then(n.request||t.request).then(function(e){return i.HTTP(e)}).then(function(e){return e&&e.config&&(e.config.mapper=o.name),e}).then(n.response||t.response,n.responseError||t.responseError)},r}},f.addActions=function(e){return e||(e={}),function(e){return b(e,function(t,r){f.addAction(r,t)(e)}),e}},f.extend=g,f.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=f},function(t,r){t.exports=e},function(e,t,r){e.exports=r(3)},function(e,t,r){"use strict";function n(e){this.defaults=i.merge({},e),this.interceptors={request:new u,response:new u}}var o=r(4),i=r(5),a=r(6),u=r(15),s=r(16),f=r(17),c=r(18),p=r(11);n.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=p(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=[a,void 0],r=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;)r=r.then(t.shift(),t.shift());return r};var l=new n(o),d=e.exports=c(n.prototype.request,l);d.create=function(e){return new n(e)},d.defaults=l.defaults,d.all=function(e){return Promise.all(e)},d.spread=r(19),d.interceptors=l.interceptors,i.forEach(["delete","get","head"],function(e){n.prototype[e]=function(t,r){return this.request(i.merge(r||{},{method:e,url:t}))},d[e]=c(n.prototype[e],l)}),i.forEach(["post","put","patch"],function(e){n.prototype[e]=function(t,r,n){return this.request(i.merge(n||{},{method:e,url:t,data:r}))},d[e]=c(n.prototype[e],l)})},function(e,t,r){"use strict";var n=r(5),o=/^\)\]\}',?\n/,i={"Content-Type":"application/x-www-form-urlencoded"};e.exports={transformRequest:[function(e,t){return n.isFormData(e)?e:n.isArrayBuffer(e)?e:n.isArrayBufferView(e)?e.buffer:!n.isObject(e)||n.isFile(e)||n.isBlob(e)?e:(n.isUndefined(t)||(n.forEach(t,function(e,r){"content-type"===r.toLowerCase()&&(t["Content-Type"]=e)}),n.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:n.merge(i),post:n.merge(i),put:n.merge(i)},timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"}},function(e,t){"use strict";function r(e){return"[object Array]"===g.call(e)}function n(e){return"[object ArrayBuffer]"===g.call(e)}function o(e){return"[object FormData]"===g.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 a(e){return"string"==typeof e}function u(e){return"number"==typeof e}function s(e){return"undefined"==typeof e}function f(e){return null!==e&&"object"==typeof e}function c(e){return"[object Date]"===g.call(e)}function p(e){return"[object File]"===g.call(e)}function l(e){return"[object Blob]"===g.call(e)}function d(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function h(){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||r(e)||(e=[e]),r(e))for(var n=0,o=e.length;o>n;n++)t.call(null,e[n],n,e);else for(var i in e)e.hasOwnProperty(i)&&t.call(null,e[i],i,e)}function y(){function e(e,r){"object"==typeof t[r]&&"object"==typeof e?t[r]=y(t[r],e):t[r]=e}for(var t={},r=0,n=arguments.length;n>r;r++)m(arguments[r],e);return t}var g=Object.prototype.toString;e.exports={isArray:r,isArrayBuffer:n,isFormData:o,isArrayBufferView:i,isString:a,isNumber:u,isObject:f,isUndefined:s,isDate:c,isFile:p,isBlob:l,isStandardBrowserEnv:h,forEach:m,merge:y,trim:d}},function(e,t,r){(function(t){"use strict";e.exports=function(e){return new Promise(function(n,o){try{var i;"function"==typeof e.adapter?i=e.adapter:"undefined"!=typeof XMLHttpRequest?i=r(8):"undefined"!=typeof t&&(i=r(8)),"function"==typeof i&&i(n,o,e)}catch(e){o(e)}})}}).call(t,r(7))},function(e,t){function r(){f=!1,a.length?s=a.concat(s):c=-1,s.length&&n()}function n(){if(!f){var e=setTimeout(r);f=!0;for(var t=s.length;t;){for(a=s,s=[];++c1)for(var r=1;r=200&&o.status<300||!("status"in l)&&o.responseText?e:t)(o),l=null}},l.onerror=function(){t(new Error("Network Error")),l=null},n.isStandardBrowserEnv()){var m=r(14),y=f.withCredentials||u(f.url)?m.read(f.xsrfCookieName):void 0;y&&(p[f.xsrfHeaderName]=y)}if("setRequestHeader"in l&&n.forEach(p,function(e,t){"undefined"==typeof c&&"content-type"===t.toLowerCase()?delete p[t]:l.setRequestHeader(t,e)}),f.withCredentials&&(l.withCredentials=!0),f.responseType)try{l.responseType=f.responseType}catch(e){if("json"!==l.responseType)throw e}n.isArrayBuffer(c)&&(c=new DataView(c)),l.send(c)}},function(e,t,r){"use strict";function n(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,"]")}var o=r(5);e.exports=function(e,t,r){if(!t)return e;var i;if(r)i=r(t);else{var a=[];o.forEach(t,function(e,t){null!==e&&"undefined"!=typeof e&&(o.isArray(e)&&(t+="[]"),o.isArray(e)||(e=[e]),o.forEach(e,function(e){o.isDate(e)?e=e.toISOString():o.isObject(e)&&(e=JSON.stringify(e)),a.push(n(t)+"="+n(e))}))}),i=a.join("&")}return i&&(e+=(-1===e.indexOf("?")?"?":"&")+i),e}},function(e,t,r){"use strict";var n=r(5);e.exports=function(e){var t,r,o,i={};return e?(n.forEach(e.split("\n"),function(e){o=e.indexOf(":"),t=n.trim(e.substr(0,o)).toLowerCase(),r=n.trim(e.substr(o+1)),t&&(i[t]=i[t]?i[t]+", "+r:r)}),i):i}},function(e,t,r){"use strict";var n=r(5);e.exports=function(e,t,r){return n.forEach(r,function(r){e=r(e,t)}),e}},function(e,t,r){"use strict";var n=r(5);e.exports=n.isStandardBrowserEnv()?function(){function e(e){var t=e;return r&&(o.setAttribute("href",t),t=o.href),o.setAttribute("href",t),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}var t,r=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");return t=e(window.location.href),function(r){var o=n.isString(r)?e(r):r;return o.protocol===t.protocol&&o.host===t.host}}():function(){return function(){return!0}}()},function(e,t){"use strict";function r(e){this.message=e}function n(e){for(var t,n,i=String(e),a="",u=0,s=o;i.charAt(0|u)||(s="=",u%1);a+=s.charAt(63&t>>8-u%1*8)){if(n=i.charCodeAt(u+=.75),n>255)throw new r("INVALID_CHARACTER_ERR: DOM Exception 5");t=t<<8|n}return a}var o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";r.prototype=new Error,r.prototype.code=5,r.prototype.name="InvalidCharacterError",e.exports=n},function(e,t,r){"use strict";var n=r(5);e.exports=n.isStandardBrowserEnv()?function(){return{write:function(e,t,r,o,i,a){var u=[];u.push(e+"="+encodeURIComponent(t)),n.isNumber(r)&&u.push("expires="+new Date(r).toGMTString()),n.isString(o)&&u.push("path="+o),n.isString(i)&&u.push("domain="+i),a===!0&&u.push("secure"),document.cookie=u.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,r){"use strict";function n(){this.handlers=[]}var o=r(5);n.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},n.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},n.prototype.forEach=function(e){o.forEach(this.handlers,function(t){null!==t&&e(t)})},e.exports=n},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 r=new Array(arguments.length),n=0;n>>>>>> Rebase -======= -!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.HttpAdapter=t(require("js-data")):e.HttpAdapter=t(e.JSData)}(this,function(e){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={exports:{},id:n,loaded:!1};return e[n].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}([function(e,t,r){"use strict";function n(e){return null!=e&&""!==e}function o(e,t){return t||(t=""),e.filter(n).join(t)}function i(){for(var e=arguments.length,t=Array(e),r=0;e>r;r++)t[r]=arguments[r];var n=o(t,"/");return n.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 r=[];return v(t,function(e,t){null!==e&&"undefined"!=typeof e&&(x(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():A(e)&&(e=D(e)),r.push(a(t)+"="+a(e))}))}),r.length>0&&(e+=(-1===e.indexOf("?")?"?":"&")+r.join("&")),e}function s(e){var t=this;e||(e={}),g(t,e),g(t,O)}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},c=r(1),p=r(2),l=c.utils._,d=c.utils.addHiddenPropsToTarget,h=c.utils.copy,m=c.utils.deepMixIn,y=c.utils.extend,g=c.utils.fillIn,v=c.utils.forOwn,b=c.utils.get,x=c.utils.isArray,T=c.utils.isFunction,w=c.utils.isNumber,A=c.utils.isObject,E=c.utils.isSorN,P=c.utils.isString,C=c.utils.isUndefined,S=c.utils.resolve,j=c.utils.reject,D=c.utils.toJson,U=!1;try{U=window&&window.fetch}catch(e){}var q=function(){for(var e=this,t=arguments.length,r=Array(t),n=0;t>n;n++)r[n]=arguments[n];var o=r[r.length-1];e.dbg.apply(e,[o.op].concat(r))},z=function(){for(var e=this,t=arguments.length,r=Array(t),n=0;t>n;n++)r[n]=arguments[n];var o=r[r.length-2];e.dbg.apply(e,[o.op].concat(r))},O={basePath:"",debug:!1,forceTrailingSlash:!1,http:p,httpConfig:{},suffix:"",useFetch:!1};d(s.prototype,{afterCreate:z,afterCreateMany:z,afterDEL:z,afterDestroy:z,afterDestroyAll:z,afterFind:z,afterFindAll:z,afterGET:z,afterHTTP:z,afterPOST:z,afterPUT:z,afterUpdate:z,afterUpdateAll:z,afterUpdateMany:z,beforeCreate:q,beforeCreateMany:q,beforeDEL:q,beforeDestroy:q,beforeDestroyAll:q,beforeFind:q,beforeFindAll:q,beforeGET:q,beforeHTTP:q,beforePOST:q,beforePUT:q,beforeUpdate:q,beforeUpdateAll:q,beforeUpdateMany:q,create:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeCreate",S(n[o](e,t,r)).then(function(){return o=r.op="create",n.dbg(o,e,t,r),n.POST(n.getPath("create",e,t,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterCreate",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},createMany:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeCreateMany",S(n[o](e,t,r)).then(function(){return o=r.op="createMany",n.dbg(o,e,t,r),n.POST(n.getPath("createMany",e,null,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterCreateMany",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},dbg:function(){for(var e=arguments.length,t=Array(e),r=0;e>r;r++)t[r]=arguments[r];this.log.apply(this,["debug"].concat(t))},DEL:function(e,t,r){var n=this,o=void 0;return t||(t={}),r||(r={}),t.url=e||t.url,t.method=t.method||"delete",o=r.op="beforeDEL",S(n[o](e,t,r)).then(function(i){return t=C(i)?t:i,o=r.op="DEL",n.dbg(o,e,t,r),n.HTTP(t,r)}).then(function(i){return o=r.op="afterDEL",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},deserialize:function(e,t,r){return r||(r={}),T(r.deserialize)?r.deserialize(e,t,r):T(e.deserialize)?e.deserialize(e,t,r):r.raw?t:t&&"data"in t?t.data:t},destroy:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeDestroy",S(n[o](e,t,r)).then(function(){return o=r.op="destroy",n.dbg(o,e,t,r),n.DEL(n.getPath("destroy",e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterDestroy",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},destroyAll:function(e,t,r){var n=this,o=void 0;return t||(t={}),r=r?h(r):{},r.params||(r.params={}),m(r.params,t),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeDestroyAll",S(n.beforeDestroyAll(e,t,r)).then(function(){return o=r.op="destroyAll",n.dbg(o,e,t,r),n.DEL(n.getPath("destroyAll",e,null,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterDestroyAll",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},error:function(){if(console){var e;(e=console)["function"==typeof console.error?"error":"log"].apply(e,arguments)}},fetch:function(e){function t(t,r){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}(function(e,t){var r={method:e.method,headers:new Headers(e.headers)};return e.data&&(r.body=D(e.data)),fetch(new Request(u(e.url,e.params),r)).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,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeFind",S(n[o](e,t,r)).then(function(){return o=r.op="find",n.dbg(o,e,t,r),n.GET(n.getPath("find",e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterFind",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},findAll:function(e,t,r){var n=this,o=void 0;return t||(t={}),r=r?h(r):{},r.params||(r.params={}),r.suffix=C(r.suffix)?e.suffix:r.suffix,m(r.params,t),r.params=n.queryTransform(e,r.params,r),o=r.op="beforeFindAll",S(n[o](e,t,r)).then(function(){return o=r.op="findAll",n.dbg(o,e,t,r),n.GET(n.getPath("findAll",e,r.params,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterFindAll",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},GET:function(e,t,r){var n=this,o=void 0;return t||(t={}),r||(r={}),t.url=e||t.url,t.method=t.method||"get",o=r.op="beforeGET",S(n[o](e,t,r)).then(function(i){return t=C(i)?t:i,o=r.op="GET",n.dbg(o,e,t,r),n.HTTP(t,r)}).then(function(i){return o=r.op="afterGET",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})},getEndpoint:function(e,t,r){var n=this;r||(r={}),r.params||(r.params={});var o=e.relationList||[],a=C(r.endpoint)?C(e.endpoint)?e.name:e.endpoint:r.endpoint;return o.forEach(function(e){if("belongsTo"===e.type&&e.parent){var o=void 0,u=e.foreignKey,s=e.getRelation(),c=r.params[u];if(c===!1||!u||!s)return c===!1&&delete r.params[u],!1;if(delete r.params[u],A(t)&&(o=t),o&&(c=c||e.getForeignKey(o)||(e.getLocalField(o)?b(e.getLocalField(o),s.idAttribute):null)),c){var p=function(){delete r.endpoint;var e={};return v(r,function(t,r){e[r]=t}),l(e,s),a=i(n.getEndpoint(s,c,e),c,a),{v:!1}}();if("object"===("undefined"==typeof p?"undefined":f(p)))return p.v}}}),a},getPath:function(e,t,r,n){var o=this;n||(n={});var a=[C(n.basePath)?C(t.basePath)?o.basePath:t.basePath:n.basePath,o.getEndpoint(t,P(r)||w(r)||"create"===e?r:null,n)];return"find"!==e&&"update"!==e&&"destroy"!==e||a.push(r),i.apply(c.utils,a)},HTTP:function(e,t){function r(t){var r=o.toUTCString()+" - "+e.method.toUpperCase()+" "+e.url+" - "+t.status+" "+((new Date).getTime()-o.getTime())+"ms";return t.status>=200&&t.status<300?(n.log&&n.dbg("debug",r,t),t):(n.error&&n.error("'FAILED: "+r,t),j(t))}var n=this,o=new Date;t||(t={}),e=h(e),e=m(e,n.httpConfig),n.forceTrailingSlash&&"/"!==e.url[e.url.length-1]&&(e.url+="/"),e.method=e.method.toUpperCase();var i=e.suffix||t.suffix||n.suffix;if(i&&e.url.substr(e.url.length-i.length)!==i&&(e.url+=i),!n.http)throw new Error("You have not configured this adapter with an http library!");return S(n.beforeHTTP(e,t)).then(function(o){return e=o||e,U&&(n.useFetch||t.useFetch||!n.http)?n.fetch(e,t).then(r,r):n.http(e).then(r,r).catch(function(r){return n.responseError(r,e,t)})}).then(function(r){return S(n.afterHTTP(e,t,r)).then(function(e){return e||r})})},log:function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;t>n;n++)r[n-1]=arguments[n];if(e&&!r.length&&(r.push(e),e="debug"),"debug"!==e||this.debug){var o=e.toUpperCase()+": (HttpAdapter)";if(console[e]){var i;(i=console)[e].apply(i,[o].concat(r))}else{var a;(a=console).log.apply(a,[o].concat(r))}}},POST:function(e,t,r,n){var o=this,i=void 0;return r||(r={}),n||(n={}),r.url=e||r.url,r.data=t||r.data,r.method=r.method||"post",i=n.op="beforePOST",S(o[i](e,t,r,n)).then(function(a){return r=C(a)?r:a,i=n.op="POST",o.dbg(i,e,t,r,n),o.HTTP(r,n)}).then(function(a){return i=n.op="afterPOST",S(o[i](e,t,r,n,a)).then(function(e){return C(e)?a:e})})},PUT:function(e,t,r,n){var o=this,i=void 0;return r||(r={}),n||(n={}),r.url=e||r.url,r.data=t||r.data,r.method=r.method||"put",i=n.op="beforePUT",S(o[i](e,t,r,n)).then(function(a){return r=C(a)?r:a,i=n.op="PUT",o.dbg(i,e,t,r,n),o.HTTP(r,n)}).then(function(a){return i=n.op="afterPUT",S(o[i](e,t,r,n,a)).then(function(e){return C(e)?a:e})})},queryTransform:function(e,t,r){return r||(r={}),T(r.queryTransform)?r.queryTransform(e,t,r):T(e.queryTransform)?e.queryTransform(e,t,r):t},responseError:function(e,t,r){return j(e)},serialize:function(e,t,r){return r||(r={}),T(r.serialize)?r.serialize(e,t,r):T(e.serialize)?e.serialize(e,t,r):t},update:function(e,t,r,n){var o=this,i=void 0;return n=n?h(n):{},n.params||(n.params={}),n.params=o.queryTransform(e,n.params,n),n.suffix=C(n.suffix)?e.suffix:n.suffix,i=n.op="beforeUpdate",S(o[i](e,t,r,n)).then(function(){return i=n.op="update",o.dbg(i,e,t,r,n),o.PUT(o.getPath("update",e,t,n),o.serialize(e,r,n),n)}).then(function(t){return o.deserialize(e,t,n)}).then(function(a){return i=n.op="afterUpdate",S(o[i](e,t,r,n,a)).then(function(e){return C(e)?a:e})})},updateAll:function(e,t,r,n){var o=this,i=void 0;return r||(r={}),n=n?h(n):{},n.params||(n.params={}),m(n.params,r),n.params=o.queryTransform(e,n.params,n),n.suffix=C(n.suffix)?e.suffix:n.suffix,i=n.op="beforeUpdateAll",S(o[i](e,t,r,n)).then(function(){return i=n.op="updateAll",o.dbg(i,e,t,r,n),o.PUT(o.getPath("updateAll",e,null,n),o.serialize(e,t,n),n)}).then(function(t){return o.deserialize(e,t,n)}).then(function(a){return i=n.op="afterUpdateAll",S(o[i](e,t,r,n,a)).then(function(e){return C(e)?a:e})})},updateMany:function(e,t,r){var n=this,o=void 0;return r=r?h(r):{},r.params||(r.params={}),r.params=n.queryTransform(e,r.params,r),r.suffix=C(r.suffix)?e.suffix:r.suffix,o=r.op="beforeUpdateMany",S(n[o](e,t,r)).then(function(){return o=r.op="updateMany",n.dbg(o,e,t,r),n.PUT(n.getPath("updateMany",e,null,r),n.serialize(e,t,r),r)}).then(function(t){return n.deserialize(e,t,r)}).then(function(i){return o=r.op="afterUpdateMany",S(n[o](e,t,r,i)).then(function(e){return C(e)?i:e})})}}),s.addAction=function(e,t){if(!e||!P(e))throw new TypeError("action(name[, opts]): Expected: string, Found: "+("undefined"==typeof e?"undefined":f(e)));return function(r){if(r[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 j(e)},r[e]=function(r,n){var o=this;A(r)&&(n=r),n=n||{};var a=o.getAdapter(t.adapter||o.defaultAdapter||"http"),u={};if(g(u,t),!n.hasOwnProperty("endpoint")&&u.endpoint&&(n.endpoint=u.endpoint),"function"==typeof n.getEndpoint)u.url=n.getEndpoint(o,n);else{var s=[n.basePath||o.basePath||a.basePath,a.getEndpoint(o,E(r)?r:null,n)];E(r)&&s.push(r),s.push(t.pathname||e),u.url=i.apply(null,s)}return u.method=u.method||"GET",u.mapper=o.name,m(u)(n),S(u).then(n.request||t.request).then(function(e){return a.HTTP(e)}).then(function(e){return e&&e.config&&(e.config.mapper=o.name),e}).then(n.response||t.response,n.responseError||t.responseError)},r}},s.addActions=function(e){return e||(e={}),function(e){return v(e,function(t,r){s.addAction(r,t)(e)}),e}},s.extend=y,s.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=s},function(t,r){t.exports=e},function(e,t,r){e.exports=r(3)},function(e,t,r){"use strict";function n(e){this.defaults=i.merge({},e),this.interceptors={request:new u,response:new u}}var o=r(4),i=r(5),a=r(6),u=r(15),s=r(16),f=r(17),c=r(18),p=r(11);n.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=p(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=[a,void 0],r=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;)r=r.then(t.shift(),t.shift());return r};var l=new n(o),d=e.exports=c(n.prototype.request,l);d.create=function(e){return new n(e)},d.defaults=l.defaults,d.all=function(e){return Promise.all(e)},d.spread=r(19),d.interceptors=l.interceptors,i.forEach(["delete","get","head"],function(e){n.prototype[e]=function(t,r){return this.request(i.merge(r||{},{method:e,url:t}))},d[e]=c(n.prototype[e],l)}),i.forEach(["post","put","patch"],function(e){n.prototype[e]=function(t,r,n){return this.request(i.merge(n||{},{method:e,url:t,data:r}))},d[e]=c(n.prototype[e],l)})},function(e,t,r){"use strict";var n=r(5),o=/^\)\]\}',?\n/,i={"Content-Type":"application/x-www-form-urlencoded"};e.exports={transformRequest:[function(e,t){return n.isFormData(e)?e:n.isArrayBuffer(e)?e:n.isArrayBufferView(e)?e.buffer:!n.isObject(e)||n.isFile(e)||n.isBlob(e)?e:(n.isUndefined(t)||(n.forEach(t,function(e,r){"content-type"===r.toLowerCase()&&(t["Content-Type"]=e)}),n.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:n.merge(i),post:n.merge(i),put:n.merge(i)},timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"}},function(e,t){"use strict";function r(e){return"[object Array]"===g.call(e)}function n(e){return"[object ArrayBuffer]"===g.call(e)}function o(e){return"[object FormData]"===g.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 a(e){return"string"==typeof e}function u(e){return"number"==typeof e}function s(e){return"undefined"==typeof e}function f(e){return null!==e&&"object"==typeof e}function c(e){return"[object Date]"===g.call(e)}function p(e){return"[object File]"===g.call(e)}function l(e){return"[object Blob]"===g.call(e)}function d(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function h(){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||r(e)||(e=[e]),r(e))for(var n=0,o=e.length;o>n;n++)t.call(null,e[n],n,e);else for(var i in e)e.hasOwnProperty(i)&&t.call(null,e[i],i,e)}function y(){function e(e,r){"object"==typeof t[r]&&"object"==typeof e?t[r]=y(t[r],e):t[r]=e}for(var t={},r=0,n=arguments.length;n>r;r++)m(arguments[r],e);return t}var g=Object.prototype.toString;e.exports={isArray:r,isArrayBuffer:n,isFormData:o,isArrayBufferView:i,isString:a,isNumber:u,isObject:f,isUndefined:s,isDate:c,isFile:p,isBlob:l,isStandardBrowserEnv:h,forEach:m,merge:y,trim:d}},function(e,t,r){(function(t){"use strict";e.exports=function(e){return new Promise(function(n,o){try{var i;"function"==typeof e.adapter?i=e.adapter:"undefined"!=typeof XMLHttpRequest?i=r(8):"undefined"!=typeof t&&(i=r(8)),"function"==typeof i&&i(n,o,e)}catch(e){o(e)}})}}).call(t,r(7))},function(e,t){function r(){f=!1,a.length?s=a.concat(s):c=-1,s.length&&n()}function n(){if(!f){var e=setTimeout(r);f=!0;for(var t=s.length;t;){for(a=s,s=[];++c1)for(var r=1;r=200&&o.status<300||!("status"in l)&&o.responseText?e:t)(o),l=null}},l.onerror=function(){t(new Error("Network Error")),l=null},n.isStandardBrowserEnv()){var m=r(14),y=f.withCredentials||u(f.url)?m.read(f.xsrfCookieName):void 0;y&&(p[f.xsrfHeaderName]=y)}if("setRequestHeader"in l&&n.forEach(p,function(e,t){"undefined"==typeof c&&"content-type"===t.toLowerCase()?delete p[t]:l.setRequestHeader(t,e)}),f.withCredentials&&(l.withCredentials=!0),f.responseType)try{l.responseType=f.responseType}catch(e){if("json"!==l.responseType)throw e}n.isArrayBuffer(c)&&(c=new DataView(c)),l.send(c)}},function(e,t,r){"use strict";function n(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,"]")}var o=r(5);e.exports=function(e,t,r){if(!t)return e;var i;if(r)i=r(t);else{var a=[];o.forEach(t,function(e,t){null!==e&&"undefined"!=typeof e&&(o.isArray(e)&&(t+="[]"),o.isArray(e)||(e=[e]),o.forEach(e,function(e){o.isDate(e)?e=e.toISOString():o.isObject(e)&&(e=JSON.stringify(e)),a.push(n(t)+"="+n(e))}))}),i=a.join("&")}return i&&(e+=(-1===e.indexOf("?")?"?":"&")+i),e}},function(e,t,r){"use strict";var n=r(5);e.exports=function(e){var t,r,o,i={};return e?(n.forEach(e.split("\n"),function(e){o=e.indexOf(":"),t=n.trim(e.substr(0,o)).toLowerCase(),r=n.trim(e.substr(o+1)),t&&(i[t]=i[t]?i[t]+", "+r:r)}),i):i}},function(e,t,r){"use strict";var n=r(5);e.exports=function(e,t,r){return n.forEach(r,function(r){e=r(e,t)}),e}},function(e,t,r){"use strict";var n=r(5);e.exports=n.isStandardBrowserEnv()?function(){function e(e){var t=e;return r&&(o.setAttribute("href",t),t=o.href),o.setAttribute("href",t),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}var t,r=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");return t=e(window.location.href),function(r){var o=n.isString(r)?e(r):r;return o.protocol===t.protocol&&o.host===t.host}}():function(){return function(){return!0}}()},function(e,t){"use strict";function r(e){this.message=e}function n(e){for(var t,n,i=String(e),a="",u=0,s=o;i.charAt(0|u)||(s="=",u%1);a+=s.charAt(63&t>>8-u%1*8)){if(n=i.charCodeAt(u+=.75),n>255)throw new r("INVALID_CHARACTER_ERR: DOM Exception 5");t=t<<8|n}return a}var o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";r.prototype=new Error,r.prototype.code=5,r.prototype.name="InvalidCharacterError",e.exports=n},function(e,t,r){"use strict";var n=r(5);e.exports=n.isStandardBrowserEnv()?function(){return{write:function(e,t,r,o,i,a){var u=[];u.push(e+"="+encodeURIComponent(t)),n.isNumber(r)&&u.push("expires="+new Date(r).toGMTString()),n.isString(o)&&u.push("path="+o),n.isString(i)&&u.push("domain="+i),a===!0&&u.push("secure"),document.cookie=u.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,r){"use strict";function n(){this.handlers=[]}var o=r(5);n.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},n.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},n.prototype.forEach=function(e){o.forEach(this.handlers,function(t){null!==t&&e(t)})},e.exports=n},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 r=new Array(arguments.length),n=0;n>>>>>> 3.0.0-alpha.6 -======= -!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.HttpAdapter=t(require("js-data")):e.HttpAdapter=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 e&&e.__esModule?e:{default:e}}function o(e){return null!=e&&""!==e}function a(e,t){return t||(t=""),e.filter(o).join(t)}function i(){for(var e=arguments.length,t=Array(e),n=0;e>n;n++)t[n]=arguments[n];var r=a(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 s(e,t){if(!t)return e;var n=[];return w(t,function(e,t){null!==e&&"undefined"!=typeof e&&(x(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():S(e)&&(e=C(e)),n.push(u(t)+"="+u(e))}))}),n.length>0&&(e+=(-1===e.indexOf("?")?"?":"&")+n.join("&")),e}function f(e){var t=this;e||(e={}),A(e,_),d.default.call(t,e)}var c="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),p=n(2),d=r(p),h=n(3),y=l.utils._,g=l.utils.addHiddenPropsToTarget,m=l.utils.copy,v=l.utils.deepMixIn,b=l.utils.extend,A=l.utils.fillIn,w=l.utils.forOwn,T=l.utils.get,x=l.utils.isArray,E=l.utils.isFunction,P=l.utils.isNumber,S=l.utils.isObject,M=l.utils.isSorN,F=l.utils.isString,j=l.utils.isUndefined,O=l.utils.resolve,H=l.utils.reject,C=l.utils.toJson,L=!1;try{L=window&&window.fetch}catch(e){}var D=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var o=n[n.length-1];return e.dbg.apply(e,[o.op].concat(n)),O()},K=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var o=n[n.length-2];return e.dbg.apply(e,[o.op].concat(n)),O()},U=d.default.prototype,_={basePath:"",forceTrailingSlash:!1,http:h,httpConfig:{},suffix:"",useFetch:!1};f.prototype=Object.create(d.default.prototype,{constructor:{value:f,enumerable:!1,writable:!0,configurable:!0}}),Object.defineProperty(f,"__super__",{configurable:!0,value:d.default}),g(f.prototype,{afterDEL:K,afterGET:K,afterHTTP:K,afterPOST:K,afterPUT:K,beforeDEL:D,beforeGET:D,beforeHTTP:D,beforePOST:D,beforePUT:D,_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.data,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)})},_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)})},create:function(e,t,n){var r=this;return n=n?m(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),U.create.call(r,e,t,n)},createMany:function(e,t,n){var r=this;return n=n?m(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),U.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",O(r[o](e,t,n)).then(function(a){return t=j(a)?t:a,o=n.op="DEL",r.dbg(o,e,t,n),r.HTTP(t,n)}).then(function(a){return o=n.op="afterDEL",O(r[o](e,t,n,a)).then(function(e){return j(e)?a:e})})},deserialize:function(e,t,n){return n||(n={}),E(n.deserialize)?n.deserialize(e,t,n):E(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?m(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),U.destroy.call(r,e,t,n)},destroyAll:function(e,t,n){var r=this;return t||(t={}),n=n?m(n):{},n.params||(n.params={}),v(n.params,t),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),U.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=C(e.data)),fetch(new Request(s(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?m(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),U.find.call(r,e,t,n)},findAll:function(e,t,n){var r=this;return t||(t={}),n=n?m(n):{},n.params||(n.params={}),n.suffix=r.getSuffix(e,n),v(n.params,t),n.params=r.queryTransform(e,n.params,n),U.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",O(r[o](e,t,n)).then(function(a){return t=j(a)?t:a,o=n.op="GET",r.dbg(o,e,t,n),r.HTTP(t,n)}).then(function(a){return o=n.op="afterGET",O(r[o](e,t,n,a)).then(function(e){return j(e)?a:e})})},getEndpoint:function(e,t,n){var r=this;n||(n={}),n.params||(n.params={});var o=e.relationList||[],a=j(n.endpoint)?j(e.endpoint)?e.name:e.endpoint:n.endpoint;return o.forEach(function(e){if("belongsTo"===e.type&&e.parent){var o=void 0,u=e.foreignKey,s=e.getRelation(),f=n.params[u];if(f===!1||!u||!s)return f===!1&&delete n.params[u],!1;if(delete n.params[u],S(t)&&(o=t),o&&(f=f||e.getForeignKey(o)||(e.getLocalField(o)?T(e.getLocalField(o),s.idAttribute):null)),f){var l=function(){delete n.endpoint;var e={};return w(n,function(t,n){e[n]=t}),y(e,s),a=i(r.getEndpoint(s,f,e),f,a),{v:!1}}();if("object"===("undefined"==typeof l?"undefined":c(l)))return l.v}}}),a},getPath:function(e,t,n,r){var o=this;r||(r={});var a=[j(r.basePath)?j(t.basePath)?o.basePath:t.basePath:r.basePath,o.getEndpoint(t,F(n)||P(n)||"create"===e?n:null,r)];return"find"!==e&&"update"!==e&&"destroy"!==e||a.push(n),i.apply(l.utils,a)},getSuffix:function(e,t){return t||(t={}),j(t.suffix)?j(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),H(t))}var r=this,o=new Date;t||(t={}),e=m(e),e=v(e,r.httpConfig),r.forceTrailingSlash&&"/"!==e.url[e.url.length-1]&&(e.url+="/"),e.method=e.method.toUpperCase();var a=e.suffix||t.suffix||r.suffix;if(a&&e.url.substr(e.url.length-a.length)!==a&&(e.url+=a),!r.http)throw new Error("You have not configured this adapter with an http library!");return O(r.beforeHTTP(e,t)).then(function(o){return e=o||e,L&&(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 O(r.afterHTTP(e,t,n)).then(function(e){return e||n})})},POST:function(e,t,n,r){var o=this,a=void 0;return n||(n={}),r||(r={}),n.url=e||n.url,n.data=t||n.data,n.method=n.method||"post",a=r.op="beforePOST",O(o[a](e,t,n,r)).then(function(i){return n=j(i)?n:i,a=r.op="POST",o.dbg(a,e,t,n,r),o.HTTP(n,r)}).then(function(i){return a=r.op="afterPOST",O(o[a](e,t,n,r,i)).then(function(e){return j(e)?i:e})})},PUT:function(e,t,n,r){var o=this,a=void 0;return n||(n={}),r||(r={}),n.url=e||n.url,n.data=t||n.data,n.method=n.method||"put",a=r.op="beforePUT",O(o[a](e,t,n,r)).then(function(i){return n=j(i)?n:i,a=r.op="PUT",o.dbg(a,e,t,n,r),o.HTTP(n,r)}).then(function(i){return a=r.op="afterPUT",O(o[a](e,t,n,r,i)).then(function(e){return j(e)?i:e})})},queryTransform:function(e,t,n){return n||(n={}),E(n.queryTransform)?n.queryTransform(e,t,n):E(e.queryTransform)?e.queryTransform(e,t,n):t},responseError:function(e,t,n){return H(e)},serialize:function(e,t,n){return n||(n={}),E(n.serialize)?n.serialize(e,t,n):E(e.serialize)?e.serialize(e,t,n):t},update:function(e,t,n,r){var o=this;return r=r?m(r):{},r.params||(r.params={}),r.params=o.queryTransform(e,r.params,r),r.suffix=o.getSuffix(e,r),U.update.call(o,e,t,n,r)},updateAll:function(e,t,n,r){var o=this;return n||(n={}),r=r?m(r):{},r.params||(r.params={}),v(r.params,n),r.params=o.queryTransform(e,r.params,r),r.suffix=o.getSuffix(e,r),U.updateAll.call(o,e,t,n,r)},updateMany:function(e,t,n){var r=this;return n=n?m(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),U.updateMany.call(r,e,t,n)}}),f.addAction=function(e,t){if(!e||!F(e))throw new TypeError("action(name[, opts]): Expected: string, Found: "+("undefined"==typeof e?"undefined":c(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 H(e)},n[e]=function(n,r){var o=this;S(n)&&(r=n),r=r||{};var a=o.getAdapter(t.adapter||o.defaultAdapter||"http"),u={};if(A(u,t),!r.hasOwnProperty("endpoint")&&u.endpoint&&(r.endpoint=u.endpoint),"function"==typeof r.getEndpoint)u.url=r.getEndpoint(o,r);else{var s=[r.basePath||o.basePath||a.basePath,a.getEndpoint(o,M(n)?n:null,r)];M(n)&&s.push(n),s.push(t.pathname||e),u.url=i.apply(null,s)}return u.method=u.method||"GET",u.mapper=o.name,v(u)(r),O(u).then(r.request||t.request).then(function(e){return a.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}},f.addActions=function(e){return e||(e={}),function(e){return w(e,function(t,n){f.addAction(n,t)(e)}),e}},f.extend=b,f.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=f},function(t,n){t.exports=e},function(e,t,n){!function(e,t){t(n(1))}(this,function(t){"use strict";function n(e){var t=this;e||(e={}),u(e,A),u(t,e)}function r(e,t,n){var r=this;t||(t={}),r.data=e,u(r,t),r.op=n}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,a=void 0;try{for(var i,u=e[Symbol.iterator]();!(r=(i=u.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&u.return&&u.return()}finally{if(o)throw a}}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 a=t.utils.addHiddenPropsToTarget,i=t.utils.extend,u=t.utils.fillIn,s=t.utils.forEachRelation,f=t.utils.get,c=t.utils.isArray,l=t.utils.isObject,p=t.utils.isUndefined,d=t.utils.omit,h=t.utils.plainCopy,y=t.utils.resolve,g=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var o=n[n.length-1];return e.dbg.apply(e,[o.op].concat(n)),y()},m=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var o=n[n.length-2];return e.dbg.apply(e,[o.op].concat(n)),y()},v=function(e){var t={},n=[];return e.forEach(function(e){e in t||(n.push(e),t[e]=0)}),n},b=function(e,t){return d(t,e.relationFields||[])},A={debug:!1,raw:!1};n.reserved=["orderBy","sort","limit","offset","skip","where"],n.Response=r,n.extend=i,a(n.prototype,{afterCreate:m,afterCreateMany:m,afterDestroy:m,afterDestroyAll:m,afterFind:m,afterFindAll:m,afterUpdate:m,afterUpdateAll:m,afterUpdateMany:m,beforeCreate:g,beforeCreateMany:g,beforeDestroy:g,beforeDestroyAll:g,beforeFind:g,beforeFindAll:g,beforeUpdate:g,beforeUpdateAll:g,beforeUpdateMany:g,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))},create:function(e,t,n){var a=this,i=void 0;return t||(t={}),n||(n={}),i=n.op="beforeCreate",y(a[i](e,t,n)).then(function(r){return t=p(r)?t:r,t=b(e,t),i=n.op="create",a.dbg(i,e,t,n),y(a._create(e,t,n))}).then(function(u){var s=o.slicedToArray(u,2),f=s[0],c=s[1];c||(c={});var l=new r(f,c,"create");return l.created=f?1:0,l=a.respond(l,n),i=n.op="afterCreate",y(a[i](e,t,n,l)).then(function(e){return p(e)?l:e})})},createMany:function(e,t,n){var a=this,i=void 0;return t||(t={}),n||(n={}),i=n.op="beforeCreateMany",y(a[i](e,t,n)).then(function(r){return t=p(r)?t:r,t=t.map(function(t){return b(e,t)}),i=n.op="createMany",a.dbg(i,e,t,n),y(a._createMany(e,t,n))}).then(function(u){var s=o.slicedToArray(u,2),f=s[0],c=s[1];f||(f=[]),c||(c={});var l=new r(f,c,"createMany");return l.created=f.length,l=a.respond(l,n),i=n.op="afterCreateMany",y(a[i](e,t,n,l)).then(function(e){return p(e)?l:e})})},destroy:function(e,t,n){var a=this,i=void 0;return n||(n={}),i=n.op="beforeDestroy",y(a[i](e,t,n)).then(function(){return i=n.op="destroy",a.dbg(i,e,t,n),y(a._destroy(e,t,n))}).then(function(u){var s=o.slicedToArray(u,2),f=s[0],c=s[1];c||(c={});var l=new r(f,c,"destroy");return l=a.respond(l,n),i=n.op="afterDestroy",y(a[i](e,t,n,l)).then(function(e){return p(e)?l:e})})},destroyAll:function(e,t,n){var a=this,i=void 0;return t||(t={}),n||(n={}),i=n.op="beforeDestroyAll",y(a[i](e,t,n)).then(function(){return i=n.op="destroyAll",a.dbg(i,e,t,n),y(a._destroyAll(e,t,n))}).then(function(u){var s=o.slicedToArray(u,2),f=s[0],c=s[1];c||(c={});var l=new r(f,c,"destroyAll");return l=a.respond(l,n),i=n.op="afterDestroyAll",y(a[i](e,t,n,l)).then(function(e){return p(e)?l:e})})},makeHasManyForeignKey:function(e,t,n){return t.getForeignKey(n)},makeHasManyLocalKeys:function(e,t,n){var r=[],o=f(n,t.localKeys)||[];return o=c(o)?o:Object.keys(o),r=r.concat(o),v(r).filter(function(e){return e})},makeHasManyForeignKeys:function(e,t,n){return f(n,e.idAttribute)},loadHasMany:function(e,t,n,r){var o=this,a=!1;l(n)&&!c(n)&&(a=!0,n=[n]);var i=n.map(function(n){return o.makeHasManyForeignKey(e,t,n)}),u={where:{}},s=u.where[t.foreignKey]={};return a?s["=="]=i[0]:s.in=i.filter(function(e){return e}),o.findAll(t.getRelation(),u,r).then(function(r){n.forEach(function(n){var o=[];a?o=r:r.forEach(function(r){f(r,t.foreignKey)===n[e.idAttribute]&&o.push(r)}),t.setLocalField(n,o)})})},loadHasManyLocalKeys:function(e,t,n,r){var a=this,i=void 0,u=t.getRelation();if(l(n)&&!c(n)&&(i=n),i)return a.findAll(u,{where:o.defineProperty({},u.idAttribute,{in:a.makeHasManyLocalKeys(e,t,i)})},r).then(function(e){t.setLocalField(i,e)});var s=function(){var i=[];return n.forEach(function(n){i=i.concat(a.self.makeHasManyLocalKeys(e,t,n))}),{v:a.findAll(u,{where:o.defineProperty({},u.idAttribute,{in:v(i).filter(function(e){return e})})},r).then(function(e){return n.forEach(function(n){var r=[],o=f(n,t.localKeys)||[];o=c(o)?o:Object.keys(o),e.forEach(function(e){o&&-1!==o.indexOf(e[u.idAttribute])&&r.push(e)}),t.setLocalField(n,r)}),e})}}();return"object"===("undefined"==typeof s?"undefined":o.typeof(s))?s.v:void 0},loadHasManyForeignKeys:function(e,t,n,r){var a=this,i=t.getRelation(),u=e.idAttribute,s=void 0;return l(n)&&!c(n)&&(s=n),s?a.findAll(t.getRelation(),{where:o.defineProperty({},t.foreignKeys,{contains:a.makeHasManyForeignKeys(e,t,s)})},r).then(function(e){t.setLocalField(s,e)}):a.findAll(i,{where:o.defineProperty({},t.foreignKeys,{isectNotEmpty:n.map(function(n){return a.makeHasManyForeignKeys(e,t,n)})})},r).then(function(e){var r=t.foreignKeys;n.forEach(function(n){var o=[],a=f(n,u);e.forEach(function(t){var n=f(e,r)||[];-1!==n.indexOf(a)&&o.push(t)}),t.setLocalField(n,o)})})},loadHasOne:function(e,t,n,r){return l(n)&&!c(n)&&(n=[n]),this.loadHasMany(e,t,n,r).then(function(){n.forEach(function(e){var n=t.getLocalField(e);c(n)&&n.length&&t.setLocalField(e,n[0])})})},makeBelongsToForeignKey:function(e,t,n){return t.getForeignKey(n)},loadBelongsTo:function(e,t,n,r){var a=this,i=t.getRelation();if(!l(n)||c(n)){var u=n.map(function(n){return a.makeBelongsToForeignKey(e,t,n)}).filter(function(e){return e});return a.findAll(i,{where:o.defineProperty({},i.idAttribute,{in:u})},r).then(function(e){n.forEach(function(n){e.forEach(function(e){e[i.idAttribute]===n[t.foreignKey]&&t.setLocalField(n,e)})})})}var s=function(){var o=n;return{v:a.find(i,a.makeBelongsToForeignKey(e,t,o),r).then(function(e){t.setLocalField(o,e)})}}();return"object"===("undefined"==typeof s?"undefined":o.typeof(s))?s.v:void 0},find:function(e,t,n){var a=this,i=void 0,u=void 0;return n||(n={}),n.with||(n.with=[]),u=n.op="beforeFind",y(a[u](e,t,n)).then(function(){return u=n.op="find",a.dbg(u,e,t,n),y(a._find(e,t,n))}).then(function(t){var r=o.slicedToArray(t,1),u=r[0];if(u){i=u;var f=[];return s(e,n,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,i,n):"hasMany"===t.type&&t.foreignKeys?r=a.loadHasManyForeignKeys(e,t,i,n):"belongsTo"===t.type&&(r=a.loadBelongsTo(e,t,i,n)):r="hasOne"===t.type?a.loadHasOne(e,t,i,n):a.loadHasMany(e,t,i,n),r&&f.push(r)}),Promise.all(f)}}).then(function(){var o=new r(i,{},"find");return o.found=i?1:0,o=a.respond(o,n),u=n.op="afterFind",y(a[u](e,t,n,o)).then(function(e){return p(e)?o:e})})},findAll:function(e,t,n){var a=this;n||(n={}),n.with||(n.with=[]);var i=[],u=void 0;return u=n.op="beforeFindAll",y(a[u](e,t,n)).then(function(){return u=n.op="findAll",a.dbg(u,e,t,n),y(a._findAll(e,t,n))}).then(function(t){var r=o.slicedToArray(t,1),u=r[0];u||(u=[]),i=u;var f=[];return s(e,n,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,i,n):"hasMany"===t.type&&t.foreignKeys?r=a.loadHasManyForeignKeys(e,t,i,n):"belongsTo"===t.type&&(r=a.loadBelongsTo(e,t,i,n)):r="hasMany"===t.type?a.loadHasMany(e,t,i,n):a.loadHasOne(e,t,i,n),r&&f.push(r)}),Promise.all(f)}).then(function(){var o=new r(i,{},"findAll");return o.found=i.length,o=a.respond(o,n),u=n.op="afterFindAll",y(a[u](e,t,n,o)).then(function(e){return p(e)?o:e})})},getOpt:function(e,t){return t||(t={}),h(p(t[e])?this[e]:t[e])},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 a;(a=console)[e].apply(a,[o].concat(n))}else{var i;(i=console).log.apply(i,[o].concat(n))}}},respond:function(e,t){return this.getOpt("raw",t)?e:e.data},update:function(e,t,n,a){var i=this;n||(n={}),a||(a={});var u=void 0;return u=a.op="beforeUpdate",y(i[u](e,t,n,a)).then(function(r){return n=p(r)?n:r,u=a.op="update",i.dbg(u,e,t,n,a),y(i._update(e,t,n,a))}).then(function(s){var f=o.slicedToArray(s,2),c=f[0],l=f[1];l||(l={});var d=new r(c,l,"update");return d.updated=c?1:0,d=i.respond(d,a),u=a.op="afterUpdate",y(i[u](e,t,n,a,d)).then(function(e){return p(e)?d:e})})},updateAll:function(e,t,n,a){var i=this;t||(t={}),n||(n={}),a||(a={});var u=void 0;return u=a.op="beforeUpdateAll",y(i[u](e,t,n,a)).then(function(r){return t=p(r)?t:r,u=a.op="updateAll",i.dbg(u,e,t,n,a),y(i._updateAll(e,t,n,a))}).then(function(s){var f=o.slicedToArray(s,2),c=f[0],l=f[1];c||(c=[]),l||(l={});var d=new r(c,l,"updateAll");return d.updated=c.length,d=i.respond(d,a),u=a.op="afterUpdateAll",y(i[u](e,t,n,a,d)).then(function(e){return p(e)?d:e})})},updateMany:function(e,t,n){var a=this;t||(t=[]),n||(n={});var i=void 0,u=e.idAttribute;return t=t.filter(function(e){return f(e,u)}),i=n.op="beforeUpdateMany",y(a[i](e,t,n)).then(function(r){return t=p(r)?t:r,t=t.map(function(t){return b(e,t)}),i=n.op="updateMany",a.dbg(i,e,t,n),y(a._updateMany(e,t,n))}).then(function(u){var s=o.slicedToArray(u,2),f=s[0],c=s[1];f||(f=[]),c||(c={});var l=new r(f,c,"updateMany");return l.updated=f.length,l=a.respond(l,n),i=n.op="afterUpdateMany",y(a[i](e,t,n,l)).then(function(e){return p(e)?l:e})})}}),e.exports=n})},function(e,t,n){e.exports=n(4)},function(e,t,n){"use strict";function r(e){this.defaults=a.merge({},e),this.interceptors={request:new u,response:new u}}var o=n(5),a=n(6),i=n(7),u=n(16),s=n(17),f=n(18),c=n(19),l=n(12);r.prototype.request=function(e){"string"==typeof e&&(e=a.merge({url:arguments[0]},arguments[1])),e=a.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=l(e.data,e.headers,e.transformRequest),e.headers=a.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),a.forEach(["delete","get","head","post","put","patch","common"],function(t){delete e.headers[t]});var t=[i,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 p=new r(o),d=e.exports=c(r.prototype.request,p);d.create=function(e){return new r(e)},d.defaults=p.defaults,d.all=function(e){return Promise.all(e)},d.spread=n(20),d.interceptors=p.interceptors,a.forEach(["delete","get","head"],function(e){r.prototype[e]=function(t,n){return this.request(a.merge(n||{},{method:e,url:t}))},d[e]=c(r.prototype[e],p)}),a.forEach(["post","put","patch"],function(e){r.prototype[e]=function(t,n,r){return this.request(a.merge(r||{},{method:e,url:t,data:n}))},d[e]=c(r.prototype[e],p)})},function(e,t,n){"use strict";var r=n(6),o=/^\)\]\}',?\n/,a={"Content-Type":"application/x-www-form-urlencoded"};e.exports={transformRequest:[function(e,t){return r.isFormData(e)?e:r.isArrayBuffer(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(a),post:r.merge(a),put:r.merge(a)},timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"}},function(e,t){"use strict";function n(e){return"[object Array]"===m.call(e)}function r(e){return"[object ArrayBuffer]"===m.call(e)}function o(e){return"[object FormData]"===m.call(e)}function a(e){var t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer}function i(e){return"string"==typeof e}function u(e){return"number"==typeof e}function s(e){return"undefined"==typeof e}function f(e){return null!==e&&"object"==typeof e}function c(e){return"[object Date]"===m.call(e)}function l(e){return"[object File]"===m.call(e)}function p(e){return"[object Blob]"===m.call(e)}function d(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function h(){return"undefined"!=typeof window&&"undefined"!=typeof document&&"function"==typeof document.createElement}function y(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 a in e)e.hasOwnProperty(a)&&t.call(null,e[a],a,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++)y(arguments[n],e);return t}var m=Object.prototype.toString;e.exports={isArray:n,isArrayBuffer:r,isFormData:o,isArrayBufferView:a,isString:i,isNumber:u,isObject:f,isUndefined:s,isDate:c,isFile:l,isBlob:p,isStandardBrowserEnv:h,forEach:y,merge:g,trim:d}},function(e,t,n){(function(t){"use strict";e.exports=function(e){return new Promise(function(r,o){try{var a;"function"==typeof e.adapter?a=e.adapter:"undefined"!=typeof XMLHttpRequest?a=n(9):"undefined"!=typeof t&&(a=n(9)),"function"==typeof a&&a(r,o,e)}catch(e){o(e)}})}}).call(t,n(8))},function(e,t){function n(){f=!1,i.length?s=i.concat(s):c=-1,s.length&&r()}function r(){if(!f){var e=setTimeout(n);f=!0;for(var t=s.length;t;){for(i=s,s=[];++c1)for(var n=1;n=200&&o.status<300||!("status"in p)&&o.responseText?e:t)(o),p=null}},p.onerror=function(){t(new Error("Network Error")),p=null},r.isStandardBrowserEnv()){var y=n(15),g=f.withCredentials||u(f.url)?y.read(f.xsrfCookieName):void 0;g&&(l[f.xsrfHeaderName]=g)}if("setRequestHeader"in p&&r.forEach(l,function(e,t){"undefined"==typeof c&&"content-type"===t.toLowerCase()?delete l[t]:p.setRequestHeader(t,e)}),f.withCredentials&&(p.withCredentials=!0),f.responseType)try{p.responseType=f.responseType}catch(e){if("json"!==p.responseType)throw e}r.isArrayBuffer(c)&&(c=new DataView(c)),p.send(c)}},function(e,t,n){"use strict";function r(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,"]")}var o=n(6);e.exports=function(e,t,n){if(!t)return e;var a;if(n)a=n(t);else{var i=[];o.forEach(t,function(e,t){null!==e&&"undefined"!=typeof e&&(o.isArray(e)&&(t+="[]"),o.isArray(e)||(e=[e]),o.forEach(e,function(e){o.isDate(e)?e=e.toISOString():o.isObject(e)&&(e=JSON.stringify(e)),i.push(r(t)+"="+r(e))}))}),a=i.join("&")}return a&&(e+=(-1===e.indexOf("?")?"?":"&")+a),e}},function(e,t,n){"use strict";var r=n(6);e.exports=function(e){var t,n,o,a={};return e?(r.forEach(e.split("\n"),function(e){o=e.indexOf(":"),t=r.trim(e.substr(0,o)).toLowerCase(),n=r.trim(e.substr(o+1)),t&&(a[t]=a[t]?a[t]+", "+n:n)}),a):a}},function(e,t,n){"use strict";var r=n(6);e.exports=function(e,t,n){return r.forEach(n,function(n){e=n(e,t)}),e}},function(e,t,n){"use strict";var r=n(6);e.exports=r.isStandardBrowserEnv()?function(){function e(e){var t=e;return n&&(o.setAttribute("href",t),t=o.href),o.setAttribute("href",t),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}var t,n=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");return t=e(window.location.href),function(n){var o=r.isString(n)?e(n):n;return o.protocol===t.protocol&&o.host===t.host}}():function(){return function(){return!0}}()},function(e,t){"use strict";function n(e){this.message=e}function r(e){for(var t,r,a=String(e),i="",u=0,s=o;a.charAt(0|u)||(s="=",u%1);i+=s.charAt(63&t>>8-u%1*8)){if(r=a.charCodeAt(u+=.75),r>255)throw new n("INVALID_CHARACTER_ERR: DOM Exception 5");t=t<<8|r}return i}var o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";n.prototype=new Error,n.prototype.code=5,n.prototype.name="InvalidCharacterError",e.exports=r},function(e,t,n){"use strict";var r=n(6);e.exports=r.isStandardBrowserEnv()?function(){return{write:function(e,t,n,o,a,i){var u=[];u.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&u.push("expires="+new Date(n).toGMTString()),r.isString(o)&&u.push("path="+o),r.isString(a)&&u.push("domain="+a),i===!0&&u.push("secure"),document.cookie=u.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>>>>>> 3.0.0-alpha.7 +!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.HttpAdapter=t(require("js-data")):e.HttpAdapter=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 e&&e.__esModule?e:{default:e}}function o(e){return null!=e&&""!==e}function a(e,t){return t||(t=""),e.filter(o).join(t)}function i(){for(var e=arguments.length,t=Array(e),n=0;e>n;n++)t[n]=arguments[n];var r=a(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 s(e,t){if(!t)return e;var n=[];return w(t,function(e,t){null!==e&&"undefined"!=typeof e&&(x(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():S(e)&&(e=C(e)),n.push(u(t)+"="+u(e))}))}),n.length>0&&(e+=(-1===e.indexOf("?")?"?":"&")+n.join("&")),e}function f(e){var t=this;e||(e={}),A(e,_),d.default.call(t,e)}var c="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),p=n(2),d=r(p),h=n(3),y=l.utils._,m=l.utils.addHiddenPropsToTarget,g=l.utils.copy,v=l.utils.deepMixIn,b=l.utils.extend,A=l.utils.fillIn,w=l.utils.forOwn,T=l.utils.get,x=l.utils.isArray,E=l.utils.isFunction,P=l.utils.isNumber,S=l.utils.isObject,M=l.utils.isSorN,F=l.utils.isString,j=l.utils.isUndefined,O=l.utils.resolve,H=l.utils.reject,C=l.utils.toJson,L=!1;try{L=window&&window.fetch}catch(e){}var D=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var o=n[n.length-1];return e.dbg.apply(e,[o.op].concat(n)),O()},K=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var o=n[n.length-2];return e.dbg.apply(e,[o.op].concat(n)),O()},U=d.default.prototype,_={basePath:"",forceTrailingSlash:!1,http:h,httpConfig:{},suffix:"",useFetch:!1};f.prototype=Object.create(d.default.prototype,{constructor:{value:f,enumerable:!1,writable:!0,configurable:!0}}),Object.defineProperty(f,"__super__",{configurable:!0,value:d.default}),m(f.prototype,{afterDEL:K,afterGET:K,afterHTTP:K,afterPOST:K,afterPUT:K,beforeDEL:D,beforeGET:D,beforeHTTP:D,beforePOST:D,beforePUT:D,_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.data,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)})},_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)})},create:function(e,t,n){var r=this;return n=n?g(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),U.create.call(r,e,t,n)},createMany:function(e,t,n){var r=this;return n=n?g(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),U.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",O(r[o](e,t,n)).then(function(a){return t=j(a)?t:a,o=n.op="DEL",r.dbg(o,e,t,n),r.HTTP(t,n)}).then(function(a){return o=n.op="afterDEL",O(r[o](e,t,n,a)).then(function(e){return j(e)?a:e})})},deserialize:function(e,t,n){return n||(n={}),E(n.deserialize)?n.deserialize(e,t,n):E(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?g(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),U.destroy.call(r,e,t,n)},destroyAll:function(e,t,n){var r=this;return t||(t={}),n=n?g(n):{},n.params||(n.params={}),v(n.params,t),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),U.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=C(e.data)),fetch(new Request(s(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?g(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),U.find.call(r,e,t,n)},findAll:function(e,t,n){var r=this;return t||(t={}),n=n?g(n):{},n.params||(n.params={}),n.suffix=r.getSuffix(e,n),v(n.params,t),n.params=r.queryTransform(e,n.params,n),U.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",O(r[o](e,t,n)).then(function(a){return t=j(a)?t:a,o=n.op="GET",r.dbg(o,e,t,n),r.HTTP(t,n)}).then(function(a){return o=n.op="afterGET",O(r[o](e,t,n,a)).then(function(e){return j(e)?a:e})})},getEndpoint:function(e,t,n){var r=this;n||(n={}),n.params||(n.params={});var o=e.relationList||[],a=j(n.endpoint)?j(e.endpoint)?e.name:e.endpoint:n.endpoint;return o.forEach(function(e){if("belongsTo"===e.type&&e.parent){var o=void 0,u=e.foreignKey,s=e.getRelation(),f=n.params[u];if(f===!1||!u||!s)return f===!1&&delete n.params[u],!1;if(delete n.params[u],S(t)&&(o=t),o&&(f=f||e.getForeignKey(o)||(e.getLocalField(o)?T(e.getLocalField(o),s.idAttribute):null)),f){var l=function(){delete n.endpoint;var e={};return w(n,function(t,n){e[n]=t}),y(e,s),a=i(r.getEndpoint(s,f,e),f,a),{v:!1}}();if("object"===("undefined"==typeof l?"undefined":c(l)))return l.v}}}),a},getPath:function(e,t,n,r){var o=this;r||(r={});var a=[j(r.basePath)?j(t.basePath)?o.basePath:t.basePath:r.basePath,o.getEndpoint(t,F(n)||P(n)||"create"===e?n:null,r)];return"find"!==e&&"update"!==e&&"destroy"!==e||a.push(n),i.apply(l.utils,a)},getSuffix:function(e,t){return t||(t={}),j(t.suffix)?j(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),H(t))}var r=this,o=new Date;t||(t={});var a=e.data,i=e.cache,u=e.timeout;e=g(e,null,null,null,["data","cache","timeout"]),e=v(e,r.httpConfig),e.data=a,e.cache=i,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 O(r.beforeHTTP(e,t)).then(function(o){return e=o||e,L&&(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 O(r.afterHTTP(e,t,n)).then(function(e){return e||n})})},POST:function(e,t,n,r){var o=this,a=void 0;return n||(n={}),r||(r={}),n.url=e||n.url,n.data=t||n.data,n.method=n.method||"post",a=r.op="beforePOST",O(o[a](e,t,n,r)).then(function(i){return n=j(i)?n:i,a=r.op="POST",o.dbg(a,e,t,n,r),o.HTTP(n,r)}).then(function(i){return a=r.op="afterPOST",O(o[a](e,t,n,r,i)).then(function(e){return j(e)?i:e})})},PUT:function(e,t,n,r){var o=this,a=void 0;return n||(n={}),r||(r={}),n.url=e||n.url,n.data=t||n.data,n.method=n.method||"put",a=r.op="beforePUT",O(o[a](e,t,n,r)).then(function(i){return n=j(i)?n:i,a=r.op="PUT",o.dbg(a,e,t,n,r),o.HTTP(n,r)}).then(function(i){return a=r.op="afterPUT",O(o[a](e,t,n,r,i)).then(function(e){return j(e)?i:e})})},queryTransform:function(e,t,n){return n||(n={}),E(n.queryTransform)?n.queryTransform(e,t,n):E(e.queryTransform)?e.queryTransform(e,t,n):t},responseError:function(e,t,n){return H(e)},serialize:function(e,t,n){return n||(n={}),E(n.serialize)?n.serialize(e,t,n):E(e.serialize)?e.serialize(e,t,n):t},update:function(e,t,n,r){var o=this;return r=r?g(r):{},r.params||(r.params={}),r.params=o.queryTransform(e,r.params,r),r.suffix=o.getSuffix(e,r),U.update.call(o,e,t,n,r)},updateAll:function(e,t,n,r){var o=this;return n||(n={}),r=r?g(r):{},r.params||(r.params={}),v(r.params,n),r.params=o.queryTransform(e,r.params,r),r.suffix=o.getSuffix(e,r),U.updateAll.call(o,e,t,n,r)},updateMany:function(e,t,n){var r=this;return n=n?g(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),U.updateMany.call(r,e,t,n)}}),f.addAction=function(e,t){if(!e||!F(e))throw new TypeError("action(name[, opts]): Expected: string, Found: "+("undefined"==typeof e?"undefined":c(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 H(e)},n[e]=function(n,r){var o=this;S(n)&&(r=n),r=r||{};var a=o.getAdapter(t.adapter||o.defaultAdapter||"http"),u={};if(A(u,t),!r.hasOwnProperty("endpoint")&&u.endpoint&&(r.endpoint=u.endpoint),"function"==typeof r.getEndpoint)u.url=r.getEndpoint(o,r);else{var s=[r.basePath||o.basePath||a.basePath,a.getEndpoint(o,M(n)?n:null,r)];M(n)&&s.push(n),s.push(t.pathname||e),u.url=i.apply(null,s)}return u.method=u.method||"GET",u.mapper=o.name,v(u)(r),O(u).then(r.request||t.request).then(function(e){return a.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}},f.addActions=function(e){return e||(e={}),function(e){return w(e,function(t,n){f.addAction(n,t)(e)}),e}},f.extend=b,f.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=f},function(t,n){t.exports=e},function(e,t,n){!function(e,t){t(n(1))}(this,function(t){"use strict";function n(e){var t=this;e||(e={}),s(e,w),s(t,e)}function r(e,t,n){var r=this;t||(t={}),r.data=e,s(r,t),r.op=n}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,a=void 0;try{for(var i,u=e[Symbol.iterator]();!(r=(i=u.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&u.return&&u.return()}finally{if(o)throw a}}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 a=t.utils.addHiddenPropsToTarget,i=t.utils.deepFillIn,u=t.utils.extend,s=t.utils.fillIn,f=t.utils.forEachRelation,c=t.utils.get,l=t.utils.isArray,p=t.utils.isObject,d=t.utils.isUndefined,h=t.utils.omit,y=t.utils.plainCopy,m=t.utils.resolve,g=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var o=n[n.length-1];return e.dbg.apply(e,[o.op].concat(n)),m()},v=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var o=n[n.length-2];return e.dbg.apply(e,[o.op].concat(n)),m()},b=function(e){var t={},n=[];return e.forEach(function(e){e in t||(n.push(e),t[e]=0)}),n},A=function(e,t){return h(t,e.relationFields||[])},w={debug:!1,raw:!1};n.reserved=["orderBy","sort","limit","offset","skip","where"],n.Response=r,n.extend=u,a(n.prototype,{afterCreate:v,afterCreateMany:v,afterDestroy:v,afterDestroyAll:v,afterFind:v,afterFindAll:v,afterUpdate:v,afterUpdateAll:v,afterUpdateMany:v,beforeCreate:g,beforeCreateMany:g,beforeDestroy:g,beforeDestroyAll:g,beforeFind:g,beforeFindAll:g,beforeUpdate:g,beforeUpdateAll:g,beforeUpdateMany:g,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))},create:function(e,t,n){var a=this,i=void 0;return t||(t={}),n||(n={}),i=n.op="beforeCreate",m(a[i](e,t,n)).then(function(r){return t=d(r)?t:r,t=A(e,t),i=n.op="create",a.dbg(i,e,t,n),m(a._create(e,t,n))}).then(function(u){var s=o.slicedToArray(u,2),f=s[0],c=s[1];c||(c={});var l=new r(f,c,"create");return l.created=f?1:0,l=a.respond(l,n),i=n.op="afterCreate",m(a[i](e,t,n,l)).then(function(e){return d(e)?l:e})})},createMany:function(e,t,n){var a=this,i=void 0;return t||(t={}),n||(n={}),i=n.op="beforeCreateMany",m(a[i](e,t,n)).then(function(r){return t=d(r)?t:r,t=t.map(function(t){return A(e,t)}),i=n.op="createMany",a.dbg(i,e,t,n),m(a._createMany(e,t,n))}).then(function(u){var s=o.slicedToArray(u,2),f=s[0],c=s[1];f||(f=[]),c||(c={});var l=new r(f,c,"createMany");return l.created=f.length,l=a.respond(l,n),i=n.op="afterCreateMany",m(a[i](e,t,n,l)).then(function(e){return d(e)?l:e})})},destroy:function(e,t,n){var a=this,i=void 0;return n||(n={}),i=n.op="beforeDestroy",m(a[i](e,t,n)).then(function(){return i=n.op="destroy",a.dbg(i,e,t,n),m(a._destroy(e,t,n))}).then(function(u){var s=o.slicedToArray(u,2),f=s[0],c=s[1];c||(c={});var l=new r(f,c,"destroy");return l=a.respond(l,n),i=n.op="afterDestroy",m(a[i](e,t,n,l)).then(function(e){return d(e)?l:e})})},destroyAll:function(e,t,n){var a=this,i=void 0;return t||(t={}),n||(n={}),i=n.op="beforeDestroyAll",m(a[i](e,t,n)).then(function(){return i=n.op="destroyAll",a.dbg(i,e,t,n),m(a._destroyAll(e,t,n))}).then(function(u){var s=o.slicedToArray(u,2),f=s[0],c=s[1];c||(c={});var l=new r(f,c,"destroyAll");return l=a.respond(l,n),i=n.op="afterDestroyAll",m(a[i](e,t,n,l)).then(function(e){return d(e)?l:e})})},makeHasManyForeignKey:function(e,t,n){return t.getForeignKey(n)},makeHasManyLocalKeys:function(e,t,n){var r=[],o=c(n,t.localKeys)||[];return o=l(o)?o:Object.keys(o),r=r.concat(o),b(r).filter(function(e){return e})},makeHasManyForeignKeys:function(e,t,n){return c(n,e.idAttribute)},loadHasMany:function(e,t,n,r){var o=this,a=!1;p(n)&&!l(n)&&(a=!0,n=[n]);var i=n.map(function(n){return o.makeHasManyForeignKey(e,t,n)}),u={where:{}},s=u.where[t.foreignKey]={};return a?s["=="]=i[0]:s.in=i.filter(function(e){return e}),o.findAll(t.getRelation(),u,r).then(function(r){n.forEach(function(n){var o=[];a?o=r:r.forEach(function(r){c(r,t.foreignKey)===n[e.idAttribute]&&o.push(r)}),t.setLocalField(n,o)})})},loadHasManyLocalKeys:function(e,t,n,r){var a=this,i=void 0,u=t.getRelation();if(p(n)&&!l(n)&&(i=n),i)return a.findAll(u,{where:o.defineProperty({},u.idAttribute,{in:a.makeHasManyLocalKeys(e,t,i)})},r).then(function(e){t.setLocalField(i,e)});var s=function(){var i=[];return n.forEach(function(n){i=i.concat(a.self.makeHasManyLocalKeys(e,t,n))}),{v:a.findAll(u,{where:o.defineProperty({},u.idAttribute,{in:b(i).filter(function(e){return e})})},r).then(function(e){return n.forEach(function(n){var r=[],o=c(n,t.localKeys)||[];o=l(o)?o:Object.keys(o),e.forEach(function(e){o&&-1!==o.indexOf(e[u.idAttribute])&&r.push(e)}),t.setLocalField(n,r)}),e})}}();return"object"===("undefined"==typeof s?"undefined":o.typeof(s))?s.v:void 0},loadHasManyForeignKeys:function(e,t,n,r){var a=this,i=t.getRelation(),u=e.idAttribute,s=void 0;return p(n)&&!l(n)&&(s=n),s?a.findAll(t.getRelation(),{where:o.defineProperty({},t.foreignKeys,{contains:a.makeHasManyForeignKeys(e,t,s)})},r).then(function(e){t.setLocalField(s,e)}):a.findAll(i,{where:o.defineProperty({},t.foreignKeys,{isectNotEmpty:n.map(function(n){return a.makeHasManyForeignKeys(e,t,n)})})},r).then(function(e){var r=t.foreignKeys;n.forEach(function(n){var o=[],a=c(n,u);e.forEach(function(t){var n=c(e,r)||[];-1!==n.indexOf(a)&&o.push(t)}),t.setLocalField(n,o)})})},loadHasOne:function(e,t,n,r){return p(n)&&!l(n)&&(n=[n]),this.loadHasMany(e,t,n,r).then(function(){n.forEach(function(e){var n=t.getLocalField(e);l(n)&&n.length&&t.setLocalField(e,n[0])})})},makeBelongsToForeignKey:function(e,t,n){return t.getForeignKey(n)},loadBelongsTo:function(e,t,n,r){var a=this,i=t.getRelation();if(!p(n)||l(n)){var u=n.map(function(n){return a.makeBelongsToForeignKey(e,t,n)}).filter(function(e){return e});return a.findAll(i,{where:o.defineProperty({},i.idAttribute,{in:u})},r).then(function(e){n.forEach(function(n){e.forEach(function(e){e[i.idAttribute]===n[t.foreignKey]&&t.setLocalField(n,e)})})})}var s=function(){var o=n;return{v:a.find(i,a.makeBelongsToForeignKey(e,t,o),r).then(function(e){t.setLocalField(o,e)})}}();return"object"===("undefined"==typeof s?"undefined":o.typeof(s))?s.v:void 0},find:function(e,t,n){var a=this,i=void 0,u=void 0;return n||(n={}),n.with||(n.with=[]),u=n.op="beforeFind",m(a[u](e,t,n)).then(function(){return u=n.op="find",a.dbg(u,e,t,n),m(a._find(e,t,n))}).then(function(t){var r=o.slicedToArray(t,1),u=r[0];if(u){i=u;var s=[];return f(e,n,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,i,n):"hasMany"===t.type&&t.foreignKeys?r=a.loadHasManyForeignKeys(e,t,i,n):"belongsTo"===t.type&&(r=a.loadBelongsTo(e,t,i,n)):r="hasOne"===t.type?a.loadHasOne(e,t,i,n):a.loadHasMany(e,t,i,n),r&&s.push(r)}),Promise.all(s)}}).then(function(){var o=new r(i,{},"find");return o.found=i?1:0,o=a.respond(o,n),u=n.op="afterFind",m(a[u](e,t,n,o)).then(function(e){return d(e)?o:e})})},findAll:function(e,t,n){var a=this;n||(n={}),n.with||(n.with=[]);var u=[],s=void 0,c=n._activeWith;if(p(c)){var l=c.query||{};c.replace?t=l:i(t,l)}return s=n.op="beforeFindAll",m(a[s](e,t,n)).then(function(){return s=n.op="findAll",a.dbg(s,e,t,n),m(a._findAll(e,t,n))}).then(function(t){var r=o.slicedToArray(t,1),i=r[0];i||(i=[]),u=i;var s=[];return f(e,n,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&&s.push(r)}),Promise.all(s)}).then(function(){var o=new r(u,{},"findAll");return o.found=u.length,o=a.respond(o,n),s=n.op="afterFindAll",m(a[s](e,t,n,o)).then(function(e){return d(e)?o:e})})},getOpt:function(e,t){return t||(t={}),y(d(t[e])?this[e]:t[e])},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 a;(a=console)[e].apply(a,[o].concat(n))}else{var i;(i=console).log.apply(i,[o].concat(n))}}},respond:function(e,t){return this.getOpt("raw",t)?e:e.data},update:function(e,t,n,a){var i=this;n||(n={}),a||(a={});var u=void 0;return u=a.op="beforeUpdate",m(i[u](e,t,n,a)).then(function(r){return n=d(r)?n:r,u=a.op="update",i.dbg(u,e,t,n,a),m(i._update(e,t,n,a))}).then(function(s){var f=o.slicedToArray(s,2),c=f[0],l=f[1];l||(l={});var p=new r(c,l,"update");return p.updated=c?1:0,p=i.respond(p,a),u=a.op="afterUpdate",m(i[u](e,t,n,a,p)).then(function(e){return d(e)?p:e})})},updateAll:function(e,t,n,a){var i=this;t||(t={}),n||(n={}),a||(a={});var u=void 0;return u=a.op="beforeUpdateAll",m(i[u](e,t,n,a)).then(function(r){return t=d(r)?t:r,u=a.op="updateAll",i.dbg(u,e,t,n,a),m(i._updateAll(e,t,n,a))}).then(function(s){var f=o.slicedToArray(s,2),c=f[0],l=f[1];c||(c=[]),l||(l={});var p=new r(c,l,"updateAll");return p.updated=c.length,p=i.respond(p,a),u=a.op="afterUpdateAll",m(i[u](e,t,n,a,p)).then(function(e){return d(e)?p:e})})},updateMany:function(e,t,n){var a=this;t||(t=[]),n||(n={});var i=void 0,u=e.idAttribute;return t=t.filter(function(e){return c(e,u)}),i=n.op="beforeUpdateMany",m(a[i](e,t,n)).then(function(r){return t=d(r)?t:r,t=t.map(function(t){return A(e,t)}),i=n.op="updateMany",a.dbg(i,e,t,n),m(a._updateMany(e,t,n))}).then(function(u){var s=o.slicedToArray(u,2),f=s[0],c=s[1];f||(f=[]),c||(c={});var l=new r(f,c,"updateMany");return l.updated=f.length,l=a.respond(l,n),i=n.op="afterUpdateMany",m(a[i](e,t,n,l)).then(function(e){return d(e)?l:e})})}}),e.exports=n})},function(e,t,n){e.exports=n(4)},function(e,t,n){"use strict";function r(e){this.defaults=a.merge({},e),this.interceptors={request:new u,response:new u}}var o=n(5),a=n(6),i=n(7),u=n(16),s=n(17),f=n(18),c=n(19),l=n(12);r.prototype.request=function(e){"string"==typeof e&&(e=a.merge({url:arguments[0]},arguments[1])),e=a.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=l(e.data,e.headers,e.transformRequest),e.headers=a.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),a.forEach(["delete","get","head","post","put","patch","common"],function(t){delete e.headers[t]});var t=[i,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 p=new r(o),d=e.exports=c(r.prototype.request,p);d.create=function(e){return new r(e)},d.defaults=p.defaults,d.all=function(e){return Promise.all(e)},d.spread=n(20),d.interceptors=p.interceptors,a.forEach(["delete","get","head"],function(e){r.prototype[e]=function(t,n){return this.request(a.merge(n||{},{method:e,url:t}))},d[e]=c(r.prototype[e],p)}),a.forEach(["post","put","patch"],function(e){r.prototype[e]=function(t,n,r){return this.request(a.merge(r||{},{method:e,url:t,data:n}))},d[e]=c(r.prototype[e],p)})},function(e,t,n){"use strict";var r=n(6),o=/^\)\]\}',?\n/,a={"Content-Type":"application/x-www-form-urlencoded"};e.exports={transformRequest:[function(e,t){return r.isFormData(e)?e:r.isArrayBuffer(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(a),post:r.merge(a),put:r.merge(a)},timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"}},function(e,t){"use strict";function n(e){return"[object Array]"===g.call(e)}function r(e){return"[object ArrayBuffer]"===g.call(e)}function o(e){return"[object FormData]"===g.call(e)}function a(e){var t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer}function i(e){return"string"==typeof e}function u(e){return"number"==typeof e}function s(e){return"undefined"==typeof e}function f(e){return null!==e&&"object"==typeof e}function c(e){return"[object Date]"===g.call(e)}function l(e){return"[object File]"===g.call(e)}function p(e){return"[object Blob]"===g.call(e)}function d(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function h(){return"undefined"!=typeof window&&"undefined"!=typeof document&&"function"==typeof document.createElement}function y(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 a in e)e.hasOwnProperty(a)&&t.call(null,e[a],a,e)}function m(){function e(e,n){"object"==typeof t[n]&&"object"==typeof e?t[n]=m(t[n],e):t[n]=e}for(var t={},n=0,r=arguments.length;r>n;n++)y(arguments[n],e);return t}var g=Object.prototype.toString;e.exports={isArray:n,isArrayBuffer:r,isFormData:o,isArrayBufferView:a,isString:i,isNumber:u,isObject:f,isUndefined:s,isDate:c,isFile:l,isBlob:p,isStandardBrowserEnv:h,forEach:y,merge:m,trim:d}},function(e,t,n){(function(t){"use strict";e.exports=function(e){return new Promise(function(r,o){try{var a;"function"==typeof e.adapter?a=e.adapter:"undefined"!=typeof XMLHttpRequest?a=n(9):"undefined"!=typeof t&&(a=n(9)),"function"==typeof a&&a(r,o,e)}catch(e){o(e)}})}}).call(t,n(8))},function(e,t){function n(){f=!1,i.length?s=i.concat(s):c=-1,s.length&&r()}function r(){if(!f){var e=setTimeout(n);f=!0;for(var t=s.length;t;){for(i=s,s=[];++c1)for(var n=1;n=200&&o.status<300||!("status"in p)&&o.responseText?e:t)(o),p=null}},p.onerror=function(){t(new Error("Network Error")),p=null},r.isStandardBrowserEnv()){var y=n(15),m=f.withCredentials||u(f.url)?y.read(f.xsrfCookieName):void 0;m&&(l[f.xsrfHeaderName]=m)}if("setRequestHeader"in p&&r.forEach(l,function(e,t){"undefined"==typeof c&&"content-type"===t.toLowerCase()?delete l[t]:p.setRequestHeader(t,e)}),f.withCredentials&&(p.withCredentials=!0),f.responseType)try{p.responseType=f.responseType}catch(e){if("json"!==p.responseType)throw e}r.isArrayBuffer(c)&&(c=new DataView(c)),p.send(c)}},function(e,t,n){"use strict";function r(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,"]")}var o=n(6);e.exports=function(e,t,n){if(!t)return e;var a;if(n)a=n(t);else{var i=[];o.forEach(t,function(e,t){null!==e&&"undefined"!=typeof e&&(o.isArray(e)&&(t+="[]"),o.isArray(e)||(e=[e]),o.forEach(e,function(e){o.isDate(e)?e=e.toISOString():o.isObject(e)&&(e=JSON.stringify(e)),i.push(r(t)+"="+r(e))}))}),a=i.join("&")}return a&&(e+=(-1===e.indexOf("?")?"?":"&")+a),e}},function(e,t,n){"use strict";var r=n(6);e.exports=function(e){var t,n,o,a={};return e?(r.forEach(e.split("\n"),function(e){o=e.indexOf(":"),t=r.trim(e.substr(0,o)).toLowerCase(),n=r.trim(e.substr(o+1)),t&&(a[t]=a[t]?a[t]+", "+n:n)}),a):a}},function(e,t,n){"use strict";var r=n(6);e.exports=function(e,t,n){return r.forEach(n,function(n){e=n(e,t)}),e}},function(e,t,n){"use strict";var r=n(6);e.exports=r.isStandardBrowserEnv()?function(){function e(e){var t=e;return n&&(o.setAttribute("href",t),t=o.href),o.setAttribute("href",t),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}var t,n=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");return t=e(window.location.href),function(n){var o=r.isString(n)?e(n):n;return o.protocol===t.protocol&&o.host===t.host}}():function(){return function(){return!0}}()},function(e,t){"use strict";function n(e){this.message=e}function r(e){for(var t,r,a=String(e),i="",u=0,s=o;a.charAt(0|u)||(s="=",u%1);i+=s.charAt(63&t>>8-u%1*8)){if(r=a.charCodeAt(u+=.75),r>255)throw new n("INVALID_CHARACTER_ERR: DOM Exception 5");t=t<<8|r}return i}var o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";n.prototype=new Error,n.prototype.code=5,n.prototype.name="InvalidCharacterError",e.exports=r},function(e,t,n){"use strict";var r=n(6);e.exports=r.isStandardBrowserEnv()?function(){return{write:function(e,t,n,o,a,i){var u=[];u.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&u.push("expires="+new Date(n).toGMTString()),r.isString(o)&&u.push("path="+o),r.isString(a)&&u.push("domain="+a),i===!0&&u.push("secure"),document.cookie=u.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>>>>>> Rebase -======= -{"version":3,"sources":["dist/js-data-http.js"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_1__","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","forOwn","key","isArray","forEach","v","window","toString","toISOString","isObject","toJson","push","indexOf","HttpAdapter","opts","self","fillIn","DEFAULTS","_typeof","Symbol","iterator","obj","constructor","_jsData","axios","_","utils","addHiddenPropsToTarget","copy","deepMixIn","extend","get","isFunction","isNumber","isSorN","isString","isUndefined","resolve","reject","hasFetch","fetch","e","noop","_len2","_key2","dbg","apply","op","concat","noop2","_len3","_key3","basePath","debug","forceTrailingSlash","http","httpConfig","suffix","useFetch","prototype","afterCreate","afterCreateMany","afterDEL","afterDestroy","afterDestroyAll","afterFind","afterFindAll","afterGET","afterHTTP","afterPOST","afterPUT","afterUpdate","afterUpdateAll","afterUpdateMany","beforeCreate","beforeCreateMany","beforeDEL","beforeDestroy","beforeDestroyAll","beforeFind","beforeFindAll","beforeGET","beforeHTTP","beforePOST","beforePUT","beforeUpdate","beforeUpdateAll","beforeUpdateMany","create","mapper","props","undefined","queryTransform","then","POST","getPath","serialize","response","deserialize","data","_data","createMany","records","_len4","_key4","log","DEL","config","method","_config","HTTP","_response","raw","destroy","destroyAll","query","error","console","_console","_fetch","_x","_x2","requestConfig","headers","Headers","body","Request","json","find","GET","findAll","getEndpoint","relationList","endpoint","name","def","type","parent","item","parentKey","foreignKey","parentDef","getRelation","parentId","getForeignKey","getLocalField","idAttribute","_ret","_opts","logResponse","str","start","toUTCString","toUpperCase","status","Date","getTime","substr","Error","catch","err","responseError","level","_len5","_key5","prefix","_console2","_console3","PUT","update","updateAll","updateMany","addAction","TypeError","request","adapter","getAdapter","defaultAdapter","hasOwnProperty","_args","pathname","addActions","version","full","major","parseInt","minor","patch","alpha","beta","Axios","defaultConfig","defaults","merge","interceptors","InterceptorManager","dispatchRequest","isAbsoluteURL","combineURLs","bind","transformData","baseURL","withCredentials","transformRequest","common","chain","promise","Promise","interceptor","unshift","fulfilled","rejected","shift","defaultInstance","all","promises","spread","PROTECTION_PREFIX","DEFAULT_CONTENT_TYPE","Content-Type","isFormData","isArrayBuffer","isArrayBufferView","buffer","isFile","isBlob","toLowerCase","JSON","stringify","transformResponse","parse","Accept","post","put","timeout","xsrfCookieName","xsrfHeaderName","ArrayBuffer","isView","isDate","trim","isStandardBrowserEnv","document","createElement","fn","i","l","assignValue","Object","process","XMLHttpRequest","cleanUpNextTick","draining","currentQueue","queue","queueIndex","drainQueue","setTimeout","len","run","clearTimeout","Item","fun","array","nextTick","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","binding","cwd","chdir","dir","umask","buildURL","parseHeaders","isURLSameOrigin","btoa","requestData","requestHeaders","XDomainRequest","auth","username","password","Authorization","open","paramsSerializer","onload","responseHeaders","getAllResponseHeaders","responseData","responseType","responseText","statusText","onerror","cookies","xsrfValue","read","setRequestHeader","DataView","send","serializedParams","parsed","split","line","fns","resolveURL","href","msie","urlParsingNode","setAttribute","protocol","host","search","hash","hostname","port","charAt","originURL","test","navigator","userAgent","location","requestURL","InvalidCharacterError","message","input","block","charCode","String","output","idx","map","chars","charCodeAt","code","write","expires","path","domain","secure","cookie","toGMTString","match","RegExp","decodeURIComponent","remove","now","handlers","use","eject","h","relativeURL","thisArg","callback","arr"],"mappings":"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","file":"dist/js-data-http.min.js"} ->>>>>>> 3.0.0-alpha.6 -======= -{"version":3,"sources":["dist/js-data-http.js"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_1__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","isValidString","value","join","items","separator","filter","makePath","_len3","arguments","length","args","Array","_key3","result","replace","encode","val","encodeURIComponent","buildUrl","url","params","parts","forOwn","key","isArray","forEach","v","window","toString","toISOString","isObject","toJson","push","indexOf","HttpAdapter","opts","self","fillIn","DEFAULTS","_jsDataAdapter2","_typeof","Symbol","iterator","constructor","_jsData","_jsDataAdapter","axios","_","utils","addHiddenPropsToTarget","copy","deepMixIn","extend","get","isFunction","isNumber","isSorN","isString","isUndefined","resolve","reject","hasFetch","fetch","e","noop","_len","_key","dbg","apply","op","concat","noop2","_len2","_key2","__super__","prototype","basePath","forceTrailingSlash","http","httpConfig","suffix","useFetch","Object","create","enumerable","writable","configurable","defineProperty","afterDEL","afterGET","afterHTTP","afterPOST","afterPUT","beforeDEL","beforeGET","beforeHTTP","beforePOST","beforePUT","_create","mapper","props","POST","getPath","serialize","then","response","_end","_createMany","_destroy","DEL","_destroyAll","query","deserialize","data","_find","GET","_findAll","_update","PUT","_updateAll","_updateMany","records","queryTransform","getSuffix","createMany","config","method","_config","HTTP","_response","hasOwnProperty","destroy","destroyAll","error","console","_console","_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","idAttribute","_ret","_opts","logResponse","str","start","toUTCString","toUpperCase","status","Date","getTime","log","substr","Error","catch","err","responseError","update","updateAll","updateMany","addAction","TypeError","request","adapter","getAdapter","defaultAdapter","_args","pathname","addActions","version","full","major","parseInt","minor","patch","alpha","beta","global","jsData","Adapter","Response","meta","babelHelpers","typeof","slicedToArray","sliceIterator","arr","i","_arr","_n","_d","_e","undefined","_s","_i","next","done","forEachRelation","omit","plainCopy","unique","array","seen","final","withoutRelations","relationFields","debug","raw","reserved","afterCreate","afterCreateMany","afterDestroy","afterDestroyAll","afterFind","afterFindAll","afterUpdate","afterUpdateAll","afterUpdateMany","beforeCreate","beforeCreateMany","beforeDestroy","beforeDestroyAll","beforeFind","beforeFindAll","beforeUpdate","beforeUpdateAll","beforeUpdateMany","_props","results","_results","created","respond","map","record","_results2","_results3","_results4","makeHasManyForeignKey","makeHasManyLocalKeys","localKeys","itemKeys","keys","x","makeHasManyForeignKeys","loadHasMany","__opts","singular","IDs","where","criteria","relatedItems","attached","relatedItem","setLocalField","loadHasManyLocalKeys","relatedMapper","in","loadHasManyForeignKeys","foreignKeys","contains","isectNotEmpty","foreignKeysField","_relatedItems","loadHasOne","relatedData","makeBelongsToForeignKey","loadBelongsTo","relationDef","_ret2","with","_results5","_record","tasks","task","Promise","all","found","_results6","_records","getOpt","opt","level","_len4","_key4","prefix","_console2","_results7","updated","_results8","_results9","Axios","defaultConfig","defaults","merge","interceptors","InterceptorManager","dispatchRequest","isAbsoluteURL","combineURLs","bind","transformData","baseURL","withCredentials","transformRequest","common","chain","promise","interceptor","unshift","fulfilled","rejected","shift","defaultInstance","promises","spread","PROTECTION_PREFIX","DEFAULT_CONTENT_TYPE","Content-Type","isFormData","isArrayBuffer","isArrayBufferView","buffer","isFile","isBlob","toLowerCase","JSON","stringify","transformResponse","parse","Accept","post","put","timeout","xsrfCookieName","xsrfHeaderName","ArrayBuffer","isView","isDate","trim","isStandardBrowserEnv","document","createElement","fn","l","assignValue","process","XMLHttpRequest","cleanUpNextTick","draining","currentQueue","queue","queueIndex","drainQueue","setTimeout","len","run","clearTimeout","Item","fun","nextTick","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","binding","cwd","chdir","dir","umask","buildURL","parseHeaders","isURLSameOrigin","btoa","requestData","requestHeaders","XDomainRequest","auth","username","password","Authorization","open","paramsSerializer","onload","responseHeaders","getAllResponseHeaders","responseData","responseType","responseText","statusText","onerror","cookies","xsrfValue","read","setRequestHeader","DataView","send","serializedParams","parsed","split","line","fns","resolveURL","href","msie","urlParsingNode","setAttribute","protocol","host","search","hash","hostname","port","charAt","originURL","test","navigator","userAgent","location","requestURL","InvalidCharacterError","message","input","block","charCode","String","output","idx","chars","charCodeAt","code","write","expires","path","domain","secure","cookie","toGMTString","match","RegExp","decodeURIComponent","remove","now","handlers","use","eject","h","relativeURL","thisArg","callback"],"mappings":"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","file":"dist/js-data-http.min.js"} ->>>>>>> 3.0.0-alpha.7 +{"version":3,"sources":["dist/js-data-http.js"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_1__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","isValidString","value","join","items","separator","filter","makePath","_len3","arguments","length","args","Array","_key3","result","replace","encode","val","encodeURIComponent","buildUrl","url","params","parts","forOwn","key","isArray","forEach","v","window","toString","toISOString","isObject","toJson","push","indexOf","HttpAdapter","opts","self","fillIn","DEFAULTS","_jsDataAdapter2","_typeof","Symbol","iterator","constructor","_jsData","_jsDataAdapter","axios","_","utils","addHiddenPropsToTarget","copy","deepMixIn","extend","get","isFunction","isNumber","isSorN","isString","isUndefined","resolve","reject","hasFetch","fetch","e","noop","_len","_key","dbg","apply","op","concat","noop2","_len2","_key2","__super__","prototype","basePath","forceTrailingSlash","http","httpConfig","suffix","useFetch","Object","create","enumerable","writable","configurable","defineProperty","afterDEL","afterGET","afterHTTP","afterPOST","afterPUT","beforeDEL","beforeGET","beforeHTTP","beforePOST","beforePUT","_create","mapper","props","POST","getPath","serialize","then","response","_end","_createMany","_destroy","DEL","_destroyAll","query","deserialize","data","_find","GET","_findAll","_update","PUT","_updateAll","_updateMany","records","queryTransform","getSuffix","createMany","config","method","_config","HTTP","_response","hasOwnProperty","destroy","destroyAll","error","console","_console","_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","idAttribute","_ret","_opts","logResponse","str","start","toUTCString","toUpperCase","status","Date","getTime","log","payload","cache","timeout","substr","Error","catch","err","responseError","update","updateAll","updateMany","addAction","TypeError","request","adapter","getAdapter","defaultAdapter","_args","pathname","addActions","version","full","major","parseInt","minor","patch","alpha","beta","global","jsData","Adapter","Response","meta","babelHelpers","typeof","slicedToArray","sliceIterator","arr","i","_arr","_n","_d","_e","undefined","_s","_i","next","done","deepFillIn","forEachRelation","omit","plainCopy","unique","array","seen","final","withoutRelations","relationFields","debug","raw","reserved","afterCreate","afterCreateMany","afterDestroy","afterDestroyAll","afterFind","afterFindAll","afterUpdate","afterUpdateAll","afterUpdateMany","beforeCreate","beforeCreateMany","beforeDestroy","beforeDestroyAll","beforeFind","beforeFindAll","beforeUpdate","beforeUpdateAll","beforeUpdateMany","_props","results","_results","created","respond","map","record","_results2","_results3","_results4","makeHasManyForeignKey","makeHasManyLocalKeys","localKeys","itemKeys","keys","x","makeHasManyForeignKeys","loadHasMany","__opts","singular","IDs","where","criteria","relatedItems","attached","relatedItem","setLocalField","loadHasManyLocalKeys","relatedMapper","in","loadHasManyForeignKeys","foreignKeys","contains","isectNotEmpty","foreignKeysField","_relatedItems","loadHasOne","relatedData","makeBelongsToForeignKey","loadBelongsTo","relationDef","_ret2","with","_results5","_record","tasks","task","Promise","all","found","activeWith","_activeWith","activeQuery","_results6","_records","getOpt","opt","level","_len4","_key4","prefix","_console2","_results7","updated","_results8","_results9","Axios","defaultConfig","defaults","merge","interceptors","InterceptorManager","dispatchRequest","isAbsoluteURL","combineURLs","bind","transformData","baseURL","withCredentials","transformRequest","common","chain","promise","interceptor","unshift","fulfilled","rejected","shift","defaultInstance","promises","spread","PROTECTION_PREFIX","DEFAULT_CONTENT_TYPE","Content-Type","isFormData","isArrayBuffer","isArrayBufferView","buffer","isFile","isBlob","toLowerCase","JSON","stringify","transformResponse","parse","Accept","post","put","xsrfCookieName","xsrfHeaderName","ArrayBuffer","isView","isDate","trim","isStandardBrowserEnv","document","createElement","fn","l","assignValue","process","XMLHttpRequest","cleanUpNextTick","draining","currentQueue","queue","queueIndex","drainQueue","setTimeout","len","run","clearTimeout","Item","fun","nextTick","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","binding","cwd","chdir","dir","umask","buildURL","parseHeaders","isURLSameOrigin","btoa","requestData","requestHeaders","XDomainRequest","auth","username","password","Authorization","open","paramsSerializer","onload","responseHeaders","getAllResponseHeaders","responseData","responseType","responseText","statusText","onerror","cookies","xsrfValue","read","setRequestHeader","DataView","send","serializedParams","parsed","split","line","fns","resolveURL","href","msie","urlParsingNode","setAttribute","protocol","host","search","hash","hostname","port","charAt","originURL","test","navigator","userAgent","location","requestURL","InvalidCharacterError","message","input","block","charCode","String","output","idx","chars","charCodeAt","code","write","expires","path","domain","secure","cookie","toGMTString","match","RegExp","decodeURIComponent","remove","now","handlers","use","eject","h","relativeURL","thisArg","callback"],"mappings":"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","file":"dist/js-data-http.min.js"} \ 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 9475a01..f7e550c 100644 --- a/fetch/dist/js-data-fetch.min.js +++ b/fetch/dist/js-data-fetch.min.js @@ -1,2 +1,2 @@ -!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.HttpAdapter=t(require("js-data"),require("undefined")):e.HttpAdapter=t(e.JSData,e.undefined)}(this,function(e,t){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 e&&e.__esModule?e:{default:e}}function o(e){return null!=e&&""!==e}function a(e,t){return t||(t=""),e.filter(o).join(t)}function i(){for(var e=arguments.length,t=Array(e),n=0;e>n;n++)t[n]=arguments[n];var r=a(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 f(e,t){if(!t)return e;var n=[];return A(t,function(e,t){null!==e&&"undefined"!=typeof e&&(x(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():w(e)&&(e=O(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={}),T(e,D),p.default.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},c=n(1),d=n(2),p=r(d),h=n(3),y=c.utils._,g=c.utils.addHiddenPropsToTarget,v=c.utils.copy,m=c.utils.deepMixIn,b=c.utils.extend,T=c.utils.fillIn,A=c.utils.forOwn,P=c.utils.get,x=c.utils.isArray,M=c.utils.isFunction,E=c.utils.isNumber,w=c.utils.isObject,F=c.utils.isSorN,S=c.utils.isString,H=c.utils.isUndefined,K=c.utils.resolve,_=c.utils.reject,O=c.utils.toJson,U=!1;try{U=window&&window.fetch}catch(e){}var L=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var o=n[n.length-1];return e.dbg.apply(e,[o.op].concat(n)),K()},j=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var o=n[n.length-2];return e.dbg.apply(e,[o.op].concat(n)),K()},q=p.default.prototype,D={basePath:"",forceTrailingSlash:!1,http:h,httpConfig:{},suffix:"",useFetch:!1};s.prototype=Object.create(p.default.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}),Object.defineProperty(s,"__super__",{configurable:!0,value:p.default}),g(s.prototype,{afterDEL:j,afterGET:j,afterHTTP:j,afterPOST:j,afterPUT:j,beforeDEL:L,beforeGET:L,beforeHTTP:L,beforePOST:L,beforePUT:L,_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.data,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)})},_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)})},create:function(e,t,n){var r=this;return n=n?v(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),q.create.call(r,e,t,n)},createMany:function(e,t,n){var r=this;return n=n?v(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),q.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",K(r[o](e,t,n)).then(function(a){return t=H(a)?t:a,o=n.op="DEL",r.dbg(o,e,t,n),r.HTTP(t,n)}).then(function(a){return o=n.op="afterDEL",K(r[o](e,t,n,a)).then(function(e){return H(e)?a:e})})},deserialize:function(e,t,n){return n||(n={}),M(n.deserialize)?n.deserialize(e,t,n):M(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?v(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),q.destroy.call(r,e,t,n)},destroyAll:function(e,t,n){var r=this;return t||(t={}),n=n?v(n):{},n.params||(n.params={}),m(n.params,t),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),q.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=O(e.data)),fetch(new Request(f(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?v(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),q.find.call(r,e,t,n)},findAll:function(e,t,n){var r=this;return t||(t={}),n=n?v(n):{},n.params||(n.params={}),n.suffix=r.getSuffix(e,n),m(n.params,t),n.params=r.queryTransform(e,n.params,n),q.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",K(r[o](e,t,n)).then(function(a){return t=H(a)?t:a,o=n.op="GET",r.dbg(o,e,t,n),r.HTTP(t,n)}).then(function(a){return o=n.op="afterGET",K(r[o](e,t,n,a)).then(function(e){return H(e)?a:e})})},getEndpoint:function(e,t,n){var r=this;n||(n={}),n.params||(n.params={});var o=e.relationList||[],a=H(n.endpoint)?H(e.endpoint)?e.name:e.endpoint:n.endpoint;return o.forEach(function(e){if("belongsTo"===e.type&&e.parent){var o=void 0,u=e.foreignKey,f=e.getRelation(),s=n.params[u];if(s===!1||!u||!f)return s===!1&&delete n.params[u],!1;if(delete n.params[u],w(t)&&(o=t),o&&(s=s||e.getForeignKey(o)||(e.getLocalField(o)?P(e.getLocalField(o),f.idAttribute):null)),s){var c=function(){delete n.endpoint;var e={};return A(n,function(t,n){e[n]=t}),y(e,f),a=i(r.getEndpoint(f,s,e),s,a),{v:!1}}();if("object"===("undefined"==typeof c?"undefined":l(c)))return c.v}}}),a},getPath:function(e,t,n,r){var o=this;r||(r={});var a=[H(r.basePath)?H(t.basePath)?o.basePath:t.basePath:r.basePath,o.getEndpoint(t,S(n)||E(n)||"create"===e?n:null,r)];return"find"!==e&&"update"!==e&&"destroy"!==e||a.push(n),i.apply(c.utils,a)},getSuffix:function(e,t){return t||(t={}),H(t.suffix)?H(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),_(t))}var r=this,o=new Date;t||(t={}),e=v(e),e=m(e,r.httpConfig),r.forceTrailingSlash&&"/"!==e.url[e.url.length-1]&&(e.url+="/"),e.method=e.method.toUpperCase();var a=e.suffix||t.suffix||r.suffix;if(a&&e.url.substr(e.url.length-a.length)!==a&&(e.url+=a),!r.http)throw new Error("You have not configured this adapter with an http library!");return K(r.beforeHTTP(e,t)).then(function(o){return e=o||e,U&&(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 K(r.afterHTTP(e,t,n)).then(function(e){return e||n})})},POST:function(e,t,n,r){var o=this,a=void 0;return n||(n={}),r||(r={}),n.url=e||n.url,n.data=t||n.data,n.method=n.method||"post",a=r.op="beforePOST",K(o[a](e,t,n,r)).then(function(i){return n=H(i)?n:i,a=r.op="POST",o.dbg(a,e,t,n,r),o.HTTP(n,r)}).then(function(i){return a=r.op="afterPOST",K(o[a](e,t,n,r,i)).then(function(e){return H(e)?i:e})})},PUT:function(e,t,n,r){var o=this,a=void 0;return n||(n={}),r||(r={}),n.url=e||n.url,n.data=t||n.data,n.method=n.method||"put",a=r.op="beforePUT",K(o[a](e,t,n,r)).then(function(i){return n=H(i)?n:i,a=r.op="PUT",o.dbg(a,e,t,n,r),o.HTTP(n,r)}).then(function(i){return a=r.op="afterPUT",K(o[a](e,t,n,r,i)).then(function(e){return H(e)?i:e})})},queryTransform:function(e,t,n){return n||(n={}),M(n.queryTransform)?n.queryTransform(e,t,n):M(e.queryTransform)?e.queryTransform(e,t,n):t},responseError:function(e,t,n){return _(e)},serialize:function(e,t,n){return n||(n={}),M(n.serialize)?n.serialize(e,t,n):M(e.serialize)?e.serialize(e,t,n):t},update:function(e,t,n,r){var o=this;return r=r?v(r):{},r.params||(r.params={}),r.params=o.queryTransform(e,r.params,r),r.suffix=o.getSuffix(e,r),q.update.call(o,e,t,n,r)},updateAll:function(e,t,n,r){var o=this;return n||(n={}),r=r?v(r):{},r.params||(r.params={}),m(r.params,n),r.params=o.queryTransform(e,r.params,r),r.suffix=o.getSuffix(e,r),q.updateAll.call(o,e,t,n,r)},updateMany:function(e,t,n){var r=this;return n=n?v(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),q.updateMany.call(r,e,t,n)}}),s.addAction=function(e,t){if(!e||!S(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 _(e)},n[e]=function(n,r){var o=this;w(n)&&(r=n),r=r||{};var a=o.getAdapter(t.adapter||o.defaultAdapter||"http"),u={};if(T(u,t),!r.hasOwnProperty("endpoint")&&u.endpoint&&(r.endpoint=u.endpoint),"function"==typeof r.getEndpoint)u.url=r.getEndpoint(o,r);else{var f=[r.basePath||o.basePath||a.basePath,a.getEndpoint(o,F(n)?n:null,r)];F(n)&&f.push(n),f.push(t.pathname||e),u.url=i.apply(null,f)}return u.method=u.method||"GET",u.mapper=o.name,m(u)(r),K(u).then(r.request||t.request).then(function(e){return a.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}},s.addActions=function(e){return e||(e={}),function(e){return A(e,function(t,n){s.addAction(n,t)(e)}),e}},s.extend=b,s.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=s},function(t,n){t.exports=e},function(e,t,n){!function(e,t){t(n(1))}(this,function(t){"use strict";function n(e){var t=this;e||(e={}),u(e,T),u(t,e)}function r(e,t,n){var r=this;t||(t={}),r.data=e,u(r,t),r.op=n}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,a=void 0;try{for(var i,u=e[Symbol.iterator]();!(r=(i=u.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&u.return&&u.return()}finally{if(o)throw a}}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 a=t.utils.addHiddenPropsToTarget,i=t.utils.extend,u=t.utils.fillIn,f=t.utils.forEachRelation,s=t.utils.get,l=t.utils.isArray,c=t.utils.isObject,d=t.utils.isUndefined,p=t.utils.omit,h=t.utils.plainCopy,y=t.utils.resolve,g=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var o=n[n.length-1];return e.dbg.apply(e,[o.op].concat(n)),y()},v=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var o=n[n.length-2];return e.dbg.apply(e,[o.op].concat(n)),y()},m=function(e){var t={},n=[];return e.forEach(function(e){e in t||(n.push(e),t[e]=0)}),n},b=function(e,t){return p(t,e.relationFields||[])},T={debug:!1,raw:!1};n.reserved=["orderBy","sort","limit","offset","skip","where"],n.Response=r,n.extend=i,a(n.prototype,{afterCreate:v,afterCreateMany:v,afterDestroy:v,afterDestroyAll:v,afterFind:v,afterFindAll:v,afterUpdate:v,afterUpdateAll:v,afterUpdateMany:v,beforeCreate:g,beforeCreateMany:g,beforeDestroy:g,beforeDestroyAll:g,beforeFind:g,beforeFindAll:g,beforeUpdate:g,beforeUpdateAll:g,beforeUpdateMany:g,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))},create:function(e,t,n){var a=this,i=void 0;return t||(t={}),n||(n={}),i=n.op="beforeCreate",y(a[i](e,t,n)).then(function(r){return t=d(r)?t:r,t=b(e,t),i=n.op="create",a.dbg(i,e,t,n),y(a._create(e,t,n))}).then(function(u){var f=o.slicedToArray(u,2),s=f[0],l=f[1];l||(l={});var c=new r(s,l,"create");return c.created=s?1:0,c=a.respond(c,n),i=n.op="afterCreate",y(a[i](e,t,n,c)).then(function(e){return d(e)?c:e})})},createMany:function(e,t,n){var a=this,i=void 0;return t||(t={}),n||(n={}),i=n.op="beforeCreateMany",y(a[i](e,t,n)).then(function(r){return t=d(r)?t:r,t=t.map(function(t){return b(e,t)}),i=n.op="createMany",a.dbg(i,e,t,n),y(a._createMany(e,t,n))}).then(function(u){var f=o.slicedToArray(u,2),s=f[0],l=f[1];s||(s=[]),l||(l={});var c=new r(s,l,"createMany");return c.created=s.length,c=a.respond(c,n),i=n.op="afterCreateMany",y(a[i](e,t,n,c)).then(function(e){return d(e)?c:e})})},destroy:function(e,t,n){var a=this,i=void 0;return n||(n={}),i=n.op="beforeDestroy",y(a[i](e,t,n)).then(function(){return i=n.op="destroy",a.dbg(i,e,t,n),y(a._destroy(e,t,n))}).then(function(u){var f=o.slicedToArray(u,2),s=f[0],l=f[1];l||(l={});var c=new r(s,l,"destroy");return c=a.respond(c,n),i=n.op="afterDestroy",y(a[i](e,t,n,c)).then(function(e){return d(e)?c:e})})},destroyAll:function(e,t,n){var a=this,i=void 0;return t||(t={}),n||(n={}),i=n.op="beforeDestroyAll",y(a[i](e,t,n)).then(function(){return i=n.op="destroyAll",a.dbg(i,e,t,n),y(a._destroyAll(e,t,n))}).then(function(u){var f=o.slicedToArray(u,2),s=f[0],l=f[1];l||(l={});var c=new r(s,l,"destroyAll");return c=a.respond(c,n),i=n.op="afterDestroyAll",y(a[i](e,t,n,c)).then(function(e){return d(e)?c:e})})},makeHasManyForeignKey:function(e,t,n){return t.getForeignKey(n)},makeHasManyLocalKeys:function(e,t,n){var r=[],o=s(n,t.localKeys)||[];return o=l(o)?o:Object.keys(o),r=r.concat(o),m(r).filter(function(e){return e})},makeHasManyForeignKeys:function(e,t,n){return s(n,e.idAttribute)},loadHasMany:function(e,t,n,r){var o=this,a=!1;c(n)&&!l(n)&&(a=!0,n=[n]);var i=n.map(function(n){return o.makeHasManyForeignKey(e,t,n)}),u={where:{}},f=u.where[t.foreignKey]={};return a?f["=="]=i[0]:f.in=i.filter(function(e){return e}),o.findAll(t.getRelation(),u,r).then(function(r){n.forEach(function(n){var o=[];a?o=r:r.forEach(function(r){s(r,t.foreignKey)===n[e.idAttribute]&&o.push(r)}),t.setLocalField(n,o)})})},loadHasManyLocalKeys:function(e,t,n,r){var a=this,i=void 0,u=t.getRelation();if(c(n)&&!l(n)&&(i=n),i)return a.findAll(u,{where:o.defineProperty({},u.idAttribute,{in:a.makeHasManyLocalKeys(e,t,i)})},r).then(function(e){t.setLocalField(i,e)});var f=function(){var i=[];return n.forEach(function(n){i=i.concat(a.self.makeHasManyLocalKeys(e,t,n))}),{v:a.findAll(u,{where:o.defineProperty({},u.idAttribute,{in:m(i).filter(function(e){return e})})},r).then(function(e){return n.forEach(function(n){var r=[],o=s(n,t.localKeys)||[];o=l(o)?o:Object.keys(o),e.forEach(function(e){o&&-1!==o.indexOf(e[u.idAttribute])&&r.push(e)}),t.setLocalField(n,r)}),e})}}();return"object"===("undefined"==typeof f?"undefined":o.typeof(f))?f.v:void 0},loadHasManyForeignKeys:function(e,t,n,r){var a=this,i=t.getRelation(),u=e.idAttribute,f=void 0;return c(n)&&!l(n)&&(f=n),f?a.findAll(t.getRelation(),{where:o.defineProperty({},t.foreignKeys,{contains:a.makeHasManyForeignKeys(e,t,f)})},r).then(function(e){t.setLocalField(f,e)}):a.findAll(i,{where:o.defineProperty({},t.foreignKeys,{isectNotEmpty:n.map(function(n){return a.makeHasManyForeignKeys(e,t,n)})})},r).then(function(e){var r=t.foreignKeys;n.forEach(function(n){var o=[],a=s(n,u);e.forEach(function(t){var n=s(e,r)||[];-1!==n.indexOf(a)&&o.push(t)}),t.setLocalField(n,o)})})},loadHasOne:function(e,t,n,r){return c(n)&&!l(n)&&(n=[n]),this.loadHasMany(e,t,n,r).then(function(){n.forEach(function(e){var n=t.getLocalField(e);l(n)&&n.length&&t.setLocalField(e,n[0])})})},makeBelongsToForeignKey:function(e,t,n){return t.getForeignKey(n)},loadBelongsTo:function(e,t,n,r){var a=this,i=t.getRelation();if(!c(n)||l(n)){var u=n.map(function(n){return a.makeBelongsToForeignKey(e,t,n)}).filter(function(e){return e});return a.findAll(i,{where:o.defineProperty({},i.idAttribute,{in:u})},r).then(function(e){n.forEach(function(n){e.forEach(function(e){e[i.idAttribute]===n[t.foreignKey]&&t.setLocalField(n,e)})})})}var f=function(){var o=n;return{v:a.find(i,a.makeBelongsToForeignKey(e,t,o),r).then(function(e){t.setLocalField(o,e)})}}();return"object"===("undefined"==typeof f?"undefined":o.typeof(f))?f.v:void 0},find:function(e,t,n){var a=this,i=void 0,u=void 0;return n||(n={}),n.with||(n.with=[]),u=n.op="beforeFind",y(a[u](e,t,n)).then(function(){return u=n.op="find",a.dbg(u,e,t,n),y(a._find(e,t,n))}).then(function(t){var r=o.slicedToArray(t,1),u=r[0];if(u){i=u;var s=[];return f(e,n,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,i,n):"hasMany"===t.type&&t.foreignKeys?r=a.loadHasManyForeignKeys(e,t,i,n):"belongsTo"===t.type&&(r=a.loadBelongsTo(e,t,i,n)):r="hasOne"===t.type?a.loadHasOne(e,t,i,n):a.loadHasMany(e,t,i,n),r&&s.push(r)}),Promise.all(s)}}).then(function(){var o=new r(i,{},"find");return o.found=i?1:0,o=a.respond(o,n),u=n.op="afterFind",y(a[u](e,t,n,o)).then(function(e){return d(e)?o:e})})},findAll:function(e,t,n){var a=this;n||(n={}),n.with||(n.with=[]);var i=[],u=void 0;return u=n.op="beforeFindAll",y(a[u](e,t,n)).then(function(){return u=n.op="findAll",a.dbg(u,e,t,n),y(a._findAll(e,t,n))}).then(function(t){var r=o.slicedToArray(t,1),u=r[0];u||(u=[]),i=u;var s=[];return f(e,n,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,i,n):"hasMany"===t.type&&t.foreignKeys?r=a.loadHasManyForeignKeys(e,t,i,n):"belongsTo"===t.type&&(r=a.loadBelongsTo(e,t,i,n)):r="hasMany"===t.type?a.loadHasMany(e,t,i,n):a.loadHasOne(e,t,i,n),r&&s.push(r)}),Promise.all(s)}).then(function(){var o=new r(i,{},"findAll");return o.found=i.length,o=a.respond(o,n),u=n.op="afterFindAll",y(a[u](e,t,n,o)).then(function(e){return d(e)?o:e})})},getOpt:function(e,t){return t||(t={}),h(d(t[e])?this[e]:t[e])},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 a;(a=console)[e].apply(a,[o].concat(n))}else{var i;(i=console).log.apply(i,[o].concat(n))}}},respond:function(e,t){return this.getOpt("raw",t)?e:e.data},update:function(e,t,n,a){var i=this;n||(n={}),a||(a={});var u=void 0;return u=a.op="beforeUpdate",y(i[u](e,t,n,a)).then(function(r){return n=d(r)?n:r,u=a.op="update",i.dbg(u,e,t,n,a),y(i._update(e,t,n,a))}).then(function(f){var s=o.slicedToArray(f,2),l=s[0],c=s[1];c||(c={});var p=new r(l,c,"update");return p.updated=l?1:0,p=i.respond(p,a),u=a.op="afterUpdate",y(i[u](e,t,n,a,p)).then(function(e){return d(e)?p:e})})},updateAll:function(e,t,n,a){var i=this;t||(t={}),n||(n={}),a||(a={});var u=void 0;return u=a.op="beforeUpdateAll",y(i[u](e,t,n,a)).then(function(r){return t=d(r)?t:r,u=a.op="updateAll",i.dbg(u,e,t,n,a),y(i._updateAll(e,t,n,a))}).then(function(f){var s=o.slicedToArray(f,2),l=s[0],c=s[1];l||(l=[]),c||(c={});var p=new r(l,c,"updateAll");return p.updated=l.length,p=i.respond(p,a),u=a.op="afterUpdateAll",y(i[u](e,t,n,a,p)).then(function(e){return d(e)?p:e})})},updateMany:function(e,t,n){var a=this;t||(t=[]),n||(n={});var i=void 0,u=e.idAttribute;return t=t.filter(function(e){return s(e,u)}),i=n.op="beforeUpdateMany",y(a[i](e,t,n)).then(function(r){return t=d(r)?t:r,t=t.map(function(t){return b(e,t)}),i=n.op="updateMany",a.dbg(i,e,t,n),y(a._updateMany(e,t,n))}).then(function(u){var f=o.slicedToArray(u,2),s=f[0],l=f[1];s||(s=[]),l||(l={});var c=new r(s,l,"updateMany");return c.updated=s.length,c=a.respond(c,n),i=n.op="afterUpdateMany",y(a[i](e,t,n,c)).then(function(e){return d(e)?c:e})})}}),e.exports=n})},function(e,t){e.exports=void 0}])}); -//# sourceMappingURL=fetch/dist/js-data-fetch.min.map \ No newline at end of file +!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.HttpAdapter=t(require("js-data"),require("undefined")):e.HttpAdapter=t(e.JSData,e.undefined)}(this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={exports:{},id:r,loaded:!1};return e[r].call(a.exports,a,a.exports,t),a.loaded=!0,a.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function a(e){return null!=e&&""!==e}function o(e,t){return t||(t=""),e.filter(a).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 f(e,t){if(!t)return e;var n=[];return A(t,function(e,t){null!==e&&"undefined"!=typeof e&&(x(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():w(e)&&(e=O(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={}),T(e,D),p.default.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},c=n(1),d=n(2),p=r(d),h=n(3),y=c.utils._,g=c.utils.addHiddenPropsToTarget,v=c.utils.copy,m=c.utils.deepMixIn,b=c.utils.extend,T=c.utils.fillIn,A=c.utils.forOwn,P=c.utils.get,x=c.utils.isArray,M=c.utils.isFunction,E=c.utils.isNumber,w=c.utils.isObject,F=c.utils.isSorN,S=c.utils.isString,H=c.utils.isUndefined,_=c.utils.resolve,K=c.utils.reject,O=c.utils.toJson,U=!1;try{U=window&&window.fetch}catch(e){}var L=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var a=n[n.length-1];return e.dbg.apply(e,[a.op].concat(n)),_()},j=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var a=n[n.length-2];return e.dbg.apply(e,[a.op].concat(n)),_()},q=p.default.prototype,D={basePath:"",forceTrailingSlash:!1,http:h,httpConfig:{},suffix:"",useFetch:!1};s.prototype=Object.create(p.default.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}),Object.defineProperty(s,"__super__",{configurable:!0,value:p.default}),g(s.prototype,{afterDEL:j,afterGET:j,afterHTTP:j,afterPOST:j,afterPUT:j,beforeDEL:L,beforeGET:L,beforeHTTP:L,beforePOST:L,beforePUT:L,_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.data,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)})},_update:function(e,t,n,r){var a=this;return a.PUT(a.getPath("update",e,t,r),a.serialize(e,n,r),r).then(function(t){return a._end(e,r,t)})},_updateAll:function(e,t,n,r){var a=this;return a.PUT(a.getPath("updateAll",e,null,r),a.serialize(e,t,r),r).then(function(t){return a._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)})},create:function(e,t,n){var r=this;return n=n?v(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),q.create.call(r,e,t,n)},createMany:function(e,t,n){var r=this;return n=n?v(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),q.createMany.call(r,e,t,n)},DEL:function(e,t,n){var r=this,a=void 0;return t||(t={}),n||(n={}),t.url=e||t.url,t.method=t.method||"delete",a=n.op="beforeDEL",_(r[a](e,t,n)).then(function(o){return t=H(o)?t:o,a=n.op="DEL",r.dbg(a,e,t,n),r.HTTP(t,n)}).then(function(o){return a=n.op="afterDEL",_(r[a](e,t,n,o)).then(function(e){return H(e)?o:e})})},deserialize:function(e,t,n){return n||(n={}),M(n.deserialize)?n.deserialize(e,t,n):M(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?v(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),q.destroy.call(r,e,t,n)},destroyAll:function(e,t,n){var r=this;return t||(t={}),n=n?v(n):{},n.params||(n.params={}),m(n.params,t),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),q.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=O(e.data)),fetch(new Request(f(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?v(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),q.find.call(r,e,t,n)},findAll:function(e,t,n){var r=this;return t||(t={}),n=n?v(n):{},n.params||(n.params={}),n.suffix=r.getSuffix(e,n),m(n.params,t),n.params=r.queryTransform(e,n.params,n),q.findAll.call(r,e,t,n)},GET:function(e,t,n){var r=this,a=void 0;return t||(t={}),n||(n={}),t.url=e||t.url,t.method=t.method||"get",a=n.op="beforeGET",_(r[a](e,t,n)).then(function(o){return t=H(o)?t:o,a=n.op="GET",r.dbg(a,e,t,n),r.HTTP(t,n)}).then(function(o){return a=n.op="afterGET",_(r[a](e,t,n,o)).then(function(e){return H(e)?o:e})})},getEndpoint:function(e,t,n){var r=this;n||(n={}),n.params||(n.params={});var a=e.relationList||[],o=H(n.endpoint)?H(e.endpoint)?e.name:e.endpoint:n.endpoint;return a.forEach(function(e){if("belongsTo"===e.type&&e.parent){var a=void 0,u=e.foreignKey,f=e.getRelation(),s=n.params[u];if(s===!1||!u||!f)return s===!1&&delete n.params[u],!1;if(delete n.params[u],w(t)&&(a=t),a&&(s=s||e.getForeignKey(a)||(e.getLocalField(a)?P(e.getLocalField(a),f.idAttribute):null)),s){var c=function(){delete n.endpoint;var e={};return A(n,function(t,n){e[n]=t}),y(e,f),o=i(r.getEndpoint(f,s,e),s,o),{v:!1}}();if("object"===("undefined"==typeof c?"undefined":l(c)))return c.v}}}),o},getPath:function(e,t,n,r){var a=this;r||(r={});var o=[H(r.basePath)?H(t.basePath)?a.basePath:t.basePath:r.basePath,a.getEndpoint(t,S(n)||E(n)||"create"===e?n:null,r)];return"find"!==e&&"update"!==e&&"destroy"!==e||o.push(n),i.apply(c.utils,o)},getSuffix:function(e,t){return t||(t={}),H(t.suffix)?H(e.suffix)?this.suffix:e.suffix:t.suffix},HTTP:function(e,t){function n(t){var n=a.toUTCString()+" - "+e.method.toUpperCase()+" "+e.url+" - "+t.status+" "+((new Date).getTime()-a.getTime())+"ms";return t.status>=200&&t.status<300?(r.log&&r.dbg("debug",n,t),t):(r.error&&r.error("'FAILED: "+n,t),K(t))}var r=this,a=new Date;t||(t={});var o=e.data,i=e.cache,u=e.timeout;e=v(e,null,null,null,["data","cache","timeout"]),e=m(e,r.httpConfig),e.data=o,e.cache=i,e.timeout=u,r.forceTrailingSlash&&"/"!==e.url[e.url.length-1]&&(e.url+="/"),e.method=e.method.toUpperCase();var f=e.suffix||t.suffix||r.suffix;if(f&&e.url.substr(e.url.length-f.length)!==f&&(e.url+=f),!r.http)throw new Error("You have not configured this adapter with an http library!");return _(r.beforeHTTP(e,t)).then(function(a){return e=a||e,U&&(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 _(r.afterHTTP(e,t,n)).then(function(e){return e||n})})},POST:function(e,t,n,r){var a=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",_(a[o](e,t,n,r)).then(function(i){return n=H(i)?n:i,o=r.op="POST",a.dbg(o,e,t,n,r),a.HTTP(n,r)}).then(function(i){return o=r.op="afterPOST",_(a[o](e,t,n,r,i)).then(function(e){return H(e)?i:e})})},PUT:function(e,t,n,r){var a=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",_(a[o](e,t,n,r)).then(function(i){return n=H(i)?n:i,o=r.op="PUT",a.dbg(o,e,t,n,r),a.HTTP(n,r)}).then(function(i){return o=r.op="afterPUT",_(a[o](e,t,n,r,i)).then(function(e){return H(e)?i:e})})},queryTransform:function(e,t,n){return n||(n={}),M(n.queryTransform)?n.queryTransform(e,t,n):M(e.queryTransform)?e.queryTransform(e,t,n):t},responseError:function(e,t,n){return K(e)},serialize:function(e,t,n){return n||(n={}),M(n.serialize)?n.serialize(e,t,n):M(e.serialize)?e.serialize(e,t,n):t},update:function(e,t,n,r){var a=this;return r=r?v(r):{},r.params||(r.params={}),r.params=a.queryTransform(e,r.params,r),r.suffix=a.getSuffix(e,r),q.update.call(a,e,t,n,r)},updateAll:function(e,t,n,r){var a=this;return n||(n={}),r=r?v(r):{},r.params||(r.params={}),m(r.params,n),r.params=a.queryTransform(e,r.params,r),r.suffix=a.getSuffix(e,r),q.updateAll.call(a,e,t,n,r)},updateMany:function(e,t,n){var r=this;return n=n?v(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),q.updateMany.call(r,e,t,n)}}),s.addAction=function(e,t){if(!e||!S(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 K(e)},n[e]=function(n,r){var a=this;w(n)&&(r=n),r=r||{};var o=a.getAdapter(t.adapter||a.defaultAdapter||"http"),u={};if(T(u,t),!r.hasOwnProperty("endpoint")&&u.endpoint&&(r.endpoint=u.endpoint),"function"==typeof r.getEndpoint)u.url=r.getEndpoint(a,r);else{var f=[r.basePath||a.basePath||o.basePath,o.getEndpoint(a,F(n)?n:null,r)];F(n)&&f.push(n),f.push(t.pathname||e),u.url=i.apply(null,f)}return u.method=u.method||"GET",u.mapper=a.name,m(u)(r),_(u).then(r.request||t.request).then(function(e){return o.HTTP(e)}).then(function(e){return e&&e.config&&(e.config.mapper=a.name),e}).then(r.response||t.response,r.responseError||t.responseError)},n}},s.addActions=function(e){return e||(e={}),function(e){return A(e,function(t,n){s.addAction(n,t)(e)}),e}},s.extend=b,s.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=s},function(t,n){t.exports=e},function(e,t,n){!function(e,t){t(n(1))}(this,function(t){"use strict";function n(e){var t=this;e||(e={}),f(e,A),f(t,e)}function r(e,t,n){var r=this;t||(t={}),r.data=e,f(r,t),r.op=n}var a={};a.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},a.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},a.slicedToArray=function(){function e(e,t){var n=[],r=!0,a=!1,o=void 0;try{for(var i,u=e[Symbol.iterator]();!(r=(i=u.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){a=!0,o=e}finally{try{!r&&u.return&&u.return()}finally{if(a)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=t.utils.addHiddenPropsToTarget,i=t.utils.deepFillIn,u=t.utils.extend,f=t.utils.fillIn,s=t.utils.forEachRelation,l=t.utils.get,c=t.utils.isArray,d=t.utils.isObject,p=t.utils.isUndefined,h=t.utils.omit,y=t.utils.plainCopy,g=t.utils.resolve,v=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var a=n[n.length-1];return e.dbg.apply(e,[a.op].concat(n)),g()},m=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var a=n[n.length-2];return e.dbg.apply(e,[a.op].concat(n)),g()},b=function(e){var t={},n=[];return e.forEach(function(e){e in t||(n.push(e),t[e]=0)}),n},T=function(e,t){return h(t,e.relationFields||[])},A={debug:!1,raw:!1};n.reserved=["orderBy","sort","limit","offset","skip","where"],n.Response=r,n.extend=u,o(n.prototype,{afterCreate:m,afterCreateMany:m,afterDestroy:m,afterDestroyAll:m,afterFind:m,afterFindAll:m,afterUpdate:m,afterUpdateAll:m,afterUpdateMany:m,beforeCreate:v,beforeCreateMany:v,beforeDestroy:v,beforeDestroyAll:v,beforeFind:v,beforeFindAll:v,beforeUpdate:v,beforeUpdateAll:v,beforeUpdateMany:v,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))},create:function(e,t,n){var o=this,i=void 0;return t||(t={}),n||(n={}),i=n.op="beforeCreate",g(o[i](e,t,n)).then(function(r){return t=p(r)?t:r,t=T(e,t),i=n.op="create",o.dbg(i,e,t,n),g(o._create(e,t,n))}).then(function(u){var f=a.slicedToArray(u,2),s=f[0],l=f[1];l||(l={});var c=new r(s,l,"create");return c.created=s?1:0,c=o.respond(c,n),i=n.op="afterCreate",g(o[i](e,t,n,c)).then(function(e){return p(e)?c:e})})},createMany:function(e,t,n){var o=this,i=void 0;return t||(t={}),n||(n={}),i=n.op="beforeCreateMany",g(o[i](e,t,n)).then(function(r){return t=p(r)?t:r,t=t.map(function(t){return T(e,t)}),i=n.op="createMany",o.dbg(i,e,t,n),g(o._createMany(e,t,n))}).then(function(u){var f=a.slicedToArray(u,2),s=f[0],l=f[1];s||(s=[]),l||(l={});var c=new r(s,l,"createMany");return c.created=s.length,c=o.respond(c,n),i=n.op="afterCreateMany",g(o[i](e,t,n,c)).then(function(e){return p(e)?c:e})})},destroy:function(e,t,n){var o=this,i=void 0;return n||(n={}),i=n.op="beforeDestroy",g(o[i](e,t,n)).then(function(){return i=n.op="destroy",o.dbg(i,e,t,n),g(o._destroy(e,t,n))}).then(function(u){var f=a.slicedToArray(u,2),s=f[0],l=f[1];l||(l={});var c=new r(s,l,"destroy");return c=o.respond(c,n),i=n.op="afterDestroy",g(o[i](e,t,n,c)).then(function(e){return p(e)?c:e})})},destroyAll:function(e,t,n){var o=this,i=void 0;return t||(t={}),n||(n={}),i=n.op="beforeDestroyAll",g(o[i](e,t,n)).then(function(){return i=n.op="destroyAll",o.dbg(i,e,t,n),g(o._destroyAll(e,t,n))}).then(function(u){var f=a.slicedToArray(u,2),s=f[0],l=f[1];l||(l={});var c=new r(s,l,"destroyAll");return c=o.respond(c,n),i=n.op="afterDestroyAll",g(o[i](e,t,n,c)).then(function(e){return p(e)?c:e})})},makeHasManyForeignKey:function(e,t,n){return t.getForeignKey(n)},makeHasManyLocalKeys:function(e,t,n){var r=[],a=l(n,t.localKeys)||[];return a=c(a)?a:Object.keys(a),r=r.concat(a),b(r).filter(function(e){return e})},makeHasManyForeignKeys:function(e,t,n){return l(n,e.idAttribute)},loadHasMany:function(e,t,n,r){var a=this,o=!1;d(n)&&!c(n)&&(o=!0,n=[n]);var i=n.map(function(n){return a.makeHasManyForeignKey(e,t,n)}),u={where:{}},f=u.where[t.foreignKey]={};return o?f["=="]=i[0]:f.in=i.filter(function(e){return e}),a.findAll(t.getRelation(),u,r).then(function(r){n.forEach(function(n){var a=[];o?a=r:r.forEach(function(r){l(r,t.foreignKey)===n[e.idAttribute]&&a.push(r)}),t.setLocalField(n,a)})})},loadHasManyLocalKeys:function(e,t,n,r){var o=this,i=void 0,u=t.getRelation();if(d(n)&&!c(n)&&(i=n),i)return o.findAll(u,{where:a.defineProperty({},u.idAttribute,{in:o.makeHasManyLocalKeys(e,t,i)})},r).then(function(e){t.setLocalField(i,e)});var f=function(){var i=[];return n.forEach(function(n){i=i.concat(o.self.makeHasManyLocalKeys(e,t,n))}),{v:o.findAll(u,{where:a.defineProperty({},u.idAttribute,{in:b(i).filter(function(e){return e})})},r).then(function(e){return n.forEach(function(n){var r=[],a=l(n,t.localKeys)||[];a=c(a)?a:Object.keys(a),e.forEach(function(e){a&&-1!==a.indexOf(e[u.idAttribute])&&r.push(e)}),t.setLocalField(n,r)}),e})}}();return"object"===("undefined"==typeof f?"undefined":a.typeof(f))?f.v:void 0},loadHasManyForeignKeys:function(e,t,n,r){var o=this,i=t.getRelation(),u=e.idAttribute,f=void 0;return d(n)&&!c(n)&&(f=n),f?o.findAll(t.getRelation(),{where:a.defineProperty({},t.foreignKeys,{contains:o.makeHasManyForeignKeys(e,t,f)})},r).then(function(e){t.setLocalField(f,e)}):o.findAll(i,{where:a.defineProperty({},t.foreignKeys,{isectNotEmpty:n.map(function(n){return o.makeHasManyForeignKeys(e,t,n)})})},r).then(function(e){var r=t.foreignKeys;n.forEach(function(n){var a=[],o=l(n,u);e.forEach(function(t){var n=l(e,r)||[];-1!==n.indexOf(o)&&a.push(t)}),t.setLocalField(n,a)})})},loadHasOne:function(e,t,n,r){return d(n)&&!c(n)&&(n=[n]),this.loadHasMany(e,t,n,r).then(function(){n.forEach(function(e){var n=t.getLocalField(e);c(n)&&n.length&&t.setLocalField(e,n[0])})})},makeBelongsToForeignKey:function(e,t,n){return t.getForeignKey(n)},loadBelongsTo:function(e,t,n,r){var o=this,i=t.getRelation();if(!d(n)||c(n)){var u=n.map(function(n){return o.makeBelongsToForeignKey(e,t,n)}).filter(function(e){return e});return o.findAll(i,{where:a.defineProperty({},i.idAttribute,{in:u})},r).then(function(e){n.forEach(function(n){e.forEach(function(e){e[i.idAttribute]===n[t.foreignKey]&&t.setLocalField(n,e)})})})}var f=function(){var a=n;return{v:o.find(i,o.makeBelongsToForeignKey(e,t,a),r).then(function(e){t.setLocalField(a,e)})}}();return"object"===("undefined"==typeof f?"undefined":a.typeof(f))?f.v:void 0},find:function(e,t,n){var o=this,i=void 0,u=void 0;return n||(n={}),n.with||(n.with=[]),u=n.op="beforeFind",g(o[u](e,t,n)).then(function(){return u=n.op="find",o.dbg(u,e,t,n),g(o._find(e,t,n))}).then(function(t){var r=a.slicedToArray(t,1),u=r[0];if(u){i=u;var f=[];return s(e,n,function(t,n){var r=void 0;!t.foreignKey||"hasOne"!==t.type&&"hasMany"!==t.type?"hasMany"===t.type&&t.localKeys?r=o.loadHasManyLocalKeys(e,t,i,n):"hasMany"===t.type&&t.foreignKeys?r=o.loadHasManyForeignKeys(e,t,i,n):"belongsTo"===t.type&&(r=o.loadBelongsTo(e,t,i,n)):r="hasOne"===t.type?o.loadHasOne(e,t,i,n):o.loadHasMany(e,t,i,n),r&&f.push(r)}),Promise.all(f)}}).then(function(){var a=new r(i,{},"find");return a.found=i?1:0,a=o.respond(a,n),u=n.op="afterFind",g(o[u](e,t,n,a)).then(function(e){return p(e)?a:e})})},findAll:function(e,t,n){var o=this;n||(n={}),n.with||(n.with=[]);var u=[],f=void 0,l=n._activeWith;if(d(l)){var c=l.query||{};l.replace?t=c:i(t,c)}return f=n.op="beforeFindAll",g(o[f](e,t,n)).then(function(){return f=n.op="findAll",o.dbg(f,e,t,n),g(o._findAll(e,t,n))}).then(function(t){var r=a.slicedToArray(t,1),i=r[0];i||(i=[]),u=i;var f=[];return s(e,n,function(t,n){var r=void 0;!t.foreignKey||"hasOne"!==t.type&&"hasMany"!==t.type?"hasMany"===t.type&&t.localKeys?r=o.loadHasManyLocalKeys(e,t,u,n):"hasMany"===t.type&&t.foreignKeys?r=o.loadHasManyForeignKeys(e,t,u,n):"belongsTo"===t.type&&(r=o.loadBelongsTo(e,t,u,n)):r="hasMany"===t.type?o.loadHasMany(e,t,u,n):o.loadHasOne(e,t,u,n),r&&f.push(r)}),Promise.all(f)}).then(function(){var a=new r(u,{},"findAll");return a.found=u.length,a=o.respond(a,n),f=n.op="afterFindAll",g(o[f](e,t,n,a)).then(function(e){return p(e)?a:e})})},getOpt:function(e,t){return t||(t={}),y(p(t[e])?this[e]:t[e])},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 a=e.toUpperCase()+": (Adapter)";if(console[e]){var o;(o=console)[e].apply(o,[a].concat(n))}else{var i;(i=console).log.apply(i,[a].concat(n))}}},respond:function(e,t){return this.getOpt("raw",t)?e:e.data},update:function(e,t,n,o){var i=this;n||(n={}),o||(o={});var u=void 0;return u=o.op="beforeUpdate",g(i[u](e,t,n,o)).then(function(r){return n=p(r)?n:r,u=o.op="update",i.dbg(u,e,t,n,o),g(i._update(e,t,n,o))}).then(function(f){var s=a.slicedToArray(f,2),l=s[0],c=s[1];c||(c={});var d=new r(l,c,"update");return d.updated=l?1:0,d=i.respond(d,o),u=o.op="afterUpdate",g(i[u](e,t,n,o,d)).then(function(e){return p(e)?d:e})})},updateAll:function(e,t,n,o){var i=this;t||(t={}),n||(n={}),o||(o={});var u=void 0;return u=o.op="beforeUpdateAll",g(i[u](e,t,n,o)).then(function(r){return t=p(r)?t:r,u=o.op="updateAll",i.dbg(u,e,t,n,o),g(i._updateAll(e,t,n,o))}).then(function(f){var s=a.slicedToArray(f,2),l=s[0],c=s[1];l||(l=[]),c||(c={});var d=new r(l,c,"updateAll");return d.updated=l.length,d=i.respond(d,o),u=o.op="afterUpdateAll",g(i[u](e,t,n,o,d)).then(function(e){return p(e)?d:e})})},updateMany:function(e,t,n){var o=this;t||(t=[]),n||(n={});var i=void 0,u=e.idAttribute;return t=t.filter(function(e){return l(e,u)}),i=n.op="beforeUpdateMany",g(o[i](e,t,n)).then(function(r){return t=p(r)?t:r,t=t.map(function(t){return T(e,t)}),i=n.op="updateMany",o.dbg(i,e,t,n),g(o._updateMany(e,t,n))}).then(function(u){var f=a.slicedToArray(u,2),s=f[0],l=f[1];s||(s=[]),l||(l={});var c=new r(s,l,"updateMany");return c.updated=s.length,c=o.respond(c,n),i=n.op="afterUpdateMany",g(o[i](e,t,n,c)).then(function(e){return p(e)?c:e})})}}),e.exports=n})},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 6f8c1f0..9f15ec1 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","_interopRequireDefault","obj","__esModule","default","isValidString","value","join","items","separator","filter","makePath","_len3","arguments","length","args","Array","_key3","result","replace","encode","val","encodeURIComponent","buildUrl","url","params","parts","forOwn","key","isArray","forEach","v","window","toString","toISOString","isObject","toJson","push","indexOf","HttpAdapter","opts","self","fillIn","DEFAULTS","_jsDataAdapter2","_typeof","Symbol","iterator","constructor","_jsData","_jsDataAdapter","axios","_","utils","addHiddenPropsToTarget","copy","deepMixIn","extend","get","isFunction","isNumber","isSorN","isString","isUndefined","resolve","reject","hasFetch","fetch","e","noop","_len","_key","dbg","apply","op","concat","noop2","_len2","_key2","__super__","prototype","basePath","forceTrailingSlash","http","httpConfig","suffix","useFetch","Object","create","enumerable","writable","configurable","defineProperty","afterDEL","afterGET","afterHTTP","afterPOST","afterPUT","beforeDEL","beforeGET","beforeHTTP","beforePOST","beforePUT","_create","mapper","props","POST","getPath","serialize","then","response","_end","_createMany","_destroy","DEL","_destroyAll","query","deserialize","data","_find","GET","_findAll","_update","PUT","_updateAll","_updateMany","records","queryTransform","getSuffix","createMany","config","method","_config","HTTP","_response","hasOwnProperty","destroy","destroyAll","error","console","_console","_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","idAttribute","_ret","_opts","logResponse","str","start","toUTCString","toUpperCase","status","Date","getTime","log","substr","Error","catch","err","responseError","update","updateAll","updateMany","addAction","TypeError","request","adapter","getAdapter","defaultAdapter","_args","pathname","addActions","version","full","major","parseInt","minor","patch","alpha","beta","global","jsData","Adapter","Response","meta","babelHelpers","typeof","slicedToArray","sliceIterator","arr","i","_arr","_n","_d","_e","undefined","_s","_i","next","done","forEachRelation","omit","plainCopy","unique","array","seen","final","withoutRelations","relationFields","debug","raw","reserved","afterCreate","afterCreateMany","afterDestroy","afterDestroyAll","afterFind","afterFindAll","afterUpdate","afterUpdateAll","afterUpdateMany","beforeCreate","beforeCreateMany","beforeDestroy","beforeDestroyAll","beforeFind","beforeFindAll","beforeUpdate","beforeUpdateAll","beforeUpdateMany","_props","results","_results","created","respond","map","record","_results2","_results3","_results4","makeHasManyForeignKey","makeHasManyLocalKeys","localKeys","itemKeys","keys","x","makeHasManyForeignKeys","loadHasMany","__opts","singular","IDs","where","criteria","relatedItems","attached","relatedItem","setLocalField","loadHasManyLocalKeys","relatedMapper","in","loadHasManyForeignKeys","foreignKeys","contains","isectNotEmpty","foreignKeysField","_relatedItems","loadHasOne","relatedData","makeBelongsToForeignKey","loadBelongsTo","relationDef","_ret2","with","_results5","_record","tasks","task","Promise","all","found","_results6","_records","getOpt","opt","level","_len4","_key4","prefix","_console2","_results7","updated","_results8","_results9"],"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","_interopRequireDefault","obj","__esModule","default","isValidString","value","join","items","separator","filter","makePath","_len3","arguments","length","args","Array","_key3","result","replace","encode","val","encodeURIComponent","buildUrl","url","params","parts","forOwn","key","isArray","forEach","v","window","toString","toISOString","isObject","toJson","push","indexOf","HttpAdapter","opts","self","fillIn","DEFAULTS","_jsDataAdapter2","_typeof","Symbol","iterator","constructor","_jsData","_jsDataAdapter","axios","_","utils","addHiddenPropsToTarget","copy","deepMixIn","extend","get","isFunction","isNumber","isSorN","isString","isUndefined","resolve","reject","hasFetch","fetch","e","noop","_len","_key","dbg","apply","op","concat","noop2","_len2","_key2","__super__","prototype","basePath","forceTrailingSlash","http","httpConfig","suffix","useFetch","Object","create","enumerable","writable","configurable","defineProperty","afterDEL","afterGET","afterHTTP","afterPOST","afterPUT","beforeDEL","beforeGET","beforeHTTP","beforePOST","beforePUT","_create","mapper","props","POST","getPath","serialize","then","response","_end","_createMany","_destroy","DEL","_destroyAll","query","deserialize","data","_find","GET","_findAll","_update","PUT","_updateAll","_updateMany","records","queryTransform","getSuffix","createMany","config","method","_config","HTTP","_response","hasOwnProperty","destroy","destroyAll","error","console","_console","_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","idAttribute","_ret","_opts","logResponse","str","start","toUTCString","toUpperCase","status","Date","getTime","log","payload","cache","timeout","substr","Error","catch","err","responseError","update","updateAll","updateMany","addAction","TypeError","request","adapter","getAdapter","defaultAdapter","_args","pathname","addActions","version","full","major","parseInt","minor","patch","alpha","beta","global","jsData","Adapter","Response","meta","babelHelpers","typeof","slicedToArray","sliceIterator","arr","i","_arr","_n","_d","_e","undefined","_s","_i","next","done","deepFillIn","forEachRelation","omit","plainCopy","unique","array","seen","final","withoutRelations","relationFields","debug","raw","reserved","afterCreate","afterCreateMany","afterDestroy","afterDestroyAll","afterFind","afterFindAll","afterUpdate","afterUpdateAll","afterUpdateMany","beforeCreate","beforeCreateMany","beforeDestroy","beforeDestroyAll","beforeFind","beforeFindAll","beforeUpdate","beforeUpdateAll","beforeUpdateMany","_props","results","_results","created","respond","map","record","_results2","_results3","_results4","makeHasManyForeignKey","makeHasManyLocalKeys","localKeys","itemKeys","keys","x","makeHasManyForeignKeys","loadHasMany","__opts","singular","IDs","where","criteria","relatedItems","attached","relatedItem","setLocalField","loadHasManyLocalKeys","relatedMapper","in","loadHasManyForeignKeys","foreignKeys","contains","isectNotEmpty","foreignKeysField","_relatedItems","loadHasOne","relatedData","makeBelongsToForeignKey","loadBelongsTo","relationDef","_ret2","with","_results5","_record","tasks","task","Promise","all","found","activeWith","_activeWith","activeQuery","_results6","_records","getOpt","opt","level","_len4","_key4","prefix","_console2","_results7","updated","_results8","_results9"],"mappings":"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","file":"fetch/dist/js-data-fetch.min.js"} \ No newline at end of file diff --git a/fetch/package.json b/fetch/package.json index 056cd98..e553b24 100644 --- a/fetch/package.json +++ b/fetch/package.json @@ -1,7 +1,7 @@ { "name": "js-data-fetch", "description": "HTTP adapter for js-data that uses the fetch API.", - "version": "3.0.0-alpha.7", + "version": "3.0.0-alpha.8", "homepage": "https://github.com/js-data/js-data-http", "repository": { "type": "git", @@ -19,6 +19,6 @@ "fetch" ], "peerDependencies": { - "js-data": "^3.0.0-alpha.16" + "js-data": "^3.0.0-alpha.19" } } diff --git a/node/package.json b/node/package.json index c1fa59c..0a87a9f 100644 --- a/node/package.json +++ b/node/package.json @@ -1,7 +1,7 @@ { "name": "js-data-http-node", "description": "Node.js HTTP adapter for js-data.", - "version": "3.0.0-alpha.7", + "version": "3.0.0-alpha.8", "homepage": "https://github.com/js-data/js-data-http", "repository": { "type": "git", diff --git a/package.json b/package.json index 2ced04f..099bd19 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "js-data-http", "description": "HTTP (XHR) adapter for js-data in the browser.", - "version": "3.0.0-alpha.7", + "version": "3.0.0-alpha.8", "homepage": "https://github.com/js-data/js-data-http", "repository": { "type": "git", @@ -56,7 +56,7 @@ "ci": "npm test && cat ./coverage/lcov.info | coveralls || true" }, "peerDependencies": { - "js-data": "^3.0.0-alpha.16" + "js-data": "^3.0.0-alpha.19" }, "devDependencies": { "axios": "0.9.1", @@ -70,7 +70,7 @@ "chai": "3.5.0", "coveralls": "2.11.8", "istanbul": "0.4.2", - "js-data-adapter": "0.2.1", + "js-data-adapter": "0.2.2", "js-data-repo-tools": "0.2.0", "jsdoc": "3.4.0", "karma": "0.13.22", From faa5dfe297ede5096f8e6e4326462754b1649801 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Fri, 18 Mar 2016 16:18:00 -0700 Subject: [PATCH 17/24] Update .gitignore --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 8b9948d..1abddc4 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,5 @@ bower_components/ coverage/ junit/ doc/ -node_modules/ \ No newline at end of file +node_modules/ +*.log \ No newline at end of file From a98a9478dac4ad018bf9e399c6acea8384370f77 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Fri, 18 Mar 2016 17:06:33 -0700 Subject: [PATCH 18/24] 3.0.0-alpha.9 --- CHANGELOG.md | 8 + dist/js-data-http.js | 253 +++++++++++++++++----------- dist/js-data-http.js.map | 2 +- dist/js-data-http.min.js | 5 +- dist/js-data-http.min.map | 2 +- fetch/dist/js-data-fetch.js | 247 ++++++++++++++++----------- fetch/dist/js-data-fetch.js.map | 2 +- fetch/dist/js-data-fetch.min.js | 2 +- fetch/dist/js-data-fetch.min.map | 2 +- fetch/package.json | 4 +- node/dist/js-data-http-node.js | 247 ++++++++++++++++----------- node/dist/js-data-http-node.js.map | 2 +- node/package.json | 6 +- package.json | 8 +- src/index.js | 259 ++++++++++++++++++----------- 15 files changed, 645 insertions(+), 404 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f805dc..37fbe4d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +##### 3.0.0-alpha.9 - 18 March 2016 + +###### Backwards compatible API changes +- Added sum and count methods + +###### Other +- Cleaned up some things + ##### 3.0.0-alpha.8 - 17 March 2016 - Rebased master diff --git a/dist/js-data-http.js b/dist/js-data-http.js index 4b16af4..0ff2971 100644 --- a/dist/js-data-http.js +++ b/dist/js-data-http.js @@ -1,6 +1,6 @@ /*! * js-data-http -* @version 3.0.0-alpha.8 - Homepage +* @version 3.0.0-alpha.9 - Homepage * @author Jason Dobry * @copyright (c) 2014-2015 Jason Dobry * @license MIT @@ -77,24 +77,6 @@ return /******/ (function(modules) { // webpackBootstrap /* global fetch:true Headers:true Request:true */ var axios = __webpack_require__(3); - var _ = _jsData.utils._; - var addHiddenPropsToTarget = _jsData.utils.addHiddenPropsToTarget; - var copy = _jsData.utils.copy; - var deepMixIn = _jsData.utils.deepMixIn; - var extend = _jsData.utils.extend; - var fillIn = _jsData.utils.fillIn; - var forOwn = _jsData.utils.forOwn; - var get = _jsData.utils.get; - var isArray = _jsData.utils.isArray; - var isFunction = _jsData.utils.isFunction; - var isNumber = _jsData.utils.isNumber; - var isObject = _jsData.utils.isObject; - var isSorN = _jsData.utils.isSorN; - var isString = _jsData.utils.isString; - var isUndefined = _jsData.utils.isUndefined; - var resolve = _jsData.utils.resolve; - var reject = _jsData.utils.reject; - var toJson = _jsData.utils.toJson; var hasFetch = false; @@ -112,7 +94,7 @@ return /******/ (function(modules) { // webpackBootstrap var opts = args[args.length - 1]; self.dbg.apply(self, [opts.op].concat(args)); - return resolve(); + return _jsData.utils.resolve(); }; var noop2 = function noop2() { @@ -124,7 +106,7 @@ return /******/ (function(modules) { // webpackBootstrap var opts = args[args.length - 2]; self.dbg.apply(self, [opts.op].concat(args)); - return resolve(); + return _jsData.utils.resolve(); }; function isValidString(value) { @@ -154,19 +136,19 @@ return /******/ (function(modules) { // webpackBootstrap var parts = []; - forOwn(params, function (val, key) { + _jsData.utils.forOwn(params, function (val, key) { if (val === null || typeof val === 'undefined') { return; } - if (!isArray(val)) { + if (!_jsData.utils.isArray(val)) { val = [val]; } val.forEach(function (v) { if (window.toString.call(v) === '[object Date]') { v = v.toISOString(); - } else if (isObject(v)) { - v = toJson(v); + } else if (_jsData.utils.isObject(v)) { + v = _jsData.utils.toJson(v); } parts.push(encode(key) + '=' + encode(v)); }); @@ -238,7 +220,7 @@ return /******/ (function(modules) { // webpackBootstrap function HttpAdapter(opts) { var self = this; opts || (opts = {}); - fillIn(opts, DEFAULTS); + _jsData.utils.fillIn(opts, DEFAULTS); _jsDataAdapter2.default.call(self, opts); } @@ -257,7 +239,7 @@ return /******/ (function(modules) { // webpackBootstrap value: _jsDataAdapter2.default }); - addHiddenPropsToTarget(HttpAdapter.prototype, { + _jsData.utils.addHiddenPropsToTarget(HttpAdapter.prototype, { /** * @name HttpAdapter#afterDEL * @method @@ -355,6 +337,12 @@ return /******/ (function(modules) { // webpackBootstrap */ beforePUT: noop, + _count: function _count(mapper, query, opts) { + var self = this; + return self.GET(self.getPath('count', mapper, opts.params, opts), opts).then(function (response) { + return self._end(mapper, opts, response); + }); + }, _create: function _create(mapper, props, opts) { var self = this; return self.POST(self.getPath('create', mapper, props, opts), self.serialize(mapper, props, opts), opts).then(function (response) { @@ -394,6 +382,12 @@ return /******/ (function(modules) { // webpackBootstrap return self._end(mapper, opts, response); }); }, + _sum: function _sum(mapper, field, query, opts) { + var self = this; + return self.GET(self.getPath('sum', mapper, opts.params, opts), opts).then(function (response) { + return self._end(mapper, opts, response); + }); + }, _update: function _update(mapper, id, props, opts) { var self = this; return self.PUT(self.getPath('update', mapper, id, opts), self.serialize(mapper, props, opts), opts).then(function (response) { @@ -414,6 +408,32 @@ return /******/ (function(modules) { // webpackBootstrap }, + /** + * Retrieve the number of records that match the selection `query`. + * + * @name HttpAdapter#count + * @method + * @param {Object} mapper The mapper. + * @param {Object} query Selection query. + * @param {Object} [opts] Configuration options. + * @param {string} [opts.params] TODO + * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO + * @return {Promise} + */ + count: function count(mapper, query, opts) { + var self = this; + query || (query = {}); + opts || (opts = {}); + opts.params = self.getParams(opts); + opts.params.count = true; + opts.suffix = self.getSuffix(mapper, opts); + _jsData.utils.deepMixIn(opts.params, query); + opts.params = self.queryTransform(mapper, opts.params, opts); + + return __super__.count.call(self, mapper, query, opts); + }, + + /** * Create a new the record from the provided `props`. * @@ -428,8 +448,8 @@ return /******/ (function(modules) { // webpackBootstrap */ create: function create(mapper, props, opts) { var self = this; - opts = opts ? copy(opts) : {}; - opts.params || (opts.params = {}); + opts || (opts = {}); + opts.params = self.getParams(opts); opts.params = self.queryTransform(mapper, opts.params, opts); opts.suffix = self.getSuffix(mapper, opts); @@ -451,8 +471,8 @@ return /******/ (function(modules) { // webpackBootstrap */ createMany: function createMany(mapper, props, opts) { var self = this; - opts = opts ? copy(opts) : {}; - opts.params || (opts.params = {}); + opts || (opts = {}); + opts.params = self.getParams(opts); opts.params = self.queryTransform(mapper, opts.params, opts); opts.suffix = self.getSuffix(mapper, opts); @@ -481,18 +501,18 @@ return /******/ (function(modules) { // webpackBootstrap // beforeDEL lifecycle hook op = opts.op = 'beforeDEL'; - return resolve(self[op](url, config, opts)).then(function (_config) { + return _jsData.utils.resolve(self[op](url, config, opts)).then(function (_config) { // Allow re-assignment from lifecycle hook - config = isUndefined(_config) ? config : _config; + config = _jsData.utils.isUndefined(_config) ? config : _config; op = opts.op = 'DEL'; self.dbg(op, url, config, opts); return self.HTTP(config, opts); }).then(function (response) { // afterDEL lifecycle hook op = opts.op = 'afterDEL'; - return resolve(self[op](url, config, opts, response)).then(function (_response) { + return _jsData.utils.resolve(self[op](url, config, opts, response)).then(function (_response) { // Allow re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return _jsData.utils.isUndefined(_response) ? response : _response; }); }); }, @@ -511,10 +531,10 @@ return /******/ (function(modules) { // webpackBootstrap */ deserialize: function deserialize(mapper, response, opts) { opts || (opts = {}); - if (isFunction(opts.deserialize)) { + if (_jsData.utils.isFunction(opts.deserialize)) { return opts.deserialize(mapper, response, opts); } - if (isFunction(mapper.deserialize)) { + if (_jsData.utils.isFunction(mapper.deserialize)) { return mapper.deserialize(mapper, response, opts); } if (response) { @@ -540,8 +560,8 @@ return /******/ (function(modules) { // webpackBootstrap */ destroy: function destroy(mapper, id, opts) { var self = this; - opts = opts ? copy(opts) : {}; - opts.params || (opts.params = {}); + opts || (opts = {}); + opts.params = self.getParams(opts); opts.params = self.queryTransform(mapper, opts.params, opts); opts.suffix = self.getSuffix(mapper, opts); @@ -564,9 +584,9 @@ return /******/ (function(modules) { // webpackBootstrap destroyAll: function destroyAll(mapper, query, opts) { var self = this; query || (query = {}); - opts = opts ? copy(opts) : {}; - opts.params || (opts.params = {}); - deepMixIn(opts.params, query); + opts || (opts = {}); + opts.params = self.getParams(opts); + _jsData.utils.deepMixIn(opts.params, query); opts.params = self.queryTransform(mapper, opts.params, opts); opts.suffix = self.getSuffix(mapper, opts); @@ -621,7 +641,7 @@ return /******/ (function(modules) { // webpackBootstrap }; if (config.data) { - requestConfig.body = toJson(config.data); + requestConfig.body = _jsData.utils.toJson(config.data); } return fetch(new Request(buildUrl(config.url, config.params), requestConfig)).then(function (response) { @@ -651,8 +671,8 @@ return /******/ (function(modules) { // webpackBootstrap */ find: function find(mapper, id, opts) { var self = this; - opts = opts ? copy(opts) : {}; - opts.params || (opts.params = {}); + opts || (opts = {}); + opts.params = self.getParams(opts); opts.params = self.queryTransform(mapper, opts.params, opts); opts.suffix = self.getSuffix(mapper, opts); @@ -675,10 +695,10 @@ return /******/ (function(modules) { // webpackBootstrap findAll: function findAll(mapper, query, opts) { var self = this; query || (query = {}); - opts = opts ? copy(opts) : {}; - opts.params || (opts.params = {}); + opts || (opts = {}); + opts.params = self.getParams(opts); opts.suffix = self.getSuffix(mapper, opts); - deepMixIn(opts.params, query); + _jsData.utils.deepMixIn(opts.params, query); opts.params = self.queryTransform(mapper, opts.params, opts); return __super__.findAll.call(self, mapper, query, opts); @@ -705,18 +725,18 @@ return /******/ (function(modules) { // webpackBootstrap // beforeGET lifecycle hook op = opts.op = 'beforeGET'; - return resolve(self[op](url, config, opts)).then(function (_config) { + return _jsData.utils.resolve(self[op](url, config, opts)).then(function (_config) { // Allow re-assignment from lifecycle hook - config = isUndefined(_config) ? config : _config; + config = _jsData.utils.isUndefined(_config) ? config : _config; op = opts.op = 'GET'; self.dbg(op, url, config, opts); return self.HTTP(config, opts); }).then(function (response) { // afterGET lifecycle hook op = opts.op = 'afterGET'; - return resolve(self[op](url, config, opts, response)).then(function (_response) { + return _jsData.utils.resolve(self[op](url, config, opts, response)).then(function (_response) { // Allow re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return _jsData.utils.isUndefined(_response) ? response : _response; }); }); }, @@ -733,9 +753,9 @@ return /******/ (function(modules) { // webpackBootstrap getEndpoint: function getEndpoint(mapper, id, opts) { var self = this; opts || (opts = {}); - opts.params || (opts.params = {}); + opts.params = _jsData.utils.isUndefined(opts.params) ? {} : opts.params; var relationList = mapper.relationList || []; - var endpoint = isUndefined(opts.endpoint) ? isUndefined(mapper.endpoint) ? mapper.name : mapper.endpoint : opts.endpoint; + var endpoint = _jsData.utils.isUndefined(opts.endpoint) ? _jsData.utils.isUndefined(mapper.endpoint) ? mapper.name : mapper.endpoint : opts.endpoint; relationList.forEach(function (def) { if (def.type !== 'belongsTo' || !def.parent) { @@ -754,22 +774,22 @@ return /******/ (function(modules) { // webpackBootstrap } else { delete opts.params[parentKey]; - if (isObject(id)) { + if (_jsData.utils.isObject(id)) { item = id; } if (item) { - parentId = parentId || def.getForeignKey(item) || (def.getLocalField(item) ? get(def.getLocalField(item), parentDef.idAttribute) : null); + parentId = parentId || def.getForeignKey(item) || (def.getLocalField(item) ? _jsData.utils.get(def.getLocalField(item), parentDef.idAttribute) : null); } if (parentId) { var _ret = function () { delete opts.endpoint; var _opts = {}; - forOwn(opts, function (value, key) { + _jsData.utils.forOwn(opts, function (value, key) { _opts[key] = value; }); - _(_opts, parentDef); + _jsData.utils._(_opts, parentDef); endpoint = makePath(self.getEndpoint(parentDef, parentId, _opts), parentId, endpoint); return { v: false @@ -796,16 +816,23 @@ return /******/ (function(modules) { // webpackBootstrap getPath: function getPath(method, mapper, id, opts) { var self = this; opts || (opts = {}); - var args = [isUndefined(opts.basePath) ? isUndefined(mapper.basePath) ? self.basePath : mapper.basePath : opts.basePath, self.getEndpoint(mapper, isString(id) || isNumber(id) || method === 'create' ? id : null, opts)]; + var args = [_jsData.utils.isUndefined(opts.basePath) ? _jsData.utils.isUndefined(mapper.basePath) ? self.basePath : mapper.basePath : opts.basePath, self.getEndpoint(mapper, _jsData.utils.isString(id) || _jsData.utils.isNumber(id) || method === 'create' ? id : null, opts)]; if (method === 'find' || method === 'update' || method === 'destroy') { args.push(id); } return makePath.apply(_jsData.utils, args); }, + getParams: function getParams(opts) { + opts || (opts = {}); + if (_jsData.utils.isUndefined(opts.params)) { + return {}; + } + return _jsData.utils.copy(opts.params); + }, getSuffix: function getSuffix(mapper, opts) { opts || (opts = {}); - if (isUndefined(opts.suffix)) { - if (isUndefined(mapper.suffix)) { + if (_jsData.utils.isUndefined(opts.suffix)) { + if (_jsData.utils.isUndefined(mapper.suffix)) { return this.suffix; } return mapper.suffix; @@ -830,8 +857,8 @@ return /******/ (function(modules) { // webpackBootstrap var payload = config.data; var cache = config.cache; var timeout = config.timeout; - config = copy(config, null, null, null, ['data', 'cache', 'timeout']); - config = deepMixIn(config, self.httpConfig); + config = _jsData.utils.copy(config, null, null, null, ['data', 'cache', 'timeout']); + config = _jsData.utils.deepMixIn(config, self.httpConfig); config.data = payload; config.cache = cache; config.timeout = timeout; @@ -855,7 +882,7 @@ return /******/ (function(modules) { // webpackBootstrap if (self.error) { self.error('\'FAILED: ' + str, data); } - return reject(data); + return _jsData.utils.reject(data); } } @@ -863,7 +890,7 @@ return /******/ (function(modules) { // webpackBootstrap throw new Error('You have not configured this adapter with an http library!'); } - return resolve(self.beforeHTTP(config, opts)).then(function (_config) { + return _jsData.utils.resolve(self.beforeHTTP(config, opts)).then(function (_config) { config = _config || config; if (hasFetch && (self.useFetch || opts.useFetch || !self.http)) { return self.fetch(config, opts).then(logResponse, logResponse); @@ -872,7 +899,7 @@ return /******/ (function(modules) { // webpackBootstrap return self.responseError(err, config, opts); }); }).then(function (response) { - return resolve(self.afterHTTP(config, opts, response)).then(function (_response) { + return _jsData.utils.resolve(self.afterHTTP(config, opts, response)).then(function (_response) { return _response || response; }); }); @@ -901,18 +928,18 @@ return /******/ (function(modules) { // webpackBootstrap // beforePOST lifecycle hook op = opts.op = 'beforePOST'; - return resolve(self[op](url, data, config, opts)).then(function (_config) { + return _jsData.utils.resolve(self[op](url, data, config, opts)).then(function (_config) { // Allow re-assignment from lifecycle hook - config = isUndefined(_config) ? config : _config; + config = _jsData.utils.isUndefined(_config) ? config : _config; op = opts.op = 'POST'; self.dbg(op, url, data, config, opts); return self.HTTP(config, opts); }).then(function (response) { // afterPOST lifecycle hook op = opts.op = 'afterPOST'; - return resolve(self[op](url, data, config, opts, response)).then(function (_response) { + return _jsData.utils.resolve(self[op](url, data, config, opts, response)).then(function (_response) { // Allow re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return _jsData.utils.isUndefined(_response) ? response : _response; }); }); }, @@ -940,18 +967,18 @@ return /******/ (function(modules) { // webpackBootstrap // beforePUT lifecycle hook op = opts.op = 'beforePUT'; - return resolve(self[op](url, data, config, opts)).then(function (_config) { + return _jsData.utils.resolve(self[op](url, data, config, opts)).then(function (_config) { // Allow re-assignment from lifecycle hook - config = isUndefined(_config) ? config : _config; + config = _jsData.utils.isUndefined(_config) ? config : _config; op = opts.op = 'PUT'; self.dbg(op, url, data, config, opts); return self.HTTP(config, opts); }).then(function (response) { // afterPUT lifecycle hook op = opts.op = 'afterPUT'; - return resolve(self[op](url, data, config, opts, response)).then(function (_response) { + return _jsData.utils.resolve(self[op](url, data, config, opts, response)).then(function (_response) { // Allow re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return _jsData.utils.isUndefined(_response) ? response : _response; }); }); }, @@ -969,10 +996,10 @@ return /******/ (function(modules) { // webpackBootstrap */ queryTransform: function queryTransform(mapper, params, opts) { opts || (opts = {}); - if (isFunction(opts.queryTransform)) { + if (_jsData.utils.isFunction(opts.queryTransform)) { return opts.queryTransform(mapper, params, opts); } - if (isFunction(mapper.queryTransform)) { + if (_jsData.utils.isFunction(mapper.queryTransform)) { return mapper.queryTransform(mapper, params, opts); } return params; @@ -993,7 +1020,7 @@ return /******/ (function(modules) { // webpackBootstrap * @return {Promise} */ responseError: function responseError(err, config, opts) { - return reject(err); + return _jsData.utils.reject(err); }, @@ -1009,16 +1036,46 @@ return /******/ (function(modules) { // webpackBootstrap */ serialize: function serialize(mapper, data, opts) { opts || (opts = {}); - if (isFunction(opts.serialize)) { + if (_jsData.utils.isFunction(opts.serialize)) { return opts.serialize(mapper, data, opts); } - if (isFunction(mapper.serialize)) { + if (_jsData.utils.isFunction(mapper.serialize)) { return mapper.serialize(mapper, data, opts); } return data; }, + /** + * Retrieve the sum of the field of the records that match the selection query. + * + * @name HttpAdapter#sum + * @method + * @param {Object} mapper The mapper. + * @param {string} field The field to sum. + * @param {Object} query Selection query. + * @param {Object} [opts] Configuration options. + * @param {string} [opts.params] TODO + * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO + * @return {Promise} + */ + sum: function sum(mapper, field, query, opts) { + var self = this; + query || (query = {}); + opts || (opts = {}); + if (!_jsData.utils.utils.isString(field)) { + throw new Error('field must be a string!'); + } + opts.params = self.getParams(opts); + opts.params.sum = field; + opts.suffix = self.getSuffix(mapper, opts); + _jsData.utils.deepMixIn(opts.params, query); + opts.params = self.queryTransform(mapper, opts.params, opts); + + return __super__.sum.call(self, mapper, field, query, opts); + }, + + /** * TODO * @@ -1032,8 +1089,8 @@ return /******/ (function(modules) { // webpackBootstrap */ update: function update(mapper, id, props, opts) { var self = this; - opts = opts ? copy(opts) : {}; - opts.params || (opts.params = {}); + opts || (opts = {}); + opts.params = self.getParams(opts); opts.params = self.queryTransform(mapper, opts.params, opts); opts.suffix = self.getSuffix(mapper, opts); @@ -1055,9 +1112,9 @@ return /******/ (function(modules) { // webpackBootstrap updateAll: function updateAll(mapper, props, query, opts) { var self = this; query || (query = {}); - opts = opts ? copy(opts) : {}; - opts.params || (opts.params = {}); - deepMixIn(opts.params, query); + opts || (opts = {}); + opts.params = self.getParams(opts); + _jsData.utils.deepMixIn(opts.params, query); opts.params = self.queryTransform(mapper, opts.params, opts); opts.suffix = self.getSuffix(mapper, opts); @@ -1084,8 +1141,8 @@ return /******/ (function(modules) { // webpackBootstrap */ updateMany: function updateMany(mapper, records, opts) { var self = this; - opts = opts ? copy(opts) : {}; - opts.params || (opts.params = {}); + opts || (opts = {}); + opts.params = self.getParams(opts); opts.params = self.queryTransform(mapper, opts.params, opts); opts.suffix = self.getSuffix(mapper, opts); @@ -1109,7 +1166,7 @@ return /******/ (function(modules) { // webpackBootstrap * decorate when invoked. */ HttpAdapter.addAction = function (name, opts) { - if (!name || !isString(name)) { + if (!name || !_jsData.utils.isString(name)) { throw new TypeError('action(name[, opts]): Expected: string, Found: ' + (typeof name === 'undefined' ? 'undefined' : _typeof(name))); } return function (mapper) { @@ -1123,25 +1180,25 @@ return /******/ (function(modules) { // webpackBootstrap return response; }; opts.responseError = opts.responseError || function (err) { - return reject(err); + return _jsData.utils.reject(err); }; mapper[name] = function (id, _opts) { var self = this; - if (isObject(id)) { + if (_jsData.utils.isObject(id)) { _opts = id; } _opts = _opts || {}; var adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http'); var config = {}; - fillIn(config, opts); + _jsData.utils.fillIn(config, opts); if (!_opts.hasOwnProperty('endpoint') && config.endpoint) { _opts.endpoint = config.endpoint; } if (typeof _opts.getEndpoint === 'function') { config.url = _opts.getEndpoint(self, _opts); } else { - var _args = [_opts.basePath || self.basePath || adapter.basePath, adapter.getEndpoint(self, isSorN(id) ? id : null, _opts)]; - if (isSorN(id)) { + var _args = [_opts.basePath || self.basePath || adapter.basePath, adapter.getEndpoint(self, _jsData.utils.isSorN(id) ? id : null, _opts)]; + if (_jsData.utils.isSorN(id)) { _args.push(id); } _args.push(opts.pathname || name); @@ -1149,8 +1206,8 @@ return /******/ (function(modules) { // webpackBootstrap } config.method = config.method || 'GET'; config.mapper = self.name; - deepMixIn(config)(_opts); - return resolve(config).then(_opts.request || opts.request).then(function (config) { + _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) { if (data && data.config) { @@ -1177,7 +1234,7 @@ return /******/ (function(modules) { // webpackBootstrap HttpAdapter.addActions = function (opts) { opts || (opts = {}); return function (mapper) { - forOwn(mapper, function (value, key) { + _jsData.utils.forOwn(mapper, function (value, key) { HttpAdapter.addAction(key, value)(mapper); }); return mapper; @@ -1230,7 +1287,7 @@ return /******/ (function(modules) { // webpackBootstrap * properties to the subclass itself. * @return {Object} Subclass of `HttpAdapter`. */ - HttpAdapter.extend = extend; + HttpAdapter.extend = _jsData.utils.extend; /** * Details of the current version of the `js-data-http` module. @@ -1247,11 +1304,11 @@ return /******/ (function(modules) { // webpackBootstrap * otherwise `false` if the current version is not beta. */ HttpAdapter.version = { - full: '3.0.0-alpha.8', + full: '3.0.0-alpha.9', major: parseInt('3', 10), minor: parseInt('0', 10), patch: parseInt('0', 10), - alpha: true ? '8' : false, + alpha: true ? '9' : false, beta: true ? 'false' : false }; diff --git a/dist/js-data-http.js.map b/dist/js-data-http.js.map index 85af906..8f05bd5 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 0066a2101c142550c7ec","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/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":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;;;ACpCA;;AACA;;;;;;;AAFA,KAAM,QAAQ,oBAAQ,CAAR,CAAR;KAKJ;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;;;AAGF,KAAI,WAAW,KAAX;;AAEJ,KAAI;AACF,cAAW,UAAU,OAAO,KAAP,CADnB;EAAJ,CAEE,OAAO,CAAP,EAAU,EAAV;;AAEF,KAAM,OAAO,SAAP,IAAO,GAAmB;AAC9B,OAAM,OAAO,IAAP,CADwB;;qCAAN;;IAAM;;AAE9B,OAAM,OAAO,KAAK,KAAK,MAAL,GAAc,CAAd,CAAZ,CAFwB;AAG9B,QAAK,GAAL,cAAS,KAAK,EAAL,SAAY,KAArB,EAH8B;AAI9B,UAAO,SAAP,CAJ8B;EAAnB;;AAOb,KAAM,QAAQ,SAAR,KAAQ,GAAmB;AAC/B,OAAM,OAAO,IAAP,CADyB;;sCAAN;;IAAM;;AAE/B,OAAM,OAAO,KAAK,KAAK,MAAL,GAAc,CAAd,CAAZ,CAFyB;AAG/B,QAAK,GAAL,cAAS,KAAK,EAAL,SAAY,KAArB,EAH+B;AAI/B,UAAO,SAAP,CAJ+B;EAAnB;;AAOd,UAAS,aAAT,CAAwB,KAAxB,EAA+B;AAC7B,UAAQ,SAAS,IAAT,IAAiB,UAAU,EAAV,CADI;EAA/B;AAGA,UAAS,IAAT,CAAe,KAAf,EAAsB,SAAtB,EAAiC;AAC/B,iBAAc,YAAY,EAAZ,CAAd,CAD+B;AAE/B,UAAO,MAAM,MAAN,CAAa,aAAb,EAA4B,IAA5B,CAAiC,SAAjC,CAAP,CAF+B;EAAjC;AAIA,UAAS,QAAT,GAA4B;sCAAN;;IAAM;;AAC1B,OAAI,SAAS,KAAK,IAAL,EAAW,GAAX,CAAT,CADsB;AAE1B,UAAO,OAAO,OAAP,CAAe,mBAAf,EAAoC,KAApC,CAAP,CAF0B;EAA5B;;AAKA,UAAS,MAAT,CAAiB,GAAjB,EAAsB;AACpB,UAAO,mBAAmB,GAAnB,EACJ,OADI,CACI,OADJ,EACa,GADb,EAEJ,OAFI,CAEI,OAFJ,EAEa,GAFb,EAGJ,OAHI,CAGI,MAHJ,EAGY,GAHZ,EAIJ,OAJI,CAII,OAJJ,EAIa,GAJb,EAKJ,OALI,CAKI,MALJ,EAKY,GALZ,EAMJ,OANI,CAMI,OANJ,EAMa,GANb,EAOJ,OAPI,CAOI,OAPJ,EAOa,GAPb,CAAP,CADoB;EAAtB;;AAWA,UAAS,QAAT,CAAmB,GAAnB,EAAwB,MAAxB,EAAgC;AAC9B,OAAI,CAAC,MAAD,EAAS;AACX,YAAO,GAAP,CADW;IAAb;;AAIA,OAAM,QAAQ,EAAR,CALwB;;AAO9B,UAAO,MAAP,EAAe,UAAU,GAAV,EAAe,GAAf,EAAoB;AACjC,SAAI,QAAQ,IAAR,IAAgB,OAAO,GAAP,KAAe,WAAf,EAA4B;AAC9C,cAD8C;MAAhD;AAGA,SAAI,CAAC,QAAQ,GAAR,CAAD,EAAe;AACjB,aAAM,CAAC,GAAD,CAAN,CADiB;MAAnB;;AAIA,SAAI,OAAJ,CAAY,UAAU,CAAV,EAAa;AACvB,WAAI,OAAO,QAAP,CAAgB,IAAhB,CAAqB,CAArB,MAA4B,eAA5B,EAA6C;AAC/C,aAAI,EAAE,WAAF,EAAJ,CAD+C;QAAjD,MAEO,IAAI,SAAS,CAAT,CAAJ,EAAiB;AACtB,aAAI,OAAO,CAAP,CAAJ,CADsB;QAAjB;AAGP,aAAM,IAAN,CAAc,OAAO,GAAP,UAAe,OAAO,CAAP,CAA7B,EANuB;MAAb,CAAZ,CARiC;IAApB,CAAf,CAP8B;;AAyB9B,OAAI,MAAM,MAAN,GAAe,CAAf,EAAkB;AACpB,YAAO,CAAC,IAAI,OAAJ,CAAY,GAAZ,MAAqB,CAAC,CAAD,GAAK,GAA1B,GAAgC,GAAhC,CAAD,GAAwC,MAAM,IAAN,CAAW,GAAX,CAAxC,CADa;IAAtB;;AAIA,UAAO,GAAP,CA7B8B;EAAhC;;AAgCA,KAAM,YAAY,wBAAQ,SAAR;;AAElB,KAAM,WAAW;;;;;;AAMf,aAAU,EAAV;;;;;;;AAOA,uBAAoB,KAApB;;;;;;AAMA,SAAM,KAAN;;;;;;AAMA,eAAY,EAAZ;;;;;;AAMA,WAAQ,EAAR;;;;;;;AAOA,aAAU,KAAV;EAtCI;;;;;;;;;;;;;;;AAsDN,UAAS,WAAT,CAAsB,IAAtB,EAA4B;AAC1B,OAAM,OAAO,IAAP,CADoB;AAE1B,YAAS,OAAO,EAAP,CAAT,CAF0B;AAG1B,UAAO,IAAP,EAAa,QAAb,EAH0B;AAI1B,2BAAQ,IAAR,CAAa,IAAb,EAAmB,IAAnB,EAJ0B;EAA5B;;;AAQA,aAAY,SAAZ,GAAwB,OAAO,MAAP,CAAc,wBAAQ,SAAR,EAAmB;AACvD,gBAAa;AACX,YAAO,WAAP;AACA,iBAAY,KAAZ;AACA,eAAU,IAAV;AACA,mBAAc,IAAd;IAJF;EADsB,CAAxB;;AASA,QAAO,cAAP,CAAsB,WAAtB,EAAmC,WAAnC,EAAgD;AAC9C,iBAAc,IAAd;AACA,iCAF8C;EAAhD;;AAKA,wBAAuB,YAAY,SAAZ,EAAuB;;;;;;;;;AAS5C,aAAU,KAAV;;;;;;;;;;AAUA,aAAU,KAAV;;;;;;;;;AASA,cAAW,KAAX;;;;;;;;;;;AAWA,cAAW,KAAX;;;;;;;;;;;AAWA,aAAU,KAAV;;;;;;;;;AASA,cAAW,IAAX;;;;;;;;;AASA,cAAW,IAAX;;;;;;;;AAQA,eAAY,IAAZ;;;;;;;;;;AAUA,eAAY,IAAZ;;;;;;;;;;AAUA,cAAW,IAAX;;AAEA,6BAAS,QAAQ,OAAO,MAAM;AAC5B,SAAM,OAAO,IAAP,CADsB;AAE5B,YAAO,KAAK,IAAL,CACL,KAAK,OAAL,CAAa,QAAb,EAAuB,MAAvB,EAA+B,KAA/B,EAAsC,IAAtC,CADK,EAEL,KAAK,SAAL,CAAe,MAAf,EAAuB,KAAvB,EAA8B,IAA9B,CAFK,EAGL,IAHK,EAIL,IAJK,CAIA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAJP,CAF4B;IAlGc;AA6G5C,qCAAa,QAAQ,OAAO,MAAM;AAChC,SAAM,OAAO,IAAP,CAD0B;AAEhC,YAAO,KAAK,IAAL,CACL,KAAK,OAAL,CAAa,YAAb,EAA2B,MAA3B,EAAmC,IAAnC,EAAyC,IAAzC,CADK,EAEL,KAAK,SAAL,CAAe,MAAf,EAAuB,KAAvB,EAA8B,IAA9B,CAFK,EAGL,IAHK,EAIL,IAJK,CAIA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAJP,CAFgC;IA7GU;AAwH5C,+BAAU,QAAQ,IAAI,MAAM;AAC1B,SAAM,OAAO,IAAP,CADoB;AAE1B,YAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,SAAb,EAAwB,MAAxB,EAAgC,EAAhC,EAAoC,IAApC,CADK,EAEL,IAFK,EAGL,IAHK,CAGA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAHP,CAF0B;IAxHgB;AAkI5C,qCAAa,QAAQ,OAAO,MAAM;AAChC,SAAM,OAAO,IAAP,CAD0B;AAEhC,YAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,YAAb,EAA2B,MAA3B,EAAmC,IAAnC,EAAyC,IAAzC,CADK,EAEL,IAFK,EAGL,IAHK,CAGA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAHP,CAFgC;IAlIU;AA4I5C,uBAAM,QAAQ,MAAM,UAAU;AAC5B,YAAO,CAAC,KAAK,WAAL,CAAiB,MAAjB,EAAyB,SAAS,IAAT,EAAe,IAAxC,CAAD,EAAgD,QAAhD,CAAP,CAD4B;IA5Ic;AAgJ5C,yBAAO,QAAQ,IAAI,MAAM;AACvB,SAAM,OAAO,IAAP,CADiB;AAEvB,YAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,MAAb,EAAqB,MAArB,EAA6B,EAA7B,EAAiC,IAAjC,CADK,EAEL,IAFK,EAGL,IAHK,CAGA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAHP,CAFuB;IAhJmB;AA0J5C,+BAAU,QAAQ,OAAO,MAAM;AAC7B,SAAM,OAAO,IAAP,CADuB;AAE7B,YAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,SAAb,EAAwB,MAAxB,EAAgC,KAAK,MAAL,EAAa,IAA7C,CADK,EAEL,IAFK,EAGL,IAHK,CAGA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAHP,CAF6B;IA1Ja;AAoK5C,6BAAS,QAAQ,IAAI,OAAO,MAAM;AAChC,SAAM,OAAO,IAAP,CAD0B;AAEhC,YAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,QAAb,EAAuB,MAAvB,EAA+B,EAA/B,EAAmC,IAAnC,CADK,EAEL,KAAK,SAAL,CAAe,MAAf,EAAuB,KAAvB,EAA8B,IAA9B,CAFK,EAGL,IAHK,EAIL,IAJK,CAIA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAJP,CAFgC;IApKU;AA+K5C,mCAAY,QAAQ,OAAO,OAAO,MAAM;AACtC,SAAM,OAAO,IAAP,CADgC;AAEtC,YAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,WAAb,EAA0B,MAA1B,EAAkC,IAAlC,EAAwC,IAAxC,CADK,EAEL,KAAK,SAAL,CAAe,MAAf,EAAuB,KAAvB,EAA8B,IAA9B,CAFK,EAGL,IAHK,EAIL,IAJK,CAIA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAJP,CAFsC;IA/KI;AA0L5C,qCAAa,QAAQ,SAAS,MAAM;AAClC,SAAM,OAAO,IAAP,CAD4B;AAElC,YAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,YAAb,EAA2B,MAA3B,EAAmC,IAAnC,EAAyC,IAAzC,CADK,EAEL,KAAK,SAAL,CAAe,MAAf,EAAuB,OAAvB,EAAgC,IAAhC,CAFK,EAGL,IAHK,EAIL,IAJK,CAIA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAJP,CAFkC;IA1LQ;;;;;;;;;;;;;;;AAiN5C,2BAAQ,QAAQ,OAAO,MAAM;AAC3B,SAAM,OAAO,IAAP,CADqB;AAE3B,YAAO,OAAO,KAAK,IAAL,CAAP,GAAoB,EAApB,CAFoB;AAG3B,UAAK,MAAL,KAAgB,KAAK,MAAL,GAAc,EAAd,CAAhB,CAH2B;AAI3B,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAJ2B;AAK3B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CAL2B;;AAO3B,YAAO,UAAU,MAAV,CAAiB,IAAjB,CAAsB,IAAtB,EAA4B,MAA5B,EAAoC,KAApC,EAA2C,IAA3C,CAAP,CAP2B;IAjNe;;;;;;;;;;;;;;;AAuO5C,mCAAY,QAAQ,OAAO,MAAM;AAC/B,SAAM,OAAO,IAAP,CADyB;AAE/B,YAAO,OAAO,KAAK,IAAL,CAAP,GAAoB,EAApB,CAFwB;AAG/B,UAAK,MAAL,KAAgB,KAAK,MAAL,GAAc,EAAd,CAAhB,CAH+B;AAI/B,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAJ+B;AAK/B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CAL+B;;AAO/B,YAAO,UAAU,UAAV,CAAqB,IAArB,CAA0B,IAA1B,EAAgC,MAAhC,EAAwC,KAAxC,EAA+C,IAA/C,CAAP,CAP+B;IAvOW;;;;;;;;;;;;;;AA4P5C,qBAAK,KAAK,QAAQ,MAAM;AACtB,SAAM,OAAO,IAAP,CADgB;AAEtB,SAAI,WAAJ,CAFsB;AAGtB,gBAAW,SAAS,EAAT,CAAX,CAHsB;AAItB,cAAS,OAAO,EAAP,CAAT,CAJsB;AAKtB,YAAO,GAAP,GAAa,OAAO,OAAO,GAAP,CALE;AAMtB,YAAO,MAAP,GAAgB,OAAO,MAAP,IAAiB,QAAjB;;;AANM,OAStB,GAAK,KAAK,EAAL,GAAU,WAAV,CATiB;AAUtB,YAAO,QAAQ,KAAK,EAAL,EAAS,GAAT,EAAc,MAAd,EAAsB,IAAtB,CAAR,EAAqC,IAArC,CAA0C,UAAU,OAAV,EAAmB;;AAElE,gBAAS,YAAY,OAAZ,IAAuB,MAAvB,GAAgC,OAAhC,CAFyD;AAGlE,YAAK,KAAK,EAAL,GAAU,KAAV,CAH6D;AAIlE,YAAK,GAAL,CAAS,EAAT,EAAa,GAAb,EAAkB,MAAlB,EAA0B,IAA1B,EAJkE;AAKlE,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,CAAP,CALkE;MAAnB,CAA1C,CAMJ,IANI,CAMC,UAAU,QAAV,EAAoB;;AAE1B,YAAK,KAAK,EAAL,GAAU,UAAV,CAFqB;AAG1B,cAAO,QAAQ,KAAK,EAAL,EAAS,GAAT,EAAc,MAAd,EAAsB,IAAtB,EAA4B,QAA5B,CAAR,EAA+C,IAA/C,CAAoD,UAAU,SAAV,EAAqB;;AAE9E,gBAAO,YAAY,SAAZ,IAAyB,QAAzB,GAAoC,SAApC,CAFuE;QAArB,CAA3D,CAH0B;MAApB,CANR,CAVsB;IA5PoB;;;;;;;;;;;;;;AAiS5C,qCAAa,QAAQ,UAAU,MAAM;AACnC,cAAS,OAAO,EAAP,CAAT,CADmC;AAEnC,SAAI,WAAW,KAAK,WAAL,CAAf,EAAkC;AAChC,cAAO,KAAK,WAAL,CAAiB,MAAjB,EAAyB,QAAzB,EAAmC,IAAnC,CAAP,CADgC;MAAlC;AAGA,SAAI,WAAW,OAAO,WAAP,CAAf,EAAoC;AAClC,cAAO,OAAO,WAAP,CAAmB,MAAnB,EAA2B,QAA3B,EAAqC,IAArC,CAAP,CADkC;MAApC;AAGA,SAAI,QAAJ,EAAc;AACZ,WAAI,SAAS,cAAT,CAAwB,MAAxB,CAAJ,EAAqC;AACnC,gBAAO,SAAS,IAAT,CAD4B;QAArC;MADF;AAKA,YAAO,QAAP,CAbmC;IAjSO;;;;;;;;;;;;;;;AA6T5C,6BAAS,QAAQ,IAAI,MAAM;AACzB,SAAM,OAAO,IAAP,CADmB;AAEzB,YAAO,OAAO,KAAK,IAAL,CAAP,GAAoB,EAApB,CAFkB;AAGzB,UAAK,MAAL,KAAgB,KAAK,MAAL,GAAc,EAAd,CAAhB,CAHyB;AAIzB,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAJyB;AAKzB,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CALyB;;AAOzB,YAAO,UAAU,OAAV,CAAkB,IAAlB,CAAuB,IAAvB,EAA6B,MAA7B,EAAqC,EAArC,EAAyC,IAAzC,CAAP,CAPyB;IA7TiB;;;;;;;;;;;;;;;AAmV5C,mCAAY,QAAQ,OAAO,MAAM;AAC/B,SAAM,OAAO,IAAP,CADyB;AAE/B,eAAU,QAAQ,EAAR,CAAV,CAF+B;AAG/B,YAAO,OAAO,KAAK,IAAL,CAAP,GAAoB,EAApB,CAHwB;AAI/B,UAAK,MAAL,KAAgB,KAAK,MAAL,GAAc,EAAd,CAAhB,CAJ+B;AAK/B,eAAU,KAAK,MAAL,EAAa,KAAvB,EAL+B;AAM/B,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAN+B;AAO/B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CAP+B;;AAS/B,YAAO,UAAU,UAAV,CAAqB,IAArB,CAA0B,IAA1B,EAAgC,MAAhC,EAAwC,KAAxC,EAA+C,IAA/C,CAAP,CAT+B;IAnVW;;;;;;;;;;AAsW5C,2BAAgB;AACd,SAAI,OAAJ,EAAa;;;AACX,4BAAQ,OAAO,QAAQ,KAAR,KAAkB,UAAzB,GAAsC,OAAtC,GAAgD,KAAhD,CAAR,4BADW;MAAb;IAvW0C;;;;;;;;;;;;;;;;AAyX5C;;;;;;;;;;eAAO,QAAQ,MAAM;AACnB,SAAM,gBAAgB;AACpB,eAAQ,OAAO,MAAP;;AAER,gBAAS,IAAI,OAAJ,CAAY,OAAO,OAAP,CAArB;MAHI,CADa;;AAOnB,SAAI,OAAO,IAAP,EAAa;AACf,qBAAc,IAAd,GAAqB,OAAO,OAAO,IAAP,CAA5B,CADe;MAAjB;;AAIA,YAAO,MAAM,IAAI,OAAJ,CAAY,SAAS,OAAO,GAAP,EAAY,OAAO,MAAP,CAAjC,EAAiD,aAAjD,CAAN,EAAuE,IAAvE,CAA4E,UAAU,QAAV,EAAoB;AACrG,gBAAS,MAAT,GAAkB;AAChB,iBAAQ,OAAO,MAAP;AACR,cAAK,OAAO,GAAP;QAFP,CADqG;AAKrG,cAAO,SAAS,IAAT,GAAgB,IAAhB,CAAqB,UAAU,IAAV,EAAgB;AAC1C,kBAAS,IAAT,GAAgB,IAAhB,CAD0C;AAE1C,gBAAO,QAAP,CAF0C;QAAhB,CAA5B,CALqG;MAApB,CAAnF,CAXmB;KAzXuB;;;;;;;;;;;;;;;AA4Z5C,uBAAM,QAAQ,IAAI,MAAM;AACtB,SAAM,OAAO,IAAP,CADgB;AAEtB,YAAO,OAAO,KAAK,IAAL,CAAP,GAAoB,EAApB,CAFe;AAGtB,UAAK,MAAL,KAAgB,KAAK,MAAL,GAAc,EAAd,CAAhB,CAHsB;AAItB,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAJsB;AAKtB,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CALsB;;AAOtB,YAAO,UAAU,IAAV,CAAe,IAAf,CAAoB,IAApB,EAA0B,MAA1B,EAAkC,EAAlC,EAAsC,IAAtC,CAAP,CAPsB;IA5ZoB;;;;;;;;;;;;;;;AAkb5C,6BAAS,QAAQ,OAAO,MAAM;AAC5B,SAAM,OAAO,IAAP,CADsB;AAE5B,eAAU,QAAQ,EAAR,CAAV,CAF4B;AAG5B,YAAO,OAAO,KAAK,IAAL,CAAP,GAAoB,EAApB,CAHqB;AAI5B,UAAK,MAAL,KAAgB,KAAK,MAAL,GAAc,EAAd,CAAhB,CAJ4B;AAK5B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CAL4B;AAM5B,eAAU,KAAK,MAAL,EAAa,KAAvB,EAN4B;AAO5B,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAP4B;;AAS5B,YAAO,UAAU,OAAV,CAAkB,IAAlB,CAAuB,IAAvB,EAA6B,MAA7B,EAAqC,KAArC,EAA4C,IAA5C,CAAP,CAT4B;IAlbc;;;;;;;;;;;;;AAwc5C,qBAAK,KAAK,QAAQ,MAAM;AACtB,SAAM,OAAO,IAAP,CADgB;AAEtB,SAAI,WAAJ,CAFsB;AAGtB,gBAAW,SAAS,EAAT,CAAX,CAHsB;AAItB,cAAS,OAAO,EAAP,CAAT,CAJsB;AAKtB,YAAO,GAAP,GAAa,OAAO,OAAO,GAAP,CALE;AAMtB,YAAO,MAAP,GAAgB,OAAO,MAAP,IAAiB,KAAjB;;;AANM,OAStB,GAAK,KAAK,EAAL,GAAU,WAAV,CATiB;AAUtB,YAAO,QAAQ,KAAK,EAAL,EAAS,GAAT,EAAc,MAAd,EAAsB,IAAtB,CAAR,EAAqC,IAArC,CAA0C,UAAU,OAAV,EAAmB;;AAElE,gBAAS,YAAY,OAAZ,IAAuB,MAAvB,GAAgC,OAAhC,CAFyD;AAGlE,YAAK,KAAK,EAAL,GAAU,KAAV,CAH6D;AAIlE,YAAK,GAAL,CAAS,EAAT,EAAa,GAAb,EAAkB,MAAlB,EAA0B,IAA1B,EAJkE;AAKlE,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,CAAP,CALkE;MAAnB,CAA1C,CAMJ,IANI,CAMC,UAAU,QAAV,EAAoB;;AAE1B,YAAK,KAAK,EAAL,GAAU,UAAV,CAFqB;AAG1B,cAAO,QAAQ,KAAK,EAAL,EAAS,GAAT,EAAc,MAAd,EAAsB,IAAtB,EAA4B,QAA5B,CAAR,EAA+C,IAA/C,CAAoD,UAAU,SAAV,EAAqB;;AAE9E,gBAAO,YAAY,SAAZ,IAAyB,QAAzB,GAAoC,SAApC,CAFuE;QAArB,CAA3D,CAH0B;MAApB,CANR,CAVsB;IAxcoB;;;;;;;;;;;AA0e5C,qCAAa,QAAQ,IAAI,MAAM;AAC7B,SAAM,OAAO,IAAP,CADuB;AAE7B,cAAS,OAAO,EAAP,CAAT,CAF6B;AAG7B,UAAK,MAAL,KAAgB,KAAK,MAAL,GAAc,EAAd,CAAhB,CAH6B;AAI7B,SAAM,eAAe,OAAO,YAAP,IAAuB,EAAvB,CAJQ;AAK7B,SAAI,WAAW,YAAY,KAAK,QAAL,CAAZ,GAA8B,YAAY,OAAO,QAAP,CAAZ,GAA+B,OAAO,IAAP,GAAc,OAAO,QAAP,GAAmB,KAAK,QAAL,CALhF;;AAO7B,kBAAa,OAAb,CAAqB,UAAU,GAAV,EAAe;AAClC,WAAI,IAAI,IAAJ,KAAa,WAAb,IAA4B,CAAC,IAAI,MAAJ,EAAY;AAC3C,gBAD2C;QAA7C;AAGA,WAAI,aAAJ,CAJkC;AAKlC,WAAM,YAAY,IAAI,UAAJ,CALgB;AAMlC,WAAM,YAAY,IAAI,WAAJ,EAAZ,CAN4B;AAOlC,WAAI,WAAW,KAAK,MAAL,CAAY,SAAZ,CAAX,CAP8B;;AASlC,WAAI,aAAa,KAAb,IAAsB,CAAC,SAAD,IAAc,CAAC,SAAD,EAAY;AAClD,aAAI,aAAa,KAAb,EAAoB;AACtB,kBAAO,KAAK,MAAL,CAAY,SAAZ,CAAP,CADsB;UAAxB;AAGA,gBAAO,KAAP,CAJkD;QAApD,MAKO;AACL,gBAAO,KAAK,MAAL,CAAY,SAAZ,CAAP,CADK;;AAGL,aAAI,SAAS,EAAT,CAAJ,EAAkB;AAChB,kBAAO,EAAP,CADgB;UAAlB;;AAIA,aAAI,IAAJ,EAAU;AACR,sBAAW,YAAY,IAAI,aAAJ,CAAkB,IAAlB,CAAZ,KAAwC,IAAI,aAAJ,CAAkB,IAAlB,IAA0B,IAAI,IAAI,aAAJ,CAAkB,IAAlB,CAAJ,EAA6B,UAAU,WAAV,CAAvD,GAAgF,IAAhF,CAAxC,CADH;UAAV;;AAIA,aAAI,QAAJ,EAAc;;AACZ,oBAAO,KAAK,QAAL;AACP,iBAAM,QAAQ,EAAR;AACN,oBAAO,IAAP,EAAa,UAAU,KAAV,EAAiB,GAAjB,EAAsB;AACjC,qBAAM,GAAN,IAAa,KAAb,CADiC;cAAtB,CAAb;AAGA,eAAE,KAAF,EAAS,SAAT;AACA,wBAAW,SAAS,KAAK,WAAL,CAAiB,SAAjB,EAA4B,QAA5B,EAAsC,KAAtC,CAAT,EAAuD,QAAvD,EAAiE,QAAjE,CAAX;AACA;kBAAO;cAAP;eARY;;;UAAd;QAhBF;MATmB,CAArB,CAP6B;;AA6C7B,YAAO,QAAP,CA7C6B;IA1ea;;;;;;;;;;;AAkiB5C,6BAAS,QAAQ,QAAQ,IAAI,MAAM;AACjC,SAAM,OAAO,IAAP,CAD2B;AAEjC,cAAS,OAAO,EAAP,CAAT,CAFiC;AAGjC,SAAM,OAAO,CACX,YAAY,KAAK,QAAL,CAAZ,GAA8B,YAAY,OAAO,QAAP,CAAZ,GAA+B,KAAK,QAAL,GAAgB,OAAO,QAAP,GAAmB,KAAK,QAAL,EAChG,KAAK,WAAL,CAAiB,MAAjB,EAAyB,QAAC,CAAS,EAAT,KAAgB,SAAS,EAAT,CAAhB,IAAgC,WAAW,QAAX,GAAuB,EAAxD,GAA6D,IAA7D,EAAmE,IAA5F,CAFW,CAAP,CAH2B;AAOjC,SAAI,WAAW,MAAX,IAAqB,WAAW,QAAX,IAAuB,WAAW,SAAX,EAAsB;AACpE,YAAK,IAAL,CAAU,EAAV,EADoE;MAAtE;AAGA,YAAO,SAAS,KAAT,gBAAsB,IAAtB,CAAP,CAViC;IAliBS;AA+iB5C,iCAAW,QAAQ,MAAM;AACvB,cAAS,OAAO,EAAP,CAAT,CADuB;AAEvB,SAAI,YAAY,KAAK,MAAL,CAAhB,EAA8B;AAC5B,WAAI,YAAY,OAAO,MAAP,CAAhB,EAAgC;AAC9B,gBAAO,KAAK,MAAL,CADuB;QAAhC;AAGA,cAAO,OAAO,MAAP,CAJqB;MAA9B;AAMA,YAAO,KAAK,MAAL,CARgB;IA/iBmB;;;;;;;;;;;;AAmkB5C,uBAAM,QAAQ,MAAM;AAClB,SAAM,OAAO,IAAP,CADY;AAElB,SAAM,QAAQ,IAAI,IAAJ,EAAR,CAFY;AAGlB,cAAS,OAAO,EAAP,CAAT,CAHkB;AAIlB,SAAM,UAAU,OAAO,IAAP,CAJE;AAKlB,SAAM,QAAQ,OAAO,KAAP,CALI;AAMlB,SAAM,UAAU,OAAO,OAAP,CANE;AAOlB,cAAS,KAAK,MAAL,EAAa,IAAb,EAAmB,IAAnB,EAAyB,IAAzB,EAA+B,CAAC,MAAD,EAAS,OAAT,EAAkB,SAAlB,CAA/B,CAAT,CAPkB;AAQlB,cAAS,UAAU,MAAV,EAAkB,KAAK,UAAL,CAA3B,CARkB;AASlB,YAAO,IAAP,GAAc,OAAd,CATkB;AAUlB,YAAO,KAAP,GAAe,KAAf,CAVkB;AAWlB,YAAO,OAAP,GAAiB,OAAjB,CAXkB;AAYlB,SAAI,KAAK,kBAAL,IAA2B,OAAO,GAAP,CAAW,OAAO,GAAP,CAAW,MAAX,GAAoB,CAApB,CAAX,KAAsC,GAAtC,EAA2C;AACxE,cAAO,GAAP,IAAc,GAAd,CADwE;MAA1E;AAGA,YAAO,MAAP,GAAgB,OAAO,MAAP,CAAc,WAAd,EAAhB,CAfkB;AAgBlB,SAAM,SAAS,OAAO,MAAP,IAAiB,KAAK,MAAL,IAAe,KAAK,MAAL,CAhB7B;AAiBlB,SAAI,UAAU,OAAO,GAAP,CAAW,MAAX,CAAkB,OAAO,GAAP,CAAW,MAAX,GAAoB,OAAO,MAAP,CAAtC,KAAyD,MAAzD,EAAiE;AAC7E,cAAO,GAAP,IAAc,MAAd,CAD6E;MAA/E;;AAIA,cAAS,WAAT,CAAsB,IAAtB,EAA4B;AAC1B,WAAM,MAAS,MAAM,WAAN,aAAyB,OAAO,MAAP,CAAc,WAAd,WAA+B,OAAO,GAAP,WAAgB,KAAK,MAAL,UAAgB,IAAI,IAAJ,GAAW,OAAX,KAAuB,MAAM,OAAN,EAAvB,QAAjG,CADoB;AAE1B,WAAI,KAAK,MAAL,IAAe,GAAf,IAAsB,KAAK,MAAL,GAAc,GAAd,EAAmB;AAC3C,aAAI,KAAK,GAAL,EAAU;AACZ,gBAAK,GAAL,CAAS,OAAT,EAAkB,GAAlB,EAAuB,IAAvB,EADY;UAAd;AAGA,gBAAO,IAAP,CAJ2C;QAA7C,MAKO;AACL,aAAI,KAAK,KAAL,EAAY;AACd,gBAAK,KAAL,gBAAuB,GAAvB,EAA8B,IAA9B,EADc;UAAhB;AAGA,gBAAO,OAAO,IAAP,CAAP,CAJK;QALP;MAFF;;AAeA,SAAI,CAAC,KAAK,IAAL,EAAW;AACd,aAAM,IAAI,KAAJ,CAAU,4DAAV,CAAN,CADc;MAAhB;;AAIA,YAAO,QAAQ,KAAK,UAAL,CAAgB,MAAhB,EAAwB,IAAxB,CAAR,EAAuC,IAAvC,CAA4C,UAAU,OAAV,EAAmB;AACpE,gBAAS,WAAW,MAAX,CAD2D;AAEpE,WAAI,aAAa,KAAK,QAAL,IAAiB,KAAK,QAAL,IAAiB,CAAC,KAAK,IAAL,CAAhD,EAA4D;AAC9D,gBAAO,KAAK,KAAL,CAAW,MAAX,EAAmB,IAAnB,EAAyB,IAAzB,CAA8B,WAA9B,EAA2C,WAA3C,CAAP,CAD8D;QAAhE;AAGA,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,CAAuB,WAAvB,EAAoC,WAApC,EAAiD,KAAjD,CAAuD,UAAU,GAAV,EAAe;AAC3E,gBAAO,KAAK,aAAL,CAAmB,GAAnB,EAAwB,MAAxB,EAAgC,IAAhC,CAAP,CAD2E;QAAf,CAA9D,CALoE;MAAnB,CAA5C,CAQJ,IARI,CAQC,UAAU,QAAV,EAAoB;AAC1B,cAAO,QAAQ,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,EAA6B,QAA7B,CAAR,EAAgD,IAAhD,CAAqD,UAAU,SAAV,EAAqB;AAC/E,gBAAO,aAAa,QAAb,CADwE;QAArB,CAA5D,CAD0B;MAApB,CARR,CAxCkB;IAnkBwB;;;;;;;;;;;;;;AAqoB5C,uBAAM,KAAK,MAAM,QAAQ,MAAM;AAC7B,SAAM,OAAO,IAAP,CADuB;AAE7B,SAAI,WAAJ,CAF6B;AAG7B,gBAAW,SAAS,EAAT,CAAX,CAH6B;AAI7B,cAAS,OAAO,EAAP,CAAT,CAJ6B;AAK7B,YAAO,GAAP,GAAa,OAAO,OAAO,GAAP,CALS;AAM7B,YAAO,IAAP,GAAc,QAAQ,OAAO,IAAP,CANO;AAO7B,YAAO,MAAP,GAAgB,OAAO,MAAP,IAAiB,MAAjB;;;AAPa,OAU7B,GAAK,KAAK,EAAL,GAAU,YAAV,CAVwB;AAW7B,YAAO,QAAQ,KAAK,EAAL,EAAS,GAAT,EAAc,IAAd,EAAoB,MAApB,EAA4B,IAA5B,CAAR,EAA2C,IAA3C,CAAgD,UAAU,OAAV,EAAmB;;AAExE,gBAAS,YAAY,OAAZ,IAAuB,MAAvB,GAAgC,OAAhC,CAF+D;AAGxE,YAAK,KAAK,EAAL,GAAU,MAAV,CAHmE;AAIxE,YAAK,GAAL,CAAS,EAAT,EAAa,GAAb,EAAkB,IAAlB,EAAwB,MAAxB,EAAgC,IAAhC,EAJwE;AAKxE,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,CAAP,CALwE;MAAnB,CAAhD,CAMJ,IANI,CAMC,UAAU,QAAV,EAAoB;;AAE1B,YAAK,KAAK,EAAL,GAAU,WAAV,CAFqB;AAG1B,cAAO,QAAQ,KAAK,EAAL,EAAS,GAAT,EAAc,IAAd,EAAoB,MAApB,EAA4B,IAA5B,EAAkC,QAAlC,CAAR,EAAqD,IAArD,CAA0D,UAAU,SAAV,EAAqB;;AAEpF,gBAAO,YAAY,SAAZ,IAAyB,QAAzB,GAAoC,SAApC,CAF6E;QAArB,CAAjE,CAH0B;MAApB,CANR,CAX6B;IAroBa;;;;;;;;;;;;;;AA2qB5C,qBAAK,KAAK,MAAM,QAAQ,MAAM;AAC5B,SAAM,OAAO,IAAP,CADsB;AAE5B,SAAI,WAAJ,CAF4B;AAG5B,gBAAW,SAAS,EAAT,CAAX,CAH4B;AAI5B,cAAS,OAAO,EAAP,CAAT,CAJ4B;AAK5B,YAAO,GAAP,GAAa,OAAO,OAAO,GAAP,CALQ;AAM5B,YAAO,IAAP,GAAc,QAAQ,OAAO,IAAP,CANM;AAO5B,YAAO,MAAP,GAAgB,OAAO,MAAP,IAAiB,KAAjB;;;AAPY,OAU5B,GAAK,KAAK,EAAL,GAAU,WAAV,CAVuB;AAW5B,YAAO,QAAQ,KAAK,EAAL,EAAS,GAAT,EAAc,IAAd,EAAoB,MAApB,EAA4B,IAA5B,CAAR,EAA2C,IAA3C,CAAgD,UAAU,OAAV,EAAmB;;AAExE,gBAAS,YAAY,OAAZ,IAAuB,MAAvB,GAAgC,OAAhC,CAF+D;AAGxE,YAAK,KAAK,EAAL,GAAU,KAAV,CAHmE;AAIxE,YAAK,GAAL,CAAS,EAAT,EAAa,GAAb,EAAkB,IAAlB,EAAwB,MAAxB,EAAgC,IAAhC,EAJwE;AAKxE,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,CAAP,CALwE;MAAnB,CAAhD,CAMJ,IANI,CAMC,UAAU,QAAV,EAAoB;;AAE1B,YAAK,KAAK,EAAL,GAAU,UAAV,CAFqB;AAG1B,cAAO,QAAQ,KAAK,EAAL,EAAS,GAAT,EAAc,IAAd,EAAoB,MAApB,EAA4B,IAA5B,EAAkC,QAAlC,CAAR,EAAqD,IAArD,CAA0D,UAAU,SAAV,EAAqB;;AAEpF,gBAAO,YAAY,SAAZ,IAAyB,QAAzB,GAAoC,SAApC,CAF6E;QAArB,CAAjE,CAH0B;MAApB,CANR,CAX4B;IA3qBc;;;;;;;;;;;;;AAgtB5C,2CAAgB,QAAQ,QAAQ,MAAM;AACpC,cAAS,OAAO,EAAP,CAAT,CADoC;AAEpC,SAAI,WAAW,KAAK,cAAL,CAAf,EAAqC;AACnC,cAAO,KAAK,cAAL,CAAoB,MAApB,EAA4B,MAA5B,EAAoC,IAApC,CAAP,CADmC;MAArC;AAGA,SAAI,WAAW,OAAO,cAAP,CAAf,EAAuC;AACrC,cAAO,OAAO,cAAP,CAAsB,MAAtB,EAA8B,MAA9B,EAAsC,IAAtC,CAAP,CADqC;MAAvC;AAGA,YAAO,MAAP,CARoC;IAhtBM;;;;;;;;;;;;;;;;AAwuB5C,yCAAe,KAAK,QAAQ,MAAM;AAChC,YAAO,OAAO,GAAP,CAAP,CADgC;IAxuBU;;;;;;;;;;;;;AAsvB5C,iCAAW,QAAQ,MAAM,MAAM;AAC7B,cAAS,OAAO,EAAP,CAAT,CAD6B;AAE7B,SAAI,WAAW,KAAK,SAAL,CAAf,EAAgC;AAC9B,cAAO,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,EAA6B,IAA7B,CAAP,CAD8B;MAAhC;AAGA,SAAI,WAAW,OAAO,SAAP,CAAf,EAAkC;AAChC,cAAO,OAAO,SAAP,CAAiB,MAAjB,EAAyB,IAAzB,EAA+B,IAA/B,CAAP,CADgC;MAAlC;AAGA,YAAO,IAAP,CAR6B;IAtvBa;;;;;;;;;;;;;;AA4wB5C,2BAAQ,QAAQ,IAAI,OAAO,MAAM;AAC/B,SAAM,OAAO,IAAP,CADyB;AAE/B,YAAO,OAAO,KAAK,IAAL,CAAP,GAAoB,EAApB,CAFwB;AAG/B,UAAK,MAAL,KAAgB,KAAK,MAAL,GAAc,EAAd,CAAhB,CAH+B;AAI/B,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAJ+B;AAK/B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CAL+B;;AAO/B,YAAO,UAAU,MAAV,CAAiB,IAAjB,CAAsB,IAAtB,EAA4B,MAA5B,EAAoC,EAApC,EAAwC,KAAxC,EAA+C,IAA/C,CAAP,CAP+B;IA5wBW;;;;;;;;;;;;;;AAiyB5C,iCAAW,QAAQ,OAAO,OAAO,MAAM;AACrC,SAAM,OAAO,IAAP,CAD+B;AAErC,eAAU,QAAQ,EAAR,CAAV,CAFqC;AAGrC,YAAO,OAAO,KAAK,IAAL,CAAP,GAAoB,EAApB,CAH8B;AAIrC,UAAK,MAAL,KAAgB,KAAK,MAAL,GAAc,EAAd,CAAhB,CAJqC;AAKrC,eAAU,KAAK,MAAL,EAAa,KAAvB,EALqC;AAMrC,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CANqC;AAOrC,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CAPqC;;AASrC,YAAO,UAAU,SAAV,CAAoB,IAApB,CAAyB,IAAzB,EAA+B,MAA/B,EAAuC,KAAvC,EAA8C,KAA9C,EAAqD,IAArD,CAAP,CATqC;IAjyBK;;;;;;;;;;;;;;;;;;;;AA8zB5C,mCAAY,QAAQ,SAAS,MAAM;AACjC,SAAM,OAAO,IAAP,CAD2B;AAEjC,YAAO,OAAO,KAAK,IAAL,CAAP,GAAoB,EAApB,CAF0B;AAGjC,UAAK,MAAL,KAAgB,KAAK,MAAL,GAAc,EAAd,CAAhB,CAHiC;AAIjC,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAJiC;AAKjC,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CALiC;;AAOjC,YAAO,UAAU,UAAV,CAAqB,IAArB,CAA0B,IAA1B,EAAgC,MAAhC,EAAwC,OAAxC,EAAiD,IAAjD,CAAP,CAPiC;IA9zBS;EAA9C;;;;;;;;;;;;;;;;;AAw1BA,aAAY,SAAZ,GAAwB,UAAU,IAAV,EAAgB,IAAhB,EAAsB;AAC5C,OAAI,CAAC,IAAD,IAAS,CAAC,SAAS,IAAT,CAAD,EAAiB;AAC5B,WAAM,IAAI,SAAJ,CAAc,4DAA2D,mDAA3D,CAApB,CAD4B;IAA9B;AAGA,UAAO,UAAU,MAAV,EAAkB;AACvB,SAAI,OAAO,IAAP,CAAJ,EAAkB;AAChB,aAAM,IAAI,KAAJ,CAAU,2BAA2B,IAA3B,GAAkC,4BAAlC,CAAhB,CADgB;MAAlB;AAGA,UAAK,OAAL,GAAe,KAAK,OAAL,IAAgB,UAAU,MAAV,EAAkB;AAAE,cAAO,MAAP,CAAF;MAAlB,CAJR;AAKvB,UAAK,QAAL,GAAgB,KAAK,QAAL,IAAiB,UAAU,QAAV,EAAoB;AAAE,cAAO,QAAP,CAAF;MAApB,CALV;AAMvB,UAAK,aAAL,GAAqB,KAAK,aAAL,IAAsB,UAAU,GAAV,EAAe;AAAE,cAAO,OAAO,GAAP,CAAP,CAAF;MAAf,CANpB;AAOvB,YAAO,IAAP,IAAe,UAAU,EAAV,EAAc,KAAd,EAAqB;AAClC,WAAM,OAAO,IAAP,CAD4B;AAElC,WAAI,SAAS,EAAT,CAAJ,EAAkB;AAChB,iBAAQ,EAAR,CADgB;QAAlB;AAGA,eAAQ,SAAS,EAAT,CAL0B;AAMlC,WAAI,UAAU,KAAK,UAAL,CAAgB,KAAK,OAAL,IAAgB,KAAK,cAAL,IAAuB,MAAvC,CAA1B,CAN8B;AAOlC,WAAI,SAAS,EAAT,CAP8B;AAQlC,cAAO,MAAP,EAAe,IAAf,EARkC;AASlC,WAAI,CAAC,MAAM,cAAN,CAAqB,UAArB,CAAD,IAAqC,OAAO,QAAP,EAAiB;AACxD,eAAM,QAAN,GAAiB,OAAO,QAAP,CADuC;QAA1D;AAGA,WAAI,OAAO,MAAM,WAAN,KAAsB,UAA7B,EAAyC;AAC3C,gBAAO,GAAP,GAAa,MAAM,WAAN,CAAkB,IAAlB,EAAwB,KAAxB,CAAb,CAD2C;QAA7C,MAEO;AACL,aAAI,QAAO,CACT,MAAM,QAAN,IAAkB,KAAK,QAAL,IAAiB,QAAQ,QAAR,EACnC,QAAQ,WAAR,CAAoB,IAApB,EAA0B,OAAO,EAAP,IAAa,EAAb,GAAkB,IAAlB,EAAwB,KAAlD,CAFS,CAAP,CADC;AAKL,aAAI,OAAO,EAAP,CAAJ,EAAgB;AACd,iBAAK,IAAL,CAAU,EAAV,EADc;UAAhB;AAGA,eAAK,IAAL,CAAU,KAAK,QAAL,IAAiB,IAAjB,CAAV,CARK;AASL,gBAAO,GAAP,GAAa,SAAS,KAAT,CAAe,IAAf,EAAqB,KAArB,CAAb,CATK;QAFP;AAaA,cAAO,MAAP,GAAgB,OAAO,MAAP,IAAiB,KAAjB,CAzBkB;AA0BlC,cAAO,MAAP,GAAgB,KAAK,IAAL,CA1BkB;AA2BlC,iBAAU,MAAV,EAAkB,KAAlB,EA3BkC;AA4BlC,cAAO,QAAQ,MAAR,EACJ,IADI,CACC,MAAM,OAAN,IAAiB,KAAK,OAAL,CADlB,CAEJ,IAFI,CAEC,UAAU,MAAV,EAAkB;AAAE,gBAAO,QAAQ,IAAR,CAAa,MAAb,CAAP,CAAF;QAAlB,CAFD,CAGJ,IAHI,CAGC,UAAU,IAAV,EAAgB;AACpB,aAAI,QAAQ,KAAK,MAAL,EAAa;AACvB,gBAAK,MAAL,CAAY,MAAZ,GAAqB,KAAK,IAAL,CADE;UAAzB;AAGA,gBAAO,IAAP,CAJoB;QAAhB,CAHD,CASJ,IATI,CASC,MAAM,QAAN,IAAkB,KAAK,QAAL,EAAe,MAAM,aAAN,IAAuB,KAAK,aAAL,CAThE,CA5BkC;MAArB,CAPQ;AA8CvB,YAAO,MAAP,CA9CuB;IAAlB,CAJqC;EAAtB;;;;;;;;;;;;;AAiExB,aAAY,UAAZ,GAAyB,UAAU,IAAV,EAAgB;AACvC,YAAS,OAAO,EAAP,CAAT,CADuC;AAEvC,UAAO,UAAU,MAAV,EAAkB;AACvB,YAAO,MAAP,EAAe,UAAU,KAAV,EAAiB,GAAjB,EAAsB;AACnC,mBAAY,SAAZ,CAAsB,GAAtB,EAA2B,KAA3B,EAAkC,MAAlC,EADmC;MAAtB,CAAf,CADuB;AAIvB,YAAO,MAAP,CAJuB;IAAlB,CAFgC;EAAhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDzB,aAAY,MAAZ,GAAqB,MAArB;;;;;;;;;;;;;;;;AAgBA,aAAY,OAAZ,GAAsB;AACpB,SAAM,oBAAN;AACA,UAAO,SAAS,cAAT,EAAyB,EAAzB,CAAP;AACA,UAAO,SAAS,cAAT,EAAyB,EAAzB,CAAP;AACA,UAAO,SAAS,cAAT,EAAyB,EAAzB,CAAP;AACA,UAAO,QAA6B,cAA7B,GAA8C,KAA9C;AACP,SAAM,QAA4B,aAA5B,GAA4C,KAA5C;EANR;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCA,QAAO,OAAP,GAAiB,WAAjB,C;;;;;;ACvrCA,gD;;;;;;ACAA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;AAE3B;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;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,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;;AAEA;;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,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,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;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;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,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;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;;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;AACA,iBAAgB;AAChB;AACA;AACA;AACA,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,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,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,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,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;;AAEA,EAAC;AACD,4C;;;;;;AC36CA,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;;AAEA;AACA;AACA;AACA;AACA;;AAEA;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;;;;;;;ACvHD;;AAEA;;AAEA,iCAAgC;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;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;AACA;;;;;;;AC9DA;;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,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;;;;;;;ACnPA;;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;;AAEA;AACA;AACA;;AAEA;AACA,2CAA0C;AAC1C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;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;;AAEA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;;;;;;;ACjIA;;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;;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[\"HttpAdapter\"] = factory(require(\"js-data\"));\n\telse\n\t\troot[\"HttpAdapter\"] = 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 0066a2101c142550c7ec\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nimport Adapter from 'js-data-adapter'\n\nconst {\n _,\n addHiddenPropsToTarget,\n copy,\n deepMixIn,\n extend,\n fillIn,\n forOwn,\n get,\n isArray,\n isFunction,\n isNumber,\n isObject,\n isSorN,\n isString,\n isUndefined,\n resolve,\n reject,\n toJson\n} = utils\n\nlet hasFetch = false\n\ntry {\n hasFetch = window && window.fetch\n} catch (e) {}\n\nconst noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n return resolve()\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n return resolve()\n}\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 forOwn(params, function (val, key) {\n if (val === null || typeof val === 'undefined') {\n return\n }\n if (!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 (isObject(v)) {\n v = 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 * @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 fillIn(opts, DEFAULTS)\n Adapter.call(self, opts)\n}\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\naddHiddenPropsToTarget(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 _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.data, 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 _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 * 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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.deserialize)) {\n return opts.deserialize(mapper, response, opts)\n }\n if (isFunction(mapper.deserialize)) {\n return mapper.deserialize(mapper, response, opts)\n }\n if (response) {\n if (response.hasOwnProperty('data')) {\n return response.data\n }\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\n 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 = 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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.suffix = self.getSuffix(mapper, opts)\n 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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 || (opts.params = {})\n const relationList = mapper.relationList || []\n let endpoint = isUndefined(opts.endpoint) ? (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 (isObject(id)) {\n item = id\n }\n\n if (item) {\n parentId = parentId || def.getForeignKey(item) || (def.getLocalField(item) ? get(def.getLocalField(item), parentDef.idAttribute) : null)\n }\n\n if (parentId) {\n delete opts.endpoint\n const _opts = {}\n forOwn(opts, function (value, key) {\n _opts[key] = value\n })\n _(_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 isUndefined(opts.basePath) ? (isUndefined(mapper.basePath) ? self.basePath : mapper.basePath) : opts.basePath,\n self.getEndpoint(mapper, (isString(id) || 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 getSuffix (mapper, opts) {\n opts || (opts = {})\n if (isUndefined(opts.suffix)) {\n if (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 = copy(config, null, null, null, ['data', 'cache', 'timeout'])\n config = 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 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 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 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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.queryTransform)) {\n return opts.queryTransform(mapper, params, opts)\n }\n if (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 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 (isFunction(opts.serialize)) {\n return opts.serialize(mapper, data, opts)\n }\n if (isFunction(mapper.serialize)) {\n return mapper.serialize(mapper, data, opts)\n }\n return data\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\n 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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 HttpAdapter.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 */\nHttpAdapter.addAction = function (name, opts) {\n if (!name || !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 reject(err) }\n mapper[name] = function (id, _opts) {\n const self = this\n if (isObject(id)) {\n _opts = id\n }\n _opts = _opts || {}\n let adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http')\n let config = {}\n 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, isSorN(id) ? id : null, _opts)\n ]\n if (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 deepMixIn(config)(_opts)\n return 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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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 = extend\n\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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(require('js-data')) :\n typeof define === 'function' && define.amd ? define('js-data-adapter', ['js-data'], factory) :\n (factory(global.JSData));\n}(this, function (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 addHiddenPropsToTarget = jsData.utils.addHiddenPropsToTarget;\n var deepFillIn = jsData.utils.deepFillIn;\n var extend = jsData.utils.extend;\n var fillIn = jsData.utils.fillIn;\n var forEachRelation = jsData.utils.forEachRelation;\n var get = jsData.utils.get;\n var isArray = jsData.utils.isArray;\n var isObject = jsData.utils.isObject;\n var isUndefined = jsData.utils.isUndefined;\n var omit = jsData.utils.omit;\n var plainCopy = jsData.utils.plainCopy;\n var resolve = jsData.utils.resolve;\n\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 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 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 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 fillIn(opts, DEFAULTS);\n fillIn(self, opts);\n }\n\n Adapter.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 * @typedef {Object} Response\n * @property {Object} data Response data.\n * @property {string} op The operation for which the response was created.\n */\n function Response(data, meta, op) {\n var self = this;\n meta || (meta = {});\n self.data = data;\n fillIn(self, meta);\n self.op = op;\n }\n\n Adapter.Response = Response;\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 = extend;\n\n addHiddenPropsToTarget(Adapter.prototype, {\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 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 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 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 * 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 resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n props = withoutRelations(mapper, props);\n op = opts.op = 'create';\n self.dbg(op, mapper, props, opts);\n return resolve(self._create(mapper, props, 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, '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 resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = 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 resolve(self._createMany(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 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 resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy';\n self.dbg(op, mapper, id, opts);\n return resolve(self._destroy(mapper, id, 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 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 resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll';\n self.dbg(op, mapper, query, opts);\n return resolve(self._destroyAll(mapper, query, 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, 'destroyAll');\n response = self.respond(response, opts);\n\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll';\n return resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return isUndefined(_response) ? response : _response;\n });\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 = get(record, def.localKeys) || [];\n itemKeys = 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 get(record, mapper.idAttribute);\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 (isObject(records) && !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 (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 (isObject(records) && !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 _ret = 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 = get(item, def.localKeys) || [];\n itemKeys = 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 _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === \"object\") return _ret.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 (isObject(records) && !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 = get(record, idAttribute);\n relatedItems.forEach(function (relatedItem) {\n var foreignKeys = 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 (isObject(records) && !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 (isArray(relatedData) && relatedData.length) {\n def.setLocalField(record, relatedData[0]);\n }\n });\n });\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 * 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 (isObject(records) && !isArray(records)) {\n var _ret2 = 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 _ret2 === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret2)) === \"object\") return _ret2.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 resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find';\n self.dbg(op, mapper, id, opts);\n return resolve(self._find(mapper, id, opts));\n }).then(function (results) {\n var _results5 = babelHelpers.slicedToArray(results, 1);\n\n var _record = _results5[0];\n\n if (!_record) {\n return;\n }\n record = _record;\n var tasks = [];\n\n 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 resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 (isObject(activeWith)) {\n var activeQuery = activeWith.query || {};\n if (activeWith.replace) {\n query = activeQuery;\n } else {\n deepFillIn(query, activeQuery);\n }\n }\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll';\n return resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll';\n self.dbg(op, mapper, query, opts);\n return resolve(self._findAll(mapper, query, opts));\n }).then(function (results) {\n var _results6 = babelHelpers.slicedToArray(results, 1);\n\n var _records = _results6[0];\n\n _records || (_records = []);\n records = _records;\n var tasks = [];\n 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 resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 isUndefined(opts[opt]) ? plainCopy(this[opt]) : plainCopy(opts[opt]);\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 * @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 resolve(self[op](mapper, id, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n op = opts.op = 'update';\n self.dbg(op, mapper, id, props, opts);\n return resolve(self._update(mapper, id, props, opts));\n }).then(function (results) {\n var _results7 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results7[0];\n var result = _results7[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 resolve(self[op](mapper, id, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, props, query, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n op = opts.op = 'updateAll';\n self.dbg(op, mapper, props, query, opts);\n return resolve(self._updateAll(mapper, props, 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 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 resolve(self[op](mapper, props, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 get(record, idAttribute);\n });\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany';\n return resolve(self[op](mapper, records, opts)).then(function (_records) {\n // Allow for re-assignment from lifecycle hook\n records = 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 resolve(self._updateMany(mapper, records, 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 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 resolve(self[op](mapper, records, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return isUndefined(_response) ? response : _response;\n });\n });\n }\n });\n\n module.exports = Adapter;\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\naxios.create = function create(defaultConfig) {\n return new Axios(defaultConfig);\n};\n\n// Expose defaults\naxios.defaults = defaultInstance.defaults;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose interceptors\naxios.interceptors = defaultInstance.interceptors;\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 transformResponseJSON(data, headers) {\n if (utils.isFormData(data)) {\n return data;\n }\n if (utils.isArrayBuffer(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 transformResponseJSON(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\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 * 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 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 = window.btoa || require('./../helpers/btoa');\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\n // For IE 8/9 CORS support\n // Only supports POST and GET calls and doesn't returns the response headers.\n if (window.XDomainRequest && !('withCredentials' in request) && !isURLSameOrigin(config.url)) {\n request = new window.XDomainRequest();\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 // Listen for ready state\n request.onload = function handleLoad() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = ['text', ''].indexOf(config.responseType || '') !== -1 ? 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 };\n\n // Resolve or reject the Promise based on the status\n ((response.status >= 200 && response.status < 300) ||\n (!('status' in request) && response.responseText) ?\n resolve :\n 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 // 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 if (utils.isArrayBuffer(requestData)) {\n requestData = new DataView(requestData);\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 InvalidCharacterError(message) {\n this.message = message;\n}\nInvalidCharacterError.prototype = new Error;\nInvalidCharacterError.prototype.code = 5;\nInvalidCharacterError.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 InvalidCharacterError('INVALID_CHARACTER_ERR: DOM Exception 5');\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\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 = 15\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 = 16\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 = 17\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 = 18\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 = 19\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 = 20\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 19b888c7340fff9b83da","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/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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A;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;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,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;;AAEA;;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,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,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;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;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,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;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;;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;AACA,iBAAgB;AAChB;AACA;AACA;AACA,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,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,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,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,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;;AAEA,EAAC;AACD,4C;;;;;;AC36CA,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;;AAEA;AACA;AACA;AACA;AACA;;AAEA;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;;;;;;;ACvHD;;AAEA;;AAEA,iCAAgC;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;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;AACA;;;;;;;AC9DA;;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,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;;;;;;;ACnPA;;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;;AAEA;AACA;AACA;;AAEA;AACA,2CAA0C;AAC1C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;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;;AAEA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;;;;;;;ACjIA;;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;;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[\"HttpAdapter\"] = factory(require(\"js-data\"));\n\telse\n\t\troot[\"HttpAdapter\"] = 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 19b888c7340fff9b83da\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nimport Adapter from 'js-data-adapter'\n\nlet hasFetch = false\n\ntry {\n hasFetch = window && window.fetch\n} catch (e) {}\n\nconst noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n return utils.resolve()\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n return utils.resolve()\n}\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 * @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// 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\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.data, 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) {\n if (response.hasOwnProperty('data')) {\n return response.data\n }\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 HttpAdapter.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 */\nHttpAdapter.addAction = function (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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n utils.forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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(require('js-data')) :\n typeof define === 'function' && define.amd ? define('js-data-adapter', ['js-data'], factory) :\n (factory(global.JSData));\n}(this, function (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 addHiddenPropsToTarget = jsData.utils.addHiddenPropsToTarget;\n var deepFillIn = jsData.utils.deepFillIn;\n var extend = jsData.utils.extend;\n var fillIn = jsData.utils.fillIn;\n var forEachRelation = jsData.utils.forEachRelation;\n var get = jsData.utils.get;\n var isArray = jsData.utils.isArray;\n var isObject = jsData.utils.isObject;\n var isUndefined = jsData.utils.isUndefined;\n var omit = jsData.utils.omit;\n var plainCopy = jsData.utils.plainCopy;\n var resolve = jsData.utils.resolve;\n\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 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 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 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 fillIn(opts, DEFAULTS);\n fillIn(self, opts);\n }\n\n Adapter.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 * @typedef {Object} Response\n * @property {Object} data Response data.\n * @property {string} op The operation for which the response was created.\n */\n function Response(data, meta, op) {\n var self = this;\n meta || (meta = {});\n self.data = data;\n fillIn(self, meta);\n self.op = op;\n }\n\n Adapter.Response = Response;\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 = extend;\n\n addHiddenPropsToTarget(Adapter.prototype, {\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 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 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 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 * 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 resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n props = withoutRelations(mapper, props);\n op = opts.op = 'create';\n self.dbg(op, mapper, props, opts);\n return resolve(self._create(mapper, props, 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, '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 resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = 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 resolve(self._createMany(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 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 resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy';\n self.dbg(op, mapper, id, opts);\n return resolve(self._destroy(mapper, id, 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 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 resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll';\n self.dbg(op, mapper, query, opts);\n return resolve(self._destroyAll(mapper, query, 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, 'destroyAll');\n response = self.respond(response, opts);\n\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll';\n return resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return isUndefined(_response) ? response : _response;\n });\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 = get(record, def.localKeys) || [];\n itemKeys = 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 get(record, mapper.idAttribute);\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 (isObject(records) && !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 (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 (isObject(records) && !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 _ret = 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 = get(item, def.localKeys) || [];\n itemKeys = 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 _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === \"object\") return _ret.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 (isObject(records) && !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 = get(record, idAttribute);\n relatedItems.forEach(function (relatedItem) {\n var foreignKeys = 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 (isObject(records) && !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 (isArray(relatedData) && relatedData.length) {\n def.setLocalField(record, relatedData[0]);\n }\n });\n });\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 * 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 (isObject(records) && !isArray(records)) {\n var _ret2 = 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 _ret2 === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret2)) === \"object\") return _ret2.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 resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find';\n self.dbg(op, mapper, id, opts);\n return resolve(self._find(mapper, id, opts));\n }).then(function (results) {\n var _results5 = babelHelpers.slicedToArray(results, 1);\n\n var _record = _results5[0];\n\n if (!_record) {\n return;\n }\n record = _record;\n var tasks = [];\n\n 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 resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 (isObject(activeWith)) {\n var activeQuery = activeWith.query || {};\n if (activeWith.replace) {\n query = activeQuery;\n } else {\n deepFillIn(query, activeQuery);\n }\n }\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll';\n return resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll';\n self.dbg(op, mapper, query, opts);\n return resolve(self._findAll(mapper, query, opts));\n }).then(function (results) {\n var _results6 = babelHelpers.slicedToArray(results, 1);\n\n var _records = _results6[0];\n\n _records || (_records = []);\n records = _records;\n var tasks = [];\n 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 resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 isUndefined(opts[opt]) ? plainCopy(this[opt]) : plainCopy(opts[opt]);\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 * @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 resolve(self[op](mapper, id, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n op = opts.op = 'update';\n self.dbg(op, mapper, id, props, opts);\n return resolve(self._update(mapper, id, props, opts));\n }).then(function (results) {\n var _results7 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results7[0];\n var result = _results7[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 resolve(self[op](mapper, id, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, props, query, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n op = opts.op = 'updateAll';\n self.dbg(op, mapper, props, query, opts);\n return resolve(self._updateAll(mapper, props, 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 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 resolve(self[op](mapper, props, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 get(record, idAttribute);\n });\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany';\n return resolve(self[op](mapper, records, opts)).then(function (_records) {\n // Allow for re-assignment from lifecycle hook\n records = 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 resolve(self._updateMany(mapper, records, 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 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 resolve(self[op](mapper, records, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return isUndefined(_response) ? response : _response;\n });\n });\n }\n });\n\n module.exports = Adapter;\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\naxios.create = function create(defaultConfig) {\n return new Axios(defaultConfig);\n};\n\n// Expose defaults\naxios.defaults = defaultInstance.defaults;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose interceptors\naxios.interceptors = defaultInstance.interceptors;\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 transformResponseJSON(data, headers) {\n if (utils.isFormData(data)) {\n return data;\n }\n if (utils.isArrayBuffer(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 transformResponseJSON(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\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 * 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 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 = window.btoa || require('./../helpers/btoa');\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\n // For IE 8/9 CORS support\n // Only supports POST and GET calls and doesn't returns the response headers.\n if (window.XDomainRequest && !('withCredentials' in request) && !isURLSameOrigin(config.url)) {\n request = new window.XDomainRequest();\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 // Listen for ready state\n request.onload = function handleLoad() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = ['text', ''].indexOf(config.responseType || '') !== -1 ? 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 };\n\n // Resolve or reject the Promise based on the status\n ((response.status >= 200 && response.status < 300) ||\n (!('status' in request) && response.responseText) ?\n resolve :\n 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 // 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 if (utils.isArrayBuffer(requestData)) {\n requestData = new DataView(requestData);\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 InvalidCharacterError(message) {\n this.message = message;\n}\nInvalidCharacterError.prototype = new Error;\nInvalidCharacterError.prototype.code = 5;\nInvalidCharacterError.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 InvalidCharacterError('INVALID_CHARACTER_ERR: DOM Exception 5');\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\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 = 15\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 = 16\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 = 17\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 = 18\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 = 19\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 = 20\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 cae9336..c96e830 100644 --- a/dist/js-data-http.min.js +++ b/dist/js-data-http.min.js @@ -1,11 +1,12 @@ /*! * js-data-http -* @version 3.0.0-alpha.8 - Homepage +* @version 3.0.0-alpha.9 - Homepage * @author Jason Dobry * @copyright (c) 2014-2015 Jason Dobry * @license MIT * * @overview HTTP adapter for js-data. */ -!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.HttpAdapter=t(require("js-data")):e.HttpAdapter=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 e&&e.__esModule?e:{default:e}}function o(e){return null!=e&&""!==e}function a(e,t){return t||(t=""),e.filter(o).join(t)}function i(){for(var e=arguments.length,t=Array(e),n=0;e>n;n++)t[n]=arguments[n];var r=a(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 s(e,t){if(!t)return e;var n=[];return w(t,function(e,t){null!==e&&"undefined"!=typeof e&&(x(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():S(e)&&(e=C(e)),n.push(u(t)+"="+u(e))}))}),n.length>0&&(e+=(-1===e.indexOf("?")?"?":"&")+n.join("&")),e}function f(e){var t=this;e||(e={}),A(e,_),d.default.call(t,e)}var c="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),p=n(2),d=r(p),h=n(3),y=l.utils._,m=l.utils.addHiddenPropsToTarget,g=l.utils.copy,v=l.utils.deepMixIn,b=l.utils.extend,A=l.utils.fillIn,w=l.utils.forOwn,T=l.utils.get,x=l.utils.isArray,E=l.utils.isFunction,P=l.utils.isNumber,S=l.utils.isObject,M=l.utils.isSorN,F=l.utils.isString,j=l.utils.isUndefined,O=l.utils.resolve,H=l.utils.reject,C=l.utils.toJson,L=!1;try{L=window&&window.fetch}catch(e){}var D=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var o=n[n.length-1];return e.dbg.apply(e,[o.op].concat(n)),O()},K=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var o=n[n.length-2];return e.dbg.apply(e,[o.op].concat(n)),O()},U=d.default.prototype,_={basePath:"",forceTrailingSlash:!1,http:h,httpConfig:{},suffix:"",useFetch:!1};f.prototype=Object.create(d.default.prototype,{constructor:{value:f,enumerable:!1,writable:!0,configurable:!0}}),Object.defineProperty(f,"__super__",{configurable:!0,value:d.default}),m(f.prototype,{afterDEL:K,afterGET:K,afterHTTP:K,afterPOST:K,afterPUT:K,beforeDEL:D,beforeGET:D,beforeHTTP:D,beforePOST:D,beforePUT:D,_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.data,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)})},_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)})},create:function(e,t,n){var r=this;return n=n?g(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),U.create.call(r,e,t,n)},createMany:function(e,t,n){var r=this;return n=n?g(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),U.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",O(r[o](e,t,n)).then(function(a){return t=j(a)?t:a,o=n.op="DEL",r.dbg(o,e,t,n),r.HTTP(t,n)}).then(function(a){return o=n.op="afterDEL",O(r[o](e,t,n,a)).then(function(e){return j(e)?a:e})})},deserialize:function(e,t,n){return n||(n={}),E(n.deserialize)?n.deserialize(e,t,n):E(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?g(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),U.destroy.call(r,e,t,n)},destroyAll:function(e,t,n){var r=this;return t||(t={}),n=n?g(n):{},n.params||(n.params={}),v(n.params,t),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),U.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=C(e.data)),fetch(new Request(s(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?g(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),U.find.call(r,e,t,n)},findAll:function(e,t,n){var r=this;return t||(t={}),n=n?g(n):{},n.params||(n.params={}),n.suffix=r.getSuffix(e,n),v(n.params,t),n.params=r.queryTransform(e,n.params,n),U.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",O(r[o](e,t,n)).then(function(a){return t=j(a)?t:a,o=n.op="GET",r.dbg(o,e,t,n),r.HTTP(t,n)}).then(function(a){return o=n.op="afterGET",O(r[o](e,t,n,a)).then(function(e){return j(e)?a:e})})},getEndpoint:function(e,t,n){var r=this;n||(n={}),n.params||(n.params={});var o=e.relationList||[],a=j(n.endpoint)?j(e.endpoint)?e.name:e.endpoint:n.endpoint;return o.forEach(function(e){if("belongsTo"===e.type&&e.parent){var o=void 0,u=e.foreignKey,s=e.getRelation(),f=n.params[u];if(f===!1||!u||!s)return f===!1&&delete n.params[u],!1;if(delete n.params[u],S(t)&&(o=t),o&&(f=f||e.getForeignKey(o)||(e.getLocalField(o)?T(e.getLocalField(o),s.idAttribute):null)),f){var l=function(){delete n.endpoint;var e={};return w(n,function(t,n){e[n]=t}),y(e,s),a=i(r.getEndpoint(s,f,e),f,a),{v:!1}}();if("object"===("undefined"==typeof l?"undefined":c(l)))return l.v}}}),a},getPath:function(e,t,n,r){var o=this;r||(r={});var a=[j(r.basePath)?j(t.basePath)?o.basePath:t.basePath:r.basePath,o.getEndpoint(t,F(n)||P(n)||"create"===e?n:null,r)];return"find"!==e&&"update"!==e&&"destroy"!==e||a.push(n),i.apply(l.utils,a)},getSuffix:function(e,t){return t||(t={}),j(t.suffix)?j(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),H(t))}var r=this,o=new Date;t||(t={});var a=e.data,i=e.cache,u=e.timeout;e=g(e,null,null,null,["data","cache","timeout"]),e=v(e,r.httpConfig),e.data=a,e.cache=i,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 O(r.beforeHTTP(e,t)).then(function(o){return e=o||e,L&&(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 O(r.afterHTTP(e,t,n)).then(function(e){return e||n})})},POST:function(e,t,n,r){var o=this,a=void 0;return n||(n={}),r||(r={}),n.url=e||n.url,n.data=t||n.data,n.method=n.method||"post",a=r.op="beforePOST",O(o[a](e,t,n,r)).then(function(i){return n=j(i)?n:i,a=r.op="POST",o.dbg(a,e,t,n,r),o.HTTP(n,r)}).then(function(i){return a=r.op="afterPOST",O(o[a](e,t,n,r,i)).then(function(e){return j(e)?i:e})})},PUT:function(e,t,n,r){var o=this,a=void 0;return n||(n={}),r||(r={}),n.url=e||n.url,n.data=t||n.data,n.method=n.method||"put",a=r.op="beforePUT",O(o[a](e,t,n,r)).then(function(i){return n=j(i)?n:i,a=r.op="PUT",o.dbg(a,e,t,n,r),o.HTTP(n,r)}).then(function(i){return a=r.op="afterPUT",O(o[a](e,t,n,r,i)).then(function(e){return j(e)?i:e})})},queryTransform:function(e,t,n){return n||(n={}),E(n.queryTransform)?n.queryTransform(e,t,n):E(e.queryTransform)?e.queryTransform(e,t,n):t},responseError:function(e,t,n){return H(e)},serialize:function(e,t,n){return n||(n={}),E(n.serialize)?n.serialize(e,t,n):E(e.serialize)?e.serialize(e,t,n):t},update:function(e,t,n,r){var o=this;return r=r?g(r):{},r.params||(r.params={}),r.params=o.queryTransform(e,r.params,r),r.suffix=o.getSuffix(e,r),U.update.call(o,e,t,n,r)},updateAll:function(e,t,n,r){var o=this;return n||(n={}),r=r?g(r):{},r.params||(r.params={}),v(r.params,n),r.params=o.queryTransform(e,r.params,r),r.suffix=o.getSuffix(e,r),U.updateAll.call(o,e,t,n,r)},updateMany:function(e,t,n){var r=this;return n=n?g(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),U.updateMany.call(r,e,t,n)}}),f.addAction=function(e,t){if(!e||!F(e))throw new TypeError("action(name[, opts]): Expected: string, Found: "+("undefined"==typeof e?"undefined":c(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 H(e)},n[e]=function(n,r){var o=this;S(n)&&(r=n),r=r||{};var a=o.getAdapter(t.adapter||o.defaultAdapter||"http"),u={};if(A(u,t),!r.hasOwnProperty("endpoint")&&u.endpoint&&(r.endpoint=u.endpoint),"function"==typeof r.getEndpoint)u.url=r.getEndpoint(o,r);else{var s=[r.basePath||o.basePath||a.basePath,a.getEndpoint(o,M(n)?n:null,r)];M(n)&&s.push(n),s.push(t.pathname||e),u.url=i.apply(null,s)}return u.method=u.method||"GET",u.mapper=o.name,v(u)(r),O(u).then(r.request||t.request).then(function(e){return a.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}},f.addActions=function(e){return e||(e={}),function(e){return w(e,function(t,n){f.addAction(n,t)(e)}),e}},f.extend=b,f.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=f},function(t,n){t.exports=e},function(e,t,n){!function(e,t){t(n(1))}(this,function(t){"use strict";function n(e){var t=this;e||(e={}),s(e,w),s(t,e)}function r(e,t,n){var r=this;t||(t={}),r.data=e,s(r,t),r.op=n}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,a=void 0;try{for(var i,u=e[Symbol.iterator]();!(r=(i=u.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&u.return&&u.return()}finally{if(o)throw a}}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 a=t.utils.addHiddenPropsToTarget,i=t.utils.deepFillIn,u=t.utils.extend,s=t.utils.fillIn,f=t.utils.forEachRelation,c=t.utils.get,l=t.utils.isArray,p=t.utils.isObject,d=t.utils.isUndefined,h=t.utils.omit,y=t.utils.plainCopy,m=t.utils.resolve,g=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var o=n[n.length-1];return e.dbg.apply(e,[o.op].concat(n)),m()},v=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var o=n[n.length-2];return e.dbg.apply(e,[o.op].concat(n)),m()},b=function(e){var t={},n=[];return e.forEach(function(e){e in t||(n.push(e),t[e]=0)}),n},A=function(e,t){return h(t,e.relationFields||[])},w={debug:!1,raw:!1};n.reserved=["orderBy","sort","limit","offset","skip","where"],n.Response=r,n.extend=u,a(n.prototype,{afterCreate:v,afterCreateMany:v,afterDestroy:v,afterDestroyAll:v,afterFind:v,afterFindAll:v,afterUpdate:v,afterUpdateAll:v,afterUpdateMany:v,beforeCreate:g,beforeCreateMany:g,beforeDestroy:g,beforeDestroyAll:g,beforeFind:g,beforeFindAll:g,beforeUpdate:g,beforeUpdateAll:g,beforeUpdateMany:g,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))},create:function(e,t,n){var a=this,i=void 0;return t||(t={}),n||(n={}),i=n.op="beforeCreate",m(a[i](e,t,n)).then(function(r){return t=d(r)?t:r,t=A(e,t),i=n.op="create",a.dbg(i,e,t,n),m(a._create(e,t,n))}).then(function(u){var s=o.slicedToArray(u,2),f=s[0],c=s[1];c||(c={});var l=new r(f,c,"create");return l.created=f?1:0,l=a.respond(l,n),i=n.op="afterCreate",m(a[i](e,t,n,l)).then(function(e){return d(e)?l:e})})},createMany:function(e,t,n){var a=this,i=void 0;return t||(t={}),n||(n={}),i=n.op="beforeCreateMany",m(a[i](e,t,n)).then(function(r){return t=d(r)?t:r,t=t.map(function(t){return A(e,t)}),i=n.op="createMany",a.dbg(i,e,t,n),m(a._createMany(e,t,n))}).then(function(u){var s=o.slicedToArray(u,2),f=s[0],c=s[1];f||(f=[]),c||(c={});var l=new r(f,c,"createMany");return l.created=f.length,l=a.respond(l,n),i=n.op="afterCreateMany",m(a[i](e,t,n,l)).then(function(e){return d(e)?l:e})})},destroy:function(e,t,n){var a=this,i=void 0;return n||(n={}),i=n.op="beforeDestroy",m(a[i](e,t,n)).then(function(){return i=n.op="destroy",a.dbg(i,e,t,n),m(a._destroy(e,t,n))}).then(function(u){var s=o.slicedToArray(u,2),f=s[0],c=s[1];c||(c={});var l=new r(f,c,"destroy");return l=a.respond(l,n),i=n.op="afterDestroy",m(a[i](e,t,n,l)).then(function(e){return d(e)?l:e})})},destroyAll:function(e,t,n){var a=this,i=void 0;return t||(t={}),n||(n={}),i=n.op="beforeDestroyAll",m(a[i](e,t,n)).then(function(){return i=n.op="destroyAll",a.dbg(i,e,t,n),m(a._destroyAll(e,t,n))}).then(function(u){var s=o.slicedToArray(u,2),f=s[0],c=s[1];c||(c={});var l=new r(f,c,"destroyAll");return l=a.respond(l,n),i=n.op="afterDestroyAll",m(a[i](e,t,n,l)).then(function(e){return d(e)?l:e})})},makeHasManyForeignKey:function(e,t,n){return t.getForeignKey(n)},makeHasManyLocalKeys:function(e,t,n){var r=[],o=c(n,t.localKeys)||[];return o=l(o)?o:Object.keys(o),r=r.concat(o),b(r).filter(function(e){return e})},makeHasManyForeignKeys:function(e,t,n){return c(n,e.idAttribute)},loadHasMany:function(e,t,n,r){var o=this,a=!1;p(n)&&!l(n)&&(a=!0,n=[n]);var i=n.map(function(n){return o.makeHasManyForeignKey(e,t,n)}),u={where:{}},s=u.where[t.foreignKey]={};return a?s["=="]=i[0]:s.in=i.filter(function(e){return e}),o.findAll(t.getRelation(),u,r).then(function(r){n.forEach(function(n){var o=[];a?o=r:r.forEach(function(r){c(r,t.foreignKey)===n[e.idAttribute]&&o.push(r)}),t.setLocalField(n,o)})})},loadHasManyLocalKeys:function(e,t,n,r){var a=this,i=void 0,u=t.getRelation();if(p(n)&&!l(n)&&(i=n),i)return a.findAll(u,{where:o.defineProperty({},u.idAttribute,{in:a.makeHasManyLocalKeys(e,t,i)})},r).then(function(e){t.setLocalField(i,e)});var s=function(){var i=[];return n.forEach(function(n){i=i.concat(a.self.makeHasManyLocalKeys(e,t,n))}),{v:a.findAll(u,{where:o.defineProperty({},u.idAttribute,{in:b(i).filter(function(e){return e})})},r).then(function(e){return n.forEach(function(n){var r=[],o=c(n,t.localKeys)||[];o=l(o)?o:Object.keys(o),e.forEach(function(e){o&&-1!==o.indexOf(e[u.idAttribute])&&r.push(e)}),t.setLocalField(n,r)}),e})}}();return"object"===("undefined"==typeof s?"undefined":o.typeof(s))?s.v:void 0},loadHasManyForeignKeys:function(e,t,n,r){var a=this,i=t.getRelation(),u=e.idAttribute,s=void 0;return p(n)&&!l(n)&&(s=n),s?a.findAll(t.getRelation(),{where:o.defineProperty({},t.foreignKeys,{contains:a.makeHasManyForeignKeys(e,t,s)})},r).then(function(e){t.setLocalField(s,e)}):a.findAll(i,{where:o.defineProperty({},t.foreignKeys,{isectNotEmpty:n.map(function(n){return a.makeHasManyForeignKeys(e,t,n)})})},r).then(function(e){var r=t.foreignKeys;n.forEach(function(n){var o=[],a=c(n,u);e.forEach(function(t){var n=c(e,r)||[];-1!==n.indexOf(a)&&o.push(t)}),t.setLocalField(n,o)})})},loadHasOne:function(e,t,n,r){return p(n)&&!l(n)&&(n=[n]),this.loadHasMany(e,t,n,r).then(function(){n.forEach(function(e){var n=t.getLocalField(e);l(n)&&n.length&&t.setLocalField(e,n[0])})})},makeBelongsToForeignKey:function(e,t,n){return t.getForeignKey(n)},loadBelongsTo:function(e,t,n,r){var a=this,i=t.getRelation();if(!p(n)||l(n)){var u=n.map(function(n){return a.makeBelongsToForeignKey(e,t,n)}).filter(function(e){return e});return a.findAll(i,{where:o.defineProperty({},i.idAttribute,{in:u})},r).then(function(e){n.forEach(function(n){e.forEach(function(e){e[i.idAttribute]===n[t.foreignKey]&&t.setLocalField(n,e)})})})}var s=function(){var o=n;return{v:a.find(i,a.makeBelongsToForeignKey(e,t,o),r).then(function(e){t.setLocalField(o,e)})}}();return"object"===("undefined"==typeof s?"undefined":o.typeof(s))?s.v:void 0},find:function(e,t,n){var a=this,i=void 0,u=void 0;return n||(n={}),n.with||(n.with=[]),u=n.op="beforeFind",m(a[u](e,t,n)).then(function(){return u=n.op="find",a.dbg(u,e,t,n),m(a._find(e,t,n))}).then(function(t){var r=o.slicedToArray(t,1),u=r[0];if(u){i=u;var s=[];return f(e,n,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,i,n):"hasMany"===t.type&&t.foreignKeys?r=a.loadHasManyForeignKeys(e,t,i,n):"belongsTo"===t.type&&(r=a.loadBelongsTo(e,t,i,n)):r="hasOne"===t.type?a.loadHasOne(e,t,i,n):a.loadHasMany(e,t,i,n),r&&s.push(r)}),Promise.all(s)}}).then(function(){var o=new r(i,{},"find");return o.found=i?1:0,o=a.respond(o,n),u=n.op="afterFind",m(a[u](e,t,n,o)).then(function(e){return d(e)?o:e})})},findAll:function(e,t,n){var a=this;n||(n={}),n.with||(n.with=[]);var u=[],s=void 0,c=n._activeWith;if(p(c)){var l=c.query||{};c.replace?t=l:i(t,l)}return s=n.op="beforeFindAll",m(a[s](e,t,n)).then(function(){return s=n.op="findAll",a.dbg(s,e,t,n),m(a._findAll(e,t,n))}).then(function(t){var r=o.slicedToArray(t,1),i=r[0];i||(i=[]),u=i;var s=[];return f(e,n,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&&s.push(r)}),Promise.all(s)}).then(function(){var o=new r(u,{},"findAll");return o.found=u.length,o=a.respond(o,n),s=n.op="afterFindAll",m(a[s](e,t,n,o)).then(function(e){return d(e)?o:e})})},getOpt:function(e,t){return t||(t={}),y(d(t[e])?this[e]:t[e])},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 a;(a=console)[e].apply(a,[o].concat(n))}else{var i;(i=console).log.apply(i,[o].concat(n))}}},respond:function(e,t){return this.getOpt("raw",t)?e:e.data},update:function(e,t,n,a){var i=this;n||(n={}),a||(a={});var u=void 0;return u=a.op="beforeUpdate",m(i[u](e,t,n,a)).then(function(r){return n=d(r)?n:r,u=a.op="update",i.dbg(u,e,t,n,a),m(i._update(e,t,n,a))}).then(function(s){var f=o.slicedToArray(s,2),c=f[0],l=f[1];l||(l={});var p=new r(c,l,"update");return p.updated=c?1:0,p=i.respond(p,a),u=a.op="afterUpdate",m(i[u](e,t,n,a,p)).then(function(e){return d(e)?p:e})})},updateAll:function(e,t,n,a){var i=this;t||(t={}),n||(n={}),a||(a={});var u=void 0;return u=a.op="beforeUpdateAll",m(i[u](e,t,n,a)).then(function(r){return t=d(r)?t:r,u=a.op="updateAll",i.dbg(u,e,t,n,a),m(i._updateAll(e,t,n,a))}).then(function(s){var f=o.slicedToArray(s,2),c=f[0],l=f[1];c||(c=[]),l||(l={});var p=new r(c,l,"updateAll");return p.updated=c.length,p=i.respond(p,a),u=a.op="afterUpdateAll",m(i[u](e,t,n,a,p)).then(function(e){return d(e)?p:e})})},updateMany:function(e,t,n){var a=this;t||(t=[]),n||(n={});var i=void 0,u=e.idAttribute;return t=t.filter(function(e){return c(e,u)}),i=n.op="beforeUpdateMany",m(a[i](e,t,n)).then(function(r){return t=d(r)?t:r,t=t.map(function(t){return A(e,t)}),i=n.op="updateMany",a.dbg(i,e,t,n),m(a._updateMany(e,t,n))}).then(function(u){var s=o.slicedToArray(u,2),f=s[0],c=s[1];f||(f=[]),c||(c={});var l=new r(f,c,"updateMany");return l.updated=f.length,l=a.respond(l,n),i=n.op="afterUpdateMany",m(a[i](e,t,n,l)).then(function(e){return d(e)?l:e})})}}),e.exports=n})},function(e,t,n){e.exports=n(4)},function(e,t,n){"use strict";function r(e){this.defaults=a.merge({},e),this.interceptors={request:new u,response:new u}}var o=n(5),a=n(6),i=n(7),u=n(16),s=n(17),f=n(18),c=n(19),l=n(12);r.prototype.request=function(e){"string"==typeof e&&(e=a.merge({url:arguments[0]},arguments[1])),e=a.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=l(e.data,e.headers,e.transformRequest),e.headers=a.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),a.forEach(["delete","get","head","post","put","patch","common"],function(t){delete e.headers[t]});var t=[i,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 p=new r(o),d=e.exports=c(r.prototype.request,p);d.create=function(e){return new r(e)},d.defaults=p.defaults,d.all=function(e){return Promise.all(e)},d.spread=n(20),d.interceptors=p.interceptors,a.forEach(["delete","get","head"],function(e){r.prototype[e]=function(t,n){return this.request(a.merge(n||{},{method:e,url:t}))},d[e]=c(r.prototype[e],p)}),a.forEach(["post","put","patch"],function(e){r.prototype[e]=function(t,n,r){return this.request(a.merge(r||{},{method:e,url:t,data:n}))},d[e]=c(r.prototype[e],p)})},function(e,t,n){"use strict";var r=n(6),o=/^\)\]\}',?\n/,a={"Content-Type":"application/x-www-form-urlencoded"};e.exports={transformRequest:[function(e,t){return r.isFormData(e)?e:r.isArrayBuffer(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(a),post:r.merge(a),put:r.merge(a)},timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"}},function(e,t){"use strict";function n(e){return"[object Array]"===g.call(e)}function r(e){return"[object ArrayBuffer]"===g.call(e)}function o(e){return"[object FormData]"===g.call(e)}function a(e){var t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer}function i(e){return"string"==typeof e}function u(e){return"number"==typeof e}function s(e){return"undefined"==typeof e}function f(e){return null!==e&&"object"==typeof e}function c(e){return"[object Date]"===g.call(e)}function l(e){return"[object File]"===g.call(e)}function p(e){return"[object Blob]"===g.call(e)}function d(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function h(){return"undefined"!=typeof window&&"undefined"!=typeof document&&"function"==typeof document.createElement}function y(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 a in e)e.hasOwnProperty(a)&&t.call(null,e[a],a,e)}function m(){function e(e,n){"object"==typeof t[n]&&"object"==typeof e?t[n]=m(t[n],e):t[n]=e}for(var t={},n=0,r=arguments.length;r>n;n++)y(arguments[n],e);return t}var g=Object.prototype.toString;e.exports={isArray:n,isArrayBuffer:r,isFormData:o,isArrayBufferView:a,isString:i,isNumber:u,isObject:f,isUndefined:s,isDate:c,isFile:l,isBlob:p,isStandardBrowserEnv:h,forEach:y,merge:m,trim:d}},function(e,t,n){(function(t){"use strict";e.exports=function(e){return new Promise(function(r,o){try{var a;"function"==typeof e.adapter?a=e.adapter:"undefined"!=typeof XMLHttpRequest?a=n(9):"undefined"!=typeof t&&(a=n(9)),"function"==typeof a&&a(r,o,e)}catch(e){o(e)}})}}).call(t,n(8))},function(e,t){function n(){f=!1,i.length?s=i.concat(s):c=-1,s.length&&r()}function r(){if(!f){var e=setTimeout(n);f=!0;for(var t=s.length;t;){for(i=s,s=[];++c1)for(var n=1;n=200&&o.status<300||!("status"in p)&&o.responseText?e:t)(o),p=null}},p.onerror=function(){t(new Error("Network Error")),p=null},r.isStandardBrowserEnv()){var y=n(15),m=f.withCredentials||u(f.url)?y.read(f.xsrfCookieName):void 0;m&&(l[f.xsrfHeaderName]=m)}if("setRequestHeader"in p&&r.forEach(l,function(e,t){"undefined"==typeof c&&"content-type"===t.toLowerCase()?delete l[t]:p.setRequestHeader(t,e)}),f.withCredentials&&(p.withCredentials=!0),f.responseType)try{p.responseType=f.responseType}catch(e){if("json"!==p.responseType)throw e}r.isArrayBuffer(c)&&(c=new DataView(c)),p.send(c)}},function(e,t,n){"use strict";function r(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,"]")}var o=n(6);e.exports=function(e,t,n){if(!t)return e;var a;if(n)a=n(t);else{var i=[];o.forEach(t,function(e,t){null!==e&&"undefined"!=typeof e&&(o.isArray(e)&&(t+="[]"),o.isArray(e)||(e=[e]),o.forEach(e,function(e){o.isDate(e)?e=e.toISOString():o.isObject(e)&&(e=JSON.stringify(e)),i.push(r(t)+"="+r(e))}))}),a=i.join("&")}return a&&(e+=(-1===e.indexOf("?")?"?":"&")+a),e}},function(e,t,n){"use strict";var r=n(6);e.exports=function(e){var t,n,o,a={};return e?(r.forEach(e.split("\n"),function(e){o=e.indexOf(":"),t=r.trim(e.substr(0,o)).toLowerCase(),n=r.trim(e.substr(o+1)),t&&(a[t]=a[t]?a[t]+", "+n:n)}),a):a}},function(e,t,n){"use strict";var r=n(6);e.exports=function(e,t,n){return r.forEach(n,function(n){e=n(e,t)}),e}},function(e,t,n){"use strict";var r=n(6);e.exports=r.isStandardBrowserEnv()?function(){function e(e){var t=e;return n&&(o.setAttribute("href",t),t=o.href),o.setAttribute("href",t),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}var t,n=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");return t=e(window.location.href),function(n){var o=r.isString(n)?e(n):n;return o.protocol===t.protocol&&o.host===t.host}}():function(){return function(){return!0}}()},function(e,t){"use strict";function n(e){this.message=e}function r(e){for(var t,r,a=String(e),i="",u=0,s=o;a.charAt(0|u)||(s="=",u%1);i+=s.charAt(63&t>>8-u%1*8)){if(r=a.charCodeAt(u+=.75),r>255)throw new n("INVALID_CHARACTER_ERR: DOM Exception 5");t=t<<8|r}return i}var o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";n.prototype=new Error,n.prototype.code=5,n.prototype.name="InvalidCharacterError",e.exports=r},function(e,t,n){"use strict";var r=n(6);e.exports=r.isStandardBrowserEnv()?function(){return{write:function(e,t,n,o,a,i){var u=[];u.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&u.push("expires="+new Date(n).toGMTString()),r.isString(o)&&u.push("path="+o),r.isString(a)&&u.push("domain="+a),i===!0&&u.push("secure"),document.cookie=u.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;rn;n++)t[n]=arguments[n];var r=i(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 s(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 f(e){var t=this;e||(e={}),l.utils.fillIn(e,b),p.default.call(t,e)}var c="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),d=n(2),p=r(d),h=n(3),y=!1;try{y=window&&window.fetch}catch(e){}var m=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var o=n[n.length-1];return e.dbg.apply(e,[o.op].concat(n)),l.utils.resolve()},g=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var o=n[n.length-2];return e.dbg.apply(e,[o.op].concat(n)),l.utils.resolve()},v=p.default.prototype,b={basePath:"",forceTrailingSlash:!1,http:h,httpConfig:{},suffix:"",useFetch:!1};f.prototype=Object.create(p.default.prototype,{constructor:{value:f,enumerable:!1,writable:!0,configurable:!0}}),Object.defineProperty(f,"__super__",{configurable:!0,value:p.default}),l.utils.addHiddenPropsToTarget(f.prototype,{afterDEL:g,afterGET:g,afterHTTP:g,afterPOST:g,afterPUT:g,beforeDEL:m,beforeGET:m,beforeHTTP:m,beforePOST:m,beforePUT:m,_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.data,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),v.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),v.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),v.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),v.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),v.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(s(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),v.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),v.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||[],i=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,u=e.foreignKey,s=e.getRelation(),f=n.params[u];if(f===!1||!u||!s)return f===!1&&delete n.params[u],!1;if(delete n.params[u],l.utils.isObject(t)&&(o=t),o&&(f=f||e.getForeignKey(o)||(e.getLocalField(o)?l.utils.get(e.getLocalField(o),s.idAttribute):null)),f){var d=function(){delete n.endpoint;var e={};return l.utils.forOwn(n,function(t,n){e[n]=t}),l.utils._(e,s),i=a(r.getEndpoint(s,f,e),f,i),{v:!1}}();if("object"===("undefined"==typeof d?"undefined":c(d)))return d.v}}}),i},getPath:function(e,t,n,r){var o=this;r||(r={});var i=[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||i.push(n),a.apply(l.utils,i)},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,a=e.cache,u=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=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 l.utils.resolve(r.beforeHTTP(e,t)).then(function(o){return e=o||e,y&&(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(a){return n=l.utils.isUndefined(a)?n:a,i=r.op="POST",o.dbg(i,e,t,n,r),o.HTTP(n,r)}).then(function(a){return i=r.op="afterPOST",l.utils.resolve(o[i](e,t,n,r,a)).then(function(e){return l.utils.isUndefined(e)?a: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(a){return n=l.utils.isUndefined(a)?n:a,i=r.op="PUT",o.dbg(i,e,t,n,r),o.HTTP(n,r)}).then(function(a){return i=r.op="afterPUT",l.utils.resolve(o[i](e,t,n,r,a)).then(function(e){return l.utils.isUndefined(e)?a: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),v.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),v.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),v.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),v.updateMany.call(r,e,t,n)}}),f.addAction=function(e,t){if(!e||!l.utils.isString(e))throw new TypeError("action(name[, opts]): Expected: string, Found: "+("undefined"==typeof e?"undefined":c(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 i=o.getAdapter(t.adapter||o.defaultAdapter||"http"),u={};if(l.utils.fillIn(u,t),!r.hasOwnProperty("endpoint")&&u.endpoint&&(r.endpoint=u.endpoint),"function"==typeof r.getEndpoint)u.url=r.getEndpoint(o,r);else{var s=[r.basePath||o.basePath||i.basePath,i.getEndpoint(o,l.utils.isSorN(n)?n:null,r)];l.utils.isSorN(n)&&s.push(n),s.push(t.pathname||e),u.url=a.apply(null,s)}return u.method=u.method||"GET",u.mapper=o.name,l.utils.deepMixIn(u)(r),l.utils.resolve(u).then(r.request||t.request).then(function(e){return i.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}},f.addActions=function(e){return e||(e={}),function(e){return l.utils.forOwn(e,function(t,n){f.addAction(n,t)(e)}),e}},f.extend=l.utils.extend,f.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=f},function(t,n){t.exports=e},function(e,t,n){!function(e,t){t(n(1))}(this,function(t){"use strict";function n(e){var t=this;e||(e={}),s(e,T),s(t,e)}function r(e,t,n){var r=this;t||(t={}),r.data=e,s(r,t),r.op=n}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 a,u=e[Symbol.iterator]();!(r=(a=u.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{!r&&u.return&&u.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=t.utils.addHiddenPropsToTarget,a=t.utils.deepFillIn,u=t.utils.extend,s=t.utils.fillIn,f=t.utils.forEachRelation,c=t.utils.get,l=t.utils.isArray,d=t.utils.isObject,p=t.utils.isUndefined,h=t.utils.omit,y=t.utils.plainCopy,m=t.utils.resolve,g=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var o=n[n.length-1];return e.dbg.apply(e,[o.op].concat(n)),m()},v=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var o=n[n.length-2];return e.dbg.apply(e,[o.op].concat(n)),m()},b=function(e){var t={},n=[];return e.forEach(function(e){e in t||(n.push(e),t[e]=0)}),n},w=function(e,t){return h(t,e.relationFields||[])},T={debug:!1,raw:!1};n.reserved=["orderBy","sort","limit","offset","skip","where"],n.Response=r,n.extend=u,i(n.prototype,{afterCreate:v,afterCreateMany:v,afterDestroy:v,afterDestroyAll:v,afterFind:v,afterFindAll:v,afterUpdate:v,afterUpdateAll:v,afterUpdateMany:v,beforeCreate:g,beforeCreateMany:g,beforeDestroy:g,beforeDestroyAll:g,beforeFind:g,beforeFindAll:g,beforeUpdate:g,beforeUpdateAll:g,beforeUpdateMany:g,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))},create:function(e,t,n){var i=this,a=void 0;return t||(t={}),n||(n={}),a=n.op="beforeCreate",m(i[a](e,t,n)).then(function(r){return t=p(r)?t:r,t=w(e,t),a=n.op="create",i.dbg(a,e,t,n),m(i._create(e,t,n))}).then(function(u){var s=o.slicedToArray(u,2),f=s[0],c=s[1];c||(c={});var l=new r(f,c,"create");return l.created=f?1:0,l=i.respond(l,n),a=n.op="afterCreate",m(i[a](e,t,n,l)).then(function(e){return p(e)?l:e})})},createMany:function(e,t,n){var i=this,a=void 0;return t||(t={}),n||(n={}),a=n.op="beforeCreateMany",m(i[a](e,t,n)).then(function(r){return t=p(r)?t:r,t=t.map(function(t){return w(e,t)}),a=n.op="createMany",i.dbg(a,e,t,n),m(i._createMany(e,t,n))}).then(function(u){var s=o.slicedToArray(u,2),f=s[0],c=s[1];f||(f=[]),c||(c={});var l=new r(f,c,"createMany");return l.created=f.length,l=i.respond(l,n),a=n.op="afterCreateMany",m(i[a](e,t,n,l)).then(function(e){return p(e)?l:e})})},destroy:function(e,t,n){var i=this,a=void 0;return n||(n={}),a=n.op="beforeDestroy",m(i[a](e,t,n)).then(function(){return a=n.op="destroy",i.dbg(a,e,t,n),m(i._destroy(e,t,n))}).then(function(u){var s=o.slicedToArray(u,2),f=s[0],c=s[1];c||(c={});var l=new r(f,c,"destroy");return l=i.respond(l,n),a=n.op="afterDestroy",m(i[a](e,t,n,l)).then(function(e){return p(e)?l:e})})},destroyAll:function(e,t,n){var i=this,a=void 0;return t||(t={}),n||(n={}),a=n.op="beforeDestroyAll",m(i[a](e,t,n)).then(function(){return a=n.op="destroyAll",i.dbg(a,e,t,n),m(i._destroyAll(e,t,n))}).then(function(u){var s=o.slicedToArray(u,2),f=s[0],c=s[1];c||(c={});var l=new r(f,c,"destroyAll");return l=i.respond(l,n),a=n.op="afterDestroyAll",m(i[a](e,t,n,l)).then(function(e){return p(e)?l:e})})},makeHasManyForeignKey:function(e,t,n){return t.getForeignKey(n)},makeHasManyLocalKeys:function(e,t,n){var r=[],o=c(n,t.localKeys)||[];return o=l(o)?o:Object.keys(o),r=r.concat(o),b(r).filter(function(e){return e})},makeHasManyForeignKeys:function(e,t,n){return c(n,e.idAttribute)},loadHasMany:function(e,t,n,r){var o=this,i=!1;d(n)&&!l(n)&&(i=!0,n=[n]);var a=n.map(function(n){return o.makeHasManyForeignKey(e,t,n)}),u={where:{}},s=u.where[t.foreignKey]={};return i?s["=="]=a[0]:s.in=a.filter(function(e){return e}),o.findAll(t.getRelation(),u,r).then(function(r){n.forEach(function(n){var o=[];i?o=r:r.forEach(function(r){c(r,t.foreignKey)===n[e.idAttribute]&&o.push(r)}),t.setLocalField(n,o)})})},loadHasManyLocalKeys:function(e,t,n,r){var i=this,a=void 0,u=t.getRelation();if(d(n)&&!l(n)&&(a=n),a)return i.findAll(u,{where:o.defineProperty({},u.idAttribute,{in:i.makeHasManyLocalKeys(e,t,a)})},r).then(function(e){t.setLocalField(a,e)});var s=function(){var a=[];return n.forEach(function(n){a=a.concat(i.self.makeHasManyLocalKeys(e,t,n))}),{v:i.findAll(u,{where:o.defineProperty({},u.idAttribute,{in:b(a).filter(function(e){return e})})},r).then(function(e){return n.forEach(function(n){var r=[],o=c(n,t.localKeys)||[];o=l(o)?o:Object.keys(o),e.forEach(function(e){o&&-1!==o.indexOf(e[u.idAttribute])&&r.push(e)}),t.setLocalField(n,r)}),e})}}();return"object"===("undefined"==typeof s?"undefined":o.typeof(s))?s.v:void 0},loadHasManyForeignKeys:function(e,t,n,r){var i=this,a=t.getRelation(),u=e.idAttribute,s=void 0;return d(n)&&!l(n)&&(s=n),s?i.findAll(t.getRelation(),{where:o.defineProperty({},t.foreignKeys,{contains:i.makeHasManyForeignKeys(e,t,s)})},r).then(function(e){t.setLocalField(s,e)}):i.findAll(a,{where:o.defineProperty({},t.foreignKeys,{isectNotEmpty:n.map(function(n){return i.makeHasManyForeignKeys(e,t,n)})})},r).then(function(e){var r=t.foreignKeys;n.forEach(function(n){var o=[],i=c(n,u);e.forEach(function(t){var n=c(e,r)||[];-1!==n.indexOf(i)&&o.push(t)}),t.setLocalField(n,o)})})},loadHasOne:function(e,t,n,r){return d(n)&&!l(n)&&(n=[n]),this.loadHasMany(e,t,n,r).then(function(){n.forEach(function(e){var n=t.getLocalField(e);l(n)&&n.length&&t.setLocalField(e,n[0])})})},makeBelongsToForeignKey:function(e,t,n){return t.getForeignKey(n)},loadBelongsTo:function(e,t,n,r){var i=this,a=t.getRelation();if(!d(n)||l(n)){var u=n.map(function(n){return i.makeBelongsToForeignKey(e,t,n)}).filter(function(e){return e});return i.findAll(a,{where:o.defineProperty({},a.idAttribute,{in:u})},r).then(function(e){n.forEach(function(n){e.forEach(function(e){e[a.idAttribute]===n[t.foreignKey]&&t.setLocalField(n,e)})})})}var s=function(){var o=n;return{v:i.find(a,i.makeBelongsToForeignKey(e,t,o),r).then(function(e){t.setLocalField(o,e)})}}();return"object"===("undefined"==typeof s?"undefined":o.typeof(s))?s.v:void 0},find:function(e,t,n){var i=this,a=void 0,u=void 0;return n||(n={}),n.with||(n.with=[]),u=n.op="beforeFind",m(i[u](e,t,n)).then(function(){return u=n.op="find",i.dbg(u,e,t,n),m(i._find(e,t,n))}).then(function(t){var r=o.slicedToArray(t,1),u=r[0];if(u){a=u;var s=[];return f(e,n,function(t,n){var r=void 0;!t.foreignKey||"hasOne"!==t.type&&"hasMany"!==t.type?"hasMany"===t.type&&t.localKeys?r=i.loadHasManyLocalKeys(e,t,a,n):"hasMany"===t.type&&t.foreignKeys?r=i.loadHasManyForeignKeys(e,t,a,n):"belongsTo"===t.type&&(r=i.loadBelongsTo(e,t,a,n)):r="hasOne"===t.type?i.loadHasOne(e,t,a,n):i.loadHasMany(e,t,a,n),r&&s.push(r)}),Promise.all(s)}}).then(function(){var o=new r(a,{},"find");return o.found=a?1:0,o=i.respond(o,n),u=n.op="afterFind",m(i[u](e,t,n,o)).then(function(e){return p(e)?o:e})})},findAll:function(e,t,n){var i=this;n||(n={}),n.with||(n.with=[]);var u=[],s=void 0,c=n._activeWith;if(d(c)){var l=c.query||{};c.replace?t=l:a(t,l)}return s=n.op="beforeFindAll",m(i[s](e,t,n)).then(function(){return s=n.op="findAll",i.dbg(s,e,t,n),m(i._findAll(e,t,n))}).then(function(t){var r=o.slicedToArray(t,1),a=r[0];a||(a=[]),u=a;var s=[];return f(e,n,function(t,n){var r=void 0;!t.foreignKey||"hasOne"!==t.type&&"hasMany"!==t.type?"hasMany"===t.type&&t.localKeys?r=i.loadHasManyLocalKeys(e,t,u,n):"hasMany"===t.type&&t.foreignKeys?r=i.loadHasManyForeignKeys(e,t,u,n):"belongsTo"===t.type&&(r=i.loadBelongsTo(e,t,u,n)):r="hasMany"===t.type?i.loadHasMany(e,t,u,n):i.loadHasOne(e,t,u,n),r&&s.push(r)}),Promise.all(s)}).then(function(){var o=new r(u,{},"findAll");return o.found=u.length,o=i.respond(o,n),s=n.op="afterFindAll",m(i[s](e,t,n,o)).then(function(e){return p(e)?o:e})})},getOpt:function(e,t){return t||(t={}),y(p(t[e])?this[e]:t[e])},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 a;(a=console).log.apply(a,[o].concat(n))}}},respond:function(e,t){return this.getOpt("raw",t)?e:e.data},update:function(e,t,n,i){var a=this;n||(n={}),i||(i={});var u=void 0;return u=i.op="beforeUpdate",m(a[u](e,t,n,i)).then(function(r){return n=p(r)?n:r,u=i.op="update",a.dbg(u,e,t,n,i),m(a._update(e,t,n,i))}).then(function(s){var f=o.slicedToArray(s,2),c=f[0],l=f[1];l||(l={});var d=new r(c,l,"update");return d.updated=c?1:0,d=a.respond(d,i),u=i.op="afterUpdate",m(a[u](e,t,n,i,d)).then(function(e){return p(e)?d:e})})},updateAll:function(e,t,n,i){var a=this;t||(t={}),n||(n={}),i||(i={});var u=void 0;return u=i.op="beforeUpdateAll",m(a[u](e,t,n,i)).then(function(r){return t=p(r)?t:r,u=i.op="updateAll",a.dbg(u,e,t,n,i),m(a._updateAll(e,t,n,i))}).then(function(s){var f=o.slicedToArray(s,2),c=f[0],l=f[1];c||(c=[]),l||(l={});var d=new r(c,l,"updateAll");return d.updated=c.length,d=a.respond(d,i),u=i.op="afterUpdateAll",m(a[u](e,t,n,i,d)).then(function(e){return p(e)?d:e})})},updateMany:function(e,t,n){var i=this;t||(t=[]),n||(n={});var a=void 0,u=e.idAttribute;return t=t.filter(function(e){return c(e,u)}),a=n.op="beforeUpdateMany",m(i[a](e,t,n)).then(function(r){return t=p(r)?t:r,t=t.map(function(t){return w(e,t)}),a=n.op="updateMany",i.dbg(a,e,t,n),m(i._updateMany(e,t,n))}).then(function(u){var s=o.slicedToArray(u,2),f=s[0],c=s[1];f||(f=[]),c||(c={});var l=new r(f,c,"updateMany");return l.updated=f.length,l=i.respond(l,n),a=n.op="afterUpdateMany",m(i[a](e,t,n,l)).then(function(e){return p(e)?l:e})})}}),e.exports=n})},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 u,response:new u}}var o=n(5),i=n(6),a=n(7),u=n(16),s=n(17),f=n(18),c=n(19),l=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=l(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=[a,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=c(r.prototype.request,d);p.create=function(e){return new r(e)},p.defaults=d.defaults,p.all=function(e){return Promise.all(e)},p.spread=n(20),p.interceptors=d.interceptors,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]=c(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]=c(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)?e:r.isArrayBuffer(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"}},function(e,t){"use strict";function n(e){return"[object Array]"===g.call(e)}function r(e){return"[object ArrayBuffer]"===g.call(e)}function o(e){return"[object FormData]"===g.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 a(e){return"string"==typeof e}function u(e){return"number"==typeof e}function s(e){return"undefined"==typeof e}function f(e){return null!==e&&"object"==typeof e}function c(e){return"[object Date]"===g.call(e)}function l(e){return"[object File]"===g.call(e)}function d(e){return"[object Blob]"===g.call(e)}function p(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function h(){return"undefined"!=typeof window&&"undefined"!=typeof document&&"function"==typeof document.createElement}function y(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 m(){function e(e,n){"object"==typeof t[n]&&"object"==typeof e?t[n]=m(t[n],e):t[n]=e}for(var t={},n=0,r=arguments.length;r>n;n++)y(arguments[n],e);return t}var g=Object.prototype.toString;e.exports={isArray:n,isArrayBuffer:r,isFormData:o,isArrayBufferView:i,isString:a,isNumber:u,isObject:f,isUndefined:s,isDate:c,isFile:l,isBlob:d,isStandardBrowserEnv:h,forEach:y,merge:m,trim:p}},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,a.length?s=a.concat(s):c=-1,s.length&&r()}function r(){if(!f){var e=setTimeout(n);f=!0;for(var t=s.length;t;){for(a=s,s=[];++c1)for(var n=1;n=200&&o.status<300||!("status"in d)&&o.responseText?e:t)(o),d=null}},d.onerror=function(){t(new Error("Network Error")),d=null},r.isStandardBrowserEnv()){var y=n(15),m=f.withCredentials||u(f.url)?y.read(f.xsrfCookieName):void 0;m&&(l[f.xsrfHeaderName]=m)}if("setRequestHeader"in d&&r.forEach(l,function(e,t){"undefined"==typeof c&&"content-type"===t.toLowerCase()?delete l[t]:d.setRequestHeader(t,e)}),f.withCredentials&&(d.withCredentials=!0),f.responseType)try{d.responseType=f.responseType}catch(e){if("json"!==d.responseType)throw e}r.isArrayBuffer(c)&&(c=new DataView(c)),d.send(c)}},function(e,t,n){"use strict";function r(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,"]")}var o=n(6);e.exports=function(e,t,n){if(!t)return e;var i;if(n)i=n(t);else{var a=[];o.forEach(t,function(e,t){null!==e&&"undefined"!=typeof e&&(o.isArray(e)&&(t+="[]"),o.isArray(e)||(e=[e]),o.forEach(e,function(e){o.isDate(e)?e=e.toISOString():o.isObject(e)&&(e=JSON.stringify(e)),a.push(r(t)+"="+r(e))}))}),i=a.join("&")}return i&&(e+=(-1===e.indexOf("?")?"?":"&")+i),e}},function(e,t,n){"use strict";var r=n(6);e.exports=function(e){var t,n,o,i={};return e?(r.forEach(e.split("\n"),function(e){o=e.indexOf(":"),t=r.trim(e.substr(0,o)).toLowerCase(),n=r.trim(e.substr(o+1)),t&&(i[t]=i[t]?i[t]+", "+n:n)}),i):i}},function(e,t,n){"use strict";var r=n(6);e.exports=function(e,t,n){return r.forEach(n,function(n){e=n(e,t)}),e}},function(e,t,n){"use strict";var r=n(6);e.exports=r.isStandardBrowserEnv()?function(){function e(e){var t=e;return n&&(o.setAttribute("href",t),t=o.href),o.setAttribute("href",t),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}var t,n=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");return t=e(window.location.href),function(n){var o=r.isString(n)?e(n):n;return o.protocol===t.protocol&&o.host===t.host}}():function(){return function(){return!0}}()},function(e,t){"use strict";function n(e){this.message=e}function r(e){for(var t,r,i=String(e),a="",u=0,s=o;i.charAt(0|u)||(s="=",u%1);a+=s.charAt(63&t>>8-u%1*8)){if(r=i.charCodeAt(u+=.75),r>255)throw new n("INVALID_CHARACTER_ERR: DOM Exception 5");t=t<<8|r}return a}var o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";n.prototype=new Error,n.prototype.code=5,n.prototype.name="InvalidCharacterError",e.exports=r},function(e,t,n){"use strict";var r=n(6);e.exports=r.isStandardBrowserEnv()?function(){return{write:function(e,t,n,o,i,a){var u=[];u.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&u.push("expires="+new Date(n).toGMTString()),r.isString(o)&&u.push("path="+o),r.isString(i)&&u.push("domain="+i),a===!0&&u.push("secure"),document.cookie=u.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 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 * @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 fillIn(opts, DEFAULTS)\n Adapter.call(self, opts)\n}\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\naddHiddenPropsToTarget(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 _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.data, 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 _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 * 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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.deserialize)) {\n return opts.deserialize(mapper, response, opts)\n }\n if (isFunction(mapper.deserialize)) {\n return mapper.deserialize(mapper, response, opts)\n }\n if (response) {\n if (response.hasOwnProperty('data')) {\n return response.data\n }\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\n 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 = 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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.suffix = self.getSuffix(mapper, opts)\n 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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 || (opts.params = {})\n const relationList = mapper.relationList || []\n let endpoint = isUndefined(opts.endpoint) ? (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 (isObject(id)) {\n item = id\n }\n\n if (item) {\n parentId = parentId || def.getForeignKey(item) || (def.getLocalField(item) ? get(def.getLocalField(item), parentDef.idAttribute) : null)\n }\n\n if (parentId) {\n delete opts.endpoint\n const _opts = {}\n forOwn(opts, function (value, key) {\n _opts[key] = value\n })\n _(_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 isUndefined(opts.basePath) ? (isUndefined(mapper.basePath) ? self.basePath : mapper.basePath) : opts.basePath,\n self.getEndpoint(mapper, (isString(id) || 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 getSuffix (mapper, opts) {\n opts || (opts = {})\n if (isUndefined(opts.suffix)) {\n if (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 = copy(config, null, null, null, ['data', 'cache', 'timeout'])\n config = 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 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 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 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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.queryTransform)) {\n return opts.queryTransform(mapper, params, opts)\n }\n if (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 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 (isFunction(opts.serialize)) {\n return opts.serialize(mapper, data, opts)\n }\n if (isFunction(mapper.serialize)) {\n return mapper.serialize(mapper, data, opts)\n }\n return data\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\n 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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 HttpAdapter.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 */\nHttpAdapter.addAction = function (name, opts) {\n if (!name || !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 reject(err) }\n mapper[name] = function (id, _opts) {\n const self = this\n if (isObject(id)) {\n _opts = id\n }\n _opts = _opts || {}\n let adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http')\n let config = {}\n 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, isSorN(id) ? id : null, _opts)\n ]\n if (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 deepMixIn(config)(_opts)\n return 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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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 = extend\n\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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(require('js-data')) :\n typeof define === 'function' && define.amd ? define('js-data-adapter', ['js-data'], factory) :\n (factory(global.JSData));\n}(this, function (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 addHiddenPropsToTarget = jsData.utils.addHiddenPropsToTarget;\n var deepFillIn = jsData.utils.deepFillIn;\n var extend = jsData.utils.extend;\n var fillIn = jsData.utils.fillIn;\n var forEachRelation = jsData.utils.forEachRelation;\n var get = jsData.utils.get;\n var isArray = jsData.utils.isArray;\n var isObject = jsData.utils.isObject;\n var isUndefined = jsData.utils.isUndefined;\n var omit = jsData.utils.omit;\n var plainCopy = jsData.utils.plainCopy;\n var resolve = jsData.utils.resolve;\n\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 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 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 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 fillIn(opts, DEFAULTS);\n fillIn(self, opts);\n }\n\n Adapter.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 * @typedef {Object} Response\n * @property {Object} data Response data.\n * @property {string} op The operation for which the response was created.\n */\n function Response(data, meta, op) {\n var self = this;\n meta || (meta = {});\n self.data = data;\n fillIn(self, meta);\n self.op = op;\n }\n\n Adapter.Response = Response;\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 = extend;\n\n addHiddenPropsToTarget(Adapter.prototype, {\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 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 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 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 * 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 resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n props = withoutRelations(mapper, props);\n op = opts.op = 'create';\n self.dbg(op, mapper, props, opts);\n return resolve(self._create(mapper, props, 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, '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 resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = 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 resolve(self._createMany(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 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 resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy';\n self.dbg(op, mapper, id, opts);\n return resolve(self._destroy(mapper, id, 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 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 resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll';\n self.dbg(op, mapper, query, opts);\n return resolve(self._destroyAll(mapper, query, 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, 'destroyAll');\n response = self.respond(response, opts);\n\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll';\n return resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return isUndefined(_response) ? response : _response;\n });\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 = get(record, def.localKeys) || [];\n itemKeys = 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 get(record, mapper.idAttribute);\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 (isObject(records) && !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 (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 (isObject(records) && !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 _ret = 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 = get(item, def.localKeys) || [];\n itemKeys = 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 _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === \"object\") return _ret.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 (isObject(records) && !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 = get(record, idAttribute);\n relatedItems.forEach(function (relatedItem) {\n var foreignKeys = 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 (isObject(records) && !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 (isArray(relatedData) && relatedData.length) {\n def.setLocalField(record, relatedData[0]);\n }\n });\n });\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 * 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 (isObject(records) && !isArray(records)) {\n var _ret2 = 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 _ret2 === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret2)) === \"object\") return _ret2.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 resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find';\n self.dbg(op, mapper, id, opts);\n return resolve(self._find(mapper, id, opts));\n }).then(function (results) {\n var _results5 = babelHelpers.slicedToArray(results, 1);\n\n var _record = _results5[0];\n\n if (!_record) {\n return;\n }\n record = _record;\n var tasks = [];\n\n 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 resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 (isObject(activeWith)) {\n var activeQuery = activeWith.query || {};\n if (activeWith.replace) {\n query = activeQuery;\n } else {\n deepFillIn(query, activeQuery);\n }\n }\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll';\n return resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll';\n self.dbg(op, mapper, query, opts);\n return resolve(self._findAll(mapper, query, opts));\n }).then(function (results) {\n var _results6 = babelHelpers.slicedToArray(results, 1);\n\n var _records = _results6[0];\n\n _records || (_records = []);\n records = _records;\n var tasks = [];\n 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 resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 isUndefined(opts[opt]) ? plainCopy(this[opt]) : plainCopy(opts[opt]);\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 * @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 resolve(self[op](mapper, id, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n op = opts.op = 'update';\n self.dbg(op, mapper, id, props, opts);\n return resolve(self._update(mapper, id, props, opts));\n }).then(function (results) {\n var _results7 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results7[0];\n var result = _results7[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 resolve(self[op](mapper, id, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, props, query, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n op = opts.op = 'updateAll';\n self.dbg(op, mapper, props, query, opts);\n return resolve(self._updateAll(mapper, props, 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 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 resolve(self[op](mapper, props, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 get(record, idAttribute);\n });\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany';\n return resolve(self[op](mapper, records, opts)).then(function (_records) {\n // Allow for re-assignment from lifecycle hook\n records = 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 resolve(self._updateMany(mapper, records, 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 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 resolve(self[op](mapper, records, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return isUndefined(_response) ? response : _response;\n });\n });\n }\n });\n\n module.exports = Adapter;\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 d9b3328e51d13a735e9e","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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A;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;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,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;;AAEA;;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,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,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;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;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,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;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;;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;AACA,iBAAgB;AAChB;AACA;AACA;AACA,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,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,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,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,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;;AAEA,EAAC;AACD,4C;;;;;;AC36CA,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[\"HttpAdapter\"] = factory(require(\"js-data\"), require(\"undefined\"));\n\telse\n\t\troot[\"HttpAdapter\"] = 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 d9b3328e51d13a735e9e\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nimport Adapter from 'js-data-adapter'\n\nlet hasFetch = false\n\ntry {\n hasFetch = window && window.fetch\n} catch (e) {}\n\nconst noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n return utils.resolve()\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n return utils.resolve()\n}\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 * @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// 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\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.data, 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) {\n if (response.hasOwnProperty('data')) {\n return response.data\n }\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 HttpAdapter.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 */\nHttpAdapter.addAction = function (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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n utils.forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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(require('js-data')) :\n typeof define === 'function' && define.amd ? define('js-data-adapter', ['js-data'], factory) :\n (factory(global.JSData));\n}(this, function (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 addHiddenPropsToTarget = jsData.utils.addHiddenPropsToTarget;\n var deepFillIn = jsData.utils.deepFillIn;\n var extend = jsData.utils.extend;\n var fillIn = jsData.utils.fillIn;\n var forEachRelation = jsData.utils.forEachRelation;\n var get = jsData.utils.get;\n var isArray = jsData.utils.isArray;\n var isObject = jsData.utils.isObject;\n var isUndefined = jsData.utils.isUndefined;\n var omit = jsData.utils.omit;\n var plainCopy = jsData.utils.plainCopy;\n var resolve = jsData.utils.resolve;\n\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 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 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 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 fillIn(opts, DEFAULTS);\n fillIn(self, opts);\n }\n\n Adapter.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 * @typedef {Object} Response\n * @property {Object} data Response data.\n * @property {string} op The operation for which the response was created.\n */\n function Response(data, meta, op) {\n var self = this;\n meta || (meta = {});\n self.data = data;\n fillIn(self, meta);\n self.op = op;\n }\n\n Adapter.Response = Response;\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 = extend;\n\n addHiddenPropsToTarget(Adapter.prototype, {\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 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 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 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 * 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 resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n props = withoutRelations(mapper, props);\n op = opts.op = 'create';\n self.dbg(op, mapper, props, opts);\n return resolve(self._create(mapper, props, 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, '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 resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = 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 resolve(self._createMany(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 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 resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy';\n self.dbg(op, mapper, id, opts);\n return resolve(self._destroy(mapper, id, 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 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 resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll';\n self.dbg(op, mapper, query, opts);\n return resolve(self._destroyAll(mapper, query, 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, 'destroyAll');\n response = self.respond(response, opts);\n\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll';\n return resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return isUndefined(_response) ? response : _response;\n });\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 = get(record, def.localKeys) || [];\n itemKeys = 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 get(record, mapper.idAttribute);\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 (isObject(records) && !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 (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 (isObject(records) && !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 _ret = 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 = get(item, def.localKeys) || [];\n itemKeys = 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 _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === \"object\") return _ret.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 (isObject(records) && !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 = get(record, idAttribute);\n relatedItems.forEach(function (relatedItem) {\n var foreignKeys = 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 (isObject(records) && !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 (isArray(relatedData) && relatedData.length) {\n def.setLocalField(record, relatedData[0]);\n }\n });\n });\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 * 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 (isObject(records) && !isArray(records)) {\n var _ret2 = 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 _ret2 === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret2)) === \"object\") return _ret2.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 resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find';\n self.dbg(op, mapper, id, opts);\n return resolve(self._find(mapper, id, opts));\n }).then(function (results) {\n var _results5 = babelHelpers.slicedToArray(results, 1);\n\n var _record = _results5[0];\n\n if (!_record) {\n return;\n }\n record = _record;\n var tasks = [];\n\n 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 resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 (isObject(activeWith)) {\n var activeQuery = activeWith.query || {};\n if (activeWith.replace) {\n query = activeQuery;\n } else {\n deepFillIn(query, activeQuery);\n }\n }\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll';\n return resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll';\n self.dbg(op, mapper, query, opts);\n return resolve(self._findAll(mapper, query, opts));\n }).then(function (results) {\n var _results6 = babelHelpers.slicedToArray(results, 1);\n\n var _records = _results6[0];\n\n _records || (_records = []);\n records = _records;\n var tasks = [];\n 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 resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 isUndefined(opts[opt]) ? plainCopy(this[opt]) : plainCopy(opts[opt]);\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 * @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 resolve(self[op](mapper, id, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n op = opts.op = 'update';\n self.dbg(op, mapper, id, props, opts);\n return resolve(self._update(mapper, id, props, opts));\n }).then(function (results) {\n var _results7 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results7[0];\n var result = _results7[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 resolve(self[op](mapper, id, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, props, query, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n op = opts.op = 'updateAll';\n self.dbg(op, mapper, props, query, opts);\n return resolve(self._updateAll(mapper, props, 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 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 resolve(self[op](mapper, props, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 get(record, idAttribute);\n });\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany';\n return resolve(self[op](mapper, records, opts)).then(function (_records) {\n // Allow for re-assignment from lifecycle hook\n records = 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 resolve(self._updateMany(mapper, records, 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 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 resolve(self[op](mapper, records, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return isUndefined(_response) ? response : _response;\n });\n });\n }\n });\n\n module.exports = Adapter;\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 f7e550c..ba81968 100644 --- a/fetch/dist/js-data-fetch.min.js +++ b/fetch/dist/js-data-fetch.min.js @@ -1,2 +1,2 @@ -!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.HttpAdapter=t(require("js-data"),require("undefined")):e.HttpAdapter=t(e.JSData,e.undefined)}(this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={exports:{},id:r,loaded:!1};return e[r].call(a.exports,a,a.exports,t),a.loaded=!0,a.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function a(e){return null!=e&&""!==e}function o(e,t){return t||(t=""),e.filter(a).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 f(e,t){if(!t)return e;var n=[];return A(t,function(e,t){null!==e&&"undefined"!=typeof e&&(x(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():w(e)&&(e=O(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={}),T(e,D),p.default.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},c=n(1),d=n(2),p=r(d),h=n(3),y=c.utils._,g=c.utils.addHiddenPropsToTarget,v=c.utils.copy,m=c.utils.deepMixIn,b=c.utils.extend,T=c.utils.fillIn,A=c.utils.forOwn,P=c.utils.get,x=c.utils.isArray,M=c.utils.isFunction,E=c.utils.isNumber,w=c.utils.isObject,F=c.utils.isSorN,S=c.utils.isString,H=c.utils.isUndefined,_=c.utils.resolve,K=c.utils.reject,O=c.utils.toJson,U=!1;try{U=window&&window.fetch}catch(e){}var L=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var a=n[n.length-1];return e.dbg.apply(e,[a.op].concat(n)),_()},j=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var a=n[n.length-2];return e.dbg.apply(e,[a.op].concat(n)),_()},q=p.default.prototype,D={basePath:"",forceTrailingSlash:!1,http:h,httpConfig:{},suffix:"",useFetch:!1};s.prototype=Object.create(p.default.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}),Object.defineProperty(s,"__super__",{configurable:!0,value:p.default}),g(s.prototype,{afterDEL:j,afterGET:j,afterHTTP:j,afterPOST:j,afterPUT:j,beforeDEL:L,beforeGET:L,beforeHTTP:L,beforePOST:L,beforePUT:L,_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.data,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)})},_update:function(e,t,n,r){var a=this;return a.PUT(a.getPath("update",e,t,r),a.serialize(e,n,r),r).then(function(t){return a._end(e,r,t)})},_updateAll:function(e,t,n,r){var a=this;return a.PUT(a.getPath("updateAll",e,null,r),a.serialize(e,t,r),r).then(function(t){return a._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)})},create:function(e,t,n){var r=this;return n=n?v(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),q.create.call(r,e,t,n)},createMany:function(e,t,n){var r=this;return n=n?v(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),q.createMany.call(r,e,t,n)},DEL:function(e,t,n){var r=this,a=void 0;return t||(t={}),n||(n={}),t.url=e||t.url,t.method=t.method||"delete",a=n.op="beforeDEL",_(r[a](e,t,n)).then(function(o){return t=H(o)?t:o,a=n.op="DEL",r.dbg(a,e,t,n),r.HTTP(t,n)}).then(function(o){return a=n.op="afterDEL",_(r[a](e,t,n,o)).then(function(e){return H(e)?o:e})})},deserialize:function(e,t,n){return n||(n={}),M(n.deserialize)?n.deserialize(e,t,n):M(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?v(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),q.destroy.call(r,e,t,n)},destroyAll:function(e,t,n){var r=this;return t||(t={}),n=n?v(n):{},n.params||(n.params={}),m(n.params,t),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),q.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=O(e.data)),fetch(new Request(f(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?v(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),q.find.call(r,e,t,n)},findAll:function(e,t,n){var r=this;return t||(t={}),n=n?v(n):{},n.params||(n.params={}),n.suffix=r.getSuffix(e,n),m(n.params,t),n.params=r.queryTransform(e,n.params,n),q.findAll.call(r,e,t,n)},GET:function(e,t,n){var r=this,a=void 0;return t||(t={}),n||(n={}),t.url=e||t.url,t.method=t.method||"get",a=n.op="beforeGET",_(r[a](e,t,n)).then(function(o){return t=H(o)?t:o,a=n.op="GET",r.dbg(a,e,t,n),r.HTTP(t,n)}).then(function(o){return a=n.op="afterGET",_(r[a](e,t,n,o)).then(function(e){return H(e)?o:e})})},getEndpoint:function(e,t,n){var r=this;n||(n={}),n.params||(n.params={});var a=e.relationList||[],o=H(n.endpoint)?H(e.endpoint)?e.name:e.endpoint:n.endpoint;return a.forEach(function(e){if("belongsTo"===e.type&&e.parent){var a=void 0,u=e.foreignKey,f=e.getRelation(),s=n.params[u];if(s===!1||!u||!f)return s===!1&&delete n.params[u],!1;if(delete n.params[u],w(t)&&(a=t),a&&(s=s||e.getForeignKey(a)||(e.getLocalField(a)?P(e.getLocalField(a),f.idAttribute):null)),s){var c=function(){delete n.endpoint;var e={};return A(n,function(t,n){e[n]=t}),y(e,f),o=i(r.getEndpoint(f,s,e),s,o),{v:!1}}();if("object"===("undefined"==typeof c?"undefined":l(c)))return c.v}}}),o},getPath:function(e,t,n,r){var a=this;r||(r={});var o=[H(r.basePath)?H(t.basePath)?a.basePath:t.basePath:r.basePath,a.getEndpoint(t,S(n)||E(n)||"create"===e?n:null,r)];return"find"!==e&&"update"!==e&&"destroy"!==e||o.push(n),i.apply(c.utils,o)},getSuffix:function(e,t){return t||(t={}),H(t.suffix)?H(e.suffix)?this.suffix:e.suffix:t.suffix},HTTP:function(e,t){function n(t){var n=a.toUTCString()+" - "+e.method.toUpperCase()+" "+e.url+" - "+t.status+" "+((new Date).getTime()-a.getTime())+"ms";return t.status>=200&&t.status<300?(r.log&&r.dbg("debug",n,t),t):(r.error&&r.error("'FAILED: "+n,t),K(t))}var r=this,a=new Date;t||(t={});var o=e.data,i=e.cache,u=e.timeout;e=v(e,null,null,null,["data","cache","timeout"]),e=m(e,r.httpConfig),e.data=o,e.cache=i,e.timeout=u,r.forceTrailingSlash&&"/"!==e.url[e.url.length-1]&&(e.url+="/"),e.method=e.method.toUpperCase();var f=e.suffix||t.suffix||r.suffix;if(f&&e.url.substr(e.url.length-f.length)!==f&&(e.url+=f),!r.http)throw new Error("You have not configured this adapter with an http library!");return _(r.beforeHTTP(e,t)).then(function(a){return e=a||e,U&&(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 _(r.afterHTTP(e,t,n)).then(function(e){return e||n})})},POST:function(e,t,n,r){var a=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",_(a[o](e,t,n,r)).then(function(i){return n=H(i)?n:i,o=r.op="POST",a.dbg(o,e,t,n,r),a.HTTP(n,r)}).then(function(i){return o=r.op="afterPOST",_(a[o](e,t,n,r,i)).then(function(e){return H(e)?i:e})})},PUT:function(e,t,n,r){var a=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",_(a[o](e,t,n,r)).then(function(i){return n=H(i)?n:i,o=r.op="PUT",a.dbg(o,e,t,n,r),a.HTTP(n,r)}).then(function(i){return o=r.op="afterPUT",_(a[o](e,t,n,r,i)).then(function(e){return H(e)?i:e})})},queryTransform:function(e,t,n){return n||(n={}),M(n.queryTransform)?n.queryTransform(e,t,n):M(e.queryTransform)?e.queryTransform(e,t,n):t},responseError:function(e,t,n){return K(e)},serialize:function(e,t,n){return n||(n={}),M(n.serialize)?n.serialize(e,t,n):M(e.serialize)?e.serialize(e,t,n):t},update:function(e,t,n,r){var a=this;return r=r?v(r):{},r.params||(r.params={}),r.params=a.queryTransform(e,r.params,r),r.suffix=a.getSuffix(e,r),q.update.call(a,e,t,n,r)},updateAll:function(e,t,n,r){var a=this;return n||(n={}),r=r?v(r):{},r.params||(r.params={}),m(r.params,n),r.params=a.queryTransform(e,r.params,r),r.suffix=a.getSuffix(e,r),q.updateAll.call(a,e,t,n,r)},updateMany:function(e,t,n){var r=this;return n=n?v(n):{},n.params||(n.params={}),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),q.updateMany.call(r,e,t,n)}}),s.addAction=function(e,t){if(!e||!S(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 K(e)},n[e]=function(n,r){var a=this;w(n)&&(r=n),r=r||{};var o=a.getAdapter(t.adapter||a.defaultAdapter||"http"),u={};if(T(u,t),!r.hasOwnProperty("endpoint")&&u.endpoint&&(r.endpoint=u.endpoint),"function"==typeof r.getEndpoint)u.url=r.getEndpoint(a,r);else{var f=[r.basePath||a.basePath||o.basePath,o.getEndpoint(a,F(n)?n:null,r)];F(n)&&f.push(n),f.push(t.pathname||e),u.url=i.apply(null,f)}return u.method=u.method||"GET",u.mapper=a.name,m(u)(r),_(u).then(r.request||t.request).then(function(e){return o.HTTP(e)}).then(function(e){return e&&e.config&&(e.config.mapper=a.name),e}).then(r.response||t.response,r.responseError||t.responseError)},n}},s.addActions=function(e){return e||(e={}),function(e){return A(e,function(t,n){s.addAction(n,t)(e)}),e}},s.extend=b,s.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=s},function(t,n){t.exports=e},function(e,t,n){!function(e,t){t(n(1))}(this,function(t){"use strict";function n(e){var t=this;e||(e={}),f(e,A),f(t,e)}function r(e,t,n){var r=this;t||(t={}),r.data=e,f(r,t),r.op=n}var a={};a.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},a.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},a.slicedToArray=function(){function e(e,t){var n=[],r=!0,a=!1,o=void 0;try{for(var i,u=e[Symbol.iterator]();!(r=(i=u.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){a=!0,o=e}finally{try{!r&&u.return&&u.return()}finally{if(a)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=t.utils.addHiddenPropsToTarget,i=t.utils.deepFillIn,u=t.utils.extend,f=t.utils.fillIn,s=t.utils.forEachRelation,l=t.utils.get,c=t.utils.isArray,d=t.utils.isObject,p=t.utils.isUndefined,h=t.utils.omit,y=t.utils.plainCopy,g=t.utils.resolve,v=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var a=n[n.length-1];return e.dbg.apply(e,[a.op].concat(n)),g()},m=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var a=n[n.length-2];return e.dbg.apply(e,[a.op].concat(n)),g()},b=function(e){var t={},n=[];return e.forEach(function(e){e in t||(n.push(e),t[e]=0)}),n},T=function(e,t){return h(t,e.relationFields||[])},A={debug:!1,raw:!1};n.reserved=["orderBy","sort","limit","offset","skip","where"],n.Response=r,n.extend=u,o(n.prototype,{afterCreate:m,afterCreateMany:m,afterDestroy:m,afterDestroyAll:m,afterFind:m,afterFindAll:m,afterUpdate:m,afterUpdateAll:m,afterUpdateMany:m,beforeCreate:v,beforeCreateMany:v,beforeDestroy:v,beforeDestroyAll:v,beforeFind:v,beforeFindAll:v,beforeUpdate:v,beforeUpdateAll:v,beforeUpdateMany:v,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))},create:function(e,t,n){var o=this,i=void 0;return t||(t={}),n||(n={}),i=n.op="beforeCreate",g(o[i](e,t,n)).then(function(r){return t=p(r)?t:r,t=T(e,t),i=n.op="create",o.dbg(i,e,t,n),g(o._create(e,t,n))}).then(function(u){var f=a.slicedToArray(u,2),s=f[0],l=f[1];l||(l={});var c=new r(s,l,"create");return c.created=s?1:0,c=o.respond(c,n),i=n.op="afterCreate",g(o[i](e,t,n,c)).then(function(e){return p(e)?c:e})})},createMany:function(e,t,n){var o=this,i=void 0;return t||(t={}),n||(n={}),i=n.op="beforeCreateMany",g(o[i](e,t,n)).then(function(r){return t=p(r)?t:r,t=t.map(function(t){return T(e,t)}),i=n.op="createMany",o.dbg(i,e,t,n),g(o._createMany(e,t,n))}).then(function(u){var f=a.slicedToArray(u,2),s=f[0],l=f[1];s||(s=[]),l||(l={});var c=new r(s,l,"createMany");return c.created=s.length,c=o.respond(c,n),i=n.op="afterCreateMany",g(o[i](e,t,n,c)).then(function(e){return p(e)?c:e})})},destroy:function(e,t,n){var o=this,i=void 0;return n||(n={}),i=n.op="beforeDestroy",g(o[i](e,t,n)).then(function(){return i=n.op="destroy",o.dbg(i,e,t,n),g(o._destroy(e,t,n))}).then(function(u){var f=a.slicedToArray(u,2),s=f[0],l=f[1];l||(l={});var c=new r(s,l,"destroy");return c=o.respond(c,n),i=n.op="afterDestroy",g(o[i](e,t,n,c)).then(function(e){return p(e)?c:e})})},destroyAll:function(e,t,n){var o=this,i=void 0;return t||(t={}),n||(n={}),i=n.op="beforeDestroyAll",g(o[i](e,t,n)).then(function(){return i=n.op="destroyAll",o.dbg(i,e,t,n),g(o._destroyAll(e,t,n))}).then(function(u){var f=a.slicedToArray(u,2),s=f[0],l=f[1];l||(l={});var c=new r(s,l,"destroyAll");return c=o.respond(c,n),i=n.op="afterDestroyAll",g(o[i](e,t,n,c)).then(function(e){return p(e)?c:e})})},makeHasManyForeignKey:function(e,t,n){return t.getForeignKey(n)},makeHasManyLocalKeys:function(e,t,n){var r=[],a=l(n,t.localKeys)||[];return a=c(a)?a:Object.keys(a),r=r.concat(a),b(r).filter(function(e){return e})},makeHasManyForeignKeys:function(e,t,n){return l(n,e.idAttribute)},loadHasMany:function(e,t,n,r){var a=this,o=!1;d(n)&&!c(n)&&(o=!0,n=[n]);var i=n.map(function(n){return a.makeHasManyForeignKey(e,t,n)}),u={where:{}},f=u.where[t.foreignKey]={};return o?f["=="]=i[0]:f.in=i.filter(function(e){return e}),a.findAll(t.getRelation(),u,r).then(function(r){n.forEach(function(n){var a=[];o?a=r:r.forEach(function(r){l(r,t.foreignKey)===n[e.idAttribute]&&a.push(r)}),t.setLocalField(n,a)})})},loadHasManyLocalKeys:function(e,t,n,r){var o=this,i=void 0,u=t.getRelation();if(d(n)&&!c(n)&&(i=n),i)return o.findAll(u,{where:a.defineProperty({},u.idAttribute,{in:o.makeHasManyLocalKeys(e,t,i)})},r).then(function(e){t.setLocalField(i,e)});var f=function(){var i=[];return n.forEach(function(n){i=i.concat(o.self.makeHasManyLocalKeys(e,t,n))}),{v:o.findAll(u,{where:a.defineProperty({},u.idAttribute,{in:b(i).filter(function(e){return e})})},r).then(function(e){return n.forEach(function(n){var r=[],a=l(n,t.localKeys)||[];a=c(a)?a:Object.keys(a),e.forEach(function(e){a&&-1!==a.indexOf(e[u.idAttribute])&&r.push(e)}),t.setLocalField(n,r)}),e})}}();return"object"===("undefined"==typeof f?"undefined":a.typeof(f))?f.v:void 0},loadHasManyForeignKeys:function(e,t,n,r){var o=this,i=t.getRelation(),u=e.idAttribute,f=void 0;return d(n)&&!c(n)&&(f=n),f?o.findAll(t.getRelation(),{where:a.defineProperty({},t.foreignKeys,{contains:o.makeHasManyForeignKeys(e,t,f)})},r).then(function(e){t.setLocalField(f,e)}):o.findAll(i,{where:a.defineProperty({},t.foreignKeys,{isectNotEmpty:n.map(function(n){return o.makeHasManyForeignKeys(e,t,n)})})},r).then(function(e){var r=t.foreignKeys;n.forEach(function(n){var a=[],o=l(n,u);e.forEach(function(t){var n=l(e,r)||[];-1!==n.indexOf(o)&&a.push(t)}),t.setLocalField(n,a)})})},loadHasOne:function(e,t,n,r){return d(n)&&!c(n)&&(n=[n]),this.loadHasMany(e,t,n,r).then(function(){n.forEach(function(e){var n=t.getLocalField(e);c(n)&&n.length&&t.setLocalField(e,n[0])})})},makeBelongsToForeignKey:function(e,t,n){return t.getForeignKey(n)},loadBelongsTo:function(e,t,n,r){var o=this,i=t.getRelation();if(!d(n)||c(n)){var u=n.map(function(n){return o.makeBelongsToForeignKey(e,t,n)}).filter(function(e){return e});return o.findAll(i,{where:a.defineProperty({},i.idAttribute,{in:u})},r).then(function(e){n.forEach(function(n){e.forEach(function(e){e[i.idAttribute]===n[t.foreignKey]&&t.setLocalField(n,e)})})})}var f=function(){var a=n;return{v:o.find(i,o.makeBelongsToForeignKey(e,t,a),r).then(function(e){t.setLocalField(a,e)})}}();return"object"===("undefined"==typeof f?"undefined":a.typeof(f))?f.v:void 0},find:function(e,t,n){var o=this,i=void 0,u=void 0;return n||(n={}),n.with||(n.with=[]),u=n.op="beforeFind",g(o[u](e,t,n)).then(function(){return u=n.op="find",o.dbg(u,e,t,n),g(o._find(e,t,n))}).then(function(t){var r=a.slicedToArray(t,1),u=r[0];if(u){i=u;var f=[];return s(e,n,function(t,n){var r=void 0;!t.foreignKey||"hasOne"!==t.type&&"hasMany"!==t.type?"hasMany"===t.type&&t.localKeys?r=o.loadHasManyLocalKeys(e,t,i,n):"hasMany"===t.type&&t.foreignKeys?r=o.loadHasManyForeignKeys(e,t,i,n):"belongsTo"===t.type&&(r=o.loadBelongsTo(e,t,i,n)):r="hasOne"===t.type?o.loadHasOne(e,t,i,n):o.loadHasMany(e,t,i,n),r&&f.push(r)}),Promise.all(f)}}).then(function(){var a=new r(i,{},"find");return a.found=i?1:0,a=o.respond(a,n),u=n.op="afterFind",g(o[u](e,t,n,a)).then(function(e){return p(e)?a:e})})},findAll:function(e,t,n){var o=this;n||(n={}),n.with||(n.with=[]);var u=[],f=void 0,l=n._activeWith;if(d(l)){var c=l.query||{};l.replace?t=c:i(t,c)}return f=n.op="beforeFindAll",g(o[f](e,t,n)).then(function(){return f=n.op="findAll",o.dbg(f,e,t,n),g(o._findAll(e,t,n))}).then(function(t){var r=a.slicedToArray(t,1),i=r[0];i||(i=[]),u=i;var f=[];return s(e,n,function(t,n){var r=void 0;!t.foreignKey||"hasOne"!==t.type&&"hasMany"!==t.type?"hasMany"===t.type&&t.localKeys?r=o.loadHasManyLocalKeys(e,t,u,n):"hasMany"===t.type&&t.foreignKeys?r=o.loadHasManyForeignKeys(e,t,u,n):"belongsTo"===t.type&&(r=o.loadBelongsTo(e,t,u,n)):r="hasMany"===t.type?o.loadHasMany(e,t,u,n):o.loadHasOne(e,t,u,n),r&&f.push(r)}),Promise.all(f)}).then(function(){var a=new r(u,{},"findAll");return a.found=u.length,a=o.respond(a,n),f=n.op="afterFindAll",g(o[f](e,t,n,a)).then(function(e){return p(e)?a:e})})},getOpt:function(e,t){return t||(t={}),y(p(t[e])?this[e]:t[e])},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 a=e.toUpperCase()+": (Adapter)";if(console[e]){var o;(o=console)[e].apply(o,[a].concat(n))}else{var i;(i=console).log.apply(i,[a].concat(n))}}},respond:function(e,t){return this.getOpt("raw",t)?e:e.data},update:function(e,t,n,o){var i=this;n||(n={}),o||(o={});var u=void 0;return u=o.op="beforeUpdate",g(i[u](e,t,n,o)).then(function(r){return n=p(r)?n:r,u=o.op="update",i.dbg(u,e,t,n,o),g(i._update(e,t,n,o))}).then(function(f){var s=a.slicedToArray(f,2),l=s[0],c=s[1];c||(c={});var d=new r(l,c,"update");return d.updated=l?1:0,d=i.respond(d,o),u=o.op="afterUpdate",g(i[u](e,t,n,o,d)).then(function(e){return p(e)?d:e})})},updateAll:function(e,t,n,o){var i=this;t||(t={}),n||(n={}),o||(o={});var u=void 0;return u=o.op="beforeUpdateAll",g(i[u](e,t,n,o)).then(function(r){return t=p(r)?t:r,u=o.op="updateAll",i.dbg(u,e,t,n,o),g(i._updateAll(e,t,n,o))}).then(function(f){var s=a.slicedToArray(f,2),l=s[0],c=s[1];l||(l=[]),c||(c={});var d=new r(l,c,"updateAll");return d.updated=l.length,d=i.respond(d,o),u=o.op="afterUpdateAll",g(i[u](e,t,n,o,d)).then(function(e){return p(e)?d:e})})},updateMany:function(e,t,n){var o=this;t||(t=[]),n||(n={});var i=void 0,u=e.idAttribute;return t=t.filter(function(e){return l(e,u)}),i=n.op="beforeUpdateMany",g(o[i](e,t,n)).then(function(r){return t=p(r)?t:r,t=t.map(function(t){return T(e,t)}),i=n.op="updateMany",o.dbg(i,e,t,n),g(o._updateMany(e,t,n))}).then(function(u){var f=a.slicedToArray(u,2),s=f[0],l=f[1];s||(s=[]),l||(l={});var c=new r(s,l,"updateMany");return c.updated=s.length,c=o.respond(c,n),i=n.op="afterUpdateMany",g(o[i](e,t,n,c)).then(function(e){return p(e)?c:e})})}}),e.exports=n})},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.HttpAdapter=t(require("js-data"),require("undefined")):e.HttpAdapter=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 e&&e.__esModule?e:{default:e}}function i(e){return null!=e&&""!==e}function a(e,t){return t||(t=""),e.filter(i).join(t)}function o(){for(var e=arguments.length,t=Array(e),n=0;e>n;n++)t[n]=arguments[n];var r=a(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 s(e,t){if(!t)return e;var n=[];return d.utils.forOwn(t,function(e,t){null!==e&&"undefined"!=typeof e&&(d.utils.isArray(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():d.utils.isObject(e)&&(e=d.utils.toJson(e)),n.push(u(t)+"="+u(e))}))}),n.length>0&&(e+=(-1===e.indexOf("?")?"?":"&")+n.join("&")),e}function f(e){var t=this;e||(e={}),d.utils.fillIn(e,b),p.default.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},d=n(1),c=n(2),p=r(c),h=n(3),y=!1;try{y=window&&window.fetch}catch(e){}var g=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var i=n[n.length-1];return e.dbg.apply(e,[i.op].concat(n)),d.utils.resolve()},v=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var i=n[n.length-2];return e.dbg.apply(e,[i.op].concat(n)),d.utils.resolve()},m=p.default.prototype,b={basePath:"",forceTrailingSlash:!1,http:h,httpConfig:{},suffix:"",useFetch:!1};f.prototype=Object.create(p.default.prototype,{constructor:{value:f,enumerable:!1,writable:!0,configurable:!0}}),Object.defineProperty(f,"__super__",{configurable:!0,value:p.default}),d.utils.addHiddenPropsToTarget(f.prototype,{afterDEL:v,afterGET:v,afterHTTP:v,afterPOST:v,afterPUT:v,beforeDEL:g,beforeGET:g,beforeHTTP:g,beforePOST:g,beforePUT:g,_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.data,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),d.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),m.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),m.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),m.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",d.utils.resolve(r[i](e,t,n)).then(function(a){return t=d.utils.isUndefined(a)?t:a,i=n.op="DEL",r.dbg(i,e,t,n),r.HTTP(t,n)}).then(function(a){return i=n.op="afterDEL",d.utils.resolve(r[i](e,t,n,a)).then(function(e){return d.utils.isUndefined(e)?a:e})})},deserialize:function(e,t,n){return n||(n={}),d.utils.isFunction(n.deserialize)?n.deserialize(e,t,n):d.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),m.destroy.call(r,e,t,n)},destroyAll:function(e,t,n){var r=this;return t||(t={}),n||(n={}),n.params=r.getParams(n),d.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),m.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=d.utils.toJson(e.data)),fetch(new Request(s(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),m.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),d.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),m.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",d.utils.resolve(r[i](e,t,n)).then(function(a){return t=d.utils.isUndefined(a)?t:a,i=n.op="GET",r.dbg(i,e,t,n),r.HTTP(t,n)}).then(function(a){return i=n.op="afterGET",d.utils.resolve(r[i](e,t,n,a)).then(function(e){return d.utils.isUndefined(e)?a:e})})},getEndpoint:function(e,t,n){var r=this;n||(n={}),n.params=d.utils.isUndefined(n.params)?{}:n.params;var i=e.relationList||[],a=d.utils.isUndefined(n.endpoint)?d.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(),f=n.params[u];if(f===!1||!u||!s)return f===!1&&delete n.params[u],!1;if(delete n.params[u],d.utils.isObject(t)&&(i=t),i&&(f=f||e.getForeignKey(i)||(e.getLocalField(i)?d.utils.get(e.getLocalField(i),s.idAttribute):null)),f){var c=function(){delete n.endpoint;var e={};return d.utils.forOwn(n,function(t,n){e[n]=t}),d.utils._(e,s),a=o(r.getEndpoint(s,f,e),f,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=[d.utils.isUndefined(r.basePath)?d.utils.isUndefined(t.basePath)?i.basePath:t.basePath:r.basePath,i.getEndpoint(t,d.utils.isString(n)||d.utils.isNumber(n)||"create"===e?n:null,r)];return"find"!==e&&"update"!==e&&"destroy"!==e||a.push(n),o.apply(d.utils,a)},getParams:function(e){return e||(e={}),d.utils.isUndefined(e.params)?{}:d.utils.copy(e.params)},getSuffix:function(e,t){return t||(t={}),d.utils.isUndefined(t.suffix)?d.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),d.utils.reject(t))}var r=this,i=new Date;t||(t={});var a=e.data,o=e.cache,u=e.timeout;e=d.utils.copy(e,null,null,null,["data","cache","timeout"]),e=d.utils.deepMixIn(e,r.httpConfig),e.data=a,e.cache=o,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 d.utils.resolve(r.beforeHTTP(e,t)).then(function(i){return e=i||e,y&&(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 d.utils.resolve(r.afterHTTP(e,t,n)).then(function(e){return e||n})})},POST:function(e,t,n,r){var i=this,a=void 0;return n||(n={}),r||(r={}),n.url=e||n.url,n.data=t||n.data,n.method=n.method||"post",a=r.op="beforePOST",d.utils.resolve(i[a](e,t,n,r)).then(function(o){return n=d.utils.isUndefined(o)?n:o,a=r.op="POST",i.dbg(a,e,t,n,r),i.HTTP(n,r)}).then(function(o){return a=r.op="afterPOST",d.utils.resolve(i[a](e,t,n,r,o)).then(function(e){return d.utils.isUndefined(e)?o:e})})},PUT:function(e,t,n,r){var i=this,a=void 0;return n||(n={}),r||(r={}),n.url=e||n.url,n.data=t||n.data,n.method=n.method||"put",a=r.op="beforePUT",d.utils.resolve(i[a](e,t,n,r)).then(function(o){return n=d.utils.isUndefined(o)?n:o,a=r.op="PUT",i.dbg(a,e,t,n,r),i.HTTP(n,r)}).then(function(o){return a=r.op="afterPUT",d.utils.resolve(i[a](e,t,n,r,o)).then(function(e){return d.utils.isUndefined(e)?o:e})})},queryTransform:function(e,t,n){return n||(n={}),d.utils.isFunction(n.queryTransform)?n.queryTransform(e,t,n):d.utils.isFunction(e.queryTransform)?e.queryTransform(e,t,n):t},responseError:function(e,t,n){return d.utils.reject(e)},serialize:function(e,t,n){return n||(n={}),d.utils.isFunction(n.serialize)?n.serialize(e,t,n):d.utils.isFunction(e.serialize)?e.serialize(e,t,n):t},sum:function(e,t,n,r){var i=this;if(n||(n={}),r||(r={}),!d.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),d.utils.deepMixIn(r.params,n),r.params=i.queryTransform(e,r.params,r),m.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),m.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),d.utils.deepMixIn(r.params,n),r.params=i.queryTransform(e,r.params,r),r.suffix=i.getSuffix(e,r),m.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),m.updateMany.call(r,e,t,n)}}),f.addAction=function(e,t){if(!e||!d.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 d.utils.reject(e)},n[e]=function(n,r){var i=this;d.utils.isObject(n)&&(r=n),r=r||{};var a=i.getAdapter(t.adapter||i.defaultAdapter||"http"),u={};if(d.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,d.utils.isSorN(n)?n:null,r)];d.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,d.utils.deepMixIn(u)(r),d.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}},f.addActions=function(e){return e||(e={}),function(e){return d.utils.forOwn(e,function(t,n){f.addAction(n,t)(e)}),e}},f.extend=d.utils.extend,f.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=f},function(t,n){t.exports=e},function(e,t,n){!function(e,t){t(n(1))}(this,function(t){"use strict";function n(e){var t=this;e||(e={}),s(e,A),s(t,e)}function r(e,t,n){var r=this;t||(t={}),r.data=e,s(r,t),r.op=n}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,a=void 0;try{for(var o,u=e[Symbol.iterator]();!(r=(o=u.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){i=!0,a=e}finally{try{!r&&u.return&&u.return()}finally{if(i)throw a}}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 a=t.utils.addHiddenPropsToTarget,o=t.utils.deepFillIn,u=t.utils.extend,s=t.utils.fillIn,f=t.utils.forEachRelation,l=t.utils.get,d=t.utils.isArray,c=t.utils.isObject,p=t.utils.isUndefined,h=t.utils.omit,y=t.utils.plainCopy,g=t.utils.resolve,v=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var i=n[n.length-1];return e.dbg.apply(e,[i.op].concat(n)),g()},m=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var i=n[n.length-2];return e.dbg.apply(e,[i.op].concat(n)),g()},b=function(e){var t={},n=[];return e.forEach(function(e){e in t||(n.push(e),t[e]=0)}),n},T=function(e,t){return h(t,e.relationFields||[])},A={debug:!1,raw:!1};n.reserved=["orderBy","sort","limit","offset","skip","where"],n.Response=r,n.extend=u,a(n.prototype,{afterCreate:m,afterCreateMany:m,afterDestroy:m,afterDestroyAll:m,afterFind:m,afterFindAll:m,afterUpdate:m,afterUpdateAll:m,afterUpdateMany:m,beforeCreate:v,beforeCreateMany:v,beforeDestroy:v,beforeDestroyAll:v,beforeFind:v,beforeFindAll:v,beforeUpdate:v,beforeUpdateAll:v,beforeUpdateMany:v,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))},create:function(e,t,n){var a=this,o=void 0;return t||(t={}),n||(n={}),o=n.op="beforeCreate",g(a[o](e,t,n)).then(function(r){return t=p(r)?t:r,t=T(e,t),o=n.op="create",a.dbg(o,e,t,n),g(a._create(e,t,n))}).then(function(u){var s=i.slicedToArray(u,2),f=s[0],l=s[1];l||(l={});var d=new r(f,l,"create");return d.created=f?1:0,d=a.respond(d,n),o=n.op="afterCreate",g(a[o](e,t,n,d)).then(function(e){return p(e)?d:e})})},createMany:function(e,t,n){var a=this,o=void 0;return t||(t={}),n||(n={}),o=n.op="beforeCreateMany",g(a[o](e,t,n)).then(function(r){return t=p(r)?t:r,t=t.map(function(t){return T(e,t)}),o=n.op="createMany",a.dbg(o,e,t,n),g(a._createMany(e,t,n))}).then(function(u){var s=i.slicedToArray(u,2),f=s[0],l=s[1];f||(f=[]),l||(l={});var d=new r(f,l,"createMany");return d.created=f.length,d=a.respond(d,n),o=n.op="afterCreateMany",g(a[o](e,t,n,d)).then(function(e){return p(e)?d:e})})},destroy:function(e,t,n){var a=this,o=void 0;return n||(n={}),o=n.op="beforeDestroy",g(a[o](e,t,n)).then(function(){return o=n.op="destroy",a.dbg(o,e,t,n),g(a._destroy(e,t,n))}).then(function(u){var s=i.slicedToArray(u,2),f=s[0],l=s[1];l||(l={});var d=new r(f,l,"destroy");return d=a.respond(d,n),o=n.op="afterDestroy",g(a[o](e,t,n,d)).then(function(e){return p(e)?d:e})})},destroyAll:function(e,t,n){var a=this,o=void 0;return t||(t={}),n||(n={}),o=n.op="beforeDestroyAll",g(a[o](e,t,n)).then(function(){return o=n.op="destroyAll",a.dbg(o,e,t,n),g(a._destroyAll(e,t,n))}).then(function(u){var s=i.slicedToArray(u,2),f=s[0],l=s[1];l||(l={});var d=new r(f,l,"destroyAll");return d=a.respond(d,n),o=n.op="afterDestroyAll",g(a[o](e,t,n,d)).then(function(e){return p(e)?d:e})})},makeHasManyForeignKey:function(e,t,n){return t.getForeignKey(n)},makeHasManyLocalKeys:function(e,t,n){var r=[],i=l(n,t.localKeys)||[];return i=d(i)?i:Object.keys(i),r=r.concat(i),b(r).filter(function(e){return e})},makeHasManyForeignKeys:function(e,t,n){return l(n,e.idAttribute)},loadHasMany:function(e,t,n,r){var i=this,a=!1;c(n)&&!d(n)&&(a=!0,n=[n]);var o=n.map(function(n){return i.makeHasManyForeignKey(e,t,n)}),u={where:{}},s=u.where[t.foreignKey]={};return a?s["=="]=o[0]:s.in=o.filter(function(e){return e}),i.findAll(t.getRelation(),u,r).then(function(r){n.forEach(function(n){var i=[];a?i=r:r.forEach(function(r){l(r,t.foreignKey)===n[e.idAttribute]&&i.push(r)}),t.setLocalField(n,i)})})},loadHasManyLocalKeys:function(e,t,n,r){var a=this,o=void 0,u=t.getRelation();if(c(n)&&!d(n)&&(o=n),o)return a.findAll(u,{where:i.defineProperty({},u.idAttribute,{in:a.makeHasManyLocalKeys(e,t,o)})},r).then(function(e){t.setLocalField(o,e)});var s=function(){var o=[];return n.forEach(function(n){o=o.concat(a.self.makeHasManyLocalKeys(e,t,n))}),{v:a.findAll(u,{where:i.defineProperty({},u.idAttribute,{in:b(o).filter(function(e){return e})})},r).then(function(e){return n.forEach(function(n){var r=[],i=l(n,t.localKeys)||[];i=d(i)?i:Object.keys(i),e.forEach(function(e){i&&-1!==i.indexOf(e[u.idAttribute])&&r.push(e)}),t.setLocalField(n,r)}),e})}}();return"object"===("undefined"==typeof s?"undefined":i.typeof(s))?s.v:void 0},loadHasManyForeignKeys:function(e,t,n,r){var a=this,o=t.getRelation(),u=e.idAttribute,s=void 0;return c(n)&&!d(n)&&(s=n),s?a.findAll(t.getRelation(),{where:i.defineProperty({},t.foreignKeys,{contains:a.makeHasManyForeignKeys(e,t,s)})},r).then(function(e){t.setLocalField(s,e)}):a.findAll(o,{where:i.defineProperty({},t.foreignKeys,{isectNotEmpty:n.map(function(n){return a.makeHasManyForeignKeys(e,t,n)})})},r).then(function(e){var r=t.foreignKeys;n.forEach(function(n){var i=[],a=l(n,u);e.forEach(function(t){var n=l(e,r)||[];-1!==n.indexOf(a)&&i.push(t)}),t.setLocalField(n,i)})})},loadHasOne:function(e,t,n,r){return c(n)&&!d(n)&&(n=[n]),this.loadHasMany(e,t,n,r).then(function(){n.forEach(function(e){var n=t.getLocalField(e);d(n)&&n.length&&t.setLocalField(e,n[0])})})},makeBelongsToForeignKey:function(e,t,n){return t.getForeignKey(n)},loadBelongsTo:function(e,t,n,r){var a=this,o=t.getRelation();if(!c(n)||d(n)){var u=n.map(function(n){return a.makeBelongsToForeignKey(e,t,n)}).filter(function(e){return e});return a.findAll(o,{where:i.defineProperty({},o.idAttribute,{in:u})},r).then(function(e){n.forEach(function(n){e.forEach(function(e){e[o.idAttribute]===n[t.foreignKey]&&t.setLocalField(n,e)})})})}var s=function(){var i=n;return{v:a.find(o,a.makeBelongsToForeignKey(e,t,i),r).then(function(e){t.setLocalField(i,e)})}}();return"object"===("undefined"==typeof s?"undefined":i.typeof(s))?s.v:void 0},find:function(e,t,n){var a=this,o=void 0,u=void 0;return n||(n={}),n.with||(n.with=[]),u=n.op="beforeFind",g(a[u](e,t,n)).then(function(){return u=n.op="find",a.dbg(u,e,t,n),g(a._find(e,t,n))}).then(function(t){var r=i.slicedToArray(t,1),u=r[0];if(u){o=u;var s=[];return f(e,n,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,o,n):"hasMany"===t.type&&t.foreignKeys?r=a.loadHasManyForeignKeys(e,t,o,n):"belongsTo"===t.type&&(r=a.loadBelongsTo(e,t,o,n)):r="hasOne"===t.type?a.loadHasOne(e,t,o,n):a.loadHasMany(e,t,o,n),r&&s.push(r)}),Promise.all(s)}}).then(function(){var i=new r(o,{},"find");return i.found=o?1:0,i=a.respond(i,n),u=n.op="afterFind",g(a[u](e,t,n,i)).then(function(e){return p(e)?i:e})})},findAll:function(e,t,n){var a=this;n||(n={}),n.with||(n.with=[]);var u=[],s=void 0,l=n._activeWith;if(c(l)){var d=l.query||{};l.replace?t=d:o(t,d)}return s=n.op="beforeFindAll",g(a[s](e,t,n)).then(function(){return s=n.op="findAll",a.dbg(s,e,t,n),g(a._findAll(e,t,n))}).then(function(t){var r=i.slicedToArray(t,1),o=r[0];o||(o=[]),u=o;var s=[];return f(e,n,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&&s.push(r)}),Promise.all(s)}).then(function(){var i=new r(u,{},"findAll");return i.found=u.length,i=a.respond(i,n),s=n.op="afterFindAll",g(a[s](e,t,n,i)).then(function(e){return p(e)?i:e})})},getOpt:function(e,t){return t||(t={}),y(p(t[e])?this[e]:t[e])},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 a;(a=console)[e].apply(a,[i].concat(n))}else{var o;(o=console).log.apply(o,[i].concat(n))}}},respond:function(e,t){return this.getOpt("raw",t)?e:e.data},update:function(e,t,n,a){var o=this;n||(n={}),a||(a={});var u=void 0;return u=a.op="beforeUpdate",g(o[u](e,t,n,a)).then(function(r){return n=p(r)?n:r,u=a.op="update",o.dbg(u,e,t,n,a),g(o._update(e,t,n,a))}).then(function(s){var f=i.slicedToArray(s,2),l=f[0],d=f[1];d||(d={});var c=new r(l,d,"update");return c.updated=l?1:0,c=o.respond(c,a),u=a.op="afterUpdate",g(o[u](e,t,n,a,c)).then(function(e){return p(e)?c:e})})},updateAll:function(e,t,n,a){var o=this;t||(t={}),n||(n={}),a||(a={});var u=void 0;return u=a.op="beforeUpdateAll",g(o[u](e,t,n,a)).then(function(r){return t=p(r)?t:r,u=a.op="updateAll",o.dbg(u,e,t,n,a),g(o._updateAll(e,t,n,a))}).then(function(s){var f=i.slicedToArray(s,2),l=f[0],d=f[1];l||(l=[]),d||(d={});var c=new r(l,d,"updateAll");return c.updated=l.length,c=o.respond(c,a),u=a.op="afterUpdateAll",g(o[u](e,t,n,a,c)).then(function(e){return p(e)?c:e})})},updateMany:function(e,t,n){var a=this;t||(t=[]),n||(n={});var o=void 0,u=e.idAttribute;return t=t.filter(function(e){return l(e,u)}),o=n.op="beforeUpdateMany",g(a[o](e,t,n)).then(function(r){return t=p(r)?t:r,t=t.map(function(t){return T(e,t)}),o=n.op="updateMany",a.dbg(o,e,t,n),g(a._updateMany(e,t,n))}).then(function(u){var s=i.slicedToArray(u,2),f=s[0],l=s[1];f||(f=[]),l||(l={});var d=new r(f,l,"updateMany");return d.updated=f.length,d=a.respond(d,n),o=n.op="afterUpdateMany",g(a[o](e,t,n,d)).then(function(e){return p(e)?d:e})})}}),e.exports=n})},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 9f15ec1..3fda589 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","_interopRequireDefault","obj","__esModule","default","isValidString","value","join","items","separator","filter","makePath","_len3","arguments","length","args","Array","_key3","result","replace","encode","val","encodeURIComponent","buildUrl","url","params","parts","forOwn","key","isArray","forEach","v","window","toString","toISOString","isObject","toJson","push","indexOf","HttpAdapter","opts","self","fillIn","DEFAULTS","_jsDataAdapter2","_typeof","Symbol","iterator","constructor","_jsData","_jsDataAdapter","axios","_","utils","addHiddenPropsToTarget","copy","deepMixIn","extend","get","isFunction","isNumber","isSorN","isString","isUndefined","resolve","reject","hasFetch","fetch","e","noop","_len","_key","dbg","apply","op","concat","noop2","_len2","_key2","__super__","prototype","basePath","forceTrailingSlash","http","httpConfig","suffix","useFetch","Object","create","enumerable","writable","configurable","defineProperty","afterDEL","afterGET","afterHTTP","afterPOST","afterPUT","beforeDEL","beforeGET","beforeHTTP","beforePOST","beforePUT","_create","mapper","props","POST","getPath","serialize","then","response","_end","_createMany","_destroy","DEL","_destroyAll","query","deserialize","data","_find","GET","_findAll","_update","PUT","_updateAll","_updateMany","records","queryTransform","getSuffix","createMany","config","method","_config","HTTP","_response","hasOwnProperty","destroy","destroyAll","error","console","_console","_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","idAttribute","_ret","_opts","logResponse","str","start","toUTCString","toUpperCase","status","Date","getTime","log","payload","cache","timeout","substr","Error","catch","err","responseError","update","updateAll","updateMany","addAction","TypeError","request","adapter","getAdapter","defaultAdapter","_args","pathname","addActions","version","full","major","parseInt","minor","patch","alpha","beta","global","jsData","Adapter","Response","meta","babelHelpers","typeof","slicedToArray","sliceIterator","arr","i","_arr","_n","_d","_e","undefined","_s","_i","next","done","deepFillIn","forEachRelation","omit","plainCopy","unique","array","seen","final","withoutRelations","relationFields","debug","raw","reserved","afterCreate","afterCreateMany","afterDestroy","afterDestroyAll","afterFind","afterFindAll","afterUpdate","afterUpdateAll","afterUpdateMany","beforeCreate","beforeCreateMany","beforeDestroy","beforeDestroyAll","beforeFind","beforeFindAll","beforeUpdate","beforeUpdateAll","beforeUpdateMany","_props","results","_results","created","respond","map","record","_results2","_results3","_results4","makeHasManyForeignKey","makeHasManyLocalKeys","localKeys","itemKeys","keys","x","makeHasManyForeignKeys","loadHasMany","__opts","singular","IDs","where","criteria","relatedItems","attached","relatedItem","setLocalField","loadHasManyLocalKeys","relatedMapper","in","loadHasManyForeignKeys","foreignKeys","contains","isectNotEmpty","foreignKeysField","_relatedItems","loadHasOne","relatedData","makeBelongsToForeignKey","loadBelongsTo","relationDef","_ret2","with","_results5","_record","tasks","task","Promise","all","found","activeWith","_activeWith","activeQuery","_results6","_records","getOpt","opt","level","_len4","_key4","prefix","_console2","_results7","updated","_results8","_results9"],"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","_interopRequireDefault","obj","__esModule","default","isValidString","value","join","items","separator","filter","makePath","_len3","arguments","length","args","Array","_key3","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","_jsDataAdapter2","_typeof","Symbol","iterator","constructor","_jsDataAdapter","axios","hasFetch","fetch","e","noop","_len","_key","dbg","apply","op","concat","resolve","noop2","_len2","_key2","__super__","prototype","basePath","forceTrailingSlash","http","httpConfig","suffix","useFetch","Object","create","enumerable","writable","configurable","defineProperty","addHiddenPropsToTarget","afterDEL","afterGET","afterHTTP","afterPOST","afterPUT","beforeDEL","beforeGET","beforeHTTP","beforePOST","beforePUT","_count","mapper","query","GET","getPath","then","response","_end","_create","props","POST","serialize","_createMany","_destroy","DEL","_destroyAll","deserialize","data","_find","_findAll","_sum","field","_update","PUT","_updateAll","_updateMany","records","count","getParams","getSuffix","deepMixIn","queryTransform","createMany","config","method","_config","isUndefined","HTTP","_response","isFunction","hasOwnProperty","destroy","destroyAll","error","console","_console","_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","_args","isSorN","pathname","addActions","extend","version","full","major","parseInt","minor","patch","alpha","beta","global","jsData","Adapter","Response","meta","babelHelpers","typeof","slicedToArray","sliceIterator","arr","i","_arr","_n","_d","_e","undefined","_s","_i","next","done","deepFillIn","forEachRelation","omit","plainCopy","unique","array","seen","final","withoutRelations","relationFields","debug","raw","reserved","afterCreate","afterCreateMany","afterDestroy","afterDestroyAll","afterFind","afterFindAll","afterUpdate","afterUpdateAll","afterUpdateMany","beforeCreate","beforeCreateMany","beforeDestroy","beforeDestroyAll","beforeFind","beforeFindAll","beforeUpdate","beforeUpdateAll","beforeUpdateMany","_props","results","_results","created","respond","map","record","_results2","_results3","_results4","makeHasManyForeignKey","makeHasManyLocalKeys","localKeys","itemKeys","keys","x","makeHasManyForeignKeys","loadHasMany","__opts","singular","IDs","where","criteria","relatedItems","attached","relatedItem","setLocalField","loadHasManyLocalKeys","relatedMapper","in","loadHasManyForeignKeys","foreignKeys","contains","isectNotEmpty","foreignKeysField","_relatedItems","loadHasOne","relatedData","makeBelongsToForeignKey","loadBelongsTo","relationDef","_ret2","with","_results5","_record","tasks","task","Promise","all","found","activeWith","_activeWith","activeQuery","_results6","_records","getOpt","opt","level","_len4","_key4","prefix","_console2","_results7","updated","_results8","_results9"],"mappings":"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","file":"fetch/dist/js-data-fetch.min.js"} \ No newline at end of file diff --git a/fetch/package.json b/fetch/package.json index e553b24..efe8073 100644 --- a/fetch/package.json +++ b/fetch/package.json @@ -1,7 +1,7 @@ { "name": "js-data-fetch", "description": "HTTP adapter for js-data that uses the fetch API.", - "version": "3.0.0-alpha.8", + "version": "3.0.0-alpha.9", "homepage": "https://github.com/js-data/js-data-http", "repository": { "type": "git", @@ -19,6 +19,6 @@ "fetch" ], "peerDependencies": { - "js-data": "^3.0.0-alpha.19" + "js-data": "^3.0.0-alpha.20" } } diff --git a/node/dist/js-data-http-node.js b/node/dist/js-data-http-node.js index 354c987..ef5b514 100644 --- a/node/dist/js-data-http-node.js +++ b/node/dist/js-data-http-node.js @@ -68,24 +68,6 @@ return /******/ (function(modules) { // webpackBootstrap /* global fetch:true Headers:true Request:true */ var axios = __webpack_require__(3); - var _ = _jsData.utils._; - var addHiddenPropsToTarget = _jsData.utils.addHiddenPropsToTarget; - var copy = _jsData.utils.copy; - var deepMixIn = _jsData.utils.deepMixIn; - var extend = _jsData.utils.extend; - var fillIn = _jsData.utils.fillIn; - var forOwn = _jsData.utils.forOwn; - var get = _jsData.utils.get; - var isArray = _jsData.utils.isArray; - var isFunction = _jsData.utils.isFunction; - var isNumber = _jsData.utils.isNumber; - var isObject = _jsData.utils.isObject; - var isSorN = _jsData.utils.isSorN; - var isString = _jsData.utils.isString; - var isUndefined = _jsData.utils.isUndefined; - var resolve = _jsData.utils.resolve; - var reject = _jsData.utils.reject; - var toJson = _jsData.utils.toJson; var hasFetch = false; @@ -103,7 +85,7 @@ return /******/ (function(modules) { // webpackBootstrap var opts = args[args.length - 1]; self.dbg.apply(self, [opts.op].concat(args)); - return resolve(); + return _jsData.utils.resolve(); }; var noop2 = function noop2() { @@ -115,7 +97,7 @@ return /******/ (function(modules) { // webpackBootstrap var opts = args[args.length - 2]; self.dbg.apply(self, [opts.op].concat(args)); - return resolve(); + return _jsData.utils.resolve(); }; function isValidString(value) { @@ -145,19 +127,19 @@ return /******/ (function(modules) { // webpackBootstrap var parts = []; - forOwn(params, function (val, key) { + _jsData.utils.forOwn(params, function (val, key) { if (val === null || typeof val === 'undefined') { return; } - if (!isArray(val)) { + if (!_jsData.utils.isArray(val)) { val = [val]; } val.forEach(function (v) { if (window.toString.call(v) === '[object Date]') { v = v.toISOString(); - } else if (isObject(v)) { - v = toJson(v); + } else if (_jsData.utils.isObject(v)) { + v = _jsData.utils.toJson(v); } parts.push(encode(key) + '=' + encode(v)); }); @@ -229,7 +211,7 @@ return /******/ (function(modules) { // webpackBootstrap function HttpAdapter(opts) { var self = this; opts || (opts = {}); - fillIn(opts, DEFAULTS); + _jsData.utils.fillIn(opts, DEFAULTS); _jsDataAdapter2.default.call(self, opts); } @@ -248,7 +230,7 @@ return /******/ (function(modules) { // webpackBootstrap value: _jsDataAdapter2.default }); - addHiddenPropsToTarget(HttpAdapter.prototype, { + _jsData.utils.addHiddenPropsToTarget(HttpAdapter.prototype, { /** * @name HttpAdapter#afterDEL * @method @@ -346,6 +328,12 @@ return /******/ (function(modules) { // webpackBootstrap */ beforePUT: noop, + _count: function _count(mapper, query, opts) { + var self = this; + return self.GET(self.getPath('count', mapper, opts.params, opts), opts).then(function (response) { + return self._end(mapper, opts, response); + }); + }, _create: function _create(mapper, props, opts) { var self = this; return self.POST(self.getPath('create', mapper, props, opts), self.serialize(mapper, props, opts), opts).then(function (response) { @@ -385,6 +373,12 @@ return /******/ (function(modules) { // webpackBootstrap return self._end(mapper, opts, response); }); }, + _sum: function _sum(mapper, field, query, opts) { + var self = this; + return self.GET(self.getPath('sum', mapper, opts.params, opts), opts).then(function (response) { + return self._end(mapper, opts, response); + }); + }, _update: function _update(mapper, id, props, opts) { var self = this; return self.PUT(self.getPath('update', mapper, id, opts), self.serialize(mapper, props, opts), opts).then(function (response) { @@ -405,6 +399,32 @@ return /******/ (function(modules) { // webpackBootstrap }, + /** + * Retrieve the number of records that match the selection `query`. + * + * @name HttpAdapter#count + * @method + * @param {Object} mapper The mapper. + * @param {Object} query Selection query. + * @param {Object} [opts] Configuration options. + * @param {string} [opts.params] TODO + * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO + * @return {Promise} + */ + count: function count(mapper, query, opts) { + var self = this; + query || (query = {}); + opts || (opts = {}); + opts.params = self.getParams(opts); + opts.params.count = true; + opts.suffix = self.getSuffix(mapper, opts); + _jsData.utils.deepMixIn(opts.params, query); + opts.params = self.queryTransform(mapper, opts.params, opts); + + return __super__.count.call(self, mapper, query, opts); + }, + + /** * Create a new the record from the provided `props`. * @@ -419,8 +439,8 @@ return /******/ (function(modules) { // webpackBootstrap */ create: function create(mapper, props, opts) { var self = this; - opts = opts ? copy(opts) : {}; - opts.params || (opts.params = {}); + opts || (opts = {}); + opts.params = self.getParams(opts); opts.params = self.queryTransform(mapper, opts.params, opts); opts.suffix = self.getSuffix(mapper, opts); @@ -442,8 +462,8 @@ return /******/ (function(modules) { // webpackBootstrap */ createMany: function createMany(mapper, props, opts) { var self = this; - opts = opts ? copy(opts) : {}; - opts.params || (opts.params = {}); + opts || (opts = {}); + opts.params = self.getParams(opts); opts.params = self.queryTransform(mapper, opts.params, opts); opts.suffix = self.getSuffix(mapper, opts); @@ -472,18 +492,18 @@ return /******/ (function(modules) { // webpackBootstrap // beforeDEL lifecycle hook op = opts.op = 'beforeDEL'; - return resolve(self[op](url, config, opts)).then(function (_config) { + return _jsData.utils.resolve(self[op](url, config, opts)).then(function (_config) { // Allow re-assignment from lifecycle hook - config = isUndefined(_config) ? config : _config; + config = _jsData.utils.isUndefined(_config) ? config : _config; op = opts.op = 'DEL'; self.dbg(op, url, config, opts); return self.HTTP(config, opts); }).then(function (response) { // afterDEL lifecycle hook op = opts.op = 'afterDEL'; - return resolve(self[op](url, config, opts, response)).then(function (_response) { + return _jsData.utils.resolve(self[op](url, config, opts, response)).then(function (_response) { // Allow re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return _jsData.utils.isUndefined(_response) ? response : _response; }); }); }, @@ -502,10 +522,10 @@ return /******/ (function(modules) { // webpackBootstrap */ deserialize: function deserialize(mapper, response, opts) { opts || (opts = {}); - if (isFunction(opts.deserialize)) { + if (_jsData.utils.isFunction(opts.deserialize)) { return opts.deserialize(mapper, response, opts); } - if (isFunction(mapper.deserialize)) { + if (_jsData.utils.isFunction(mapper.deserialize)) { return mapper.deserialize(mapper, response, opts); } if (response) { @@ -531,8 +551,8 @@ return /******/ (function(modules) { // webpackBootstrap */ destroy: function destroy(mapper, id, opts) { var self = this; - opts = opts ? copy(opts) : {}; - opts.params || (opts.params = {}); + opts || (opts = {}); + opts.params = self.getParams(opts); opts.params = self.queryTransform(mapper, opts.params, opts); opts.suffix = self.getSuffix(mapper, opts); @@ -555,9 +575,9 @@ return /******/ (function(modules) { // webpackBootstrap destroyAll: function destroyAll(mapper, query, opts) { var self = this; query || (query = {}); - opts = opts ? copy(opts) : {}; - opts.params || (opts.params = {}); - deepMixIn(opts.params, query); + opts || (opts = {}); + opts.params = self.getParams(opts); + _jsData.utils.deepMixIn(opts.params, query); opts.params = self.queryTransform(mapper, opts.params, opts); opts.suffix = self.getSuffix(mapper, opts); @@ -612,7 +632,7 @@ return /******/ (function(modules) { // webpackBootstrap }; if (config.data) { - requestConfig.body = toJson(config.data); + requestConfig.body = _jsData.utils.toJson(config.data); } return fetch(new Request(buildUrl(config.url, config.params), requestConfig)).then(function (response) { @@ -642,8 +662,8 @@ return /******/ (function(modules) { // webpackBootstrap */ find: function find(mapper, id, opts) { var self = this; - opts = opts ? copy(opts) : {}; - opts.params || (opts.params = {}); + opts || (opts = {}); + opts.params = self.getParams(opts); opts.params = self.queryTransform(mapper, opts.params, opts); opts.suffix = self.getSuffix(mapper, opts); @@ -666,10 +686,10 @@ return /******/ (function(modules) { // webpackBootstrap findAll: function findAll(mapper, query, opts) { var self = this; query || (query = {}); - opts = opts ? copy(opts) : {}; - opts.params || (opts.params = {}); + opts || (opts = {}); + opts.params = self.getParams(opts); opts.suffix = self.getSuffix(mapper, opts); - deepMixIn(opts.params, query); + _jsData.utils.deepMixIn(opts.params, query); opts.params = self.queryTransform(mapper, opts.params, opts); return __super__.findAll.call(self, mapper, query, opts); @@ -696,18 +716,18 @@ return /******/ (function(modules) { // webpackBootstrap // beforeGET lifecycle hook op = opts.op = 'beforeGET'; - return resolve(self[op](url, config, opts)).then(function (_config) { + return _jsData.utils.resolve(self[op](url, config, opts)).then(function (_config) { // Allow re-assignment from lifecycle hook - config = isUndefined(_config) ? config : _config; + config = _jsData.utils.isUndefined(_config) ? config : _config; op = opts.op = 'GET'; self.dbg(op, url, config, opts); return self.HTTP(config, opts); }).then(function (response) { // afterGET lifecycle hook op = opts.op = 'afterGET'; - return resolve(self[op](url, config, opts, response)).then(function (_response) { + return _jsData.utils.resolve(self[op](url, config, opts, response)).then(function (_response) { // Allow re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return _jsData.utils.isUndefined(_response) ? response : _response; }); }); }, @@ -724,9 +744,9 @@ return /******/ (function(modules) { // webpackBootstrap getEndpoint: function getEndpoint(mapper, id, opts) { var self = this; opts || (opts = {}); - opts.params || (opts.params = {}); + opts.params = _jsData.utils.isUndefined(opts.params) ? {} : opts.params; var relationList = mapper.relationList || []; - var endpoint = isUndefined(opts.endpoint) ? isUndefined(mapper.endpoint) ? mapper.name : mapper.endpoint : opts.endpoint; + var endpoint = _jsData.utils.isUndefined(opts.endpoint) ? _jsData.utils.isUndefined(mapper.endpoint) ? mapper.name : mapper.endpoint : opts.endpoint; relationList.forEach(function (def) { if (def.type !== 'belongsTo' || !def.parent) { @@ -745,22 +765,22 @@ return /******/ (function(modules) { // webpackBootstrap } else { delete opts.params[parentKey]; - if (isObject(id)) { + if (_jsData.utils.isObject(id)) { item = id; } if (item) { - parentId = parentId || def.getForeignKey(item) || (def.getLocalField(item) ? get(def.getLocalField(item), parentDef.idAttribute) : null); + parentId = parentId || def.getForeignKey(item) || (def.getLocalField(item) ? _jsData.utils.get(def.getLocalField(item), parentDef.idAttribute) : null); } if (parentId) { var _ret = function () { delete opts.endpoint; var _opts = {}; - forOwn(opts, function (value, key) { + _jsData.utils.forOwn(opts, function (value, key) { _opts[key] = value; }); - _(_opts, parentDef); + _jsData.utils._(_opts, parentDef); endpoint = makePath(self.getEndpoint(parentDef, parentId, _opts), parentId, endpoint); return { v: false @@ -787,16 +807,23 @@ return /******/ (function(modules) { // webpackBootstrap getPath: function getPath(method, mapper, id, opts) { var self = this; opts || (opts = {}); - var args = [isUndefined(opts.basePath) ? isUndefined(mapper.basePath) ? self.basePath : mapper.basePath : opts.basePath, self.getEndpoint(mapper, isString(id) || isNumber(id) || method === 'create' ? id : null, opts)]; + var args = [_jsData.utils.isUndefined(opts.basePath) ? _jsData.utils.isUndefined(mapper.basePath) ? self.basePath : mapper.basePath : opts.basePath, self.getEndpoint(mapper, _jsData.utils.isString(id) || _jsData.utils.isNumber(id) || method === 'create' ? id : null, opts)]; if (method === 'find' || method === 'update' || method === 'destroy') { args.push(id); } return makePath.apply(_jsData.utils, args); }, + getParams: function getParams(opts) { + opts || (opts = {}); + if (_jsData.utils.isUndefined(opts.params)) { + return {}; + } + return _jsData.utils.copy(opts.params); + }, getSuffix: function getSuffix(mapper, opts) { opts || (opts = {}); - if (isUndefined(opts.suffix)) { - if (isUndefined(mapper.suffix)) { + if (_jsData.utils.isUndefined(opts.suffix)) { + if (_jsData.utils.isUndefined(mapper.suffix)) { return this.suffix; } return mapper.suffix; @@ -821,8 +848,8 @@ return /******/ (function(modules) { // webpackBootstrap var payload = config.data; var cache = config.cache; var timeout = config.timeout; - config = copy(config, null, null, null, ['data', 'cache', 'timeout']); - config = deepMixIn(config, self.httpConfig); + config = _jsData.utils.copy(config, null, null, null, ['data', 'cache', 'timeout']); + config = _jsData.utils.deepMixIn(config, self.httpConfig); config.data = payload; config.cache = cache; config.timeout = timeout; @@ -846,7 +873,7 @@ return /******/ (function(modules) { // webpackBootstrap if (self.error) { self.error('\'FAILED: ' + str, data); } - return reject(data); + return _jsData.utils.reject(data); } } @@ -854,7 +881,7 @@ return /******/ (function(modules) { // webpackBootstrap throw new Error('You have not configured this adapter with an http library!'); } - return resolve(self.beforeHTTP(config, opts)).then(function (_config) { + return _jsData.utils.resolve(self.beforeHTTP(config, opts)).then(function (_config) { config = _config || config; if (hasFetch && (self.useFetch || opts.useFetch || !self.http)) { return self.fetch(config, opts).then(logResponse, logResponse); @@ -863,7 +890,7 @@ return /******/ (function(modules) { // webpackBootstrap return self.responseError(err, config, opts); }); }).then(function (response) { - return resolve(self.afterHTTP(config, opts, response)).then(function (_response) { + return _jsData.utils.resolve(self.afterHTTP(config, opts, response)).then(function (_response) { return _response || response; }); }); @@ -892,18 +919,18 @@ return /******/ (function(modules) { // webpackBootstrap // beforePOST lifecycle hook op = opts.op = 'beforePOST'; - return resolve(self[op](url, data, config, opts)).then(function (_config) { + return _jsData.utils.resolve(self[op](url, data, config, opts)).then(function (_config) { // Allow re-assignment from lifecycle hook - config = isUndefined(_config) ? config : _config; + config = _jsData.utils.isUndefined(_config) ? config : _config; op = opts.op = 'POST'; self.dbg(op, url, data, config, opts); return self.HTTP(config, opts); }).then(function (response) { // afterPOST lifecycle hook op = opts.op = 'afterPOST'; - return resolve(self[op](url, data, config, opts, response)).then(function (_response) { + return _jsData.utils.resolve(self[op](url, data, config, opts, response)).then(function (_response) { // Allow re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return _jsData.utils.isUndefined(_response) ? response : _response; }); }); }, @@ -931,18 +958,18 @@ return /******/ (function(modules) { // webpackBootstrap // beforePUT lifecycle hook op = opts.op = 'beforePUT'; - return resolve(self[op](url, data, config, opts)).then(function (_config) { + return _jsData.utils.resolve(self[op](url, data, config, opts)).then(function (_config) { // Allow re-assignment from lifecycle hook - config = isUndefined(_config) ? config : _config; + config = _jsData.utils.isUndefined(_config) ? config : _config; op = opts.op = 'PUT'; self.dbg(op, url, data, config, opts); return self.HTTP(config, opts); }).then(function (response) { // afterPUT lifecycle hook op = opts.op = 'afterPUT'; - return resolve(self[op](url, data, config, opts, response)).then(function (_response) { + return _jsData.utils.resolve(self[op](url, data, config, opts, response)).then(function (_response) { // Allow re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return _jsData.utils.isUndefined(_response) ? response : _response; }); }); }, @@ -960,10 +987,10 @@ return /******/ (function(modules) { // webpackBootstrap */ queryTransform: function queryTransform(mapper, params, opts) { opts || (opts = {}); - if (isFunction(opts.queryTransform)) { + if (_jsData.utils.isFunction(opts.queryTransform)) { return opts.queryTransform(mapper, params, opts); } - if (isFunction(mapper.queryTransform)) { + if (_jsData.utils.isFunction(mapper.queryTransform)) { return mapper.queryTransform(mapper, params, opts); } return params; @@ -984,7 +1011,7 @@ return /******/ (function(modules) { // webpackBootstrap * @return {Promise} */ responseError: function responseError(err, config, opts) { - return reject(err); + return _jsData.utils.reject(err); }, @@ -1000,16 +1027,46 @@ return /******/ (function(modules) { // webpackBootstrap */ serialize: function serialize(mapper, data, opts) { opts || (opts = {}); - if (isFunction(opts.serialize)) { + if (_jsData.utils.isFunction(opts.serialize)) { return opts.serialize(mapper, data, opts); } - if (isFunction(mapper.serialize)) { + if (_jsData.utils.isFunction(mapper.serialize)) { return mapper.serialize(mapper, data, opts); } return data; }, + /** + * Retrieve the sum of the field of the records that match the selection query. + * + * @name HttpAdapter#sum + * @method + * @param {Object} mapper The mapper. + * @param {string} field The field to sum. + * @param {Object} query Selection query. + * @param {Object} [opts] Configuration options. + * @param {string} [opts.params] TODO + * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO + * @return {Promise} + */ + sum: function sum(mapper, field, query, opts) { + var self = this; + query || (query = {}); + opts || (opts = {}); + if (!_jsData.utils.utils.isString(field)) { + throw new Error('field must be a string!'); + } + opts.params = self.getParams(opts); + opts.params.sum = field; + opts.suffix = self.getSuffix(mapper, opts); + _jsData.utils.deepMixIn(opts.params, query); + opts.params = self.queryTransform(mapper, opts.params, opts); + + return __super__.sum.call(self, mapper, field, query, opts); + }, + + /** * TODO * @@ -1023,8 +1080,8 @@ return /******/ (function(modules) { // webpackBootstrap */ update: function update(mapper, id, props, opts) { var self = this; - opts = opts ? copy(opts) : {}; - opts.params || (opts.params = {}); + opts || (opts = {}); + opts.params = self.getParams(opts); opts.params = self.queryTransform(mapper, opts.params, opts); opts.suffix = self.getSuffix(mapper, opts); @@ -1046,9 +1103,9 @@ return /******/ (function(modules) { // webpackBootstrap updateAll: function updateAll(mapper, props, query, opts) { var self = this; query || (query = {}); - opts = opts ? copy(opts) : {}; - opts.params || (opts.params = {}); - deepMixIn(opts.params, query); + opts || (opts = {}); + opts.params = self.getParams(opts); + _jsData.utils.deepMixIn(opts.params, query); opts.params = self.queryTransform(mapper, opts.params, opts); opts.suffix = self.getSuffix(mapper, opts); @@ -1075,8 +1132,8 @@ return /******/ (function(modules) { // webpackBootstrap */ updateMany: function updateMany(mapper, records, opts) { var self = this; - opts = opts ? copy(opts) : {}; - opts.params || (opts.params = {}); + opts || (opts = {}); + opts.params = self.getParams(opts); opts.params = self.queryTransform(mapper, opts.params, opts); opts.suffix = self.getSuffix(mapper, opts); @@ -1100,7 +1157,7 @@ return /******/ (function(modules) { // webpackBootstrap * decorate when invoked. */ HttpAdapter.addAction = function (name, opts) { - if (!name || !isString(name)) { + if (!name || !_jsData.utils.isString(name)) { throw new TypeError('action(name[, opts]): Expected: string, Found: ' + (typeof name === 'undefined' ? 'undefined' : _typeof(name))); } return function (mapper) { @@ -1114,25 +1171,25 @@ return /******/ (function(modules) { // webpackBootstrap return response; }; opts.responseError = opts.responseError || function (err) { - return reject(err); + return _jsData.utils.reject(err); }; mapper[name] = function (id, _opts) { var self = this; - if (isObject(id)) { + if (_jsData.utils.isObject(id)) { _opts = id; } _opts = _opts || {}; var adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http'); var config = {}; - fillIn(config, opts); + _jsData.utils.fillIn(config, opts); if (!_opts.hasOwnProperty('endpoint') && config.endpoint) { _opts.endpoint = config.endpoint; } if (typeof _opts.getEndpoint === 'function') { config.url = _opts.getEndpoint(self, _opts); } else { - var _args = [_opts.basePath || self.basePath || adapter.basePath, adapter.getEndpoint(self, isSorN(id) ? id : null, _opts)]; - if (isSorN(id)) { + var _args = [_opts.basePath || self.basePath || adapter.basePath, adapter.getEndpoint(self, _jsData.utils.isSorN(id) ? id : null, _opts)]; + if (_jsData.utils.isSorN(id)) { _args.push(id); } _args.push(opts.pathname || name); @@ -1140,8 +1197,8 @@ return /******/ (function(modules) { // webpackBootstrap } config.method = config.method || 'GET'; config.mapper = self.name; - deepMixIn(config)(_opts); - return resolve(config).then(_opts.request || opts.request).then(function (config) { + _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) { if (data && data.config) { @@ -1168,7 +1225,7 @@ return /******/ (function(modules) { // webpackBootstrap HttpAdapter.addActions = function (opts) { opts || (opts = {}); return function (mapper) { - forOwn(mapper, function (value, key) { + _jsData.utils.forOwn(mapper, function (value, key) { HttpAdapter.addAction(key, value)(mapper); }); return mapper; @@ -1221,7 +1278,7 @@ return /******/ (function(modules) { // webpackBootstrap * properties to the subclass itself. * @return {Object} Subclass of `HttpAdapter`. */ - HttpAdapter.extend = extend; + HttpAdapter.extend = _jsData.utils.extend; /** * Details of the current version of the `js-data-http` module. diff --git a/node/dist/js-data-http-node.js.map b/node/dist/js-data-http-node.js.map index 2c658b8..2bd640d 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 78e84a8e31491c279a63","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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O;AACP;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;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,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;;AAEA;;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,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,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;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;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,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;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;;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;AACA,iBAAgB;AAChB;AACA;AACA;AACA,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,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,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,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,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;;AAEA,EAAC;AACD,4C;;;;;;AC36CA,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 78e84a8e31491c279a63\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nimport Adapter from 'js-data-adapter'\n\nconst {\n _,\n addHiddenPropsToTarget,\n copy,\n deepMixIn,\n extend,\n fillIn,\n forOwn,\n get,\n isArray,\n isFunction,\n isNumber,\n isObject,\n isSorN,\n isString,\n isUndefined,\n resolve,\n reject,\n toJson\n} = utils\n\nlet hasFetch = false\n\ntry {\n hasFetch = window && window.fetch\n} catch (e) {}\n\nconst noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n return resolve()\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n return resolve()\n}\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 forOwn(params, function (val, key) {\n if (val === null || typeof val === 'undefined') {\n return\n }\n if (!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 (isObject(v)) {\n v = 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 * @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 fillIn(opts, DEFAULTS)\n Adapter.call(self, opts)\n}\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\naddHiddenPropsToTarget(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 _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.data, 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 _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 * 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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.deserialize)) {\n return opts.deserialize(mapper, response, opts)\n }\n if (isFunction(mapper.deserialize)) {\n return mapper.deserialize(mapper, response, opts)\n }\n if (response) {\n if (response.hasOwnProperty('data')) {\n return response.data\n }\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\n 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 = 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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\n opts.suffix = self.getSuffix(mapper, opts)\n 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 resolve(self[op](url, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 || (opts.params = {})\n const relationList = mapper.relationList || []\n let endpoint = isUndefined(opts.endpoint) ? (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 (isObject(id)) {\n item = id\n }\n\n if (item) {\n parentId = parentId || def.getForeignKey(item) || (def.getLocalField(item) ? get(def.getLocalField(item), parentDef.idAttribute) : null)\n }\n\n if (parentId) {\n delete opts.endpoint\n const _opts = {}\n forOwn(opts, function (value, key) {\n _opts[key] = value\n })\n _(_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 isUndefined(opts.basePath) ? (isUndefined(mapper.basePath) ? self.basePath : mapper.basePath) : opts.basePath,\n self.getEndpoint(mapper, (isString(id) || 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 getSuffix (mapper, opts) {\n opts || (opts = {})\n if (isUndefined(opts.suffix)) {\n if (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 = copy(config, null, null, null, ['data', 'cache', 'timeout'])\n config = 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 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 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 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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 resolve(self[op](url, data, config, opts)).then(function (_config) {\n // Allow re-assignment from lifecycle hook\n config = 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 resolve(self[op](url, data, config, opts, response)).then(function (_response) {\n // Allow re-assignment from lifecycle hook\n return 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 (isFunction(opts.queryTransform)) {\n return opts.queryTransform(mapper, params, opts)\n }\n if (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 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 (isFunction(opts.serialize)) {\n return opts.serialize(mapper, data, opts)\n }\n if (isFunction(mapper.serialize)) {\n return mapper.serialize(mapper, data, opts)\n }\n return data\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 ? copy(opts) : {}\n opts.params || (opts.params = {})\n 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 ? copy(opts) : {}\n opts.params || (opts.params = {})\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 HttpAdapter.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 */\nHttpAdapter.addAction = function (name, opts) {\n if (!name || !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 reject(err) }\n mapper[name] = function (id, _opts) {\n const self = this\n if (isObject(id)) {\n _opts = id\n }\n _opts = _opts || {}\n let adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http')\n let config = {}\n 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, isSorN(id) ? id : null, _opts)\n ]\n if (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 deepMixIn(config)(_opts)\n return 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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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 = extend\n\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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(require('js-data')) :\n typeof define === 'function' && define.amd ? define('js-data-adapter', ['js-data'], factory) :\n (factory(global.JSData));\n}(this, function (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 addHiddenPropsToTarget = jsData.utils.addHiddenPropsToTarget;\n var deepFillIn = jsData.utils.deepFillIn;\n var extend = jsData.utils.extend;\n var fillIn = jsData.utils.fillIn;\n var forEachRelation = jsData.utils.forEachRelation;\n var get = jsData.utils.get;\n var isArray = jsData.utils.isArray;\n var isObject = jsData.utils.isObject;\n var isUndefined = jsData.utils.isUndefined;\n var omit = jsData.utils.omit;\n var plainCopy = jsData.utils.plainCopy;\n var resolve = jsData.utils.resolve;\n\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 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 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 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 fillIn(opts, DEFAULTS);\n fillIn(self, opts);\n }\n\n Adapter.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 * @typedef {Object} Response\n * @property {Object} data Response data.\n * @property {string} op The operation for which the response was created.\n */\n function Response(data, meta, op) {\n var self = this;\n meta || (meta = {});\n self.data = data;\n fillIn(self, meta);\n self.op = op;\n }\n\n Adapter.Response = Response;\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 = extend;\n\n addHiddenPropsToTarget(Adapter.prototype, {\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 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 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 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 * 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 resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n props = withoutRelations(mapper, props);\n op = opts.op = 'create';\n self.dbg(op, mapper, props, opts);\n return resolve(self._create(mapper, props, 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, '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 resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = 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 resolve(self._createMany(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 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 resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy';\n self.dbg(op, mapper, id, opts);\n return resolve(self._destroy(mapper, id, 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 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 resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll';\n self.dbg(op, mapper, query, opts);\n return resolve(self._destroyAll(mapper, query, 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, 'destroyAll');\n response = self.respond(response, opts);\n\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll';\n return resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return isUndefined(_response) ? response : _response;\n });\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 = get(record, def.localKeys) || [];\n itemKeys = 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 get(record, mapper.idAttribute);\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 (isObject(records) && !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 (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 (isObject(records) && !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 _ret = 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 = get(item, def.localKeys) || [];\n itemKeys = 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 _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === \"object\") return _ret.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 (isObject(records) && !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 = get(record, idAttribute);\n relatedItems.forEach(function (relatedItem) {\n var foreignKeys = 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 (isObject(records) && !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 (isArray(relatedData) && relatedData.length) {\n def.setLocalField(record, relatedData[0]);\n }\n });\n });\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 * 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 (isObject(records) && !isArray(records)) {\n var _ret2 = 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 _ret2 === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret2)) === \"object\") return _ret2.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 resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find';\n self.dbg(op, mapper, id, opts);\n return resolve(self._find(mapper, id, opts));\n }).then(function (results) {\n var _results5 = babelHelpers.slicedToArray(results, 1);\n\n var _record = _results5[0];\n\n if (!_record) {\n return;\n }\n record = _record;\n var tasks = [];\n\n 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 resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 (isObject(activeWith)) {\n var activeQuery = activeWith.query || {};\n if (activeWith.replace) {\n query = activeQuery;\n } else {\n deepFillIn(query, activeQuery);\n }\n }\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll';\n return resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll';\n self.dbg(op, mapper, query, opts);\n return resolve(self._findAll(mapper, query, opts));\n }).then(function (results) {\n var _results6 = babelHelpers.slicedToArray(results, 1);\n\n var _records = _results6[0];\n\n _records || (_records = []);\n records = _records;\n var tasks = [];\n 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 resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 isUndefined(opts[opt]) ? plainCopy(this[opt]) : plainCopy(opts[opt]);\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 * @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 resolve(self[op](mapper, id, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n op = opts.op = 'update';\n self.dbg(op, mapper, id, props, opts);\n return resolve(self._update(mapper, id, props, opts));\n }).then(function (results) {\n var _results7 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results7[0];\n var result = _results7[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 resolve(self[op](mapper, id, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, props, query, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n op = opts.op = 'updateAll';\n self.dbg(op, mapper, props, query, opts);\n return resolve(self._updateAll(mapper, props, 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 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 resolve(self[op](mapper, props, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 get(record, idAttribute);\n });\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany';\n return resolve(self[op](mapper, records, opts)).then(function (_records) {\n // Allow for re-assignment from lifecycle hook\n records = 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 resolve(self._updateMany(mapper, records, 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 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 resolve(self[op](mapper, records, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return isUndefined(_response) ? response : _response;\n });\n });\n }\n });\n\n module.exports = Adapter;\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 9287d465dd3438b91c71","webpack:///./src/index.js","webpack:///external \"js-data\"","webpack:///./~/js-data-adapter/dist/js-data-adapter.js","webpack:///external \"axios\""],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;;;ACpCA;;AACA;;;;;;;AAFA,KAAM,QAAQ,oBAAQ,CAAR,CAAR;;;AAIN,KAAI,WAAW,KAAX;;AAEJ,KAAI;AACF,cAAW,UAAU,OAAO,KAAP,CADnB;EAAJ,CAEE,OAAO,CAAP,EAAU,EAAV;;AAEF,KAAM,OAAO,SAAP,IAAO,GAAmB;AAC9B,OAAM,OAAO,IAAP,CADwB;;qCAAN;;IAAM;;AAE9B,OAAM,OAAO,KAAK,KAAK,MAAL,GAAc,CAAd,CAAZ,CAFwB;AAG9B,QAAK,GAAL,cAAS,KAAK,EAAL,SAAY,KAArB,EAH8B;AAI9B,UAAO,cAAM,OAAN,EAAP,CAJ8B;EAAnB;;AAOb,KAAM,QAAQ,SAAR,KAAQ,GAAmB;AAC/B,OAAM,OAAO,IAAP,CADyB;;sCAAN;;IAAM;;AAE/B,OAAM,OAAO,KAAK,KAAK,MAAL,GAAc,CAAd,CAAZ,CAFyB;AAG/B,QAAK,GAAL,cAAS,KAAK,EAAL,SAAY,KAArB,EAH+B;AAI/B,UAAO,cAAM,OAAN,EAAP,CAJ+B;EAAnB;;AAOd,UAAS,aAAT,CAAwB,KAAxB,EAA+B;AAC7B,UAAQ,SAAS,IAAT,IAAiB,UAAU,EAAV,CADI;EAA/B;AAGA,UAAS,IAAT,CAAe,KAAf,EAAsB,SAAtB,EAAiC;AAC/B,iBAAc,YAAY,EAAZ,CAAd,CAD+B;AAE/B,UAAO,MAAM,MAAN,CAAa,aAAb,EAA4B,IAA5B,CAAiC,SAAjC,CAAP,CAF+B;EAAjC;AAIA,UAAS,QAAT,GAA4B;sCAAN;;IAAM;;AAC1B,OAAI,SAAS,KAAK,IAAL,EAAW,GAAX,CAAT,CADsB;AAE1B,UAAO,OAAO,OAAP,CAAe,mBAAf,EAAoC,KAApC,CAAP,CAF0B;EAA5B;;AAKA,UAAS,MAAT,CAAiB,GAAjB,EAAsB;AACpB,UAAO,mBAAmB,GAAnB,EACJ,OADI,CACI,OADJ,EACa,GADb,EAEJ,OAFI,CAEI,OAFJ,EAEa,GAFb,EAGJ,OAHI,CAGI,MAHJ,EAGY,GAHZ,EAIJ,OAJI,CAII,OAJJ,EAIa,GAJb,EAKJ,OALI,CAKI,MALJ,EAKY,GALZ,EAMJ,OANI,CAMI,OANJ,EAMa,GANb,EAOJ,OAPI,CAOI,OAPJ,EAOa,GAPb,CAAP,CADoB;EAAtB;;AAWA,UAAS,QAAT,CAAmB,GAAnB,EAAwB,MAAxB,EAAgC;AAC9B,OAAI,CAAC,MAAD,EAAS;AACX,YAAO,GAAP,CADW;IAAb;;AAIA,OAAM,QAAQ,EAAR,CALwB;;AAO9B,iBAAM,MAAN,CAAa,MAAb,EAAqB,UAAU,GAAV,EAAe,GAAf,EAAoB;AACvC,SAAI,QAAQ,IAAR,IAAgB,OAAO,GAAP,KAAe,WAAf,EAA4B;AAC9C,cAD8C;MAAhD;AAGA,SAAI,CAAC,cAAM,OAAN,CAAc,GAAd,CAAD,EAAqB;AACvB,aAAM,CAAC,GAAD,CAAN,CADuB;MAAzB;;AAIA,SAAI,OAAJ,CAAY,UAAU,CAAV,EAAa;AACvB,WAAI,OAAO,QAAP,CAAgB,IAAhB,CAAqB,CAArB,MAA4B,eAA5B,EAA6C;AAC/C,aAAI,EAAE,WAAF,EAAJ,CAD+C;QAAjD,MAEO,IAAI,cAAM,QAAN,CAAe,CAAf,CAAJ,EAAuB;AAC5B,aAAI,cAAM,MAAN,CAAa,CAAb,CAAJ,CAD4B;QAAvB;AAGP,aAAM,IAAN,CAAc,OAAO,GAAP,UAAe,OAAO,CAAP,CAA7B,EANuB;MAAb,CAAZ,CARuC;IAApB,CAArB,CAP8B;;AAyB9B,OAAI,MAAM,MAAN,GAAe,CAAf,EAAkB;AACpB,YAAO,CAAC,IAAI,OAAJ,CAAY,GAAZ,MAAqB,CAAC,CAAD,GAAK,GAA1B,GAAgC,GAAhC,CAAD,GAAwC,MAAM,IAAN,CAAW,GAAX,CAAxC,CADa;IAAtB;;AAIA,UAAO,GAAP,CA7B8B;EAAhC;;AAgCA,KAAM,YAAY,wBAAQ,SAAR;;AAElB,KAAM,WAAW;;;;;;AAMf,aAAU,EAAV;;;;;;;AAOA,uBAAoB,KAApB;;;;;;AAMA,SAAM,KAAN;;;;;;AAMA,eAAY,EAAZ;;;;;;AAMA,WAAQ,EAAR;;;;;;;AAOA,aAAU,KAAV;EAtCI;;;;;;;;;;;;;;;AAsDN,UAAS,WAAT,CAAsB,IAAtB,EAA4B;AAC1B,OAAM,OAAO,IAAP,CADoB;AAE1B,YAAS,OAAO,EAAP,CAAT,CAF0B;AAG1B,iBAAM,MAAN,CAAa,IAAb,EAAmB,QAAnB,EAH0B;AAI1B,2BAAQ,IAAR,CAAa,IAAb,EAAmB,IAAnB,EAJ0B;EAA5B;;;AAQA,aAAY,SAAZ,GAAwB,OAAO,MAAP,CAAc,wBAAQ,SAAR,EAAmB;AACvD,gBAAa;AACX,YAAO,WAAP;AACA,iBAAY,KAAZ;AACA,eAAU,IAAV;AACA,mBAAc,IAAd;IAJF;EADsB,CAAxB;;AASA,QAAO,cAAP,CAAsB,WAAtB,EAAmC,WAAnC,EAAgD;AAC9C,iBAAc,IAAd;AACA,iCAF8C;EAAhD;;AAKA,eAAM,sBAAN,CAA6B,YAAY,SAAZ,EAAuB;;;;;;;;;AASlD,aAAU,KAAV;;;;;;;;;;AAUA,aAAU,KAAV;;;;;;;;;AASA,cAAW,KAAX;;;;;;;;;;;AAWA,cAAW,KAAX;;;;;;;;;;;AAWA,aAAU,KAAV;;;;;;;;;AASA,cAAW,IAAX;;;;;;;;;AASA,cAAW,IAAX;;;;;;;;AAQA,eAAY,IAAZ;;;;;;;;;;AAUA,eAAY,IAAZ;;;;;;;;;;AAUA,cAAW,IAAX;;AAEA,2BAAQ,QAAQ,OAAO,MAAM;AAC3B,SAAM,OAAO,IAAP,CADqB;AAE3B,YAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,OAAb,EAAsB,MAAtB,EAA8B,KAAK,MAAL,EAAa,IAA3C,CADK,EAEL,IAFK,EAGL,IAHK,CAGA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAHP,CAF2B;IAlGqB;AA4GlD,6BAAS,QAAQ,OAAO,MAAM;AAC5B,SAAM,OAAO,IAAP,CADsB;AAE5B,YAAO,KAAK,IAAL,CACL,KAAK,OAAL,CAAa,QAAb,EAAuB,MAAvB,EAA+B,KAA/B,EAAsC,IAAtC,CADK,EAEL,KAAK,SAAL,CAAe,MAAf,EAAuB,KAAvB,EAA8B,IAA9B,CAFK,EAGL,IAHK,EAIL,IAJK,CAIA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAJP,CAF4B;IA5GoB;AAuHlD,qCAAa,QAAQ,OAAO,MAAM;AAChC,SAAM,OAAO,IAAP,CAD0B;AAEhC,YAAO,KAAK,IAAL,CACL,KAAK,OAAL,CAAa,YAAb,EAA2B,MAA3B,EAAmC,IAAnC,EAAyC,IAAzC,CADK,EAEL,KAAK,SAAL,CAAe,MAAf,EAAuB,KAAvB,EAA8B,IAA9B,CAFK,EAGL,IAHK,EAIL,IAJK,CAIA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAJP,CAFgC;IAvHgB;AAkIlD,+BAAU,QAAQ,IAAI,MAAM;AAC1B,SAAM,OAAO,IAAP,CADoB;AAE1B,YAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,SAAb,EAAwB,MAAxB,EAAgC,EAAhC,EAAoC,IAApC,CADK,EAEL,IAFK,EAGL,IAHK,CAGA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAHP,CAF0B;IAlIsB;AA4IlD,qCAAa,QAAQ,OAAO,MAAM;AAChC,SAAM,OAAO,IAAP,CAD0B;AAEhC,YAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,YAAb,EAA2B,MAA3B,EAAmC,IAAnC,EAAyC,IAAzC,CADK,EAEL,IAFK,EAGL,IAHK,CAGA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAHP,CAFgC;IA5IgB;AAsJlD,uBAAM,QAAQ,MAAM,UAAU;AAC5B,YAAO,CAAC,KAAK,WAAL,CAAiB,MAAjB,EAAyB,SAAS,IAAT,EAAe,IAAxC,CAAD,EAAgD,QAAhD,CAAP,CAD4B;IAtJoB;AA0JlD,yBAAO,QAAQ,IAAI,MAAM;AACvB,SAAM,OAAO,IAAP,CADiB;AAEvB,YAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,MAAb,EAAqB,MAArB,EAA6B,EAA7B,EAAiC,IAAjC,CADK,EAEL,IAFK,EAGL,IAHK,CAGA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAHP,CAFuB;IA1JyB;AAoKlD,+BAAU,QAAQ,OAAO,MAAM;AAC7B,SAAM,OAAO,IAAP,CADuB;AAE7B,YAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,SAAb,EAAwB,MAAxB,EAAgC,KAAK,MAAL,EAAa,IAA7C,CADK,EAEL,IAFK,EAGL,IAHK,CAGA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAHP,CAF6B;IApKmB;AA8KlD,uBAAM,QAAQ,OAAO,OAAO,MAAM;AAChC,SAAM,OAAO,IAAP,CAD0B;AAEhC,YAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,KAAb,EAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CADK,EAEL,IAFK,EAGL,IAHK,CAGA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAHP,CAFgC;IA9KgB;AAwLlD,6BAAS,QAAQ,IAAI,OAAO,MAAM;AAChC,SAAM,OAAO,IAAP,CAD0B;AAEhC,YAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,QAAb,EAAuB,MAAvB,EAA+B,EAA/B,EAAmC,IAAnC,CADK,EAEL,KAAK,SAAL,CAAe,MAAf,EAAuB,KAAvB,EAA8B,IAA9B,CAFK,EAGL,IAHK,EAIL,IAJK,CAIA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAJP,CAFgC;IAxLgB;AAmMlD,mCAAY,QAAQ,OAAO,OAAO,MAAM;AACtC,SAAM,OAAO,IAAP,CADgC;AAEtC,YAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,WAAb,EAA0B,MAA1B,EAAkC,IAAlC,EAAwC,IAAxC,CADK,EAEL,KAAK,SAAL,CAAe,MAAf,EAAuB,KAAvB,EAA8B,IAA9B,CAFK,EAGL,IAHK,EAIL,IAJK,CAIA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAJP,CAFsC;IAnMU;AA8MlD,qCAAa,QAAQ,SAAS,MAAM;AAClC,SAAM,OAAO,IAAP,CAD4B;AAElC,YAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,YAAb,EAA2B,MAA3B,EAAmC,IAAnC,EAAyC,IAAzC,CADK,EAEL,KAAK,SAAL,CAAe,MAAf,EAAuB,OAAvB,EAAgC,IAAhC,CAFK,EAGL,IAHK,EAIL,IAJK,CAIA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAJP,CAFkC;IA9Mc;;;;;;;;;;;;;;;AAqOlD,yBAAO,QAAQ,OAAO,MAAM;AAC1B,SAAM,OAAO,IAAP,CADoB;AAE1B,eAAU,QAAQ,EAAR,CAAV,CAF0B;AAG1B,cAAS,OAAO,EAAP,CAAT,CAH0B;AAI1B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,IAAf,CAAd,CAJ0B;AAK1B,UAAK,MAAL,CAAY,KAAZ,GAAoB,IAApB,CAL0B;AAM1B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CAN0B;AAO1B,mBAAM,SAAN,CAAgB,KAAK,MAAL,EAAa,KAA7B,EAP0B;AAQ1B,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAR0B;;AAU1B,YAAO,UAAU,KAAV,CAAgB,IAAhB,CAAqB,IAArB,EAA2B,MAA3B,EAAmC,KAAnC,EAA0C,IAA1C,CAAP,CAV0B;IArOsB;;;;;;;;;;;;;;;AA8PlD,2BAAQ,QAAQ,OAAO,MAAM;AAC3B,SAAM,OAAO,IAAP,CADqB;AAE3B,cAAS,OAAO,EAAP,CAAT,CAF2B;AAG3B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,IAAf,CAAd,CAH2B;AAI3B,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAJ2B;AAK3B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CAL2B;;AAO3B,YAAO,UAAU,MAAV,CAAiB,IAAjB,CAAsB,IAAtB,EAA4B,MAA5B,EAAoC,KAApC,EAA2C,IAA3C,CAAP,CAP2B;IA9PqB;;;;;;;;;;;;;;;AAoRlD,mCAAY,QAAQ,OAAO,MAAM;AAC/B,SAAM,OAAO,IAAP,CADyB;AAE/B,cAAS,OAAO,EAAP,CAAT,CAF+B;AAG/B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,IAAf,CAAd,CAH+B;AAI/B,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAJ+B;AAK/B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CAL+B;;AAO/B,YAAO,UAAU,UAAV,CAAqB,IAArB,CAA0B,IAA1B,EAAgC,MAAhC,EAAwC,KAAxC,EAA+C,IAA/C,CAAP,CAP+B;IApRiB;;;;;;;;;;;;;;AAySlD,qBAAK,KAAK,QAAQ,MAAM;AACtB,SAAM,OAAO,IAAP,CADgB;AAEtB,SAAI,WAAJ,CAFsB;AAGtB,gBAAW,SAAS,EAAT,CAAX,CAHsB;AAItB,cAAS,OAAO,EAAP,CAAT,CAJsB;AAKtB,YAAO,GAAP,GAAa,OAAO,OAAO,GAAP,CALE;AAMtB,YAAO,MAAP,GAAgB,OAAO,MAAP,IAAiB,QAAjB;;;AANM,OAStB,GAAK,KAAK,EAAL,GAAU,WAAV,CATiB;AAUtB,YAAO,cAAM,OAAN,CAAc,KAAK,EAAL,EAAS,GAAT,EAAc,MAAd,EAAsB,IAAtB,CAAd,EAA2C,IAA3C,CAAgD,UAAU,OAAV,EAAmB;;AAExE,gBAAS,cAAM,WAAN,CAAkB,OAAlB,IAA6B,MAA7B,GAAsC,OAAtC,CAF+D;AAGxE,YAAK,KAAK,EAAL,GAAU,KAAV,CAHmE;AAIxE,YAAK,GAAL,CAAS,EAAT,EAAa,GAAb,EAAkB,MAAlB,EAA0B,IAA1B,EAJwE;AAKxE,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,CAAP,CALwE;MAAnB,CAAhD,CAMJ,IANI,CAMC,UAAU,QAAV,EAAoB;;AAE1B,YAAK,KAAK,EAAL,GAAU,UAAV,CAFqB;AAG1B,cAAO,cAAM,OAAN,CAAc,KAAK,EAAL,EAAS,GAAT,EAAc,MAAd,EAAsB,IAAtB,EAA4B,QAA5B,CAAd,EAAqD,IAArD,CAA0D,UAAU,SAAV,EAAqB;;AAEpF,gBAAO,cAAM,WAAN,CAAkB,SAAlB,IAA+B,QAA/B,GAA0C,SAA1C,CAF6E;QAArB,CAAjE,CAH0B;MAApB,CANR,CAVsB;IAzS0B;;;;;;;;;;;;;;AA8UlD,qCAAa,QAAQ,UAAU,MAAM;AACnC,cAAS,OAAO,EAAP,CAAT,CADmC;AAEnC,SAAI,cAAM,UAAN,CAAiB,KAAK,WAAL,CAArB,EAAwC;AACtC,cAAO,KAAK,WAAL,CAAiB,MAAjB,EAAyB,QAAzB,EAAmC,IAAnC,CAAP,CADsC;MAAxC;AAGA,SAAI,cAAM,UAAN,CAAiB,OAAO,WAAP,CAArB,EAA0C;AACxC,cAAO,OAAO,WAAP,CAAmB,MAAnB,EAA2B,QAA3B,EAAqC,IAArC,CAAP,CADwC;MAA1C;AAGA,SAAI,QAAJ,EAAc;AACZ,WAAI,SAAS,cAAT,CAAwB,MAAxB,CAAJ,EAAqC;AACnC,gBAAO,SAAS,IAAT,CAD4B;QAArC;MADF;AAKA,YAAO,QAAP,CAbmC;IA9Ua;;;;;;;;;;;;;;;AA0WlD,6BAAS,QAAQ,IAAI,MAAM;AACzB,SAAM,OAAO,IAAP,CADmB;AAEzB,cAAS,OAAO,EAAP,CAAT,CAFyB;AAGzB,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,IAAf,CAAd,CAHyB;AAIzB,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAJyB;AAKzB,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CALyB;;AAOzB,YAAO,UAAU,OAAV,CAAkB,IAAlB,CAAuB,IAAvB,EAA6B,MAA7B,EAAqC,EAArC,EAAyC,IAAzC,CAAP,CAPyB;IA1WuB;;;;;;;;;;;;;;;AAgYlD,mCAAY,QAAQ,OAAO,MAAM;AAC/B,SAAM,OAAO,IAAP,CADyB;AAE/B,eAAU,QAAQ,EAAR,CAAV,CAF+B;AAG/B,cAAS,OAAO,EAAP,CAAT,CAH+B;AAI/B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,IAAf,CAAd,CAJ+B;AAK/B,mBAAM,SAAN,CAAgB,KAAK,MAAL,EAAa,KAA7B,EAL+B;AAM/B,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAN+B;AAO/B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CAP+B;;AAS/B,YAAO,UAAU,UAAV,CAAqB,IAArB,CAA0B,IAA1B,EAAgC,MAAhC,EAAwC,KAAxC,EAA+C,IAA/C,CAAP,CAT+B;IAhYiB;;;;;;;;;;AAmZlD,2BAAgB;AACd,SAAI,OAAJ,EAAa;;;AACX,4BAAQ,OAAO,QAAQ,KAAR,KAAkB,UAAzB,GAAsC,OAAtC,GAAgD,KAAhD,CAAR,4BADW;MAAb;IApZgD;;;;;;;;;;;;;;;;AAsalD;;;;;;;;;;eAAO,QAAQ,MAAM;AACnB,SAAM,gBAAgB;AACpB,eAAQ,OAAO,MAAP;;AAER,gBAAS,IAAI,OAAJ,CAAY,OAAO,OAAP,CAArB;MAHI,CADa;;AAOnB,SAAI,OAAO,IAAP,EAAa;AACf,qBAAc,IAAd,GAAqB,cAAM,MAAN,CAAa,OAAO,IAAP,CAAlC,CADe;MAAjB;;AAIA,YAAO,MAAM,IAAI,OAAJ,CAAY,SAAS,OAAO,GAAP,EAAY,OAAO,MAAP,CAAjC,EAAiD,aAAjD,CAAN,EAAuE,IAAvE,CAA4E,UAAU,QAAV,EAAoB;AACrG,gBAAS,MAAT,GAAkB;AAChB,iBAAQ,OAAO,MAAP;AACR,cAAK,OAAO,GAAP;QAFP,CADqG;AAKrG,cAAO,SAAS,IAAT,GAAgB,IAAhB,CAAqB,UAAU,IAAV,EAAgB;AAC1C,kBAAS,IAAT,GAAgB,IAAhB,CAD0C;AAE1C,gBAAO,QAAP,CAF0C;QAAhB,CAA5B,CALqG;MAApB,CAAnF,CAXmB;KAta6B;;;;;;;;;;;;;;;AAyclD,uBAAM,QAAQ,IAAI,MAAM;AACtB,SAAM,OAAO,IAAP,CADgB;AAEtB,cAAS,OAAO,EAAP,CAAT,CAFsB;AAGtB,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,IAAf,CAAd,CAHsB;AAItB,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAJsB;AAKtB,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CALsB;;AAOtB,YAAO,UAAU,IAAV,CAAe,IAAf,CAAoB,IAApB,EAA0B,MAA1B,EAAkC,EAAlC,EAAsC,IAAtC,CAAP,CAPsB;IAzc0B;;;;;;;;;;;;;;;AA+dlD,6BAAS,QAAQ,OAAO,MAAM;AAC5B,SAAM,OAAO,IAAP,CADsB;AAE5B,eAAU,QAAQ,EAAR,CAAV,CAF4B;AAG5B,cAAS,OAAO,EAAP,CAAT,CAH4B;AAI5B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,IAAf,CAAd,CAJ4B;AAK5B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CAL4B;AAM5B,mBAAM,SAAN,CAAgB,KAAK,MAAL,EAAa,KAA7B,EAN4B;AAO5B,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAP4B;;AAS5B,YAAO,UAAU,OAAV,CAAkB,IAAlB,CAAuB,IAAvB,EAA6B,MAA7B,EAAqC,KAArC,EAA4C,IAA5C,CAAP,CAT4B;IA/doB;;;;;;;;;;;;;AAqflD,qBAAK,KAAK,QAAQ,MAAM;AACtB,SAAM,OAAO,IAAP,CADgB;AAEtB,SAAI,WAAJ,CAFsB;AAGtB,gBAAW,SAAS,EAAT,CAAX,CAHsB;AAItB,cAAS,OAAO,EAAP,CAAT,CAJsB;AAKtB,YAAO,GAAP,GAAa,OAAO,OAAO,GAAP,CALE;AAMtB,YAAO,MAAP,GAAgB,OAAO,MAAP,IAAiB,KAAjB;;;AANM,OAStB,GAAK,KAAK,EAAL,GAAU,WAAV,CATiB;AAUtB,YAAO,cAAM,OAAN,CAAc,KAAK,EAAL,EAAS,GAAT,EAAc,MAAd,EAAsB,IAAtB,CAAd,EAA2C,IAA3C,CAAgD,UAAU,OAAV,EAAmB;;AAExE,gBAAS,cAAM,WAAN,CAAkB,OAAlB,IAA6B,MAA7B,GAAsC,OAAtC,CAF+D;AAGxE,YAAK,KAAK,EAAL,GAAU,KAAV,CAHmE;AAIxE,YAAK,GAAL,CAAS,EAAT,EAAa,GAAb,EAAkB,MAAlB,EAA0B,IAA1B,EAJwE;AAKxE,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,CAAP,CALwE;MAAnB,CAAhD,CAMJ,IANI,CAMC,UAAU,QAAV,EAAoB;;AAE1B,YAAK,KAAK,EAAL,GAAU,UAAV,CAFqB;AAG1B,cAAO,cAAM,OAAN,CAAc,KAAK,EAAL,EAAS,GAAT,EAAc,MAAd,EAAsB,IAAtB,EAA4B,QAA5B,CAAd,EAAqD,IAArD,CAA0D,UAAU,SAAV,EAAqB;;AAEpF,gBAAO,cAAM,WAAN,CAAkB,SAAlB,IAA+B,QAA/B,GAA0C,SAA1C,CAF6E;QAArB,CAAjE,CAH0B;MAApB,CANR,CAVsB;IArf0B;;;;;;;;;;;AAuhBlD,qCAAa,QAAQ,IAAI,MAAM;AAC7B,SAAM,OAAO,IAAP,CADuB;AAE7B,cAAS,OAAO,EAAP,CAAT,CAF6B;AAG7B,UAAK,MAAL,GAAc,cAAM,WAAN,CAAkB,KAAK,MAAL,CAAlB,GAAiC,EAAjC,GAAsC,KAAK,MAAL,CAHvB;AAI7B,SAAM,eAAe,OAAO,YAAP,IAAuB,EAAvB,CAJQ;AAK7B,SAAI,WAAW,cAAM,WAAN,CAAkB,KAAK,QAAL,CAAlB,GAAoC,cAAM,WAAN,CAAkB,OAAO,QAAP,CAAlB,GAAqC,OAAO,IAAP,GAAc,OAAO,QAAP,GAAmB,KAAK,QAAL,CAL5F;;AAO7B,kBAAa,OAAb,CAAqB,UAAU,GAAV,EAAe;AAClC,WAAI,IAAI,IAAJ,KAAa,WAAb,IAA4B,CAAC,IAAI,MAAJ,EAAY;AAC3C,gBAD2C;QAA7C;AAGA,WAAI,aAAJ,CAJkC;AAKlC,WAAM,YAAY,IAAI,UAAJ,CALgB;AAMlC,WAAM,YAAY,IAAI,WAAJ,EAAZ,CAN4B;AAOlC,WAAI,WAAW,KAAK,MAAL,CAAY,SAAZ,CAAX,CAP8B;;AASlC,WAAI,aAAa,KAAb,IAAsB,CAAC,SAAD,IAAc,CAAC,SAAD,EAAY;AAClD,aAAI,aAAa,KAAb,EAAoB;AACtB,kBAAO,KAAK,MAAL,CAAY,SAAZ,CAAP,CADsB;UAAxB;AAGA,gBAAO,KAAP,CAJkD;QAApD,MAKO;AACL,gBAAO,KAAK,MAAL,CAAY,SAAZ,CAAP,CADK;;AAGL,aAAI,cAAM,QAAN,CAAe,EAAf,CAAJ,EAAwB;AACtB,kBAAO,EAAP,CADsB;UAAxB;;AAIA,aAAI,IAAJ,EAAU;AACR,sBAAW,YAAY,IAAI,aAAJ,CAAkB,IAAlB,CAAZ,KAAwC,IAAI,aAAJ,CAAkB,IAAlB,IAA0B,cAAM,GAAN,CAAU,IAAI,aAAJ,CAAkB,IAAlB,CAAV,EAAmC,UAAU,WAAV,CAA7D,GAAsF,IAAtF,CAAxC,CADH;UAAV;;AAIA,aAAI,QAAJ,EAAc;;AACZ,oBAAO,KAAK,QAAL;AACP,iBAAM,QAAQ,EAAR;AACN,2BAAM,MAAN,CAAa,IAAb,EAAmB,UAAU,KAAV,EAAiB,GAAjB,EAAsB;AACvC,qBAAM,GAAN,IAAa,KAAb,CADuC;cAAtB,CAAnB;AAGA,2BAAM,CAAN,CAAQ,KAAR,EAAe,SAAf;AACA,wBAAW,SAAS,KAAK,WAAL,CAAiB,SAAjB,EAA4B,QAA5B,EAAsC,KAAtC,CAAT,EAAuD,QAAvD,EAAiE,QAAjE,CAAX;AACA;kBAAO;cAAP;eARY;;;UAAd;QAhBF;MATmB,CAArB,CAP6B;;AA6C7B,YAAO,QAAP,CA7C6B;IAvhBmB;;;;;;;;;;;AA+kBlD,6BAAS,QAAQ,QAAQ,IAAI,MAAM;AACjC,SAAM,OAAO,IAAP,CAD2B;AAEjC,cAAS,OAAO,EAAP,CAAT,CAFiC;AAGjC,SAAM,OAAO,CACX,cAAM,WAAN,CAAkB,KAAK,QAAL,CAAlB,GAAoC,cAAM,WAAN,CAAkB,OAAO,QAAP,CAAlB,GAAqC,KAAK,QAAL,GAAgB,OAAO,QAAP,GAAmB,KAAK,QAAL,EAC5G,KAAK,WAAL,CAAiB,MAAjB,EAAyB,aAAC,CAAM,QAAN,CAAe,EAAf,KAAsB,cAAM,QAAN,CAAe,EAAf,CAAtB,IAA4C,WAAW,QAAX,GAAuB,EAApE,GAAyE,IAAzE,EAA+E,IAAxG,CAFW,CAAP,CAH2B;AAOjC,SAAI,WAAW,MAAX,IAAqB,WAAW,QAAX,IAAuB,WAAW,SAAX,EAAsB;AACpE,YAAK,IAAL,CAAU,EAAV,EADoE;MAAtE;AAGA,YAAO,SAAS,KAAT,gBAAsB,IAAtB,CAAP,CAViC;IA/kBe;AA4lBlD,iCAAW,MAAM;AACf,cAAS,OAAO,EAAP,CAAT,CADe;AAEf,SAAI,cAAM,WAAN,CAAkB,KAAK,MAAL,CAAtB,EAAoC;AAClC,cAAO,EAAP,CADkC;MAApC;AAGA,YAAO,cAAM,IAAN,CAAW,KAAK,MAAL,CAAlB,CALe;IA5lBiC;AAomBlD,iCAAW,QAAQ,MAAM;AACvB,cAAS,OAAO,EAAP,CAAT,CADuB;AAEvB,SAAI,cAAM,WAAN,CAAkB,KAAK,MAAL,CAAtB,EAAoC;AAClC,WAAI,cAAM,WAAN,CAAkB,OAAO,MAAP,CAAtB,EAAsC;AACpC,gBAAO,KAAK,MAAL,CAD6B;QAAtC;AAGA,cAAO,OAAO,MAAP,CAJ2B;MAApC;AAMA,YAAO,KAAK,MAAL,CARgB;IApmByB;;;;;;;;;;;;AAwnBlD,uBAAM,QAAQ,MAAM;AAClB,SAAM,OAAO,IAAP,CADY;AAElB,SAAM,QAAQ,IAAI,IAAJ,EAAR,CAFY;AAGlB,cAAS,OAAO,EAAP,CAAT,CAHkB;AAIlB,SAAM,UAAU,OAAO,IAAP,CAJE;AAKlB,SAAM,QAAQ,OAAO,KAAP,CALI;AAMlB,SAAM,UAAU,OAAO,OAAP,CANE;AAOlB,cAAS,cAAM,IAAN,CAAW,MAAX,EAAmB,IAAnB,EAAyB,IAAzB,EAA+B,IAA/B,EAAqC,CAAC,MAAD,EAAS,OAAT,EAAkB,SAAlB,CAArC,CAAT,CAPkB;AAQlB,cAAS,cAAM,SAAN,CAAgB,MAAhB,EAAwB,KAAK,UAAL,CAAjC,CARkB;AASlB,YAAO,IAAP,GAAc,OAAd,CATkB;AAUlB,YAAO,KAAP,GAAe,KAAf,CAVkB;AAWlB,YAAO,OAAP,GAAiB,OAAjB,CAXkB;AAYlB,SAAI,KAAK,kBAAL,IAA2B,OAAO,GAAP,CAAW,OAAO,GAAP,CAAW,MAAX,GAAoB,CAApB,CAAX,KAAsC,GAAtC,EAA2C;AACxE,cAAO,GAAP,IAAc,GAAd,CADwE;MAA1E;AAGA,YAAO,MAAP,GAAgB,OAAO,MAAP,CAAc,WAAd,EAAhB,CAfkB;AAgBlB,SAAM,SAAS,OAAO,MAAP,IAAiB,KAAK,MAAL,IAAe,KAAK,MAAL,CAhB7B;AAiBlB,SAAI,UAAU,OAAO,GAAP,CAAW,MAAX,CAAkB,OAAO,GAAP,CAAW,MAAX,GAAoB,OAAO,MAAP,CAAtC,KAAyD,MAAzD,EAAiE;AAC7E,cAAO,GAAP,IAAc,MAAd,CAD6E;MAA/E;;AAIA,cAAS,WAAT,CAAsB,IAAtB,EAA4B;AAC1B,WAAM,MAAS,MAAM,WAAN,aAAyB,OAAO,MAAP,CAAc,WAAd,WAA+B,OAAO,GAAP,WAAgB,KAAK,MAAL,UAAgB,IAAI,IAAJ,GAAW,OAAX,KAAuB,MAAM,OAAN,EAAvB,QAAjG,CADoB;AAE1B,WAAI,KAAK,MAAL,IAAe,GAAf,IAAsB,KAAK,MAAL,GAAc,GAAd,EAAmB;AAC3C,aAAI,KAAK,GAAL,EAAU;AACZ,gBAAK,GAAL,CAAS,OAAT,EAAkB,GAAlB,EAAuB,IAAvB,EADY;UAAd;AAGA,gBAAO,IAAP,CAJ2C;QAA7C,MAKO;AACL,aAAI,KAAK,KAAL,EAAY;AACd,gBAAK,KAAL,gBAAuB,GAAvB,EAA8B,IAA9B,EADc;UAAhB;AAGA,gBAAO,cAAM,MAAN,CAAa,IAAb,CAAP,CAJK;QALP;MAFF;;AAeA,SAAI,CAAC,KAAK,IAAL,EAAW;AACd,aAAM,IAAI,KAAJ,CAAU,4DAAV,CAAN,CADc;MAAhB;;AAIA,YAAO,cAAM,OAAN,CAAc,KAAK,UAAL,CAAgB,MAAhB,EAAwB,IAAxB,CAAd,EAA6C,IAA7C,CAAkD,UAAU,OAAV,EAAmB;AAC1E,gBAAS,WAAW,MAAX,CADiE;AAE1E,WAAI,aAAa,KAAK,QAAL,IAAiB,KAAK,QAAL,IAAiB,CAAC,KAAK,IAAL,CAAhD,EAA4D;AAC9D,gBAAO,KAAK,KAAL,CAAW,MAAX,EAAmB,IAAnB,EAAyB,IAAzB,CAA8B,WAA9B,EAA2C,WAA3C,CAAP,CAD8D;QAAhE;AAGA,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,CAAuB,WAAvB,EAAoC,WAApC,EAAiD,KAAjD,CAAuD,UAAU,GAAV,EAAe;AAC3E,gBAAO,KAAK,aAAL,CAAmB,GAAnB,EAAwB,MAAxB,EAAgC,IAAhC,CAAP,CAD2E;QAAf,CAA9D,CAL0E;MAAnB,CAAlD,CAQJ,IARI,CAQC,UAAU,QAAV,EAAoB;AAC1B,cAAO,cAAM,OAAN,CAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,EAA6B,QAA7B,CAAd,EAAsD,IAAtD,CAA2D,UAAU,SAAV,EAAqB;AACrF,gBAAO,aAAa,QAAb,CAD8E;QAArB,CAAlE,CAD0B;MAApB,CARR,CAxCkB;IAxnB8B;;;;;;;;;;;;;;AA0rBlD,uBAAM,KAAK,MAAM,QAAQ,MAAM;AAC7B,SAAM,OAAO,IAAP,CADuB;AAE7B,SAAI,WAAJ,CAF6B;AAG7B,gBAAW,SAAS,EAAT,CAAX,CAH6B;AAI7B,cAAS,OAAO,EAAP,CAAT,CAJ6B;AAK7B,YAAO,GAAP,GAAa,OAAO,OAAO,GAAP,CALS;AAM7B,YAAO,IAAP,GAAc,QAAQ,OAAO,IAAP,CANO;AAO7B,YAAO,MAAP,GAAgB,OAAO,MAAP,IAAiB,MAAjB;;;AAPa,OAU7B,GAAK,KAAK,EAAL,GAAU,YAAV,CAVwB;AAW7B,YAAO,cAAM,OAAN,CAAc,KAAK,EAAL,EAAS,GAAT,EAAc,IAAd,EAAoB,MAApB,EAA4B,IAA5B,CAAd,EAAiD,IAAjD,CAAsD,UAAU,OAAV,EAAmB;;AAE9E,gBAAS,cAAM,WAAN,CAAkB,OAAlB,IAA6B,MAA7B,GAAsC,OAAtC,CAFqE;AAG9E,YAAK,KAAK,EAAL,GAAU,MAAV,CAHyE;AAI9E,YAAK,GAAL,CAAS,EAAT,EAAa,GAAb,EAAkB,IAAlB,EAAwB,MAAxB,EAAgC,IAAhC,EAJ8E;AAK9E,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,CAAP,CAL8E;MAAnB,CAAtD,CAMJ,IANI,CAMC,UAAU,QAAV,EAAoB;;AAE1B,YAAK,KAAK,EAAL,GAAU,WAAV,CAFqB;AAG1B,cAAO,cAAM,OAAN,CAAc,KAAK,EAAL,EAAS,GAAT,EAAc,IAAd,EAAoB,MAApB,EAA4B,IAA5B,EAAkC,QAAlC,CAAd,EAA2D,IAA3D,CAAgE,UAAU,SAAV,EAAqB;;AAE1F,gBAAO,cAAM,WAAN,CAAkB,SAAlB,IAA+B,QAA/B,GAA0C,SAA1C,CAFmF;QAArB,CAAvE,CAH0B;MAApB,CANR,CAX6B;IA1rBmB;;;;;;;;;;;;;;AAguBlD,qBAAK,KAAK,MAAM,QAAQ,MAAM;AAC5B,SAAM,OAAO,IAAP,CADsB;AAE5B,SAAI,WAAJ,CAF4B;AAG5B,gBAAW,SAAS,EAAT,CAAX,CAH4B;AAI5B,cAAS,OAAO,EAAP,CAAT,CAJ4B;AAK5B,YAAO,GAAP,GAAa,OAAO,OAAO,GAAP,CALQ;AAM5B,YAAO,IAAP,GAAc,QAAQ,OAAO,IAAP,CANM;AAO5B,YAAO,MAAP,GAAgB,OAAO,MAAP,IAAiB,KAAjB;;;AAPY,OAU5B,GAAK,KAAK,EAAL,GAAU,WAAV,CAVuB;AAW5B,YAAO,cAAM,OAAN,CAAc,KAAK,EAAL,EAAS,GAAT,EAAc,IAAd,EAAoB,MAApB,EAA4B,IAA5B,CAAd,EAAiD,IAAjD,CAAsD,UAAU,OAAV,EAAmB;;AAE9E,gBAAS,cAAM,WAAN,CAAkB,OAAlB,IAA6B,MAA7B,GAAsC,OAAtC,CAFqE;AAG9E,YAAK,KAAK,EAAL,GAAU,KAAV,CAHyE;AAI9E,YAAK,GAAL,CAAS,EAAT,EAAa,GAAb,EAAkB,IAAlB,EAAwB,MAAxB,EAAgC,IAAhC,EAJ8E;AAK9E,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,CAAP,CAL8E;MAAnB,CAAtD,CAMJ,IANI,CAMC,UAAU,QAAV,EAAoB;;AAE1B,YAAK,KAAK,EAAL,GAAU,UAAV,CAFqB;AAG1B,cAAO,cAAM,OAAN,CAAc,KAAK,EAAL,EAAS,GAAT,EAAc,IAAd,EAAoB,MAApB,EAA4B,IAA5B,EAAkC,QAAlC,CAAd,EAA2D,IAA3D,CAAgE,UAAU,SAAV,EAAqB;;AAE1F,gBAAO,cAAM,WAAN,CAAkB,SAAlB,IAA+B,QAA/B,GAA0C,SAA1C,CAFmF;QAArB,CAAvE,CAH0B;MAApB,CANR,CAX4B;IAhuBoB;;;;;;;;;;;;;AAqwBlD,2CAAgB,QAAQ,QAAQ,MAAM;AACpC,cAAS,OAAO,EAAP,CAAT,CADoC;AAEpC,SAAI,cAAM,UAAN,CAAiB,KAAK,cAAL,CAArB,EAA2C;AACzC,cAAO,KAAK,cAAL,CAAoB,MAApB,EAA4B,MAA5B,EAAoC,IAApC,CAAP,CADyC;MAA3C;AAGA,SAAI,cAAM,UAAN,CAAiB,OAAO,cAAP,CAArB,EAA6C;AAC3C,cAAO,OAAO,cAAP,CAAsB,MAAtB,EAA8B,MAA9B,EAAsC,IAAtC,CAAP,CAD2C;MAA7C;AAGA,YAAO,MAAP,CARoC;IArwBY;;;;;;;;;;;;;;;;AA6xBlD,yCAAe,KAAK,QAAQ,MAAM;AAChC,YAAO,cAAM,MAAN,CAAa,GAAb,CAAP,CADgC;IA7xBgB;;;;;;;;;;;;;AA2yBlD,iCAAW,QAAQ,MAAM,MAAM;AAC7B,cAAS,OAAO,EAAP,CAAT,CAD6B;AAE7B,SAAI,cAAM,UAAN,CAAiB,KAAK,SAAL,CAArB,EAAsC;AACpC,cAAO,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,EAA6B,IAA7B,CAAP,CADoC;MAAtC;AAGA,SAAI,cAAM,UAAN,CAAiB,OAAO,SAAP,CAArB,EAAwC;AACtC,cAAO,OAAO,SAAP,CAAiB,MAAjB,EAAyB,IAAzB,EAA+B,IAA/B,CAAP,CADsC;MAAxC;AAGA,YAAO,IAAP,CAR6B;IA3yBmB;;;;;;;;;;;;;;;;AAm0BlD,qBAAK,QAAQ,OAAO,OAAO,MAAM;AAC/B,SAAM,OAAO,IAAP,CADyB;AAE/B,eAAU,QAAQ,EAAR,CAAV,CAF+B;AAG/B,cAAS,OAAO,EAAP,CAAT,CAH+B;AAI/B,SAAI,CAAC,cAAM,KAAN,CAAY,QAAZ,CAAqB,KAArB,CAAD,EAA8B;AAChC,aAAM,IAAI,KAAJ,CAAU,yBAAV,CAAN,CADgC;MAAlC;AAGA,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,IAAf,CAAd,CAP+B;AAQ/B,UAAK,MAAL,CAAY,GAAZ,GAAkB,KAAlB,CAR+B;AAS/B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CAT+B;AAU/B,mBAAM,SAAN,CAAgB,KAAK,MAAL,EAAa,KAA7B,EAV+B;AAW/B,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAX+B;;AAa/B,YAAO,UAAU,GAAV,CAAc,IAAd,CAAmB,IAAnB,EAAyB,MAAzB,EAAiC,KAAjC,EAAwC,KAAxC,EAA+C,IAA/C,CAAP,CAb+B;IAn0BiB;;;;;;;;;;;;;;AA81BlD,2BAAQ,QAAQ,IAAI,OAAO,MAAM;AAC/B,SAAM,OAAO,IAAP,CADyB;AAE/B,cAAS,OAAO,EAAP,CAAT,CAF+B;AAG/B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,IAAf,CAAd,CAH+B;AAI/B,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAJ+B;AAK/B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CAL+B;;AAO/B,YAAO,UAAU,MAAV,CAAiB,IAAjB,CAAsB,IAAtB,EAA4B,MAA5B,EAAoC,EAApC,EAAwC,KAAxC,EAA+C,IAA/C,CAAP,CAP+B;IA91BiB;;;;;;;;;;;;;;AAm3BlD,iCAAW,QAAQ,OAAO,OAAO,MAAM;AACrC,SAAM,OAAO,IAAP,CAD+B;AAErC,eAAU,QAAQ,EAAR,CAAV,CAFqC;AAGrC,cAAS,OAAO,EAAP,CAAT,CAHqC;AAIrC,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,IAAf,CAAd,CAJqC;AAKrC,mBAAM,SAAN,CAAgB,KAAK,MAAL,EAAa,KAA7B,EALqC;AAMrC,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CANqC;AAOrC,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CAPqC;;AASrC,YAAO,UAAU,SAAV,CAAoB,IAApB,CAAyB,IAAzB,EAA+B,MAA/B,EAAuC,KAAvC,EAA8C,KAA9C,EAAqD,IAArD,CAAP,CATqC;IAn3BW;;;;;;;;;;;;;;;;;;;;AAg5BlD,mCAAY,QAAQ,SAAS,MAAM;AACjC,SAAM,OAAO,IAAP,CAD2B;AAEjC,cAAS,OAAO,EAAP,CAAT,CAFiC;AAGjC,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,IAAf,CAAd,CAHiC;AAIjC,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAJiC;AAKjC,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CALiC;;AAOjC,YAAO,UAAU,UAAV,CAAqB,IAArB,CAA0B,IAA1B,EAAgC,MAAhC,EAAwC,OAAxC,EAAiD,IAAjD,CAAP,CAPiC;IAh5Be;EAApD;;;;;;;;;;;;;;;;;AA06BA,aAAY,SAAZ,GAAwB,UAAU,IAAV,EAAgB,IAAhB,EAAsB;AAC5C,OAAI,CAAC,IAAD,IAAS,CAAC,cAAM,QAAN,CAAe,IAAf,CAAD,EAAuB;AAClC,WAAM,IAAI,SAAJ,CAAc,4DAA2D,mDAA3D,CAApB,CADkC;IAApC;AAGA,UAAO,UAAU,MAAV,EAAkB;AACvB,SAAI,OAAO,IAAP,CAAJ,EAAkB;AAChB,aAAM,IAAI,KAAJ,CAAU,2BAA2B,IAA3B,GAAkC,4BAAlC,CAAhB,CADgB;MAAlB;AAGA,UAAK,OAAL,GAAe,KAAK,OAAL,IAAgB,UAAU,MAAV,EAAkB;AAAE,cAAO,MAAP,CAAF;MAAlB,CAJR;AAKvB,UAAK,QAAL,GAAgB,KAAK,QAAL,IAAiB,UAAU,QAAV,EAAoB;AAAE,cAAO,QAAP,CAAF;MAApB,CALV;AAMvB,UAAK,aAAL,GAAqB,KAAK,aAAL,IAAsB,UAAU,GAAV,EAAe;AAAE,cAAO,cAAM,MAAN,CAAa,GAAb,CAAP,CAAF;MAAf,CANpB;AAOvB,YAAO,IAAP,IAAe,UAAU,EAAV,EAAc,KAAd,EAAqB;AAClC,WAAM,OAAO,IAAP,CAD4B;AAElC,WAAI,cAAM,QAAN,CAAe,EAAf,CAAJ,EAAwB;AACtB,iBAAQ,EAAR,CADsB;QAAxB;AAGA,eAAQ,SAAS,EAAT,CAL0B;AAMlC,WAAI,UAAU,KAAK,UAAL,CAAgB,KAAK,OAAL,IAAgB,KAAK,cAAL,IAAuB,MAAvC,CAA1B,CAN8B;AAOlC,WAAI,SAAS,EAAT,CAP8B;AAQlC,qBAAM,MAAN,CAAa,MAAb,EAAqB,IAArB,EARkC;AASlC,WAAI,CAAC,MAAM,cAAN,CAAqB,UAArB,CAAD,IAAqC,OAAO,QAAP,EAAiB;AACxD,eAAM,QAAN,GAAiB,OAAO,QAAP,CADuC;QAA1D;AAGA,WAAI,OAAO,MAAM,WAAN,KAAsB,UAA7B,EAAyC;AAC3C,gBAAO,GAAP,GAAa,MAAM,WAAN,CAAkB,IAAlB,EAAwB,KAAxB,CAAb,CAD2C;QAA7C,MAEO;AACL,aAAI,QAAO,CACT,MAAM,QAAN,IAAkB,KAAK,QAAL,IAAiB,QAAQ,QAAR,EACnC,QAAQ,WAAR,CAAoB,IAApB,EAA0B,cAAM,MAAN,CAAa,EAAb,IAAmB,EAAnB,GAAwB,IAAxB,EAA8B,KAAxD,CAFS,CAAP,CADC;AAKL,aAAI,cAAM,MAAN,CAAa,EAAb,CAAJ,EAAsB;AACpB,iBAAK,IAAL,CAAU,EAAV,EADoB;UAAtB;AAGA,eAAK,IAAL,CAAU,KAAK,QAAL,IAAiB,IAAjB,CAAV,CARK;AASL,gBAAO,GAAP,GAAa,SAAS,KAAT,CAAe,IAAf,EAAqB,KAArB,CAAb,CATK;QAFP;AAaA,cAAO,MAAP,GAAgB,OAAO,MAAP,IAAiB,KAAjB,CAzBkB;AA0BlC,cAAO,MAAP,GAAgB,KAAK,IAAL,CA1BkB;AA2BlC,qBAAM,SAAN,CAAgB,MAAhB,EAAwB,KAAxB,EA3BkC;AA4BlC,cAAO,cAAM,OAAN,CAAc,MAAd,EACJ,IADI,CACC,MAAM,OAAN,IAAiB,KAAK,OAAL,CADlB,CAEJ,IAFI,CAEC,UAAU,MAAV,EAAkB;AAAE,gBAAO,QAAQ,IAAR,CAAa,MAAb,CAAP,CAAF;QAAlB,CAFD,CAGJ,IAHI,CAGC,UAAU,IAAV,EAAgB;AACpB,aAAI,QAAQ,KAAK,MAAL,EAAa;AACvB,gBAAK,MAAL,CAAY,MAAZ,GAAqB,KAAK,IAAL,CADE;UAAzB;AAGA,gBAAO,IAAP,CAJoB;QAAhB,CAHD,CASJ,IATI,CASC,MAAM,QAAN,IAAkB,KAAK,QAAL,EAAe,MAAM,aAAN,IAAuB,KAAK,aAAL,CAThE,CA5BkC;MAArB,CAPQ;AA8CvB,YAAO,MAAP,CA9CuB;IAAlB,CAJqC;EAAtB;;;;;;;;;;;;;AAiExB,aAAY,UAAZ,GAAyB,UAAU,IAAV,EAAgB;AACvC,YAAS,OAAO,EAAP,CAAT,CADuC;AAEvC,UAAO,UAAU,MAAV,EAAkB;AACvB,mBAAM,MAAN,CAAa,MAAb,EAAqB,UAAU,KAAV,EAAiB,GAAjB,EAAsB;AACzC,mBAAY,SAAZ,CAAsB,GAAtB,EAA2B,KAA3B,EAAkC,MAAlC,EADyC;MAAtB,CAArB,CADuB;AAIvB,YAAO,MAAP,CAJuB;IAAlB,CAFgC;EAAhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDzB,aAAY,MAAZ,GAAqB,cAAM,MAAN;;;;;;;;;;;;;;;;AAgBrB,aAAY,OAAZ,GAAsB;AACpB,SAAM,oBAAN;AACA,UAAO,SAAS,cAAT,EAAyB,EAAzB,CAAP;AACA,UAAO,SAAS,cAAT,EAAyB,EAAzB,CAAP;AACA,UAAO,SAAS,cAAT,EAAyB,EAAzB,CAAP;AACA,UAAO,QAA6B,cAA7B,GAA8C,KAA9C;AACP,SAAM,QAA4B,aAA5B,GAA4C,KAA5C;EANR;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCA,QAAO,OAAP,GAAiB,WAAjB,C;;;;;;ACpvCA,gD;;;;;;ACAA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;AAE3B;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;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,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;;AAEA;;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,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,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;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;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,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;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;;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;AACA,iBAAgB;AAChB;AACA;AACA;AACA,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,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,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,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,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;;AAEA,EAAC;AACD,4C;;;;;;AC36CA,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 9287d465dd3438b91c71\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nimport Adapter from 'js-data-adapter'\n\nlet hasFetch = false\n\ntry {\n hasFetch = window && window.fetch\n} catch (e) {}\n\nconst noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n return utils.resolve()\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n return utils.resolve()\n}\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 * @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// 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\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.data, 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) {\n if (response.hasOwnProperty('data')) {\n return response.data\n }\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 HttpAdapter.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 */\nHttpAdapter.addAction = function (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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n utils.forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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(require('js-data')) :\n typeof define === 'function' && define.amd ? define('js-data-adapter', ['js-data'], factory) :\n (factory(global.JSData));\n}(this, function (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 addHiddenPropsToTarget = jsData.utils.addHiddenPropsToTarget;\n var deepFillIn = jsData.utils.deepFillIn;\n var extend = jsData.utils.extend;\n var fillIn = jsData.utils.fillIn;\n var forEachRelation = jsData.utils.forEachRelation;\n var get = jsData.utils.get;\n var isArray = jsData.utils.isArray;\n var isObject = jsData.utils.isObject;\n var isUndefined = jsData.utils.isUndefined;\n var omit = jsData.utils.omit;\n var plainCopy = jsData.utils.plainCopy;\n var resolve = jsData.utils.resolve;\n\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 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 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 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 fillIn(opts, DEFAULTS);\n fillIn(self, opts);\n }\n\n Adapter.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 * @typedef {Object} Response\n * @property {Object} data Response data.\n * @property {string} op The operation for which the response was created.\n */\n function Response(data, meta, op) {\n var self = this;\n meta || (meta = {});\n self.data = data;\n fillIn(self, meta);\n self.op = op;\n }\n\n Adapter.Response = Response;\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 = extend;\n\n addHiddenPropsToTarget(Adapter.prototype, {\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 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 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 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 * 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 resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n props = withoutRelations(mapper, props);\n op = opts.op = 'create';\n self.dbg(op, mapper, props, opts);\n return resolve(self._create(mapper, props, 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, '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 resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = 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 resolve(self._createMany(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 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 resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy';\n self.dbg(op, mapper, id, opts);\n return resolve(self._destroy(mapper, id, 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 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 resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll';\n self.dbg(op, mapper, query, opts);\n return resolve(self._destroyAll(mapper, query, 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, 'destroyAll');\n response = self.respond(response, opts);\n\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll';\n return resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return isUndefined(_response) ? response : _response;\n });\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 = get(record, def.localKeys) || [];\n itemKeys = 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 get(record, mapper.idAttribute);\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 (isObject(records) && !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 (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 (isObject(records) && !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 _ret = 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 = get(item, def.localKeys) || [];\n itemKeys = 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 _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === \"object\") return _ret.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 (isObject(records) && !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 = get(record, idAttribute);\n relatedItems.forEach(function (relatedItem) {\n var foreignKeys = 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 (isObject(records) && !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 (isArray(relatedData) && relatedData.length) {\n def.setLocalField(record, relatedData[0]);\n }\n });\n });\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 * 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 (isObject(records) && !isArray(records)) {\n var _ret2 = 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 _ret2 === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret2)) === \"object\") return _ret2.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 resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find';\n self.dbg(op, mapper, id, opts);\n return resolve(self._find(mapper, id, opts));\n }).then(function (results) {\n var _results5 = babelHelpers.slicedToArray(results, 1);\n\n var _record = _results5[0];\n\n if (!_record) {\n return;\n }\n record = _record;\n var tasks = [];\n\n 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 resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 (isObject(activeWith)) {\n var activeQuery = activeWith.query || {};\n if (activeWith.replace) {\n query = activeQuery;\n } else {\n deepFillIn(query, activeQuery);\n }\n }\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll';\n return resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll';\n self.dbg(op, mapper, query, opts);\n return resolve(self._findAll(mapper, query, opts));\n }).then(function (results) {\n var _results6 = babelHelpers.slicedToArray(results, 1);\n\n var _records = _results6[0];\n\n _records || (_records = []);\n records = _records;\n var tasks = [];\n 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 resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 isUndefined(opts[opt]) ? plainCopy(this[opt]) : plainCopy(opts[opt]);\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 * @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 resolve(self[op](mapper, id, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n op = opts.op = 'update';\n self.dbg(op, mapper, id, props, opts);\n return resolve(self._update(mapper, id, props, opts));\n }).then(function (results) {\n var _results7 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results7[0];\n var result = _results7[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 resolve(self[op](mapper, id, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, props, query, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n op = opts.op = 'updateAll';\n self.dbg(op, mapper, props, query, opts);\n return resolve(self._updateAll(mapper, props, 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 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 resolve(self[op](mapper, props, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 get(record, idAttribute);\n });\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany';\n return resolve(self[op](mapper, records, opts)).then(function (_records) {\n // Allow for re-assignment from lifecycle hook\n records = 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 resolve(self._updateMany(mapper, records, 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 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 resolve(self[op](mapper, records, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return isUndefined(_response) ? response : _response;\n });\n });\n }\n });\n\n module.exports = Adapter;\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 diff --git a/node/package.json b/node/package.json index 0a87a9f..afe5809 100644 --- a/node/package.json +++ b/node/package.json @@ -1,7 +1,7 @@ { "name": "js-data-http-node", "description": "Node.js HTTP adapter for js-data.", - "version": "3.0.0-alpha.8", + "version": "3.0.0-alpha.9", "homepage": "https://github.com/js-data/js-data-http", "repository": { "type": "git", @@ -19,10 +19,10 @@ "node.js" ], "dependencies": { - "js-data-adapter": "^0.2.1" + "js-data-adapter": "^0.2.4" }, "peerDependencies": { "axios": "^0.9.1", - "js-data": "^3.0.0-alpha.16" + "js-data": "^3.0.0-alpha.20" } } diff --git a/package.json b/package.json index 099bd19..5c66bc6 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "js-data-http", "description": "HTTP (XHR) adapter for js-data in the browser.", - "version": "3.0.0-alpha.8", + "version": "3.0.0-alpha.9", "homepage": "https://github.com/js-data/js-data-http", "repository": { "type": "git", @@ -56,7 +56,7 @@ "ci": "npm test && cat ./coverage/lcov.info | coveralls || true" }, "peerDependencies": { - "js-data": "^3.0.0-alpha.19" + "js-data": "^3.0.0-alpha.20" }, "devDependencies": { "axios": "0.9.1", @@ -70,7 +70,7 @@ "chai": "3.5.0", "coveralls": "2.11.8", "istanbul": "0.4.2", - "js-data-adapter": "0.2.2", + "js-data-adapter": "0.2.4", "js-data-repo-tools": "0.2.0", "jsdoc": "3.4.0", "karma": "0.13.22", @@ -80,7 +80,7 @@ "karma-phantomjs-launcher": "1.0.0", "karma-sinon": "1.0.4", "mocha": "2.4.5", - "phantomjs-prebuilt": "2.1.5", + "phantomjs-prebuilt": "2.1.6", "sinon": "1.17.3", "source-map-support": "0.4.0", "uglify-js": "2.6.2", diff --git a/src/index.js b/src/index.js index 4673c1a..8f077e9 100644 --- a/src/index.js +++ b/src/index.js @@ -3,27 +3,6 @@ const axios = require('axios') import {utils} from 'js-data' import Adapter from 'js-data-adapter' -const { - _, - addHiddenPropsToTarget, - copy, - deepMixIn, - extend, - fillIn, - forOwn, - get, - isArray, - isFunction, - isNumber, - isObject, - isSorN, - isString, - isUndefined, - resolve, - reject, - toJson -} = utils - let hasFetch = false try { @@ -34,14 +13,14 @@ const noop = function (...args) { const self = this const opts = args[args.length - 1] self.dbg(opts.op, ...args) - return resolve() + return utils.resolve() } const noop2 = function (...args) { const self = this const opts = args[args.length - 2] self.dbg(opts.op, ...args) - return resolve() + return utils.resolve() } function isValidString (value) { @@ -74,19 +53,19 @@ function buildUrl (url, params) { const parts = [] - forOwn(params, function (val, key) { + utils.forOwn(params, function (val, key) { if (val === null || typeof val === 'undefined') { return } - if (!isArray(val)) { + if (!utils.isArray(val)) { val = [val] } val.forEach(function (v) { if (window.toString.call(v) === '[object Date]') { v = v.toISOString() - } else if (isObject(v)) { - v = toJson(v) + } else if (utils.isObject(v)) { + v = utils.toJson(v) } parts.push(`${encode(key)}=${encode(v)}`) }) @@ -158,7 +137,7 @@ const DEFAULTS = { function HttpAdapter (opts) { const self = this opts || (opts = {}) - fillIn(opts, DEFAULTS) + utils.fillIn(opts, DEFAULTS) Adapter.call(self, opts) } @@ -177,7 +156,7 @@ Object.defineProperty(HttpAdapter, '__super__', { value: Adapter }) -addHiddenPropsToTarget(HttpAdapter.prototype, { +utils.addHiddenPropsToTarget(HttpAdapter.prototype, { /** * @name HttpAdapter#afterDEL * @method @@ -275,6 +254,16 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { */ beforePUT: noop, + _count (mapper, query, opts) { + const self = this + return self.GET( + self.getPath('count', mapper, opts.params, opts), + opts + ).then(function (response) { + return self._end(mapper, opts, response) + }) + }, + _create (mapper, props, opts) { const self = this return self.POST( @@ -341,6 +330,16 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { }) }, + _sum (mapper, field, query, opts) { + const self = this + return self.GET( + self.getPath('sum', mapper, opts.params, opts), + opts + ).then(function (response) { + return self._end(mapper, opts, response) + }) + }, + _update (mapper, id, props, opts) { const self = this return self.PUT( @@ -374,6 +373,31 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { }) }, + /** + * Retrieve the number of records that match the selection `query`. + * + * @name HttpAdapter#count + * @method + * @param {Object} mapper The mapper. + * @param {Object} query Selection query. + * @param {Object} [opts] Configuration options. + * @param {string} [opts.params] TODO + * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO + * @return {Promise} + */ + count (mapper, query, opts) { + const self = this + query || (query = {}) + opts || (opts = {}) + opts.params = self.getParams(opts) + opts.params.count = true + opts.suffix = self.getSuffix(mapper, opts) + utils.deepMixIn(opts.params, query) + opts.params = self.queryTransform(mapper, opts.params, opts) + + return __super__.count.call(self, mapper, query, opts) + }, + /** * Create a new the record from the provided `props`. * @@ -388,8 +412,8 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { */ create (mapper, props, opts) { const self = this - opts = opts ? copy(opts) : {} - opts.params || (opts.params = {}) + opts || (opts = {}) + opts.params = self.getParams(opts) opts.params = self.queryTransform(mapper, opts.params, opts) opts.suffix = self.getSuffix(mapper, opts) @@ -410,8 +434,8 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { */ createMany (mapper, props, opts) { const self = this - opts = opts ? copy(opts) : {} - opts.params || (opts.params = {}) + opts || (opts = {}) + opts.params = self.getParams(opts) opts.params = self.queryTransform(mapper, opts.params, opts) opts.suffix = self.getSuffix(mapper, opts) @@ -439,18 +463,18 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { // beforeDEL lifecycle hook op = opts.op = 'beforeDEL' - return resolve(self[op](url, config, opts)).then(function (_config) { + return utils.resolve(self[op](url, config, opts)).then(function (_config) { // Allow re-assignment from lifecycle hook - config = isUndefined(_config) ? config : _config + config = utils.isUndefined(_config) ? config : _config op = opts.op = 'DEL' self.dbg(op, url, config, opts) return self.HTTP(config, opts) }).then(function (response) { // afterDEL lifecycle hook op = opts.op = 'afterDEL' - return resolve(self[op](url, config, opts, response)).then(function (_response) { + return utils.resolve(self[op](url, config, opts, response)).then(function (_response) { // Allow re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response + return utils.isUndefined(_response) ? response : _response }) }) }, @@ -468,10 +492,10 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { */ deserialize (mapper, response, opts) { opts || (opts = {}) - if (isFunction(opts.deserialize)) { + if (utils.isFunction(opts.deserialize)) { return opts.deserialize(mapper, response, opts) } - if (isFunction(mapper.deserialize)) { + if (utils.isFunction(mapper.deserialize)) { return mapper.deserialize(mapper, response, opts) } if (response) { @@ -496,8 +520,8 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { */ destroy (mapper, id, opts) { const self = this - opts = opts ? copy(opts) : {} - opts.params || (opts.params = {}) + opts || (opts = {}) + opts.params = self.getParams(opts) opts.params = self.queryTransform(mapper, opts.params, opts) opts.suffix = self.getSuffix(mapper, opts) @@ -519,9 +543,9 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { destroyAll (mapper, query, opts) { const self = this query || (query = {}) - opts = opts ? copy(opts) : {} - opts.params || (opts.params = {}) - deepMixIn(opts.params, query) + opts || (opts = {}) + opts.params = self.getParams(opts) + utils.deepMixIn(opts.params, query) opts.params = self.queryTransform(mapper, opts.params, opts) opts.suffix = self.getSuffix(mapper, opts) @@ -562,7 +586,7 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { } if (config.data) { - requestConfig.body = toJson(config.data) + requestConfig.body = utils.toJson(config.data) } return fetch(new Request(buildUrl(config.url, config.params), requestConfig)).then(function (response) { @@ -591,8 +615,8 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { */ find (mapper, id, opts) { const self = this - opts = opts ? copy(opts) : {} - opts.params || (opts.params = {}) + opts || (opts = {}) + opts.params = self.getParams(opts) opts.params = self.queryTransform(mapper, opts.params, opts) opts.suffix = self.getSuffix(mapper, opts) @@ -614,10 +638,10 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { findAll (mapper, query, opts) { const self = this query || (query = {}) - opts = opts ? copy(opts) : {} - opts.params || (opts.params = {}) + opts || (opts = {}) + opts.params = self.getParams(opts) opts.suffix = self.getSuffix(mapper, opts) - deepMixIn(opts.params, query) + utils.deepMixIn(opts.params, query) opts.params = self.queryTransform(mapper, opts.params, opts) return __super__.findAll.call(self, mapper, query, opts) @@ -643,18 +667,18 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { // beforeGET lifecycle hook op = opts.op = 'beforeGET' - return resolve(self[op](url, config, opts)).then(function (_config) { + return utils.resolve(self[op](url, config, opts)).then(function (_config) { // Allow re-assignment from lifecycle hook - config = isUndefined(_config) ? config : _config + config = utils.isUndefined(_config) ? config : _config op = opts.op = 'GET' self.dbg(op, url, config, opts) return self.HTTP(config, opts) }).then(function (response) { // afterGET lifecycle hook op = opts.op = 'afterGET' - return resolve(self[op](url, config, opts, response)).then(function (_response) { + return utils.resolve(self[op](url, config, opts, response)).then(function (_response) { // Allow re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response + return utils.isUndefined(_response) ? response : _response }) }) }, @@ -670,9 +694,9 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { getEndpoint (mapper, id, opts) { const self = this opts || (opts = {}) - opts.params || (opts.params = {}) + opts.params = utils.isUndefined(opts.params) ? {} : opts.params const relationList = mapper.relationList || [] - let endpoint = isUndefined(opts.endpoint) ? (isUndefined(mapper.endpoint) ? mapper.name : mapper.endpoint) : opts.endpoint + let endpoint = utils.isUndefined(opts.endpoint) ? (utils.isUndefined(mapper.endpoint) ? mapper.name : mapper.endpoint) : opts.endpoint relationList.forEach(function (def) { if (def.type !== 'belongsTo' || !def.parent) { @@ -691,21 +715,21 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { } else { delete opts.params[parentKey] - if (isObject(id)) { + if (utils.isObject(id)) { item = id } if (item) { - parentId = parentId || def.getForeignKey(item) || (def.getLocalField(item) ? get(def.getLocalField(item), parentDef.idAttribute) : null) + parentId = parentId || def.getForeignKey(item) || (def.getLocalField(item) ? utils.get(def.getLocalField(item), parentDef.idAttribute) : null) } if (parentId) { delete opts.endpoint const _opts = {} - forOwn(opts, function (value, key) { + utils.forOwn(opts, function (value, key) { _opts[key] = value }) - _(_opts, parentDef) + utils._(_opts, parentDef) endpoint = makePath(self.getEndpoint(parentDef, parentId, _opts), parentId, endpoint) return false } @@ -727,8 +751,8 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { const self = this opts || (opts = {}) const args = [ - isUndefined(opts.basePath) ? (isUndefined(mapper.basePath) ? self.basePath : mapper.basePath) : opts.basePath, - self.getEndpoint(mapper, (isString(id) || isNumber(id) || method === 'create') ? id : null, opts) + utils.isUndefined(opts.basePath) ? (utils.isUndefined(mapper.basePath) ? self.basePath : mapper.basePath) : opts.basePath, + self.getEndpoint(mapper, (utils.isString(id) || utils.isNumber(id) || method === 'create') ? id : null, opts) ] if (method === 'find' || method === 'update' || method === 'destroy') { args.push(id) @@ -736,10 +760,18 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { return makePath.apply(utils, args) }, + getParams (opts) { + opts || (opts = {}) + if (utils.isUndefined(opts.params)) { + return {} + } + return utils.copy(opts.params) + }, + getSuffix (mapper, opts) { opts || (opts = {}) - if (isUndefined(opts.suffix)) { - if (isUndefined(mapper.suffix)) { + if (utils.isUndefined(opts.suffix)) { + if (utils.isUndefined(mapper.suffix)) { return this.suffix } return mapper.suffix @@ -763,8 +795,8 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { const payload = config.data const cache = config.cache const timeout = config.timeout - config = copy(config, null, null, null, ['data', 'cache', 'timeout']) - config = deepMixIn(config, self.httpConfig) + config = utils.copy(config, null, null, null, ['data', 'cache', 'timeout']) + config = utils.deepMixIn(config, self.httpConfig) config.data = payload config.cache = cache config.timeout = timeout @@ -788,7 +820,7 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { if (self.error) { self.error(`'FAILED: ${str}`, data) } - return reject(data) + return utils.reject(data) } } @@ -796,7 +828,7 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { throw new Error('You have not configured this adapter with an http library!') } - return resolve(self.beforeHTTP(config, opts)).then(function (_config) { + return utils.resolve(self.beforeHTTP(config, opts)).then(function (_config) { config = _config || config if (hasFetch && (self.useFetch || opts.useFetch || !self.http)) { return self.fetch(config, opts).then(logResponse, logResponse) @@ -805,7 +837,7 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { return self.responseError(err, config, opts) }) }).then(function (response) { - return resolve(self.afterHTTP(config, opts, response)).then(function (_response) { + return utils.resolve(self.afterHTTP(config, opts, response)).then(function (_response) { return _response || response }) }) @@ -833,18 +865,18 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { // beforePOST lifecycle hook op = opts.op = 'beforePOST' - return resolve(self[op](url, data, config, opts)).then(function (_config) { + return utils.resolve(self[op](url, data, config, opts)).then(function (_config) { // Allow re-assignment from lifecycle hook - config = isUndefined(_config) ? config : _config + config = utils.isUndefined(_config) ? config : _config op = opts.op = 'POST' self.dbg(op, url, data, config, opts) return self.HTTP(config, opts) }).then(function (response) { // afterPOST lifecycle hook op = opts.op = 'afterPOST' - return resolve(self[op](url, data, config, opts, response)).then(function (_response) { + return utils.resolve(self[op](url, data, config, opts, response)).then(function (_response) { // Allow re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response + return utils.isUndefined(_response) ? response : _response }) }) }, @@ -871,18 +903,18 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { // beforePUT lifecycle hook op = opts.op = 'beforePUT' - return resolve(self[op](url, data, config, opts)).then(function (_config) { + return utils.resolve(self[op](url, data, config, opts)).then(function (_config) { // Allow re-assignment from lifecycle hook - config = isUndefined(_config) ? config : _config + config = utils.isUndefined(_config) ? config : _config op = opts.op = 'PUT' self.dbg(op, url, data, config, opts) return self.HTTP(config, opts) }).then(function (response) { // afterPUT lifecycle hook op = opts.op = 'afterPUT' - return resolve(self[op](url, data, config, opts, response)).then(function (_response) { + return utils.resolve(self[op](url, data, config, opts, response)).then(function (_response) { // Allow re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response + return utils.isUndefined(_response) ? response : _response }) }) }, @@ -899,10 +931,10 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { */ queryTransform (mapper, params, opts) { opts || (opts = {}) - if (isFunction(opts.queryTransform)) { + if (utils.isFunction(opts.queryTransform)) { return opts.queryTransform(mapper, params, opts) } - if (isFunction(mapper.queryTransform)) { + if (utils.isFunction(mapper.queryTransform)) { return mapper.queryTransform(mapper, params, opts) } return params @@ -922,7 +954,7 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { * @return {Promise} */ responseError (err, config, opts) { - return reject(err) + return utils.reject(err) }, /** @@ -937,15 +969,44 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { */ serialize (mapper, data, opts) { opts || (opts = {}) - if (isFunction(opts.serialize)) { + if (utils.isFunction(opts.serialize)) { return opts.serialize(mapper, data, opts) } - if (isFunction(mapper.serialize)) { + if (utils.isFunction(mapper.serialize)) { return mapper.serialize(mapper, data, opts) } return data }, + /** + * Retrieve the sum of the field of the records that match the selection query. + * + * @name HttpAdapter#sum + * @method + * @param {Object} mapper The mapper. + * @param {string} field The field to sum. + * @param {Object} query Selection query. + * @param {Object} [opts] Configuration options. + * @param {string} [opts.params] TODO + * @param {string} [opts.suffix={@link HttpAdapter#suffix}] TODO + * @return {Promise} + */ + sum (mapper, field, query, opts) { + const self = this + query || (query = {}) + opts || (opts = {}) + if (!utils.utils.isString(field)) { + throw new Error('field must be a string!') + } + opts.params = self.getParams(opts) + opts.params.sum = field + opts.suffix = self.getSuffix(mapper, opts) + utils.deepMixIn(opts.params, query) + opts.params = self.queryTransform(mapper, opts.params, opts) + + return __super__.sum.call(self, mapper, field, query, opts) + }, + /** * TODO * @@ -959,8 +1020,8 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { */ update (mapper, id, props, opts) { const self = this - opts = opts ? copy(opts) : {} - opts.params || (opts.params = {}) + opts || (opts = {}) + opts.params = self.getParams(opts) opts.params = self.queryTransform(mapper, opts.params, opts) opts.suffix = self.getSuffix(mapper, opts) @@ -981,9 +1042,9 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { updateAll (mapper, props, query, opts) { const self = this query || (query = {}) - opts = opts ? copy(opts) : {} - opts.params || (opts.params = {}) - deepMixIn(opts.params, query) + opts || (opts = {}) + opts.params = self.getParams(opts) + utils.deepMixIn(opts.params, query) opts.params = self.queryTransform(mapper, opts.params, opts) opts.suffix = self.getSuffix(mapper, opts) @@ -1009,8 +1070,8 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { */ updateMany (mapper, records, opts) { const self = this - opts = opts ? copy(opts) : {} - opts.params || (opts.params = {}) + opts || (opts = {}) + opts.params = self.getParams(opts) opts.params = self.queryTransform(mapper, opts.params, opts) opts.suffix = self.getSuffix(mapper, opts) @@ -1034,7 +1095,7 @@ addHiddenPropsToTarget(HttpAdapter.prototype, { * decorate when invoked. */ HttpAdapter.addAction = function (name, opts) { - if (!name || !isString(name)) { + if (!name || !utils.isString(name)) { throw new TypeError('action(name[, opts]): Expected: string, Found: ' + typeof name) } return function (mapper) { @@ -1043,16 +1104,16 @@ HttpAdapter.addAction = function (name, opts) { } opts.request = opts.request || function (config) { return config } opts.response = opts.response || function (response) { return response } - opts.responseError = opts.responseError || function (err) { return reject(err) } + opts.responseError = opts.responseError || function (err) { return utils.reject(err) } mapper[name] = function (id, _opts) { const self = this - if (isObject(id)) { + if (utils.isObject(id)) { _opts = id } _opts = _opts || {} let adapter = self.getAdapter(opts.adapter || self.defaultAdapter || 'http') let config = {} - fillIn(config, opts) + utils.fillIn(config, opts) if (!_opts.hasOwnProperty('endpoint') && config.endpoint) { _opts.endpoint = config.endpoint } @@ -1061,9 +1122,9 @@ HttpAdapter.addAction = function (name, opts) { } else { let args = [ _opts.basePath || self.basePath || adapter.basePath, - adapter.getEndpoint(self, isSorN(id) ? id : null, _opts) + adapter.getEndpoint(self, utils.isSorN(id) ? id : null, _opts) ] - if (isSorN(id)) { + if (utils.isSorN(id)) { args.push(id) } args.push(opts.pathname || name) @@ -1071,8 +1132,8 @@ HttpAdapter.addAction = function (name, opts) { } config.method = config.method || 'GET' config.mapper = self.name - deepMixIn(config)(_opts) - return resolve(config) + utils.deepMixIn(config)(_opts) + return utils.resolve(config) .then(_opts.request || opts.request) .then(function (config) { return adapter.HTTP(config) }) .then(function (data) { @@ -1101,7 +1162,7 @@ HttpAdapter.addAction = function (name, opts) { HttpAdapter.addActions = function (opts) { opts || (opts = {}) return function (mapper) { - forOwn(mapper, function (value, key) { + utils.forOwn(mapper, function (value, key) { HttpAdapter.addAction(key, value)(mapper) }) return mapper @@ -1154,7 +1215,7 @@ HttpAdapter.addActions = function (opts) { * properties to the subclass itself. * @return {Object} Subclass of `HttpAdapter`. */ -HttpAdapter.extend = extend +HttpAdapter.extend = utils.extend /** * Details of the current version of the `js-data-http` module. From 174301820fb15db0d0a0af34143c7fb3fdda23a3 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Sat, 2 Apr 2016 11:51:34 -0700 Subject: [PATCH 19/24] 3.0.0-alpha.10 --- CHANGELOG.md | 5 + bower.json | 5 +- dist/js-data-http.js | 406 ++++++++++++++++++++--------- dist/js-data-http.js.map | 2 +- dist/js-data-http.min.js | 6 +- dist/js-data-http.min.map | 2 +- fetch/dist/js-data-fetch.js | 400 ++++++++++++++++++++-------- fetch/dist/js-data-fetch.js.map | 2 +- fetch/dist/js-data-fetch.min.js | 2 +- fetch/dist/js-data-fetch.min.map | 2 +- fetch/package.json | 2 +- node/dist/js-data-http-node.js | 400 ++++++++++++++++++++-------- node/dist/js-data-http-node.js.map | 2 +- node/package.json | 2 +- package.json | 15 +- src/index.js | 8 +- 16 files changed, 895 insertions(+), 366 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 37fbe4d..5a5f475 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +##### 3.0.0-alpha.10 - 02 April 2016 + +###### Backwards compatible bug fixes +- Fixed double deserialization of data in some cases + ##### 3.0.0-alpha.9 - 18 March 2016 ###### Backwards compatible API changes diff --git a/bower.json b/bower.json index e5a1550..9f596f0 100644 --- a/bower.json +++ b/bower.json @@ -24,9 +24,10 @@ "test/", "package.json", "karma.conf.js", - "karma.start.js" + "karma.start.js", + "webpack.config.js" ], "dependencies": { - "js-data": ">=3.0.0-alpha.15" + "js-data": ">=3.0.0-alpha.26" } } diff --git a/dist/js-data-http.js b/dist/js-data-http.js index 0ff2971..d211612 100644 --- a/dist/js-data-http.js +++ b/dist/js-data-http.js @@ -1,6 +1,6 @@ /*! * js-data-http -* @version 3.0.0-alpha.9 - Homepage +* @version 3.0.0-alpha.10 - Homepage * @author Jason Dobry * @copyright (c) 2014-2015 Jason Dobry * @license MIT @@ -368,7 +368,7 @@ return /******/ (function(modules) { // webpackBootstrap }); }, _end: function _end(mapper, opts, response) { - return [this.deserialize(mapper, response.data, opts), response]; + return [this.deserialize(mapper, response, opts), response]; }, _find: function _find(mapper, id, opts) { var self = this; @@ -537,10 +537,8 @@ return /******/ (function(modules) { // webpackBootstrap if (_jsData.utils.isFunction(mapper.deserialize)) { return mapper.deserialize(mapper, response, opts); } - if (response) { - if (response.hasOwnProperty('data')) { - return response.data; - } + if (response && response.hasOwnProperty('data')) { + return response.data; } return response; }, @@ -1304,11 +1302,11 @@ return /******/ (function(modules) { // webpackBootstrap * otherwise `false` if the current version is not beta. */ HttpAdapter.version = { - full: '3.0.0-alpha.9', + full: '3.0.0-alpha.10', major: parseInt('3', 10), minor: parseInt('0', 10), patch: parseInt('0', 10), - alpha: true ? '9' : false, + alpha: true ? '10' : false, beta: true ? 'false' : false }; @@ -1418,20 +1416,6 @@ return /******/ (function(modules) { // webpackBootstrap babelHelpers; - var addHiddenPropsToTarget = jsData.utils.addHiddenPropsToTarget; - var deepFillIn = jsData.utils.deepFillIn; - var extend = jsData.utils.extend; - var fillIn = jsData.utils.fillIn; - var forEachRelation = jsData.utils.forEachRelation; - var get = jsData.utils.get; - var isArray = jsData.utils.isArray; - var isObject = jsData.utils.isObject; - var isUndefined = jsData.utils.isUndefined; - var omit = jsData.utils.omit; - var plainCopy = jsData.utils.plainCopy; - var resolve = jsData.utils.resolve; - - var noop = function noop() { var self = this; @@ -1441,7 +1425,7 @@ return /******/ (function(modules) { // webpackBootstrap var opts = args[args.length - 1]; self.dbg.apply(self, [opts.op].concat(args)); - return resolve(); + return jsData.utils.resolve(); }; var noop2 = function noop2() { @@ -1453,7 +1437,7 @@ return /******/ (function(modules) { // webpackBootstrap var opts = args[args.length - 2]; self.dbg.apply(self, [opts.op].concat(args)); - return resolve(); + return jsData.utils.resolve(); }; var unique = function unique(array) { @@ -1470,7 +1454,7 @@ return /******/ (function(modules) { // webpackBootstrap }; var withoutRelations = function withoutRelations(mapper, props) { - return omit(props, mapper.relationFields || []); + return jsData.utils.omit(props, mapper.relationFields || []); }; var DEFAULTS = { @@ -1506,8 +1490,8 @@ return /******/ (function(modules) { // webpackBootstrap function Adapter(opts) { var self = this; opts || (opts = {}); - fillIn(opts, DEFAULTS); - fillIn(self, opts); + jsData.utils.fillIn(opts, DEFAULTS); + jsData.utils.fillIn(self, opts); } Adapter.reserved = ['orderBy', 'sort', 'limit', 'offset', 'skip', 'where']; @@ -1524,7 +1508,7 @@ return /******/ (function(modules) { // webpackBootstrap var self = this; meta || (meta = {}); self.data = data; - fillIn(self, meta); + jsData.utils.fillIn(self, meta); self.op = op; } @@ -1541,9 +1525,32 @@ return /******/ (function(modules) { // webpackBootstrap * properties to the subclass itself. * @return {Object} Subclass of `Adapter`. */ - Adapter.extend = extend; + Adapter.extend = jsData.utils.extend; + + jsData.utils.addHiddenPropsToTarget(Adapter.prototype, { + /** + * Lifecycle method method called by count. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes count to wait for the Promise to resolve before continuing. + * + * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the count. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by count. + * + * @name Adapter#afterCount + * @method + * @param {Object} mapper The `mapper` argument passed to count. + * @param {Object} props The `props` argument passed to count. + * @param {Object} opts The `opts` argument passed to count. + * @property {string} opts.op `afterCount` + * @param {Object|Response} response Count or {@link Response}, depending on the value of `opts.raw`. + */ + afterCount: noop2, - addHiddenPropsToTarget(Adapter.prototype, { /** * Lifecycle method method called by create. * @@ -1682,6 +1689,29 @@ return /******/ (function(modules) { // webpackBootstrap */ afterFindAll: noop2, + /** + * Lifecycle method method called by sum. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes sum to wait for the Promise to resolve before continuing. + * + * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the sum. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by sum. + * + * @name Adapter#afterSum + * @method + * @param {Object} mapper The `mapper` argument passed to sum. + * @param {Object} props The `props` argument passed to sum. + * @param {Object} opts The `opts` argument passed to sum. + * @property {string} opts.op `afterSum` + * @param {Object|Response} response Count or {@link Response}, depending on the value of `opts.raw`. + */ + afterSum: noop2, + /** * Lifecycle method method called by update. * @@ -1753,6 +1783,24 @@ return /******/ (function(modules) { // webpackBootstrap */ afterUpdateMany: noop2, + /** + * Lifecycle method method called by count. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes count to wait for the Promise to resolve before continuing. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by count. + * + * @name Adapter#beforeCount + * @method + * @param {Object} mapper The `mapper` argument passed to count. + * @param {Object} query The `query` argument passed to count. + * @param {Object} opts The `opts` argument passed to count. + * @property {string} opts.op `beforeCount` + */ + beforeCount: noop, + /** * Lifecycle method method called by create. * @@ -1865,6 +1913,24 @@ return /******/ (function(modules) { // webpackBootstrap */ beforeFindAll: noop, + /** + * Lifecycle method method called by sum. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes sum to wait for the Promise to resolve before continuing. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by sum. + * + * @name Adapter#beforeSum + * @method + * @param {Object} mapper The `mapper` argument passed to sum. + * @param {Object} query The `query` argument passed to sum. + * @param {Object} opts The `opts` argument passed to sum. + * @property {string} opts.op `beforeSum` + */ + beforeSum: noop, + /** * Lifecycle method method called by update. * @@ -1942,6 +2008,58 @@ return /******/ (function(modules) { // webpackBootstrap }, + /** + * Retrieve the number of records that match the selection query. Called by + * `Mapper#count`. + * + * @name Adapter#count + * @method + * @param {Object} mapper The mapper. + * @param {Object} [query] Selection query. + * @param {Object} [query.where] Filtering criteria. + * @param {string|Array} [query.orderBy] Sorting criteria. + * @param {string|Array} [query.sort] Same as `query.sort`. + * @param {number} [query.limit] Limit results. + * @param {number} [query.skip] Offset results. + * @param {number} [query.offset] Same as `query.skip`. + * @param {Object} [opts] Configuration options. + * @param {boolean} [opts.raw=false] Whether to return a more detailed + * response object. + * @return {Promise} + */ + count: function count(mapper, query, opts) { + var self = this; + var op = void 0; + query || (query = {}); + opts || (opts = {}); + + // beforeCount lifecycle hook + op = opts.op = 'beforeCount'; + return jsData.utils.resolve(self[op](mapper, query, opts)).then(function () { + // Allow for re-assignment from lifecycle hook + op = opts.op = 'count'; + self.dbg(op, mapper, query, opts); + return jsData.utils.resolve(self._count(mapper, query, opts)); + }).then(function (results) { + var _results = babelHelpers.slicedToArray(results, 2); + + var data = _results[0]; + var result = _results[1]; + + result || (result = {}); + var response = new Response(data, result, op); + response = self.respond(response, opts); + + // afterCount lifecycle hook + op = opts.op = 'afterCount'; + return jsData.utils.resolve(self[op](mapper, query, opts, response)).then(function (_response) { + // Allow for re-assignment from lifecycle hook + return jsData.utils.isUndefined(_response) ? response : _response; + }); + }); + }, + + /** * Create a new record. Called by `Mapper#create`. * @@ -1962,18 +2080,18 @@ return /******/ (function(modules) { // webpackBootstrap // beforeCreate lifecycle hook op = opts.op = 'beforeCreate'; - return resolve(self[op](mapper, props, opts)).then(function (_props) { + return jsData.utils.resolve(self[op](mapper, props, opts)).then(function (_props) { // Allow for re-assignment from lifecycle hook - props = isUndefined(_props) ? props : _props; + props = jsData.utils.isUndefined(_props) ? props : _props; props = withoutRelations(mapper, props); op = opts.op = 'create'; self.dbg(op, mapper, props, opts); - return resolve(self._create(mapper, props, opts)); + return jsData.utils.resolve(self._create(mapper, props, opts)); }).then(function (results) { - var _results = babelHelpers.slicedToArray(results, 2); + var _results2 = babelHelpers.slicedToArray(results, 2); - var data = _results[0]; - var result = _results[1]; + var data = _results2[0]; + var result = _results2[1]; result || (result = {}); var response = new Response(data, result, 'create'); @@ -1982,9 +2100,9 @@ return /******/ (function(modules) { // webpackBootstrap // afterCreate lifecycle hook op = opts.op = 'afterCreate'; - return resolve(self[op](mapper, props, opts, response)).then(function (_response) { + return jsData.utils.resolve(self[op](mapper, props, opts, response)).then(function (_response) { // Allow for re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return jsData.utils.isUndefined(_response) ? response : _response; }); }); }, @@ -2010,20 +2128,20 @@ return /******/ (function(modules) { // webpackBootstrap // beforeCreateMany lifecycle hook op = opts.op = 'beforeCreateMany'; - return resolve(self[op](mapper, props, opts)).then(function (_props) { + return jsData.utils.resolve(self[op](mapper, props, opts)).then(function (_props) { // Allow for re-assignment from lifecycle hook - props = isUndefined(_props) ? props : _props; + props = jsData.utils.isUndefined(_props) ? props : _props; props = props.map(function (record) { return withoutRelations(mapper, record); }); op = opts.op = 'createMany'; self.dbg(op, mapper, props, opts); - return resolve(self._createMany(mapper, props, opts)); + return jsData.utils.resolve(self._createMany(mapper, props, opts)); }).then(function (results) { - var _results2 = babelHelpers.slicedToArray(results, 2); + var _results3 = babelHelpers.slicedToArray(results, 2); - var data = _results2[0]; - var result = _results2[1]; + var data = _results3[0]; + var result = _results3[1]; data || (data = []); result || (result = {}); @@ -2033,9 +2151,9 @@ return /******/ (function(modules) { // webpackBootstrap // afterCreateMany lifecycle hook op = opts.op = 'afterCreateMany'; - return resolve(self[op](mapper, props, opts, response)).then(function (_response) { + return jsData.utils.resolve(self[op](mapper, props, opts, response)).then(function (_response) { // Allow for re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return jsData.utils.isUndefined(_response) ? response : _response; }); }); }, @@ -2061,15 +2179,15 @@ return /******/ (function(modules) { // webpackBootstrap // beforeDestroy lifecycle hook op = opts.op = 'beforeDestroy'; - return resolve(self[op](mapper, id, opts)).then(function () { + return jsData.utils.resolve(self[op](mapper, id, opts)).then(function () { op = opts.op = 'destroy'; self.dbg(op, mapper, id, opts); - return resolve(self._destroy(mapper, id, opts)); + return jsData.utils.resolve(self._destroy(mapper, id, opts)); }).then(function (results) { - var _results3 = babelHelpers.slicedToArray(results, 2); + var _results4 = babelHelpers.slicedToArray(results, 2); - var data = _results3[0]; - var result = _results3[1]; + var data = _results4[0]; + var result = _results4[1]; result || (result = {}); var response = new Response(data, result, 'destroy'); @@ -2077,9 +2195,9 @@ return /******/ (function(modules) { // webpackBootstrap // afterDestroy lifecycle hook op = opts.op = 'afterDestroy'; - return resolve(self[op](mapper, id, opts, response)).then(function (_response) { + return jsData.utils.resolve(self[op](mapper, id, opts, response)).then(function (_response) { // Allow for re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return jsData.utils.isUndefined(_response) ? response : _response; }); }); }, @@ -2112,15 +2230,15 @@ return /******/ (function(modules) { // webpackBootstrap // beforeDestroyAll lifecycle hook op = opts.op = 'beforeDestroyAll'; - return resolve(self[op](mapper, query, opts)).then(function () { + return jsData.utils.resolve(self[op](mapper, query, opts)).then(function () { op = opts.op = 'destroyAll'; self.dbg(op, mapper, query, opts); - return resolve(self._destroyAll(mapper, query, opts)); + return jsData.utils.resolve(self._destroyAll(mapper, query, opts)); }).then(function (results) { - var _results4 = babelHelpers.slicedToArray(results, 2); + var _results5 = babelHelpers.slicedToArray(results, 2); - var data = _results4[0]; - var result = _results4[1]; + var data = _results5[0]; + var result = _results5[1]; result || (result = {}); var response = new Response(data, result, 'destroyAll'); @@ -2128,9 +2246,9 @@ return /******/ (function(modules) { // webpackBootstrap // afterDestroyAll lifecycle hook op = opts.op = 'afterDestroyAll'; - return resolve(self[op](mapper, query, opts, response)).then(function (_response) { + return jsData.utils.resolve(self[op](mapper, query, opts, response)).then(function (_response) { // Allow for re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return jsData.utils.isUndefined(_response) ? response : _response; }); }); }, @@ -2164,8 +2282,8 @@ return /******/ (function(modules) { // webpackBootstrap */ makeHasManyLocalKeys: function makeHasManyLocalKeys(mapper, def, record) { var localKeys = []; - var itemKeys = get(record, def.localKeys) || []; - itemKeys = isArray(itemKeys) ? itemKeys : Object.keys(itemKeys); + var itemKeys = jsData.utils.get(record, def.localKeys) || []; + itemKeys = jsData.utils.isArray(itemKeys) ? itemKeys : Object.keys(itemKeys); localKeys = localKeys.concat(itemKeys); return unique(localKeys).filter(function (x) { return x; @@ -2183,7 +2301,7 @@ return /******/ (function(modules) { // webpackBootstrap * @return {*} */ makeHasManyForeignKeys: function makeHasManyForeignKeys(mapper, def, record) { - return get(record, mapper.idAttribute); + return jsData.utils.get(record, mapper.idAttribute); }, @@ -2200,7 +2318,7 @@ return /******/ (function(modules) { // webpackBootstrap var self = this; var singular = false; - if (isObject(records) && !isArray(records)) { + if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) { singular = true; records = [records]; } @@ -2227,7 +2345,7 @@ return /******/ (function(modules) { // webpackBootstrap attached = relatedItems; } else { relatedItems.forEach(function (relatedItem) { - if (get(relatedItem, def.foreignKey) === record[mapper.idAttribute]) { + if (jsData.utils.get(relatedItem, def.foreignKey) === record[mapper.idAttribute]) { attached.push(relatedItem); } }); @@ -2241,7 +2359,7 @@ return /******/ (function(modules) { // webpackBootstrap var record = void 0; var relatedMapper = def.getRelation(); - if (isObject(records) && !isArray(records)) { + if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) { record = records; } @@ -2269,8 +2387,8 @@ return /******/ (function(modules) { // webpackBootstrap }, __opts).then(function (relatedItems) { records.forEach(function (item) { var attached = []; - var itemKeys = get(item, def.localKeys) || []; - itemKeys = isArray(itemKeys) ? itemKeys : Object.keys(itemKeys); + var itemKeys = jsData.utils.get(item, def.localKeys) || []; + itemKeys = jsData.utils.isArray(itemKeys) ? itemKeys : Object.keys(itemKeys); relatedItems.forEach(function (relatedItem) { if (itemKeys && itemKeys.indexOf(relatedItem[relatedMapper.idAttribute]) !== -1) { attached.push(relatedItem); @@ -2292,7 +2410,7 @@ return /******/ (function(modules) { // webpackBootstrap var idAttribute = mapper.idAttribute; var record = void 0; - if (isObject(records) && !isArray(records)) { + if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) { record = records; } @@ -2315,9 +2433,9 @@ return /******/ (function(modules) { // webpackBootstrap var foreignKeysField = def.foreignKeys; records.forEach(function (record) { var _relatedItems = []; - var id = get(record, idAttribute); + var id = jsData.utils.get(record, idAttribute); relatedItems.forEach(function (relatedItem) { - var foreignKeys = get(relatedItems, foreignKeysField) || []; + var foreignKeys = jsData.utils.get(relatedItems, foreignKeysField) || []; if (foreignKeys.indexOf(id) !== -1) { _relatedItems.push(relatedItem); } @@ -2339,13 +2457,13 @@ return /******/ (function(modules) { // webpackBootstrap * @return {Promise} */ loadHasOne: function loadHasOne(mapper, def, records, __opts) { - if (isObject(records) && !isArray(records)) { + if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) { records = [records]; } return this.loadHasMany(mapper, def, records, __opts).then(function () { records.forEach(function (record) { var relatedData = def.getLocalField(record); - if (isArray(relatedData) && relatedData.length) { + if (jsData.utils.isArray(relatedData) && relatedData.length) { def.setLocalField(record, relatedData[0]); } }); @@ -2380,7 +2498,7 @@ return /******/ (function(modules) { // webpackBootstrap var self = this; var relationDef = def.getRelation(); - if (isObject(records) && !isArray(records)) { + if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) { var _ret2 = function () { var record = records; return { @@ -2436,14 +2554,14 @@ return /******/ (function(modules) { // webpackBootstrap // beforeFind lifecycle hook op = opts.op = 'beforeFind'; - return resolve(self[op](mapper, id, opts)).then(function () { + return jsData.utils.resolve(self[op](mapper, id, opts)).then(function () { op = opts.op = 'find'; self.dbg(op, mapper, id, opts); - return resolve(self._find(mapper, id, opts)); + return jsData.utils.resolve(self._find(mapper, id, opts)); }).then(function (results) { - var _results5 = babelHelpers.slicedToArray(results, 1); + var _results6 = babelHelpers.slicedToArray(results, 1); - var _record = _results5[0]; + var _record = _results6[0]; if (!_record) { return; @@ -2451,7 +2569,7 @@ return /******/ (function(modules) { // webpackBootstrap record = _record; var tasks = []; - forEachRelation(mapper, opts, function (def, __opts) { + jsData.utils.forEachRelation(mapper, opts, function (def, __opts) { var task = void 0; if (def.foreignKey && (def.type === 'hasOne' || def.type === 'hasMany')) { if (def.type === 'hasOne') { @@ -2479,9 +2597,9 @@ return /******/ (function(modules) { // webpackBootstrap // afterFind lifecycle hook op = opts.op = 'afterFind'; - return resolve(self[op](mapper, id, opts, response)).then(function (_response) { + return jsData.utils.resolve(self[op](mapper, id, opts, response)).then(function (_response) { // Allow for re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return jsData.utils.isUndefined(_response) ? response : _response; }); }); }, @@ -2515,30 +2633,30 @@ return /******/ (function(modules) { // webpackBootstrap var op = void 0; var activeWith = opts._activeWith; - if (isObject(activeWith)) { + if (jsData.utils.isObject(activeWith)) { var activeQuery = activeWith.query || {}; if (activeWith.replace) { query = activeQuery; } else { - deepFillIn(query, activeQuery); + jsData.utils.deepFillIn(query, activeQuery); } } // beforeFindAll lifecycle hook op = opts.op = 'beforeFindAll'; - return resolve(self[op](mapper, query, opts)).then(function () { + return jsData.utils.resolve(self[op](mapper, query, opts)).then(function () { op = opts.op = 'findAll'; self.dbg(op, mapper, query, opts); - return resolve(self._findAll(mapper, query, opts)); + return jsData.utils.resolve(self._findAll(mapper, query, opts)); }).then(function (results) { - var _results6 = babelHelpers.slicedToArray(results, 1); + var _results7 = babelHelpers.slicedToArray(results, 1); - var _records = _results6[0]; + var _records = _results7[0]; _records || (_records = []); records = _records; var tasks = []; - forEachRelation(mapper, opts, function (def, __opts) { + jsData.utils.forEachRelation(mapper, opts, function (def, __opts) { var task = void 0; if (def.foreignKey && (def.type === 'hasOne' || def.type === 'hasMany')) { if (def.type === 'hasMany') { @@ -2565,9 +2683,9 @@ return /******/ (function(modules) { // webpackBootstrap // afterFindAll lifecycle hook op = opts.op = 'afterFindAll'; - return resolve(self[op](mapper, query, opts, response)).then(function (_response) { + return jsData.utils.resolve(self[op](mapper, query, opts, response)).then(function (_response) { // Allow for re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return jsData.utils.isUndefined(_response) ? response : _response; }); }); }, @@ -2585,7 +2703,7 @@ return /******/ (function(modules) { // webpackBootstrap */ getOpt: function getOpt(opt, opts) { opts || (opts = {}); - return isUndefined(opts[opt]) ? plainCopy(this[opt]) : plainCopy(opts[opt]); + return jsData.utils.isUndefined(opts[opt]) ? jsData.utils.plainCopy(this[opt]) : jsData.utils.plainCopy(opts[opt]); }, @@ -2623,6 +2741,62 @@ return /******/ (function(modules) { // webpackBootstrap }, + /** + * Retrieve sum of the specified field of the records that match the selection + * query. Called by `Mapper#sum`. + * + * @name Adapter#sum + * @method + * @param {Object} mapper The mapper. + * @param {string} field By to sum. + * @param {Object} [query] Selection query. + * @param {Object} [query.where] Filtering criteria. + * @param {string|Array} [query.orderBy] Sorting criteria. + * @param {string|Array} [query.sort] Same as `query.sort`. + * @param {number} [query.limit] Limit results. + * @param {number} [query.skip] Offset results. + * @param {number} [query.offset] Same as `query.skip`. + * @param {Object} [opts] Configuration options. + * @param {boolean} [opts.raw=false] Whether to return a more detailed + * response object. + * @return {Promise} + */ + sum: function sum(mapper, field, query, opts) { + var self = this; + var op = void 0; + if (!jsData.utils.isString(field)) { + throw new Error('field must be a string!'); + } + query || (query = {}); + opts || (opts = {}); + + // beforeSum lifecycle hook + op = opts.op = 'beforeSum'; + return jsData.utils.resolve(self[op](mapper, field, query, opts)).then(function () { + // Allow for re-assignment from lifecycle hook + op = opts.op = 'sum'; + self.dbg(op, mapper, field, query, opts); + return jsData.utils.resolve(self._sum(mapper, field, query, opts)); + }).then(function (results) { + var _results8 = babelHelpers.slicedToArray(results, 2); + + var data = _results8[0]; + var result = _results8[1]; + + result || (result = {}); + var response = new Response(data, result, op); + response = self.respond(response, opts); + + // afterSum lifecycle hook + op = opts.op = 'afterSum'; + return jsData.utils.resolve(self[op](mapper, field, query, opts, response)).then(function (_response) { + // Allow for re-assignment from lifecycle hook + return jsData.utils.isUndefined(_response) ? response : _response; + }); + }); + }, + + /** * @name Adapter#respond * @method @@ -2658,17 +2832,17 @@ return /******/ (function(modules) { // webpackBootstrap // beforeUpdate lifecycle hook op = opts.op = 'beforeUpdate'; - return resolve(self[op](mapper, id, props, opts)).then(function (_props) { + return jsData.utils.resolve(self[op](mapper, id, props, opts)).then(function (_props) { // Allow for re-assignment from lifecycle hook - props = isUndefined(_props) ? props : _props; + props = jsData.utils.isUndefined(_props) ? props : _props; op = opts.op = 'update'; self.dbg(op, mapper, id, props, opts); - return resolve(self._update(mapper, id, props, opts)); + return jsData.utils.resolve(self._update(mapper, id, props, opts)); }).then(function (results) { - var _results7 = babelHelpers.slicedToArray(results, 2); + var _results9 = babelHelpers.slicedToArray(results, 2); - var data = _results7[0]; - var result = _results7[1]; + var data = _results9[0]; + var result = _results9[1]; result || (result = {}); var response = new Response(data, result, 'update'); @@ -2677,9 +2851,9 @@ return /******/ (function(modules) { // webpackBootstrap // afterUpdate lifecycle hook op = opts.op = 'afterUpdate'; - return resolve(self[op](mapper, id, props, opts, response)).then(function (_response) { + return jsData.utils.resolve(self[op](mapper, id, props, opts, response)).then(function (_response) { // Allow for re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return jsData.utils.isUndefined(_response) ? response : _response; }); }); }, @@ -2714,17 +2888,17 @@ return /******/ (function(modules) { // webpackBootstrap // beforeUpdateAll lifecycle hook op = opts.op = 'beforeUpdateAll'; - return resolve(self[op](mapper, props, query, opts)).then(function (_props) { + return jsData.utils.resolve(self[op](mapper, props, query, opts)).then(function (_props) { // Allow for re-assignment from lifecycle hook - props = isUndefined(_props) ? props : _props; + props = jsData.utils.isUndefined(_props) ? props : _props; op = opts.op = 'updateAll'; self.dbg(op, mapper, props, query, opts); - return resolve(self._updateAll(mapper, props, query, opts)); + return jsData.utils.resolve(self._updateAll(mapper, props, query, opts)); }).then(function (results) { - var _results8 = babelHelpers.slicedToArray(results, 2); + var _results10 = babelHelpers.slicedToArray(results, 2); - var data = _results8[0]; - var result = _results8[1]; + var data = _results10[0]; + var result = _results10[1]; data || (data = []); result || (result = {}); @@ -2734,9 +2908,9 @@ return /******/ (function(modules) { // webpackBootstrap // afterUpdateAll lifecycle hook op = opts.op = 'afterUpdateAll'; - return resolve(self[op](mapper, props, query, opts, response)).then(function (_response) { + return jsData.utils.resolve(self[op](mapper, props, query, opts, response)).then(function (_response) { // Allow for re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return jsData.utils.isUndefined(_response) ? response : _response; }); }); }, @@ -2762,25 +2936,25 @@ return /******/ (function(modules) { // webpackBootstrap var idAttribute = mapper.idAttribute; records = records.filter(function (record) { - return get(record, idAttribute); + return jsData.utils.get(record, idAttribute); }); // beforeUpdateMany lifecycle hook op = opts.op = 'beforeUpdateMany'; - return resolve(self[op](mapper, records, opts)).then(function (_records) { + return jsData.utils.resolve(self[op](mapper, records, opts)).then(function (_records) { // Allow for re-assignment from lifecycle hook - records = isUndefined(_records) ? records : _records; + records = jsData.utils.isUndefined(_records) ? records : _records; records = records.map(function (record) { return withoutRelations(mapper, record); }); op = opts.op = 'updateMany'; self.dbg(op, mapper, records, opts); - return resolve(self._updateMany(mapper, records, opts)); + return jsData.utils.resolve(self._updateMany(mapper, records, opts)); }).then(function (results) { - var _results9 = babelHelpers.slicedToArray(results, 2); + var _results11 = babelHelpers.slicedToArray(results, 2); - var data = _results9[0]; - var result = _results9[1]; + var data = _results11[0]; + var result = _results11[1]; data || (data = []); result || (result = {}); @@ -2790,9 +2964,9 @@ return /******/ (function(modules) { // webpackBootstrap // afterUpdateMany lifecycle hook op = opts.op = 'afterUpdateMany'; - return resolve(self[op](mapper, records, opts, response)).then(function (_response) { + return jsData.utils.resolve(self[op](mapper, records, opts, response)).then(function (_response) { // Allow for re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return jsData.utils.isUndefined(_response) ? response : _response; }); }); } diff --git a/dist/js-data-http.js.map b/dist/js-data-http.js.map index 8f05bd5..669d230 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 19b888c7340fff9b83da","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/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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A;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;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,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;;AAEA;;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,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,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;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;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,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;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;;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;AACA,iBAAgB;AAChB;AACA;AACA;AACA,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,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,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,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,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;;AAEA,EAAC;AACD,4C;;;;;;AC36CA,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;;AAEA;AACA;AACA;AACA;AACA;;AAEA;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;;;;;;;ACvHD;;AAEA;;AAEA,iCAAgC;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;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;AACA;;;;;;;AC9DA;;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,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;;;;;;;ACnPA;;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;;AAEA;AACA;AACA;;AAEA;AACA,2CAA0C;AAC1C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;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;;AAEA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;;;;;;;ACjIA;;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;;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[\"HttpAdapter\"] = factory(require(\"js-data\"));\n\telse\n\t\troot[\"HttpAdapter\"] = 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 19b888c7340fff9b83da\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nimport Adapter from 'js-data-adapter'\n\nlet hasFetch = false\n\ntry {\n hasFetch = window && window.fetch\n} catch (e) {}\n\nconst noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n return utils.resolve()\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n return utils.resolve()\n}\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 * @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// 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\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.data, 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) {\n if (response.hasOwnProperty('data')) {\n return response.data\n }\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 HttpAdapter.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 */\nHttpAdapter.addAction = function (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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n utils.forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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(require('js-data')) :\n typeof define === 'function' && define.amd ? define('js-data-adapter', ['js-data'], factory) :\n (factory(global.JSData));\n}(this, function (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 addHiddenPropsToTarget = jsData.utils.addHiddenPropsToTarget;\n var deepFillIn = jsData.utils.deepFillIn;\n var extend = jsData.utils.extend;\n var fillIn = jsData.utils.fillIn;\n var forEachRelation = jsData.utils.forEachRelation;\n var get = jsData.utils.get;\n var isArray = jsData.utils.isArray;\n var isObject = jsData.utils.isObject;\n var isUndefined = jsData.utils.isUndefined;\n var omit = jsData.utils.omit;\n var plainCopy = jsData.utils.plainCopy;\n var resolve = jsData.utils.resolve;\n\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 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 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 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 fillIn(opts, DEFAULTS);\n fillIn(self, opts);\n }\n\n Adapter.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 * @typedef {Object} Response\n * @property {Object} data Response data.\n * @property {string} op The operation for which the response was created.\n */\n function Response(data, meta, op) {\n var self = this;\n meta || (meta = {});\n self.data = data;\n fillIn(self, meta);\n self.op = op;\n }\n\n Adapter.Response = Response;\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 = extend;\n\n addHiddenPropsToTarget(Adapter.prototype, {\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 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 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 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 * 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 resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n props = withoutRelations(mapper, props);\n op = opts.op = 'create';\n self.dbg(op, mapper, props, opts);\n return resolve(self._create(mapper, props, 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, '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 resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = 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 resolve(self._createMany(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 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 resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy';\n self.dbg(op, mapper, id, opts);\n return resolve(self._destroy(mapper, id, 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 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 resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll';\n self.dbg(op, mapper, query, opts);\n return resolve(self._destroyAll(mapper, query, 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, 'destroyAll');\n response = self.respond(response, opts);\n\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll';\n return resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return isUndefined(_response) ? response : _response;\n });\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 = get(record, def.localKeys) || [];\n itemKeys = 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 get(record, mapper.idAttribute);\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 (isObject(records) && !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 (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 (isObject(records) && !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 _ret = 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 = get(item, def.localKeys) || [];\n itemKeys = 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 _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === \"object\") return _ret.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 (isObject(records) && !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 = get(record, idAttribute);\n relatedItems.forEach(function (relatedItem) {\n var foreignKeys = 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 (isObject(records) && !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 (isArray(relatedData) && relatedData.length) {\n def.setLocalField(record, relatedData[0]);\n }\n });\n });\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 * 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 (isObject(records) && !isArray(records)) {\n var _ret2 = 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 _ret2 === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret2)) === \"object\") return _ret2.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 resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find';\n self.dbg(op, mapper, id, opts);\n return resolve(self._find(mapper, id, opts));\n }).then(function (results) {\n var _results5 = babelHelpers.slicedToArray(results, 1);\n\n var _record = _results5[0];\n\n if (!_record) {\n return;\n }\n record = _record;\n var tasks = [];\n\n 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 resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 (isObject(activeWith)) {\n var activeQuery = activeWith.query || {};\n if (activeWith.replace) {\n query = activeQuery;\n } else {\n deepFillIn(query, activeQuery);\n }\n }\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll';\n return resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll';\n self.dbg(op, mapper, query, opts);\n return resolve(self._findAll(mapper, query, opts));\n }).then(function (results) {\n var _results6 = babelHelpers.slicedToArray(results, 1);\n\n var _records = _results6[0];\n\n _records || (_records = []);\n records = _records;\n var tasks = [];\n 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 resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 isUndefined(opts[opt]) ? plainCopy(this[opt]) : plainCopy(opts[opt]);\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 * @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 resolve(self[op](mapper, id, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n op = opts.op = 'update';\n self.dbg(op, mapper, id, props, opts);\n return resolve(self._update(mapper, id, props, opts));\n }).then(function (results) {\n var _results7 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results7[0];\n var result = _results7[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 resolve(self[op](mapper, id, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, props, query, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n op = opts.op = 'updateAll';\n self.dbg(op, mapper, props, query, opts);\n return resolve(self._updateAll(mapper, props, 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 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 resolve(self[op](mapper, props, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 get(record, idAttribute);\n });\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany';\n return resolve(self[op](mapper, records, opts)).then(function (_records) {\n // Allow for re-assignment from lifecycle hook\n records = 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 resolve(self._updateMany(mapper, records, 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 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 resolve(self[op](mapper, records, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return isUndefined(_response) ? response : _response;\n });\n });\n }\n });\n\n module.exports = Adapter;\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\naxios.create = function create(defaultConfig) {\n return new Axios(defaultConfig);\n};\n\n// Expose defaults\naxios.defaults = defaultInstance.defaults;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose interceptors\naxios.interceptors = defaultInstance.interceptors;\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 transformResponseJSON(data, headers) {\n if (utils.isFormData(data)) {\n return data;\n }\n if (utils.isArrayBuffer(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 transformResponseJSON(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\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 * 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 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 = window.btoa || require('./../helpers/btoa');\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\n // For IE 8/9 CORS support\n // Only supports POST and GET calls and doesn't returns the response headers.\n if (window.XDomainRequest && !('withCredentials' in request) && !isURLSameOrigin(config.url)) {\n request = new window.XDomainRequest();\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 // Listen for ready state\n request.onload = function handleLoad() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = ['text', ''].indexOf(config.responseType || '') !== -1 ? 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 };\n\n // Resolve or reject the Promise based on the status\n ((response.status >= 200 && response.status < 300) ||\n (!('status' in request) && response.responseText) ?\n resolve :\n 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 // 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 if (utils.isArrayBuffer(requestData)) {\n requestData = new DataView(requestData);\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 InvalidCharacterError(message) {\n this.message = message;\n}\nInvalidCharacterError.prototype = new Error;\nInvalidCharacterError.prototype.code = 5;\nInvalidCharacterError.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 InvalidCharacterError('INVALID_CHARACTER_ERR: DOM Exception 5');\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\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 = 15\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 = 16\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 = 17\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 = 18\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 = 19\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 = 20\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap cd03ed7151588ace4dd1","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/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;;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,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;;AAEA;;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,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;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;;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;AACA,iBAAgB;AAChB;AACA;AACA;AACA,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,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,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,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,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;;AAEA,EAAC;AACD,4C;;;;;;AC3lDA,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;;AAEA;AACA;AACA;AACA;AACA;;AAEA;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;;;;;;;ACvHD;;AAEA;;AAEA,iCAAgC;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;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;AACA;;;;;;;AC9DA;;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,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;;;;;;;ACnPA;;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;;AAEA;AACA;AACA;;AAEA;AACA,2CAA0C;AAC1C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;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;;AAEA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;;;;;;;ACjIA;;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;;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[\"HttpAdapter\"] = factory(require(\"js-data\"));\n\telse\n\t\troot[\"HttpAdapter\"] = 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 cd03ed7151588ace4dd1\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nimport Adapter from 'js-data-adapter'\n\nlet hasFetch = false\n\ntry {\n hasFetch = window && window.fetch\n} catch (e) {}\n\nconst noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n return utils.resolve()\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n return utils.resolve()\n}\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 * @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// 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\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 HttpAdapter.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 */\nHttpAdapter.addAction = function (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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n utils.forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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(require('js-data')) :\n typeof define === 'function' && define.amd ? define('js-data-adapter', ['js-data'], factory) :\n (factory(global.JSData));\n}(this, function (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 Adapter.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 * @typedef {Object} Response\n * @property {Object} data Response data.\n * @property {string} op The operation for which the response was created.\n */\n function Response(data, meta, op) {\n var self = this;\n meta || (meta = {});\n self.data = data;\n jsData.utils.fillIn(self, meta);\n self.op = op;\n }\n\n Adapter.Response = Response;\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 {Object} props The `props` 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 * 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 * 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 _ret = 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 _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === \"object\") return _ret.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 * 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 * 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 _ret2 = 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 _ret2 === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret2)) === \"object\") return _ret2.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 * 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 * 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 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 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 module.exports = Adapter;\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\naxios.create = function create(defaultConfig) {\n return new Axios(defaultConfig);\n};\n\n// Expose defaults\naxios.defaults = defaultInstance.defaults;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose interceptors\naxios.interceptors = defaultInstance.interceptors;\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 transformResponseJSON(data, headers) {\n if (utils.isFormData(data)) {\n return data;\n }\n if (utils.isArrayBuffer(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 transformResponseJSON(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\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 * 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 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 = window.btoa || require('./../helpers/btoa');\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\n // For IE 8/9 CORS support\n // Only supports POST and GET calls and doesn't returns the response headers.\n if (window.XDomainRequest && !('withCredentials' in request) && !isURLSameOrigin(config.url)) {\n request = new window.XDomainRequest();\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 // Listen for ready state\n request.onload = function handleLoad() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = ['text', ''].indexOf(config.responseType || '') !== -1 ? 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 };\n\n // Resolve or reject the Promise based on the status\n ((response.status >= 200 && response.status < 300) ||\n (!('status' in request) && response.responseText) ?\n resolve :\n 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 // 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 if (utils.isArrayBuffer(requestData)) {\n requestData = new DataView(requestData);\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 InvalidCharacterError(message) {\n this.message = message;\n}\nInvalidCharacterError.prototype = new Error;\nInvalidCharacterError.prototype.code = 5;\nInvalidCharacterError.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 InvalidCharacterError('INVALID_CHARACTER_ERR: DOM Exception 5');\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\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 = 15\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 = 16\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 = 17\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 = 18\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 = 19\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 = 20\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 c96e830..f2c66f4 100644 --- a/dist/js-data-http.min.js +++ b/dist/js-data-http.min.js @@ -1,12 +1,12 @@ /*! * js-data-http -* @version 3.0.0-alpha.9 - Homepage +* @version 3.0.0-alpha.10 - Homepage * @author Jason Dobry * @copyright (c) 2014-2015 Jason Dobry * @license MIT * * @overview HTTP adapter for js-data. */ -!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.HttpAdapter=t(require("js-data")):e.HttpAdapter=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 e&&e.__esModule?e:{default:e}}function o(e){return null!=e&&""!==e}function i(e,t){return t||(t=""),e.filter(o).join(t)}function a(){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 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 s(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 f(e){var t=this;e||(e={}),l.utils.fillIn(e,b),p.default.call(t,e)}var c="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),d=n(2),p=r(d),h=n(3),y=!1;try{y=window&&window.fetch}catch(e){}var m=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var o=n[n.length-1];return e.dbg.apply(e,[o.op].concat(n)),l.utils.resolve()},g=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var o=n[n.length-2];return e.dbg.apply(e,[o.op].concat(n)),l.utils.resolve()},v=p.default.prototype,b={basePath:"",forceTrailingSlash:!1,http:h,httpConfig:{},suffix:"",useFetch:!1};f.prototype=Object.create(p.default.prototype,{constructor:{value:f,enumerable:!1,writable:!0,configurable:!0}}),Object.defineProperty(f,"__super__",{configurable:!0,value:p.default}),l.utils.addHiddenPropsToTarget(f.prototype,{afterDEL:g,afterGET:g,afterHTTP:g,afterPOST:g,afterPUT:g,beforeDEL:m,beforeGET:m,beforeHTTP:m,beforePOST:m,beforePUT:m,_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.data,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),v.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),v.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),v.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),v.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),v.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(s(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),v.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),v.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||[],i=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,u=e.foreignKey,s=e.getRelation(),f=n.params[u];if(f===!1||!u||!s)return f===!1&&delete n.params[u],!1;if(delete n.params[u],l.utils.isObject(t)&&(o=t),o&&(f=f||e.getForeignKey(o)||(e.getLocalField(o)?l.utils.get(e.getLocalField(o),s.idAttribute):null)),f){var d=function(){delete n.endpoint;var e={};return l.utils.forOwn(n,function(t,n){e[n]=t}),l.utils._(e,s),i=a(r.getEndpoint(s,f,e),f,i),{v:!1}}();if("object"===("undefined"==typeof d?"undefined":c(d)))return d.v}}}),i},getPath:function(e,t,n,r){var o=this;r||(r={});var i=[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||i.push(n),a.apply(l.utils,i)},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,a=e.cache,u=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=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 l.utils.resolve(r.beforeHTTP(e,t)).then(function(o){return e=o||e,y&&(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(a){return n=l.utils.isUndefined(a)?n:a,i=r.op="POST",o.dbg(i,e,t,n,r),o.HTTP(n,r)}).then(function(a){return i=r.op="afterPOST",l.utils.resolve(o[i](e,t,n,r,a)).then(function(e){return l.utils.isUndefined(e)?a: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(a){return n=l.utils.isUndefined(a)?n:a,i=r.op="PUT",o.dbg(i,e,t,n,r),o.HTTP(n,r)}).then(function(a){return i=r.op="afterPUT",l.utils.resolve(o[i](e,t,n,r,a)).then(function(e){return l.utils.isUndefined(e)?a: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),v.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),v.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),v.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),v.updateMany.call(r,e,t,n)}}),f.addAction=function(e,t){if(!e||!l.utils.isString(e))throw new TypeError("action(name[, opts]): Expected: string, Found: "+("undefined"==typeof e?"undefined":c(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 i=o.getAdapter(t.adapter||o.defaultAdapter||"http"),u={};if(l.utils.fillIn(u,t),!r.hasOwnProperty("endpoint")&&u.endpoint&&(r.endpoint=u.endpoint),"function"==typeof r.getEndpoint)u.url=r.getEndpoint(o,r);else{var s=[r.basePath||o.basePath||i.basePath,i.getEndpoint(o,l.utils.isSorN(n)?n:null,r)];l.utils.isSorN(n)&&s.push(n),s.push(t.pathname||e),u.url=a.apply(null,s)}return u.method=u.method||"GET",u.mapper=o.name,l.utils.deepMixIn(u)(r),l.utils.resolve(u).then(r.request||t.request).then(function(e){return i.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}},f.addActions=function(e){return e||(e={}),function(e){return l.utils.forOwn(e,function(t,n){f.addAction(n,t)(e)}),e}},f.extend=l.utils.extend,f.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=f},function(t,n){t.exports=e},function(e,t,n){!function(e,t){t(n(1))}(this,function(t){"use strict";function n(e){var t=this;e||(e={}),s(e,T),s(t,e)}function r(e,t,n){var r=this;t||(t={}),r.data=e,s(r,t),r.op=n}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 a,u=e[Symbol.iterator]();!(r=(a=u.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{!r&&u.return&&u.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=t.utils.addHiddenPropsToTarget,a=t.utils.deepFillIn,u=t.utils.extend,s=t.utils.fillIn,f=t.utils.forEachRelation,c=t.utils.get,l=t.utils.isArray,d=t.utils.isObject,p=t.utils.isUndefined,h=t.utils.omit,y=t.utils.plainCopy,m=t.utils.resolve,g=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var o=n[n.length-1];return e.dbg.apply(e,[o.op].concat(n)),m()},v=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var o=n[n.length-2];return e.dbg.apply(e,[o.op].concat(n)),m()},b=function(e){var t={},n=[];return e.forEach(function(e){e in t||(n.push(e),t[e]=0)}),n},w=function(e,t){return h(t,e.relationFields||[])},T={debug:!1,raw:!1};n.reserved=["orderBy","sort","limit","offset","skip","where"],n.Response=r,n.extend=u,i(n.prototype,{afterCreate:v,afterCreateMany:v,afterDestroy:v,afterDestroyAll:v,afterFind:v,afterFindAll:v,afterUpdate:v,afterUpdateAll:v,afterUpdateMany:v,beforeCreate:g,beforeCreateMany:g,beforeDestroy:g,beforeDestroyAll:g,beforeFind:g,beforeFindAll:g,beforeUpdate:g,beforeUpdateAll:g,beforeUpdateMany:g,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))},create:function(e,t,n){var i=this,a=void 0;return t||(t={}),n||(n={}),a=n.op="beforeCreate",m(i[a](e,t,n)).then(function(r){return t=p(r)?t:r,t=w(e,t),a=n.op="create",i.dbg(a,e,t,n),m(i._create(e,t,n))}).then(function(u){var s=o.slicedToArray(u,2),f=s[0],c=s[1];c||(c={});var l=new r(f,c,"create");return l.created=f?1:0,l=i.respond(l,n),a=n.op="afterCreate",m(i[a](e,t,n,l)).then(function(e){return p(e)?l:e})})},createMany:function(e,t,n){var i=this,a=void 0;return t||(t={}),n||(n={}),a=n.op="beforeCreateMany",m(i[a](e,t,n)).then(function(r){return t=p(r)?t:r,t=t.map(function(t){return w(e,t)}),a=n.op="createMany",i.dbg(a,e,t,n),m(i._createMany(e,t,n))}).then(function(u){var s=o.slicedToArray(u,2),f=s[0],c=s[1];f||(f=[]),c||(c={});var l=new r(f,c,"createMany");return l.created=f.length,l=i.respond(l,n),a=n.op="afterCreateMany",m(i[a](e,t,n,l)).then(function(e){return p(e)?l:e})})},destroy:function(e,t,n){var i=this,a=void 0;return n||(n={}),a=n.op="beforeDestroy",m(i[a](e,t,n)).then(function(){return a=n.op="destroy",i.dbg(a,e,t,n),m(i._destroy(e,t,n))}).then(function(u){var s=o.slicedToArray(u,2),f=s[0],c=s[1];c||(c={});var l=new r(f,c,"destroy");return l=i.respond(l,n),a=n.op="afterDestroy",m(i[a](e,t,n,l)).then(function(e){return p(e)?l:e})})},destroyAll:function(e,t,n){var i=this,a=void 0;return t||(t={}),n||(n={}),a=n.op="beforeDestroyAll",m(i[a](e,t,n)).then(function(){return a=n.op="destroyAll",i.dbg(a,e,t,n),m(i._destroyAll(e,t,n))}).then(function(u){var s=o.slicedToArray(u,2),f=s[0],c=s[1];c||(c={});var l=new r(f,c,"destroyAll");return l=i.respond(l,n),a=n.op="afterDestroyAll",m(i[a](e,t,n,l)).then(function(e){return p(e)?l:e})})},makeHasManyForeignKey:function(e,t,n){return t.getForeignKey(n)},makeHasManyLocalKeys:function(e,t,n){var r=[],o=c(n,t.localKeys)||[];return o=l(o)?o:Object.keys(o),r=r.concat(o),b(r).filter(function(e){return e})},makeHasManyForeignKeys:function(e,t,n){return c(n,e.idAttribute)},loadHasMany:function(e,t,n,r){var o=this,i=!1;d(n)&&!l(n)&&(i=!0,n=[n]);var a=n.map(function(n){return o.makeHasManyForeignKey(e,t,n)}),u={where:{}},s=u.where[t.foreignKey]={};return i?s["=="]=a[0]:s.in=a.filter(function(e){return e}),o.findAll(t.getRelation(),u,r).then(function(r){n.forEach(function(n){var o=[];i?o=r:r.forEach(function(r){c(r,t.foreignKey)===n[e.idAttribute]&&o.push(r)}),t.setLocalField(n,o)})})},loadHasManyLocalKeys:function(e,t,n,r){var i=this,a=void 0,u=t.getRelation();if(d(n)&&!l(n)&&(a=n),a)return i.findAll(u,{where:o.defineProperty({},u.idAttribute,{in:i.makeHasManyLocalKeys(e,t,a)})},r).then(function(e){t.setLocalField(a,e)});var s=function(){var a=[];return n.forEach(function(n){a=a.concat(i.self.makeHasManyLocalKeys(e,t,n))}),{v:i.findAll(u,{where:o.defineProperty({},u.idAttribute,{in:b(a).filter(function(e){return e})})},r).then(function(e){return n.forEach(function(n){var r=[],o=c(n,t.localKeys)||[];o=l(o)?o:Object.keys(o),e.forEach(function(e){o&&-1!==o.indexOf(e[u.idAttribute])&&r.push(e)}),t.setLocalField(n,r)}),e})}}();return"object"===("undefined"==typeof s?"undefined":o.typeof(s))?s.v:void 0},loadHasManyForeignKeys:function(e,t,n,r){var i=this,a=t.getRelation(),u=e.idAttribute,s=void 0;return d(n)&&!l(n)&&(s=n),s?i.findAll(t.getRelation(),{where:o.defineProperty({},t.foreignKeys,{contains:i.makeHasManyForeignKeys(e,t,s)})},r).then(function(e){t.setLocalField(s,e)}):i.findAll(a,{where:o.defineProperty({},t.foreignKeys,{isectNotEmpty:n.map(function(n){return i.makeHasManyForeignKeys(e,t,n)})})},r).then(function(e){var r=t.foreignKeys;n.forEach(function(n){var o=[],i=c(n,u);e.forEach(function(t){var n=c(e,r)||[];-1!==n.indexOf(i)&&o.push(t)}),t.setLocalField(n,o)})})},loadHasOne:function(e,t,n,r){return d(n)&&!l(n)&&(n=[n]),this.loadHasMany(e,t,n,r).then(function(){n.forEach(function(e){var n=t.getLocalField(e);l(n)&&n.length&&t.setLocalField(e,n[0])})})},makeBelongsToForeignKey:function(e,t,n){return t.getForeignKey(n)},loadBelongsTo:function(e,t,n,r){var i=this,a=t.getRelation();if(!d(n)||l(n)){var u=n.map(function(n){return i.makeBelongsToForeignKey(e,t,n)}).filter(function(e){return e});return i.findAll(a,{where:o.defineProperty({},a.idAttribute,{in:u})},r).then(function(e){n.forEach(function(n){e.forEach(function(e){e[a.idAttribute]===n[t.foreignKey]&&t.setLocalField(n,e)})})})}var s=function(){var o=n;return{v:i.find(a,i.makeBelongsToForeignKey(e,t,o),r).then(function(e){t.setLocalField(o,e)})}}();return"object"===("undefined"==typeof s?"undefined":o.typeof(s))?s.v:void 0},find:function(e,t,n){var i=this,a=void 0,u=void 0;return n||(n={}),n.with||(n.with=[]),u=n.op="beforeFind",m(i[u](e,t,n)).then(function(){return u=n.op="find",i.dbg(u,e,t,n),m(i._find(e,t,n))}).then(function(t){var r=o.slicedToArray(t,1),u=r[0];if(u){a=u;var s=[];return f(e,n,function(t,n){var r=void 0;!t.foreignKey||"hasOne"!==t.type&&"hasMany"!==t.type?"hasMany"===t.type&&t.localKeys?r=i.loadHasManyLocalKeys(e,t,a,n):"hasMany"===t.type&&t.foreignKeys?r=i.loadHasManyForeignKeys(e,t,a,n):"belongsTo"===t.type&&(r=i.loadBelongsTo(e,t,a,n)):r="hasOne"===t.type?i.loadHasOne(e,t,a,n):i.loadHasMany(e,t,a,n),r&&s.push(r)}),Promise.all(s)}}).then(function(){var o=new r(a,{},"find");return o.found=a?1:0,o=i.respond(o,n),u=n.op="afterFind",m(i[u](e,t,n,o)).then(function(e){return p(e)?o:e})})},findAll:function(e,t,n){var i=this;n||(n={}),n.with||(n.with=[]);var u=[],s=void 0,c=n._activeWith;if(d(c)){var l=c.query||{};c.replace?t=l:a(t,l)}return s=n.op="beforeFindAll",m(i[s](e,t,n)).then(function(){return s=n.op="findAll",i.dbg(s,e,t,n),m(i._findAll(e,t,n))}).then(function(t){var r=o.slicedToArray(t,1),a=r[0];a||(a=[]),u=a;var s=[];return f(e,n,function(t,n){var r=void 0;!t.foreignKey||"hasOne"!==t.type&&"hasMany"!==t.type?"hasMany"===t.type&&t.localKeys?r=i.loadHasManyLocalKeys(e,t,u,n):"hasMany"===t.type&&t.foreignKeys?r=i.loadHasManyForeignKeys(e,t,u,n):"belongsTo"===t.type&&(r=i.loadBelongsTo(e,t,u,n)):r="hasMany"===t.type?i.loadHasMany(e,t,u,n):i.loadHasOne(e,t,u,n),r&&s.push(r)}),Promise.all(s)}).then(function(){var o=new r(u,{},"findAll");return o.found=u.length,o=i.respond(o,n),s=n.op="afterFindAll",m(i[s](e,t,n,o)).then(function(e){return p(e)?o:e})})},getOpt:function(e,t){return t||(t={}),y(p(t[e])?this[e]:t[e])},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 a;(a=console).log.apply(a,[o].concat(n))}}},respond:function(e,t){return this.getOpt("raw",t)?e:e.data},update:function(e,t,n,i){var a=this;n||(n={}),i||(i={});var u=void 0;return u=i.op="beforeUpdate",m(a[u](e,t,n,i)).then(function(r){return n=p(r)?n:r,u=i.op="update",a.dbg(u,e,t,n,i),m(a._update(e,t,n,i))}).then(function(s){var f=o.slicedToArray(s,2),c=f[0],l=f[1];l||(l={});var d=new r(c,l,"update");return d.updated=c?1:0,d=a.respond(d,i),u=i.op="afterUpdate",m(a[u](e,t,n,i,d)).then(function(e){return p(e)?d:e})})},updateAll:function(e,t,n,i){var a=this;t||(t={}),n||(n={}),i||(i={});var u=void 0;return u=i.op="beforeUpdateAll",m(a[u](e,t,n,i)).then(function(r){return t=p(r)?t:r,u=i.op="updateAll",a.dbg(u,e,t,n,i),m(a._updateAll(e,t,n,i))}).then(function(s){var f=o.slicedToArray(s,2),c=f[0],l=f[1];c||(c=[]),l||(l={});var d=new r(c,l,"updateAll");return d.updated=c.length,d=a.respond(d,i),u=i.op="afterUpdateAll",m(a[u](e,t,n,i,d)).then(function(e){return p(e)?d:e})})},updateMany:function(e,t,n){var i=this;t||(t=[]),n||(n={});var a=void 0,u=e.idAttribute;return t=t.filter(function(e){return c(e,u)}),a=n.op="beforeUpdateMany",m(i[a](e,t,n)).then(function(r){return t=p(r)?t:r,t=t.map(function(t){return w(e,t)}),a=n.op="updateMany",i.dbg(a,e,t,n),m(i._updateMany(e,t,n))}).then(function(u){var s=o.slicedToArray(u,2),f=s[0],c=s[1];f||(f=[]),c||(c={});var l=new r(f,c,"updateMany");return l.updated=f.length,l=i.respond(l,n),a=n.op="afterUpdateMany",m(i[a](e,t,n,l)).then(function(e){return p(e)?l:e})})}}),e.exports=n})},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 u,response:new u}}var o=n(5),i=n(6),a=n(7),u=n(16),s=n(17),f=n(18),c=n(19),l=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=l(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=[a,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=c(r.prototype.request,d);p.create=function(e){return new r(e)},p.defaults=d.defaults,p.all=function(e){return Promise.all(e)},p.spread=n(20),p.interceptors=d.interceptors,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]=c(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]=c(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)?e:r.isArrayBuffer(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"}},function(e,t){"use strict";function n(e){return"[object Array]"===g.call(e)}function r(e){return"[object ArrayBuffer]"===g.call(e)}function o(e){return"[object FormData]"===g.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 a(e){return"string"==typeof e}function u(e){return"number"==typeof e}function s(e){return"undefined"==typeof e}function f(e){return null!==e&&"object"==typeof e}function c(e){return"[object Date]"===g.call(e)}function l(e){return"[object File]"===g.call(e)}function d(e){return"[object Blob]"===g.call(e)}function p(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function h(){return"undefined"!=typeof window&&"undefined"!=typeof document&&"function"==typeof document.createElement}function y(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 m(){function e(e,n){"object"==typeof t[n]&&"object"==typeof e?t[n]=m(t[n],e):t[n]=e}for(var t={},n=0,r=arguments.length;r>n;n++)y(arguments[n],e);return t}var g=Object.prototype.toString;e.exports={isArray:n,isArrayBuffer:r,isFormData:o,isArrayBufferView:i,isString:a,isNumber:u,isObject:f,isUndefined:s,isDate:c,isFile:l,isBlob:d,isStandardBrowserEnv:h,forEach:y,merge:m,trim:p}},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,a.length?s=a.concat(s):c=-1,s.length&&r()}function r(){if(!f){var e=setTimeout(n);f=!0;for(var t=s.length;t;){for(a=s,s=[];++c1)for(var n=1;n=200&&o.status<300||!("status"in d)&&o.responseText?e:t)(o),d=null}},d.onerror=function(){t(new Error("Network Error")),d=null},r.isStandardBrowserEnv()){var y=n(15),m=f.withCredentials||u(f.url)?y.read(f.xsrfCookieName):void 0;m&&(l[f.xsrfHeaderName]=m)}if("setRequestHeader"in d&&r.forEach(l,function(e,t){"undefined"==typeof c&&"content-type"===t.toLowerCase()?delete l[t]:d.setRequestHeader(t,e)}),f.withCredentials&&(d.withCredentials=!0),f.responseType)try{d.responseType=f.responseType}catch(e){if("json"!==d.responseType)throw e}r.isArrayBuffer(c)&&(c=new DataView(c)),d.send(c)}},function(e,t,n){"use strict";function r(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,"]")}var o=n(6);e.exports=function(e,t,n){if(!t)return e;var i;if(n)i=n(t);else{var a=[];o.forEach(t,function(e,t){null!==e&&"undefined"!=typeof e&&(o.isArray(e)&&(t+="[]"),o.isArray(e)||(e=[e]),o.forEach(e,function(e){o.isDate(e)?e=e.toISOString():o.isObject(e)&&(e=JSON.stringify(e)),a.push(r(t)+"="+r(e))}))}),i=a.join("&")}return i&&(e+=(-1===e.indexOf("?")?"?":"&")+i),e}},function(e,t,n){"use strict";var r=n(6);e.exports=function(e){var t,n,o,i={};return e?(r.forEach(e.split("\n"),function(e){o=e.indexOf(":"),t=r.trim(e.substr(0,o)).toLowerCase(),n=r.trim(e.substr(o+1)),t&&(i[t]=i[t]?i[t]+", "+n:n)}),i):i}},function(e,t,n){"use strict";var r=n(6);e.exports=function(e,t,n){return r.forEach(n,function(n){e=n(e,t)}),e}},function(e,t,n){"use strict";var r=n(6);e.exports=r.isStandardBrowserEnv()?function(){function e(e){var t=e;return n&&(o.setAttribute("href",t),t=o.href),o.setAttribute("href",t),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}var t,n=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");return t=e(window.location.href),function(n){var o=r.isString(n)?e(n):n;return o.protocol===t.protocol&&o.host===t.host}}():function(){return function(){return!0}}()},function(e,t){"use strict";function n(e){this.message=e}function r(e){for(var t,r,i=String(e),a="",u=0,s=o;i.charAt(0|u)||(s="=",u%1);a+=s.charAt(63&t>>8-u%1*8)){if(r=i.charCodeAt(u+=.75),r>255)throw new n("INVALID_CHARACTER_ERR: DOM Exception 5");t=t<<8|r}return a}var o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";n.prototype=new Error,n.prototype.code=5,n.prototype.name="InvalidCharacterError",e.exports=r},function(e,t,n){"use strict";var r=n(6);e.exports=r.isStandardBrowserEnv()?function(){return{write:function(e,t,n,o,i,a){var u=[];u.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&u.push("expires="+new Date(n).toGMTString()),r.isString(o)&&u.push("path="+o),r.isString(i)&&u.push("domain="+i),a===!0&&u.push("secure"),document.cookie=u.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;rn;n++)t[n]=arguments[n];var r=o(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 s(e,t){if(!t)return e;var n=[];return c.utils.forOwn(t,function(e,t){null!==e&&"undefined"!=typeof e&&(c.utils.isArray(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():c.utils.isObject(e)&&(e=c.utils.toJson(e)),n.push(a(t)+"="+a(e))}))}),n.length>0&&(e+=(-1===e.indexOf("?")?"?":"&")+n.join("&")),e}function f(e){var t=this;e||(e={}),c.utils.fillIn(e,b),p.default.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},c=n(1),d=n(2),p=r(d),h=n(3),y=!1;try{y=window&&window.fetch}catch(e){}var v=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var i=n[n.length-1];return e.dbg.apply(e,[i.op].concat(n)),c.utils.resolve()},m=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var i=n[n.length-2];return e.dbg.apply(e,[i.op].concat(n)),c.utils.resolve()},g=p.default.prototype,b={basePath:"",forceTrailingSlash:!1,http:h,httpConfig:{},suffix:"",useFetch:!1};f.prototype=Object.create(p.default.prototype,{constructor:{value:f,enumerable:!1,writable:!0,configurable:!0}}),Object.defineProperty(f,"__super__",{configurable:!0,value:p.default}),c.utils.addHiddenPropsToTarget(f.prototype,{afterDEL:m,afterGET:m,afterHTTP:m,afterPOST:m,afterPUT:m,beforeDEL:v,beforeGET:v,beforeHTTP:v,beforePOST:v,beforePUT:v,_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),c.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),g.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),g.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),g.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",c.utils.resolve(r[i](e,t,n)).then(function(o){return t=c.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",c.utils.resolve(r[i](e,t,n,o)).then(function(e){return c.utils.isUndefined(e)?o:e})})},deserialize:function(e,t,n){return n||(n={}),c.utils.isFunction(n.deserialize)?n.deserialize(e,t,n):c.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),g.destroy.call(r,e,t,n)},destroyAll:function(e,t,n){var r=this;return t||(t={}),n||(n={}),n.params=r.getParams(n),c.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),g.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=c.utils.toJson(e.data)),fetch(new Request(s(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),g.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),c.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),g.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",c.utils.resolve(r[i](e,t,n)).then(function(o){return t=c.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",c.utils.resolve(r[i](e,t,n,o)).then(function(e){return c.utils.isUndefined(e)?o:e})})},getEndpoint:function(e,t,n){var r=this;n||(n={}),n.params=c.utils.isUndefined(n.params)?{}:n.params;var i=e.relationList||[],o=c.utils.isUndefined(n.endpoint)?c.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,a=e.foreignKey,s=e.getRelation(),f=n.params[a];if(f===!1||!a||!s)return f===!1&&delete n.params[a],!1;if(delete n.params[a],c.utils.isObject(t)&&(i=t),i&&(f=f||e.getForeignKey(i)||(e.getLocalField(i)?c.utils.get(e.getLocalField(i),s.idAttribute):null)),f){var d=function(){delete n.endpoint;var e={};return c.utils.forOwn(n,function(t,n){e[n]=t}),c.utils._(e,s),o=u(r.getEndpoint(s,f,e),f,o),{v:!1}}();if("object"===("undefined"==typeof d?"undefined":l(d)))return d.v}}}),o},getPath:function(e,t,n,r){var i=this;r||(r={});var o=[c.utils.isUndefined(r.basePath)?c.utils.isUndefined(t.basePath)?i.basePath:t.basePath:r.basePath,i.getEndpoint(t,c.utils.isString(n)||c.utils.isNumber(n)||"create"===e?n:null,r)];return"find"!==e&&"update"!==e&&"destroy"!==e||o.push(n),u.apply(c.utils,o)},getParams:function(e){return e||(e={}),c.utils.isUndefined(e.params)?{}:c.utils.copy(e.params)},getSuffix:function(e,t){return t||(t={}),c.utils.isUndefined(t.suffix)?c.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),c.utils.reject(t))}var r=this,i=new Date;t||(t={});var o=e.data,u=e.cache,a=e.timeout;e=c.utils.copy(e,null,null,null,["data","cache","timeout"]),e=c.utils.deepMixIn(e,r.httpConfig),e.data=o,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 c.utils.resolve(r.beforeHTTP(e,t)).then(function(i){return e=i||e,y&&(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 c.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",c.utils.resolve(i[o](e,t,n,r)).then(function(u){return n=c.utils.isUndefined(u)?n:u,o=r.op="POST",i.dbg(o,e,t,n,r),i.HTTP(n,r)}).then(function(u){return o=r.op="afterPOST",c.utils.resolve(i[o](e,t,n,r,u)).then(function(e){return c.utils.isUndefined(e)?u: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",c.utils.resolve(i[o](e,t,n,r)).then(function(u){return n=c.utils.isUndefined(u)?n:u,o=r.op="PUT",i.dbg(o,e,t,n,r),i.HTTP(n,r)}).then(function(u){return o=r.op="afterPUT",c.utils.resolve(i[o](e,t,n,r,u)).then(function(e){return c.utils.isUndefined(e)?u:e})})},queryTransform:function(e,t,n){return n||(n={}),c.utils.isFunction(n.queryTransform)?n.queryTransform(e,t,n):c.utils.isFunction(e.queryTransform)?e.queryTransform(e,t,n):t},responseError:function(e,t,n){return c.utils.reject(e)},serialize:function(e,t,n){return n||(n={}),c.utils.isFunction(n.serialize)?n.serialize(e,t,n):c.utils.isFunction(e.serialize)?e.serialize(e,t,n):t},sum:function(e,t,n,r){var i=this;if(n||(n={}),r||(r={}),!c.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),c.utils.deepMixIn(r.params,n),r.params=i.queryTransform(e,r.params,r),g.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),g.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),c.utils.deepMixIn(r.params,n),r.params=i.queryTransform(e,r.params,r),r.suffix=i.getSuffix(e,r),g.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),g.updateMany.call(r,e,t,n)}}),f.addAction=function(e,t){if(!e||!c.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 c.utils.reject(e)},n[e]=function(n,r){var i=this;c.utils.isObject(n)&&(r=n),r=r||{};var o=i.getAdapter(t.adapter||i.defaultAdapter||"http"),a={};if(c.utils.fillIn(a,t),!r.hasOwnProperty("endpoint")&&a.endpoint&&(r.endpoint=a.endpoint),"function"==typeof r.getEndpoint)a.url=r.getEndpoint(i,r);else{var s=[r.basePath||i.basePath||o.basePath,o.getEndpoint(i,c.utils.isSorN(n)?n:null,r)];c.utils.isSorN(n)&&s.push(n),s.push(t.pathname||e),a.url=u.apply(null,s)}return a.method=a.method||"GET",a.mapper=i.name,c.utils.deepMixIn(a)(r),c.utils.resolve(a).then(r.request||t.request).then(function(e){return o.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}},f.addActions=function(e){return e||(e={}),function(e){return c.utils.forOwn(e,function(t,n){f.addAction(n,t)(e)}),e}},f.extend=c.utils.extend,f.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=f},function(t,n){t.exports=e},function(e,t,n){!function(e,t){t(n(1))}(this,function(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 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 u,a=e[Symbol.iterator]();!(r=(u=a.next()).done)&&(n.push(u.value),!t||n.length!==t);r=!0);}catch(e){i=!0,o=e}finally{try{!r&&a.return&&a.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()},u=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()},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};n.reserved=["orderBy","sort","limit","offset","skip","where"],n.Response=r,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: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 u=this,a=void 0;return n||(n={}),o||(o={}),a=o.op="beforeCount",t.utils.resolve(u[a](e,n,o)).then(function(){return a=o.op="count",u.dbg(a,e,n,o),t.utils.resolve(u._count(e,n,o))}).then(function(s){var f=i.slicedToArray(s,2),l=f[0],c=f[1];c||(c={});var d=new r(l,c,a);return d=u.respond(d,o),a=o.op="afterCount",t.utils.resolve(u[a](e,n,o,d)).then(function(e){return t.utils.isUndefined(e)?d:e})})},create:function(e,n,o){var u=this,a=void 0;return n||(n={}),o||(o={}),a=o.op="beforeCreate",t.utils.resolve(u[a](e,n,o)).then(function(r){return n=t.utils.isUndefined(r)?n:r,n=s(e,n),a=o.op="create",u.dbg(a,e,n,o),t.utils.resolve(u._create(e,n,o))}).then(function(s){var f=i.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,o),a=o.op="afterCreate",t.utils.resolve(u[a](e,n,o,d)).then(function(e){return t.utils.isUndefined(e)?d:e})})},createMany:function(e,n,o){var u=this,a=void 0;return n||(n={}),o||(o={}),a=o.op="beforeCreateMany",t.utils.resolve(u[a](e,n,o)).then(function(r){return n=t.utils.isUndefined(r)?n:r,n=n.map(function(t){return s(e,t)}),a=o.op="createMany",u.dbg(a,e,n,o),t.utils.resolve(u._createMany(e,n,o))}).then(function(s){var f=i.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,o),a=o.op="afterCreateMany",t.utils.resolve(u[a](e,n,o,d)).then(function(e){return t.utils.isUndefined(e)?d:e})})},destroy:function(e,n,o){var u=this,a=void 0;return o||(o={}),a=o.op="beforeDestroy",t.utils.resolve(u[a](e,n,o)).then(function(){return a=o.op="destroy",u.dbg(a,e,n,o),t.utils.resolve(u._destroy(e,n,o))}).then(function(s){var f=i.slicedToArray(s,2),l=f[0],c=f[1];c||(c={});var d=new r(l,c,"destroy");return d=u.respond(d,o),a=o.op="afterDestroy",t.utils.resolve(u[a](e,n,o,d)).then(function(e){return t.utils.isUndefined(e)?d:e})})},destroyAll:function(e,n,o){var u=this,a=void 0;return n||(n={}),o||(o={}),a=o.op="beforeDestroyAll",t.utils.resolve(u[a](e,n,o)).then(function(){return a=o.op="destroyAll",u.dbg(a,e,n,o),t.utils.resolve(u._destroyAll(e,n,o))}).then(function(s){var f=i.slicedToArray(s,2),l=f[0],c=f[1];c||(c={});var d=new r(l,c,"destroyAll");return d=u.respond(d,o),a=o.op="afterDestroyAll",t.utils.resolve(u[a](e,n,o,d)).then(function(e){return t.utils.isUndefined(e)?d:e})})},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),a(i).filter(function(e){return e})},makeHasManyForeignKeys:function(e,n,r){return t.utils.get(r,e.idAttribute)},loadHasMany:function(e,n,r,i){var o=this,u=!1;t.utils.isObject(r)&&!t.utils.isArray(r)&&(u=!0,r=[r]);var a=r.map(function(t){return o.makeHasManyForeignKey(e,n,t)}),s={where:{}},f=s.where[n.foreignKey]={};return u?f["=="]=a[0]:f.in=a.filter(function(e){return e}),o.findAll(n.getRelation(),s,i).then(function(i){r.forEach(function(r){var o=[];u?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 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:i.defineProperty({},f.idAttribute,{in:u.makeHasManyLocalKeys(e,n,s)})},o).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:i.defineProperty({},f.idAttribute,{in:a(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[f.idAttribute])&&i.push(e)}),n.setLocalField(r,i)}),e})}}();return"object"===("undefined"==typeof l?"undefined":i.typeof(l))?l.v:void 0},loadHasManyForeignKeys:function(e,n,r,o){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:i.defineProperty({},n.foreignKeys,{contains:u.makeHasManyForeignKeys(e,n,f)})},o).then(function(e){n.setLocalField(f,e)}):u.findAll(a,{where:i.defineProperty({},n.foreignKeys,{isectNotEmpty:r.map(function(t){return u.makeHasManyForeignKeys(e,n,t)})})},o).then(function(e){var i=n.foreignKeys;r.forEach(function(r){var o=[],u=t.utils.get(r,s);e.forEach(function(n){var r=t.utils.get(e,i)||[];-1!==r.indexOf(u)&&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])})})},makeBelongsToForeignKey:function(e,t,n){return t.getForeignKey(n)},loadBelongsTo:function(e,n,r,o){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:i.defineProperty({},a.idAttribute,{in:s})},o).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),o).then(function(e){n.setLocalField(t,e)})}}();return"object"===("undefined"==typeof f?"undefined":i.typeof(f))?f.v:void 0},find:function(e,n,o){var u=this,a=void 0,s=void 0;return o||(o={}),o.with||(o.with=[]),s=o.op="beforeFind",t.utils.resolve(u[s](e,n,o)).then(function(){return s=o.op="find",u.dbg(s,e,n,o),t.utils.resolve(u._find(e,n,o))}).then(function(n){var r=i.slicedToArray(n,1),s=r[0];if(s){a=s;var f=[];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=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 i=new r(a,{},"find");return i.found=a?1:0,i=u.respond(i,o),s=o.op="afterFind",t.utils.resolve(u[s](e,n,o,i)).then(function(e){return t.utils.isUndefined(e)?i:e})})},findAll:function(e,n,o){var u=this;o||(o={}),o.with||(o.with=[]);var a=[],s=void 0,f=o._activeWith;if(t.utils.isObject(f)){var l=f.query||{};f.replace?n=l:t.utils.deepFillIn(n,l)}return s=o.op="beforeFindAll",t.utils.resolve(u[s](e,n,o)).then(function(){return s=o.op="findAll",u.dbg(s,e,n,o),t.utils.resolve(u._findAll(e,n,o))}).then(function(n){var r=i.slicedToArray(n,1),s=r[0];s||(s=[]),a=s;var f=[];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=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 i=new r(a,{},"findAll");return i.found=a.length,i=u.respond(i,o),s=o.op="afterFindAll",t.utils.resolve(u[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])},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 u;(u=console).log.apply(u,[i].concat(n))}}},sum:function(e,n,o,u){var a=this,s=void 0;if(!t.utils.isString(n))throw new Error("field must be a string!");return o||(o={}),u||(u={}),s=u.op="beforeSum",t.utils.resolve(a[s](e,n,o,u)).then(function(){return s=u.op="sum",a.dbg(s,e,n,o,u),t.utils.resolve(a._sum(e,n,o,u))}).then(function(f){var l=i.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,o,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,o,u){var a=this;o||(o={}),u||(u={});var s=void 0;return s=u.op="beforeUpdate",t.utils.resolve(a[s](e,n,o,u)).then(function(r){return o=t.utils.isUndefined(r)?o:r,s=u.op="update",a.dbg(s,e,n,o,u),t.utils.resolve(a._update(e,n,o,u))}).then(function(f){var l=i.slicedToArray(f,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),s=u.op="afterUpdate",t.utils.resolve(a[s](e,n,o,u,p)).then(function(e){return t.utils.isUndefined(e)?p:e})})},updateAll:function(e,n,o,u){var a=this;n||(n={}),o||(o={}),u||(u={});var s=void 0;return s=u.op="beforeUpdateAll",t.utils.resolve(a[s](e,n,o,u)).then(function(r){return n=t.utils.isUndefined(r)?n:r,s=u.op="updateAll",a.dbg(s,e,n,o,u),t.utils.resolve(a._updateAll(e,n,o,u))}).then(function(f){var l=i.slicedToArray(f,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),s=u.op="afterUpdateAll",t.utils.resolve(a[s](e,n,o,u,p)).then(function(e){return t.utils.isUndefined(e)?p:e})})},updateMany:function(e,n,o){var u=this;n||(n=[]),o||(o={});var a=void 0,f=e.idAttribute;return n=n.filter(function(e){return t.utils.get(e,f)}),a=o.op="beforeUpdateMany",t.utils.resolve(u[a](e,n,o)).then(function(r){return n=t.utils.isUndefined(r)?n:r,n=n.map(function(t){return s(e,t)}),a=o.op="updateMany",u.dbg(a,e,n,o),t.utils.resolve(u._updateMany(e,n,o))}).then(function(s){var f=i.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,o),a=o.op="afterUpdateMany",t.utils.resolve(u[a](e,n,o,d)).then(function(e){return t.utils.isUndefined(e)?d:e})})}}),e.exports=n})},function(e,t,n){e.exports=n(4)},function(e,t,n){"use strict";function r(e){this.defaults=o.merge({},e),this.interceptors={request:new a,response:new a}}var i=n(5),o=n(6),u=n(7),a=n(16),s=n(17),f=n(18),l=n(19),c=n(12);r.prototype.request=function(e){"string"==typeof e&&(e=o.merge({url:arguments[0]},arguments[1])),e=o.merge(i,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=o.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),o.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(i),p=e.exports=l(r.prototype.request,d);p.create=function(e){return new r(e)},p.defaults=d.defaults,p.all=function(e){return Promise.all(e)},p.spread=n(20),p.interceptors=d.interceptors,o.forEach(["delete","get","head"],function(e){r.prototype[e]=function(t,n){return this.request(o.merge(n||{},{method:e,url:t}))},p[e]=l(r.prototype[e],d)}),o.forEach(["post","put","patch"],function(e){r.prototype[e]=function(t,n,r){return this.request(o.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),i=/^\)\]\}',?\n/,o={"Content-Type":"application/x-www-form-urlencoded"};e.exports={transformRequest:[function(e,t){return r.isFormData(e)?e:r.isArrayBuffer(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(i,"");try{e=JSON.parse(e)}catch(e){}}return e}],headers:{common:{Accept:"application/json, text/plain, */*"},patch:r.merge(o),post:r.merge(o),put:r.merge(o)},timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"}},function(e,t){"use strict";function n(e){return"[object Array]"===m.call(e)}function r(e){return"[object ArrayBuffer]"===m.call(e)}function i(e){return"[object FormData]"===m.call(e)}function o(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]"===m.call(e)}function c(e){return"[object File]"===m.call(e)}function d(e){return"[object Blob]"===m.call(e)}function p(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function h(){return"undefined"!=typeof window&&"undefined"!=typeof document&&"function"==typeof document.createElement}function y(e,t){if(null!==e&&"undefined"!=typeof e)if("object"==typeof e||n(e)||(e=[e]),n(e))for(var r=0,i=e.length;i>r;r++)t.call(null,e[r],r,e);else for(var o in e)e.hasOwnProperty(o)&&t.call(null,e[o],o,e)}function v(){function e(e,n){"object"==typeof t[n]&&"object"==typeof e?t[n]=v(t[n],e):t[n]=e}for(var t={},n=0,r=arguments.length;r>n;n++)y(arguments[n],e);return t}var m=Object.prototype.toString;e.exports={isArray:n,isArrayBuffer:r,isFormData:i,isArrayBufferView:o,isString:u,isNumber:a,isObject:f,isUndefined:s,isDate:l,isFile:c,isBlob:d,isStandardBrowserEnv:h,forEach:y,merge:v,trim:p}},function(e,t,n){(function(t){"use strict";e.exports=function(e){return new Promise(function(r,i){try{var o;"function"==typeof e.adapter?o=e.adapter:"undefined"!=typeof XMLHttpRequest?o=n(9):"undefined"!=typeof t&&(o=n(9)),"function"==typeof o&&o(r,i,e)}catch(e){i(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=200&&i.status<300||!("status"in d)&&i.responseText?e:t)(i),d=null}},d.onerror=function(){t(new Error("Network Error")),d=null},r.isStandardBrowserEnv()){var y=n(15),v=f.withCredentials||a(f.url)?y.read(f.xsrfCookieName):void 0;v&&(c[f.xsrfHeaderName]=v)}if("setRequestHeader"in d&&r.forEach(c,function(e,t){"undefined"==typeof l&&"content-type"===t.toLowerCase()?delete c[t]:d.setRequestHeader(t,e)}),f.withCredentials&&(d.withCredentials=!0),f.responseType)try{d.responseType=f.responseType}catch(e){if("json"!==d.responseType)throw e}r.isArrayBuffer(l)&&(l=new DataView(l)),d.send(l)}},function(e,t,n){"use strict";function r(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,"]")}var i=n(6);e.exports=function(e,t,n){if(!t)return e;var o;if(n)o=n(t);else{var u=[];i.forEach(t,function(e,t){null!==e&&"undefined"!=typeof e&&(i.isArray(e)&&(t+="[]"),i.isArray(e)||(e=[e]),i.forEach(e,function(e){i.isDate(e)?e=e.toISOString():i.isObject(e)&&(e=JSON.stringify(e)),u.push(r(t)+"="+r(e))}))}),o=u.join("&")}return o&&(e+=(-1===e.indexOf("?")?"?":"&")+o),e}},function(e,t,n){"use strict";var r=n(6);e.exports=function(e){var t,n,i,o={};return e?(r.forEach(e.split("\n"),function(e){i=e.indexOf(":"),t=r.trim(e.substr(0,i)).toLowerCase(),n=r.trim(e.substr(i+1)),t&&(o[t]=o[t]?o[t]+", "+n:n)}),o):o}},function(e,t,n){"use strict";var r=n(6);e.exports=function(e,t,n){return r.forEach(n,function(n){e=n(e,t)}),e}},function(e,t,n){"use strict";var r=n(6);e.exports=r.isStandardBrowserEnv()?function(){ +function e(e){var t=e;return n&&(i.setAttribute("href",t),t=i.href),i.setAttribute("href",t),{href:i.href,protocol:i.protocol?i.protocol.replace(/:$/,""):"",host:i.host,search:i.search?i.search.replace(/^\?/,""):"",hash:i.hash?i.hash.replace(/^#/,""):"",hostname:i.hostname,port:i.port,pathname:"/"===i.pathname.charAt(0)?i.pathname:"/"+i.pathname}}var t,n=/(msie|trident)/i.test(navigator.userAgent),i=document.createElement("a");return t=e(window.location.href),function(n){var i=r.isString(n)?e(n):n;return i.protocol===t.protocol&&i.host===t.host}}():function(){return function(){return!0}}()},function(e,t){"use strict";function n(e){this.message=e}function r(e){for(var t,r,o=String(e),u="",a=0,s=i;o.charAt(0|a)||(s="=",a%1);u+=s.charAt(63&t>>8-a%1*8)){if(r=o.charCodeAt(a+=.75),r>255)throw new n("INVALID_CHARACTER_ERR: DOM Exception 5");t=t<<8|r}return u}var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";n.prototype=new Error,n.prototype.code=5,n.prototype.name="InvalidCharacterError",e.exports=r},function(e,t,n){"use strict";var r=n(6);e.exports=r.isStandardBrowserEnv()?function(){return{write:function(e,t,n,i,o,u){var a=[];a.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),r.isString(i)&&a.push("path="+i),r.isString(o)&&a.push("domain="+o),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 i=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){i.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;rcount. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes count to wait for the Promise to resolve before continuing. + * + * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the count. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by count. + * + * @name Adapter#afterCount + * @method + * @param {Object} mapper The `mapper` argument passed to count. + * @param {Object} props The `props` argument passed to count. + * @param {Object} opts The `opts` argument passed to count. + * @property {string} opts.op `afterCount` + * @param {Object|Response} response Count or {@link Response}, depending on the value of `opts.raw`. + */ + afterCount: noop2, - addHiddenPropsToTarget(Adapter.prototype, { /** * Lifecycle method method called by create. * @@ -1673,6 +1680,29 @@ return /******/ (function(modules) { // webpackBootstrap */ afterFindAll: noop2, + /** + * Lifecycle method method called by sum. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes sum to wait for the Promise to resolve before continuing. + * + * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the sum. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by sum. + * + * @name Adapter#afterSum + * @method + * @param {Object} mapper The `mapper` argument passed to sum. + * @param {Object} props The `props` argument passed to sum. + * @param {Object} opts The `opts` argument passed to sum. + * @property {string} opts.op `afterSum` + * @param {Object|Response} response Count or {@link Response}, depending on the value of `opts.raw`. + */ + afterSum: noop2, + /** * Lifecycle method method called by update. * @@ -1744,6 +1774,24 @@ return /******/ (function(modules) { // webpackBootstrap */ afterUpdateMany: noop2, + /** + * Lifecycle method method called by count. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes count to wait for the Promise to resolve before continuing. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by count. + * + * @name Adapter#beforeCount + * @method + * @param {Object} mapper The `mapper` argument passed to count. + * @param {Object} query The `query` argument passed to count. + * @param {Object} opts The `opts` argument passed to count. + * @property {string} opts.op `beforeCount` + */ + beforeCount: noop, + /** * Lifecycle method method called by create. * @@ -1856,6 +1904,24 @@ return /******/ (function(modules) { // webpackBootstrap */ beforeFindAll: noop, + /** + * Lifecycle method method called by sum. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes sum to wait for the Promise to resolve before continuing. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by sum. + * + * @name Adapter#beforeSum + * @method + * @param {Object} mapper The `mapper` argument passed to sum. + * @param {Object} query The `query` argument passed to sum. + * @param {Object} opts The `opts` argument passed to sum. + * @property {string} opts.op `beforeSum` + */ + beforeSum: noop, + /** * Lifecycle method method called by update. * @@ -1933,6 +1999,58 @@ return /******/ (function(modules) { // webpackBootstrap }, + /** + * Retrieve the number of records that match the selection query. Called by + * `Mapper#count`. + * + * @name Adapter#count + * @method + * @param {Object} mapper The mapper. + * @param {Object} [query] Selection query. + * @param {Object} [query.where] Filtering criteria. + * @param {string|Array} [query.orderBy] Sorting criteria. + * @param {string|Array} [query.sort] Same as `query.sort`. + * @param {number} [query.limit] Limit results. + * @param {number} [query.skip] Offset results. + * @param {number} [query.offset] Same as `query.skip`. + * @param {Object} [opts] Configuration options. + * @param {boolean} [opts.raw=false] Whether to return a more detailed + * response object. + * @return {Promise} + */ + count: function count(mapper, query, opts) { + var self = this; + var op = void 0; + query || (query = {}); + opts || (opts = {}); + + // beforeCount lifecycle hook + op = opts.op = 'beforeCount'; + return jsData.utils.resolve(self[op](mapper, query, opts)).then(function () { + // Allow for re-assignment from lifecycle hook + op = opts.op = 'count'; + self.dbg(op, mapper, query, opts); + return jsData.utils.resolve(self._count(mapper, query, opts)); + }).then(function (results) { + var _results = babelHelpers.slicedToArray(results, 2); + + var data = _results[0]; + var result = _results[1]; + + result || (result = {}); + var response = new Response(data, result, op); + response = self.respond(response, opts); + + // afterCount lifecycle hook + op = opts.op = 'afterCount'; + return jsData.utils.resolve(self[op](mapper, query, opts, response)).then(function (_response) { + // Allow for re-assignment from lifecycle hook + return jsData.utils.isUndefined(_response) ? response : _response; + }); + }); + }, + + /** * Create a new record. Called by `Mapper#create`. * @@ -1953,18 +2071,18 @@ return /******/ (function(modules) { // webpackBootstrap // beforeCreate lifecycle hook op = opts.op = 'beforeCreate'; - return resolve(self[op](mapper, props, opts)).then(function (_props) { + return jsData.utils.resolve(self[op](mapper, props, opts)).then(function (_props) { // Allow for re-assignment from lifecycle hook - props = isUndefined(_props) ? props : _props; + props = jsData.utils.isUndefined(_props) ? props : _props; props = withoutRelations(mapper, props); op = opts.op = 'create'; self.dbg(op, mapper, props, opts); - return resolve(self._create(mapper, props, opts)); + return jsData.utils.resolve(self._create(mapper, props, opts)); }).then(function (results) { - var _results = babelHelpers.slicedToArray(results, 2); + var _results2 = babelHelpers.slicedToArray(results, 2); - var data = _results[0]; - var result = _results[1]; + var data = _results2[0]; + var result = _results2[1]; result || (result = {}); var response = new Response(data, result, 'create'); @@ -1973,9 +2091,9 @@ return /******/ (function(modules) { // webpackBootstrap // afterCreate lifecycle hook op = opts.op = 'afterCreate'; - return resolve(self[op](mapper, props, opts, response)).then(function (_response) { + return jsData.utils.resolve(self[op](mapper, props, opts, response)).then(function (_response) { // Allow for re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return jsData.utils.isUndefined(_response) ? response : _response; }); }); }, @@ -2001,20 +2119,20 @@ return /******/ (function(modules) { // webpackBootstrap // beforeCreateMany lifecycle hook op = opts.op = 'beforeCreateMany'; - return resolve(self[op](mapper, props, opts)).then(function (_props) { + return jsData.utils.resolve(self[op](mapper, props, opts)).then(function (_props) { // Allow for re-assignment from lifecycle hook - props = isUndefined(_props) ? props : _props; + props = jsData.utils.isUndefined(_props) ? props : _props; props = props.map(function (record) { return withoutRelations(mapper, record); }); op = opts.op = 'createMany'; self.dbg(op, mapper, props, opts); - return resolve(self._createMany(mapper, props, opts)); + return jsData.utils.resolve(self._createMany(mapper, props, opts)); }).then(function (results) { - var _results2 = babelHelpers.slicedToArray(results, 2); + var _results3 = babelHelpers.slicedToArray(results, 2); - var data = _results2[0]; - var result = _results2[1]; + var data = _results3[0]; + var result = _results3[1]; data || (data = []); result || (result = {}); @@ -2024,9 +2142,9 @@ return /******/ (function(modules) { // webpackBootstrap // afterCreateMany lifecycle hook op = opts.op = 'afterCreateMany'; - return resolve(self[op](mapper, props, opts, response)).then(function (_response) { + return jsData.utils.resolve(self[op](mapper, props, opts, response)).then(function (_response) { // Allow for re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return jsData.utils.isUndefined(_response) ? response : _response; }); }); }, @@ -2052,15 +2170,15 @@ return /******/ (function(modules) { // webpackBootstrap // beforeDestroy lifecycle hook op = opts.op = 'beforeDestroy'; - return resolve(self[op](mapper, id, opts)).then(function () { + return jsData.utils.resolve(self[op](mapper, id, opts)).then(function () { op = opts.op = 'destroy'; self.dbg(op, mapper, id, opts); - return resolve(self._destroy(mapper, id, opts)); + return jsData.utils.resolve(self._destroy(mapper, id, opts)); }).then(function (results) { - var _results3 = babelHelpers.slicedToArray(results, 2); + var _results4 = babelHelpers.slicedToArray(results, 2); - var data = _results3[0]; - var result = _results3[1]; + var data = _results4[0]; + var result = _results4[1]; result || (result = {}); var response = new Response(data, result, 'destroy'); @@ -2068,9 +2186,9 @@ return /******/ (function(modules) { // webpackBootstrap // afterDestroy lifecycle hook op = opts.op = 'afterDestroy'; - return resolve(self[op](mapper, id, opts, response)).then(function (_response) { + return jsData.utils.resolve(self[op](mapper, id, opts, response)).then(function (_response) { // Allow for re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return jsData.utils.isUndefined(_response) ? response : _response; }); }); }, @@ -2103,15 +2221,15 @@ return /******/ (function(modules) { // webpackBootstrap // beforeDestroyAll lifecycle hook op = opts.op = 'beforeDestroyAll'; - return resolve(self[op](mapper, query, opts)).then(function () { + return jsData.utils.resolve(self[op](mapper, query, opts)).then(function () { op = opts.op = 'destroyAll'; self.dbg(op, mapper, query, opts); - return resolve(self._destroyAll(mapper, query, opts)); + return jsData.utils.resolve(self._destroyAll(mapper, query, opts)); }).then(function (results) { - var _results4 = babelHelpers.slicedToArray(results, 2); + var _results5 = babelHelpers.slicedToArray(results, 2); - var data = _results4[0]; - var result = _results4[1]; + var data = _results5[0]; + var result = _results5[1]; result || (result = {}); var response = new Response(data, result, 'destroyAll'); @@ -2119,9 +2237,9 @@ return /******/ (function(modules) { // webpackBootstrap // afterDestroyAll lifecycle hook op = opts.op = 'afterDestroyAll'; - return resolve(self[op](mapper, query, opts, response)).then(function (_response) { + return jsData.utils.resolve(self[op](mapper, query, opts, response)).then(function (_response) { // Allow for re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return jsData.utils.isUndefined(_response) ? response : _response; }); }); }, @@ -2155,8 +2273,8 @@ return /******/ (function(modules) { // webpackBootstrap */ makeHasManyLocalKeys: function makeHasManyLocalKeys(mapper, def, record) { var localKeys = []; - var itemKeys = get(record, def.localKeys) || []; - itemKeys = isArray(itemKeys) ? itemKeys : Object.keys(itemKeys); + var itemKeys = jsData.utils.get(record, def.localKeys) || []; + itemKeys = jsData.utils.isArray(itemKeys) ? itemKeys : Object.keys(itemKeys); localKeys = localKeys.concat(itemKeys); return unique(localKeys).filter(function (x) { return x; @@ -2174,7 +2292,7 @@ return /******/ (function(modules) { // webpackBootstrap * @return {*} */ makeHasManyForeignKeys: function makeHasManyForeignKeys(mapper, def, record) { - return get(record, mapper.idAttribute); + return jsData.utils.get(record, mapper.idAttribute); }, @@ -2191,7 +2309,7 @@ return /******/ (function(modules) { // webpackBootstrap var self = this; var singular = false; - if (isObject(records) && !isArray(records)) { + if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) { singular = true; records = [records]; } @@ -2218,7 +2336,7 @@ return /******/ (function(modules) { // webpackBootstrap attached = relatedItems; } else { relatedItems.forEach(function (relatedItem) { - if (get(relatedItem, def.foreignKey) === record[mapper.idAttribute]) { + if (jsData.utils.get(relatedItem, def.foreignKey) === record[mapper.idAttribute]) { attached.push(relatedItem); } }); @@ -2232,7 +2350,7 @@ return /******/ (function(modules) { // webpackBootstrap var record = void 0; var relatedMapper = def.getRelation(); - if (isObject(records) && !isArray(records)) { + if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) { record = records; } @@ -2260,8 +2378,8 @@ return /******/ (function(modules) { // webpackBootstrap }, __opts).then(function (relatedItems) { records.forEach(function (item) { var attached = []; - var itemKeys = get(item, def.localKeys) || []; - itemKeys = isArray(itemKeys) ? itemKeys : Object.keys(itemKeys); + var itemKeys = jsData.utils.get(item, def.localKeys) || []; + itemKeys = jsData.utils.isArray(itemKeys) ? itemKeys : Object.keys(itemKeys); relatedItems.forEach(function (relatedItem) { if (itemKeys && itemKeys.indexOf(relatedItem[relatedMapper.idAttribute]) !== -1) { attached.push(relatedItem); @@ -2283,7 +2401,7 @@ return /******/ (function(modules) { // webpackBootstrap var idAttribute = mapper.idAttribute; var record = void 0; - if (isObject(records) && !isArray(records)) { + if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) { record = records; } @@ -2306,9 +2424,9 @@ return /******/ (function(modules) { // webpackBootstrap var foreignKeysField = def.foreignKeys; records.forEach(function (record) { var _relatedItems = []; - var id = get(record, idAttribute); + var id = jsData.utils.get(record, idAttribute); relatedItems.forEach(function (relatedItem) { - var foreignKeys = get(relatedItems, foreignKeysField) || []; + var foreignKeys = jsData.utils.get(relatedItems, foreignKeysField) || []; if (foreignKeys.indexOf(id) !== -1) { _relatedItems.push(relatedItem); } @@ -2330,13 +2448,13 @@ return /******/ (function(modules) { // webpackBootstrap * @return {Promise} */ loadHasOne: function loadHasOne(mapper, def, records, __opts) { - if (isObject(records) && !isArray(records)) { + if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) { records = [records]; } return this.loadHasMany(mapper, def, records, __opts).then(function () { records.forEach(function (record) { var relatedData = def.getLocalField(record); - if (isArray(relatedData) && relatedData.length) { + if (jsData.utils.isArray(relatedData) && relatedData.length) { def.setLocalField(record, relatedData[0]); } }); @@ -2371,7 +2489,7 @@ return /******/ (function(modules) { // webpackBootstrap var self = this; var relationDef = def.getRelation(); - if (isObject(records) && !isArray(records)) { + if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) { var _ret2 = function () { var record = records; return { @@ -2427,14 +2545,14 @@ return /******/ (function(modules) { // webpackBootstrap // beforeFind lifecycle hook op = opts.op = 'beforeFind'; - return resolve(self[op](mapper, id, opts)).then(function () { + return jsData.utils.resolve(self[op](mapper, id, opts)).then(function () { op = opts.op = 'find'; self.dbg(op, mapper, id, opts); - return resolve(self._find(mapper, id, opts)); + return jsData.utils.resolve(self._find(mapper, id, opts)); }).then(function (results) { - var _results5 = babelHelpers.slicedToArray(results, 1); + var _results6 = babelHelpers.slicedToArray(results, 1); - var _record = _results5[0]; + var _record = _results6[0]; if (!_record) { return; @@ -2442,7 +2560,7 @@ return /******/ (function(modules) { // webpackBootstrap record = _record; var tasks = []; - forEachRelation(mapper, opts, function (def, __opts) { + jsData.utils.forEachRelation(mapper, opts, function (def, __opts) { var task = void 0; if (def.foreignKey && (def.type === 'hasOne' || def.type === 'hasMany')) { if (def.type === 'hasOne') { @@ -2470,9 +2588,9 @@ return /******/ (function(modules) { // webpackBootstrap // afterFind lifecycle hook op = opts.op = 'afterFind'; - return resolve(self[op](mapper, id, opts, response)).then(function (_response) { + return jsData.utils.resolve(self[op](mapper, id, opts, response)).then(function (_response) { // Allow for re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return jsData.utils.isUndefined(_response) ? response : _response; }); }); }, @@ -2506,30 +2624,30 @@ return /******/ (function(modules) { // webpackBootstrap var op = void 0; var activeWith = opts._activeWith; - if (isObject(activeWith)) { + if (jsData.utils.isObject(activeWith)) { var activeQuery = activeWith.query || {}; if (activeWith.replace) { query = activeQuery; } else { - deepFillIn(query, activeQuery); + jsData.utils.deepFillIn(query, activeQuery); } } // beforeFindAll lifecycle hook op = opts.op = 'beforeFindAll'; - return resolve(self[op](mapper, query, opts)).then(function () { + return jsData.utils.resolve(self[op](mapper, query, opts)).then(function () { op = opts.op = 'findAll'; self.dbg(op, mapper, query, opts); - return resolve(self._findAll(mapper, query, opts)); + return jsData.utils.resolve(self._findAll(mapper, query, opts)); }).then(function (results) { - var _results6 = babelHelpers.slicedToArray(results, 1); + var _results7 = babelHelpers.slicedToArray(results, 1); - var _records = _results6[0]; + var _records = _results7[0]; _records || (_records = []); records = _records; var tasks = []; - forEachRelation(mapper, opts, function (def, __opts) { + jsData.utils.forEachRelation(mapper, opts, function (def, __opts) { var task = void 0; if (def.foreignKey && (def.type === 'hasOne' || def.type === 'hasMany')) { if (def.type === 'hasMany') { @@ -2556,9 +2674,9 @@ return /******/ (function(modules) { // webpackBootstrap // afterFindAll lifecycle hook op = opts.op = 'afterFindAll'; - return resolve(self[op](mapper, query, opts, response)).then(function (_response) { + return jsData.utils.resolve(self[op](mapper, query, opts, response)).then(function (_response) { // Allow for re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return jsData.utils.isUndefined(_response) ? response : _response; }); }); }, @@ -2576,7 +2694,7 @@ return /******/ (function(modules) { // webpackBootstrap */ getOpt: function getOpt(opt, opts) { opts || (opts = {}); - return isUndefined(opts[opt]) ? plainCopy(this[opt]) : plainCopy(opts[opt]); + return jsData.utils.isUndefined(opts[opt]) ? jsData.utils.plainCopy(this[opt]) : jsData.utils.plainCopy(opts[opt]); }, @@ -2614,6 +2732,62 @@ return /******/ (function(modules) { // webpackBootstrap }, + /** + * Retrieve sum of the specified field of the records that match the selection + * query. Called by `Mapper#sum`. + * + * @name Adapter#sum + * @method + * @param {Object} mapper The mapper. + * @param {string} field By to sum. + * @param {Object} [query] Selection query. + * @param {Object} [query.where] Filtering criteria. + * @param {string|Array} [query.orderBy] Sorting criteria. + * @param {string|Array} [query.sort] Same as `query.sort`. + * @param {number} [query.limit] Limit results. + * @param {number} [query.skip] Offset results. + * @param {number} [query.offset] Same as `query.skip`. + * @param {Object} [opts] Configuration options. + * @param {boolean} [opts.raw=false] Whether to return a more detailed + * response object. + * @return {Promise} + */ + sum: function sum(mapper, field, query, opts) { + var self = this; + var op = void 0; + if (!jsData.utils.isString(field)) { + throw new Error('field must be a string!'); + } + query || (query = {}); + opts || (opts = {}); + + // beforeSum lifecycle hook + op = opts.op = 'beforeSum'; + return jsData.utils.resolve(self[op](mapper, field, query, opts)).then(function () { + // Allow for re-assignment from lifecycle hook + op = opts.op = 'sum'; + self.dbg(op, mapper, field, query, opts); + return jsData.utils.resolve(self._sum(mapper, field, query, opts)); + }).then(function (results) { + var _results8 = babelHelpers.slicedToArray(results, 2); + + var data = _results8[0]; + var result = _results8[1]; + + result || (result = {}); + var response = new Response(data, result, op); + response = self.respond(response, opts); + + // afterSum lifecycle hook + op = opts.op = 'afterSum'; + return jsData.utils.resolve(self[op](mapper, field, query, opts, response)).then(function (_response) { + // Allow for re-assignment from lifecycle hook + return jsData.utils.isUndefined(_response) ? response : _response; + }); + }); + }, + + /** * @name Adapter#respond * @method @@ -2649,17 +2823,17 @@ return /******/ (function(modules) { // webpackBootstrap // beforeUpdate lifecycle hook op = opts.op = 'beforeUpdate'; - return resolve(self[op](mapper, id, props, opts)).then(function (_props) { + return jsData.utils.resolve(self[op](mapper, id, props, opts)).then(function (_props) { // Allow for re-assignment from lifecycle hook - props = isUndefined(_props) ? props : _props; + props = jsData.utils.isUndefined(_props) ? props : _props; op = opts.op = 'update'; self.dbg(op, mapper, id, props, opts); - return resolve(self._update(mapper, id, props, opts)); + return jsData.utils.resolve(self._update(mapper, id, props, opts)); }).then(function (results) { - var _results7 = babelHelpers.slicedToArray(results, 2); + var _results9 = babelHelpers.slicedToArray(results, 2); - var data = _results7[0]; - var result = _results7[1]; + var data = _results9[0]; + var result = _results9[1]; result || (result = {}); var response = new Response(data, result, 'update'); @@ -2668,9 +2842,9 @@ return /******/ (function(modules) { // webpackBootstrap // afterUpdate lifecycle hook op = opts.op = 'afterUpdate'; - return resolve(self[op](mapper, id, props, opts, response)).then(function (_response) { + return jsData.utils.resolve(self[op](mapper, id, props, opts, response)).then(function (_response) { // Allow for re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return jsData.utils.isUndefined(_response) ? response : _response; }); }); }, @@ -2705,17 +2879,17 @@ return /******/ (function(modules) { // webpackBootstrap // beforeUpdateAll lifecycle hook op = opts.op = 'beforeUpdateAll'; - return resolve(self[op](mapper, props, query, opts)).then(function (_props) { + return jsData.utils.resolve(self[op](mapper, props, query, opts)).then(function (_props) { // Allow for re-assignment from lifecycle hook - props = isUndefined(_props) ? props : _props; + props = jsData.utils.isUndefined(_props) ? props : _props; op = opts.op = 'updateAll'; self.dbg(op, mapper, props, query, opts); - return resolve(self._updateAll(mapper, props, query, opts)); + return jsData.utils.resolve(self._updateAll(mapper, props, query, opts)); }).then(function (results) { - var _results8 = babelHelpers.slicedToArray(results, 2); + var _results10 = babelHelpers.slicedToArray(results, 2); - var data = _results8[0]; - var result = _results8[1]; + var data = _results10[0]; + var result = _results10[1]; data || (data = []); result || (result = {}); @@ -2725,9 +2899,9 @@ return /******/ (function(modules) { // webpackBootstrap // afterUpdateAll lifecycle hook op = opts.op = 'afterUpdateAll'; - return resolve(self[op](mapper, props, query, opts, response)).then(function (_response) { + return jsData.utils.resolve(self[op](mapper, props, query, opts, response)).then(function (_response) { // Allow for re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return jsData.utils.isUndefined(_response) ? response : _response; }); }); }, @@ -2753,25 +2927,25 @@ return /******/ (function(modules) { // webpackBootstrap var idAttribute = mapper.idAttribute; records = records.filter(function (record) { - return get(record, idAttribute); + return jsData.utils.get(record, idAttribute); }); // beforeUpdateMany lifecycle hook op = opts.op = 'beforeUpdateMany'; - return resolve(self[op](mapper, records, opts)).then(function (_records) { + return jsData.utils.resolve(self[op](mapper, records, opts)).then(function (_records) { // Allow for re-assignment from lifecycle hook - records = isUndefined(_records) ? records : _records; + records = jsData.utils.isUndefined(_records) ? records : _records; records = records.map(function (record) { return withoutRelations(mapper, record); }); op = opts.op = 'updateMany'; self.dbg(op, mapper, records, opts); - return resolve(self._updateMany(mapper, records, opts)); + return jsData.utils.resolve(self._updateMany(mapper, records, opts)); }).then(function (results) { - var _results9 = babelHelpers.slicedToArray(results, 2); + var _results11 = babelHelpers.slicedToArray(results, 2); - var data = _results9[0]; - var result = _results9[1]; + var data = _results11[0]; + var result = _results11[1]; data || (data = []); result || (result = {}); @@ -2781,9 +2955,9 @@ return /******/ (function(modules) { // webpackBootstrap // afterUpdateMany lifecycle hook op = opts.op = 'afterUpdateMany'; - return resolve(self[op](mapper, records, opts, response)).then(function (_response) { + return jsData.utils.resolve(self[op](mapper, records, opts, response)).then(function (_response) { // Allow for re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return jsData.utils.isUndefined(_response) ? response : _response; }); }); } diff --git a/fetch/dist/js-data-fetch.js.map b/fetch/dist/js-data-fetch.js.map index 75e557b..5312d0f 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 d9b3328e51d13a735e9e","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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A;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;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,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;;AAEA;;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,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,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;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;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,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;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;;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;AACA,iBAAgB;AAChB;AACA;AACA;AACA,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,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,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,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,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;;AAEA,EAAC;AACD,4C;;;;;;AC36CA,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[\"HttpAdapter\"] = factory(require(\"js-data\"), require(\"undefined\"));\n\telse\n\t\troot[\"HttpAdapter\"] = 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 d9b3328e51d13a735e9e\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nimport Adapter from 'js-data-adapter'\n\nlet hasFetch = false\n\ntry {\n hasFetch = window && window.fetch\n} catch (e) {}\n\nconst noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n return utils.resolve()\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n return utils.resolve()\n}\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 * @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// 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\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.data, 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) {\n if (response.hasOwnProperty('data')) {\n return response.data\n }\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 HttpAdapter.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 */\nHttpAdapter.addAction = function (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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n utils.forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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(require('js-data')) :\n typeof define === 'function' && define.amd ? define('js-data-adapter', ['js-data'], factory) :\n (factory(global.JSData));\n}(this, function (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 addHiddenPropsToTarget = jsData.utils.addHiddenPropsToTarget;\n var deepFillIn = jsData.utils.deepFillIn;\n var extend = jsData.utils.extend;\n var fillIn = jsData.utils.fillIn;\n var forEachRelation = jsData.utils.forEachRelation;\n var get = jsData.utils.get;\n var isArray = jsData.utils.isArray;\n var isObject = jsData.utils.isObject;\n var isUndefined = jsData.utils.isUndefined;\n var omit = jsData.utils.omit;\n var plainCopy = jsData.utils.plainCopy;\n var resolve = jsData.utils.resolve;\n\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 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 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 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 fillIn(opts, DEFAULTS);\n fillIn(self, opts);\n }\n\n Adapter.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 * @typedef {Object} Response\n * @property {Object} data Response data.\n * @property {string} op The operation for which the response was created.\n */\n function Response(data, meta, op) {\n var self = this;\n meta || (meta = {});\n self.data = data;\n fillIn(self, meta);\n self.op = op;\n }\n\n Adapter.Response = Response;\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 = extend;\n\n addHiddenPropsToTarget(Adapter.prototype, {\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 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 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 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 * 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 resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n props = withoutRelations(mapper, props);\n op = opts.op = 'create';\n self.dbg(op, mapper, props, opts);\n return resolve(self._create(mapper, props, 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, '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 resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = 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 resolve(self._createMany(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 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 resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy';\n self.dbg(op, mapper, id, opts);\n return resolve(self._destroy(mapper, id, 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 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 resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll';\n self.dbg(op, mapper, query, opts);\n return resolve(self._destroyAll(mapper, query, 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, 'destroyAll');\n response = self.respond(response, opts);\n\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll';\n return resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return isUndefined(_response) ? response : _response;\n });\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 = get(record, def.localKeys) || [];\n itemKeys = 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 get(record, mapper.idAttribute);\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 (isObject(records) && !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 (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 (isObject(records) && !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 _ret = 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 = get(item, def.localKeys) || [];\n itemKeys = 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 _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === \"object\") return _ret.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 (isObject(records) && !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 = get(record, idAttribute);\n relatedItems.forEach(function (relatedItem) {\n var foreignKeys = 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 (isObject(records) && !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 (isArray(relatedData) && relatedData.length) {\n def.setLocalField(record, relatedData[0]);\n }\n });\n });\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 * 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 (isObject(records) && !isArray(records)) {\n var _ret2 = 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 _ret2 === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret2)) === \"object\") return _ret2.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 resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find';\n self.dbg(op, mapper, id, opts);\n return resolve(self._find(mapper, id, opts));\n }).then(function (results) {\n var _results5 = babelHelpers.slicedToArray(results, 1);\n\n var _record = _results5[0];\n\n if (!_record) {\n return;\n }\n record = _record;\n var tasks = [];\n\n 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 resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 (isObject(activeWith)) {\n var activeQuery = activeWith.query || {};\n if (activeWith.replace) {\n query = activeQuery;\n } else {\n deepFillIn(query, activeQuery);\n }\n }\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll';\n return resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll';\n self.dbg(op, mapper, query, opts);\n return resolve(self._findAll(mapper, query, opts));\n }).then(function (results) {\n var _results6 = babelHelpers.slicedToArray(results, 1);\n\n var _records = _results6[0];\n\n _records || (_records = []);\n records = _records;\n var tasks = [];\n 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 resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 isUndefined(opts[opt]) ? plainCopy(this[opt]) : plainCopy(opts[opt]);\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 * @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 resolve(self[op](mapper, id, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n op = opts.op = 'update';\n self.dbg(op, mapper, id, props, opts);\n return resolve(self._update(mapper, id, props, opts));\n }).then(function (results) {\n var _results7 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results7[0];\n var result = _results7[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 resolve(self[op](mapper, id, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, props, query, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n op = opts.op = 'updateAll';\n self.dbg(op, mapper, props, query, opts);\n return resolve(self._updateAll(mapper, props, 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 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 resolve(self[op](mapper, props, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 get(record, idAttribute);\n });\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany';\n return resolve(self[op](mapper, records, opts)).then(function (_records) {\n // Allow for re-assignment from lifecycle hook\n records = 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 resolve(self._updateMany(mapper, records, 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 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 resolve(self[op](mapper, records, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return isUndefined(_response) ? response : _response;\n });\n });\n }\n });\n\n module.exports = Adapter;\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 15384622f1b482df8fe1","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;;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,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;;AAEA;;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,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;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;;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;AACA,iBAAgB;AAChB;AACA;AACA;AACA,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,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,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,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,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;;AAEA,EAAC;AACD,4C;;;;;;AC3lDA,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[\"HttpAdapter\"] = factory(require(\"js-data\"), require(\"undefined\"));\n\telse\n\t\troot[\"HttpAdapter\"] = 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 15384622f1b482df8fe1\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nimport Adapter from 'js-data-adapter'\n\nlet hasFetch = false\n\ntry {\n hasFetch = window && window.fetch\n} catch (e) {}\n\nconst noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n return utils.resolve()\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n return utils.resolve()\n}\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 * @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// 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\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 HttpAdapter.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 */\nHttpAdapter.addAction = function (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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n utils.forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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(require('js-data')) :\n typeof define === 'function' && define.amd ? define('js-data-adapter', ['js-data'], factory) :\n (factory(global.JSData));\n}(this, function (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 Adapter.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 * @typedef {Object} Response\n * @property {Object} data Response data.\n * @property {string} op The operation for which the response was created.\n */\n function Response(data, meta, op) {\n var self = this;\n meta || (meta = {});\n self.data = data;\n jsData.utils.fillIn(self, meta);\n self.op = op;\n }\n\n Adapter.Response = Response;\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 {Object} props The `props` 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 * 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 * 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 _ret = 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 _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === \"object\") return _ret.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 * 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 * 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 _ret2 = 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 _ret2 === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret2)) === \"object\") return _ret2.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 * 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 * 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 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 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 module.exports = Adapter;\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 ba81968..ea4dcd8 100644 --- a/fetch/dist/js-data-fetch.min.js +++ b/fetch/dist/js-data-fetch.min.js @@ -1,2 +1,2 @@ -!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.HttpAdapter=t(require("js-data"),require("undefined")):e.HttpAdapter=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 e&&e.__esModule?e:{default:e}}function i(e){return null!=e&&""!==e}function a(e,t){return t||(t=""),e.filter(i).join(t)}function o(){for(var e=arguments.length,t=Array(e),n=0;e>n;n++)t[n]=arguments[n];var r=a(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 s(e,t){if(!t)return e;var n=[];return d.utils.forOwn(t,function(e,t){null!==e&&"undefined"!=typeof e&&(d.utils.isArray(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():d.utils.isObject(e)&&(e=d.utils.toJson(e)),n.push(u(t)+"="+u(e))}))}),n.length>0&&(e+=(-1===e.indexOf("?")?"?":"&")+n.join("&")),e}function f(e){var t=this;e||(e={}),d.utils.fillIn(e,b),p.default.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},d=n(1),c=n(2),p=r(c),h=n(3),y=!1;try{y=window&&window.fetch}catch(e){}var g=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var i=n[n.length-1];return e.dbg.apply(e,[i.op].concat(n)),d.utils.resolve()},v=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var i=n[n.length-2];return e.dbg.apply(e,[i.op].concat(n)),d.utils.resolve()},m=p.default.prototype,b={basePath:"",forceTrailingSlash:!1,http:h,httpConfig:{},suffix:"",useFetch:!1};f.prototype=Object.create(p.default.prototype,{constructor:{value:f,enumerable:!1,writable:!0,configurable:!0}}),Object.defineProperty(f,"__super__",{configurable:!0,value:p.default}),d.utils.addHiddenPropsToTarget(f.prototype,{afterDEL:v,afterGET:v,afterHTTP:v,afterPOST:v,afterPUT:v,beforeDEL:g,beforeGET:g,beforeHTTP:g,beforePOST:g,beforePUT:g,_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.data,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),d.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),m.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),m.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),m.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",d.utils.resolve(r[i](e,t,n)).then(function(a){return t=d.utils.isUndefined(a)?t:a,i=n.op="DEL",r.dbg(i,e,t,n),r.HTTP(t,n)}).then(function(a){return i=n.op="afterDEL",d.utils.resolve(r[i](e,t,n,a)).then(function(e){return d.utils.isUndefined(e)?a:e})})},deserialize:function(e,t,n){return n||(n={}),d.utils.isFunction(n.deserialize)?n.deserialize(e,t,n):d.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),m.destroy.call(r,e,t,n)},destroyAll:function(e,t,n){var r=this;return t||(t={}),n||(n={}),n.params=r.getParams(n),d.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),m.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=d.utils.toJson(e.data)),fetch(new Request(s(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),m.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),d.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),m.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",d.utils.resolve(r[i](e,t,n)).then(function(a){return t=d.utils.isUndefined(a)?t:a,i=n.op="GET",r.dbg(i,e,t,n),r.HTTP(t,n)}).then(function(a){return i=n.op="afterGET",d.utils.resolve(r[i](e,t,n,a)).then(function(e){return d.utils.isUndefined(e)?a:e})})},getEndpoint:function(e,t,n){var r=this;n||(n={}),n.params=d.utils.isUndefined(n.params)?{}:n.params;var i=e.relationList||[],a=d.utils.isUndefined(n.endpoint)?d.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(),f=n.params[u];if(f===!1||!u||!s)return f===!1&&delete n.params[u],!1;if(delete n.params[u],d.utils.isObject(t)&&(i=t),i&&(f=f||e.getForeignKey(i)||(e.getLocalField(i)?d.utils.get(e.getLocalField(i),s.idAttribute):null)),f){var c=function(){delete n.endpoint;var e={};return d.utils.forOwn(n,function(t,n){e[n]=t}),d.utils._(e,s),a=o(r.getEndpoint(s,f,e),f,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=[d.utils.isUndefined(r.basePath)?d.utils.isUndefined(t.basePath)?i.basePath:t.basePath:r.basePath,i.getEndpoint(t,d.utils.isString(n)||d.utils.isNumber(n)||"create"===e?n:null,r)];return"find"!==e&&"update"!==e&&"destroy"!==e||a.push(n),o.apply(d.utils,a)},getParams:function(e){return e||(e={}),d.utils.isUndefined(e.params)?{}:d.utils.copy(e.params)},getSuffix:function(e,t){return t||(t={}),d.utils.isUndefined(t.suffix)?d.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),d.utils.reject(t))}var r=this,i=new Date;t||(t={});var a=e.data,o=e.cache,u=e.timeout;e=d.utils.copy(e,null,null,null,["data","cache","timeout"]),e=d.utils.deepMixIn(e,r.httpConfig),e.data=a,e.cache=o,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 d.utils.resolve(r.beforeHTTP(e,t)).then(function(i){return e=i||e,y&&(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 d.utils.resolve(r.afterHTTP(e,t,n)).then(function(e){return e||n})})},POST:function(e,t,n,r){var i=this,a=void 0;return n||(n={}),r||(r={}),n.url=e||n.url,n.data=t||n.data,n.method=n.method||"post",a=r.op="beforePOST",d.utils.resolve(i[a](e,t,n,r)).then(function(o){return n=d.utils.isUndefined(o)?n:o,a=r.op="POST",i.dbg(a,e,t,n,r),i.HTTP(n,r)}).then(function(o){return a=r.op="afterPOST",d.utils.resolve(i[a](e,t,n,r,o)).then(function(e){return d.utils.isUndefined(e)?o:e})})},PUT:function(e,t,n,r){var i=this,a=void 0;return n||(n={}),r||(r={}),n.url=e||n.url,n.data=t||n.data,n.method=n.method||"put",a=r.op="beforePUT",d.utils.resolve(i[a](e,t,n,r)).then(function(o){return n=d.utils.isUndefined(o)?n:o,a=r.op="PUT",i.dbg(a,e,t,n,r),i.HTTP(n,r)}).then(function(o){return a=r.op="afterPUT",d.utils.resolve(i[a](e,t,n,r,o)).then(function(e){return d.utils.isUndefined(e)?o:e})})},queryTransform:function(e,t,n){return n||(n={}),d.utils.isFunction(n.queryTransform)?n.queryTransform(e,t,n):d.utils.isFunction(e.queryTransform)?e.queryTransform(e,t,n):t},responseError:function(e,t,n){return d.utils.reject(e)},serialize:function(e,t,n){return n||(n={}),d.utils.isFunction(n.serialize)?n.serialize(e,t,n):d.utils.isFunction(e.serialize)?e.serialize(e,t,n):t},sum:function(e,t,n,r){var i=this;if(n||(n={}),r||(r={}),!d.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),d.utils.deepMixIn(r.params,n),r.params=i.queryTransform(e,r.params,r),m.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),m.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),d.utils.deepMixIn(r.params,n),r.params=i.queryTransform(e,r.params,r),r.suffix=i.getSuffix(e,r),m.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),m.updateMany.call(r,e,t,n)}}),f.addAction=function(e,t){if(!e||!d.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 d.utils.reject(e)},n[e]=function(n,r){var i=this;d.utils.isObject(n)&&(r=n),r=r||{};var a=i.getAdapter(t.adapter||i.defaultAdapter||"http"),u={};if(d.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,d.utils.isSorN(n)?n:null,r)];d.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,d.utils.deepMixIn(u)(r),d.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}},f.addActions=function(e){return e||(e={}),function(e){return d.utils.forOwn(e,function(t,n){f.addAction(n,t)(e)}),e}},f.extend=d.utils.extend,f.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=f},function(t,n){t.exports=e},function(e,t,n){!function(e,t){t(n(1))}(this,function(t){"use strict";function n(e){var t=this;e||(e={}),s(e,A),s(t,e)}function r(e,t,n){var r=this;t||(t={}),r.data=e,s(r,t),r.op=n}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,a=void 0;try{for(var o,u=e[Symbol.iterator]();!(r=(o=u.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){i=!0,a=e}finally{try{!r&&u.return&&u.return()}finally{if(i)throw a}}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 a=t.utils.addHiddenPropsToTarget,o=t.utils.deepFillIn,u=t.utils.extend,s=t.utils.fillIn,f=t.utils.forEachRelation,l=t.utils.get,d=t.utils.isArray,c=t.utils.isObject,p=t.utils.isUndefined,h=t.utils.omit,y=t.utils.plainCopy,g=t.utils.resolve,v=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var i=n[n.length-1];return e.dbg.apply(e,[i.op].concat(n)),g()},m=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var i=n[n.length-2];return e.dbg.apply(e,[i.op].concat(n)),g()},b=function(e){var t={},n=[];return e.forEach(function(e){e in t||(n.push(e),t[e]=0)}),n},T=function(e,t){return h(t,e.relationFields||[])},A={debug:!1,raw:!1};n.reserved=["orderBy","sort","limit","offset","skip","where"],n.Response=r,n.extend=u,a(n.prototype,{afterCreate:m,afterCreateMany:m,afterDestroy:m,afterDestroyAll:m,afterFind:m,afterFindAll:m,afterUpdate:m,afterUpdateAll:m,afterUpdateMany:m,beforeCreate:v,beforeCreateMany:v,beforeDestroy:v,beforeDestroyAll:v,beforeFind:v,beforeFindAll:v,beforeUpdate:v,beforeUpdateAll:v,beforeUpdateMany:v,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))},create:function(e,t,n){var a=this,o=void 0;return t||(t={}),n||(n={}),o=n.op="beforeCreate",g(a[o](e,t,n)).then(function(r){return t=p(r)?t:r,t=T(e,t),o=n.op="create",a.dbg(o,e,t,n),g(a._create(e,t,n))}).then(function(u){var s=i.slicedToArray(u,2),f=s[0],l=s[1];l||(l={});var d=new r(f,l,"create");return d.created=f?1:0,d=a.respond(d,n),o=n.op="afterCreate",g(a[o](e,t,n,d)).then(function(e){return p(e)?d:e})})},createMany:function(e,t,n){var a=this,o=void 0;return t||(t={}),n||(n={}),o=n.op="beforeCreateMany",g(a[o](e,t,n)).then(function(r){return t=p(r)?t:r,t=t.map(function(t){return T(e,t)}),o=n.op="createMany",a.dbg(o,e,t,n),g(a._createMany(e,t,n))}).then(function(u){var s=i.slicedToArray(u,2),f=s[0],l=s[1];f||(f=[]),l||(l={});var d=new r(f,l,"createMany");return d.created=f.length,d=a.respond(d,n),o=n.op="afterCreateMany",g(a[o](e,t,n,d)).then(function(e){return p(e)?d:e})})},destroy:function(e,t,n){var a=this,o=void 0;return n||(n={}),o=n.op="beforeDestroy",g(a[o](e,t,n)).then(function(){return o=n.op="destroy",a.dbg(o,e,t,n),g(a._destroy(e,t,n))}).then(function(u){var s=i.slicedToArray(u,2),f=s[0],l=s[1];l||(l={});var d=new r(f,l,"destroy");return d=a.respond(d,n),o=n.op="afterDestroy",g(a[o](e,t,n,d)).then(function(e){return p(e)?d:e})})},destroyAll:function(e,t,n){var a=this,o=void 0;return t||(t={}),n||(n={}),o=n.op="beforeDestroyAll",g(a[o](e,t,n)).then(function(){return o=n.op="destroyAll",a.dbg(o,e,t,n),g(a._destroyAll(e,t,n))}).then(function(u){var s=i.slicedToArray(u,2),f=s[0],l=s[1];l||(l={});var d=new r(f,l,"destroyAll");return d=a.respond(d,n),o=n.op="afterDestroyAll",g(a[o](e,t,n,d)).then(function(e){return p(e)?d:e})})},makeHasManyForeignKey:function(e,t,n){return t.getForeignKey(n)},makeHasManyLocalKeys:function(e,t,n){var r=[],i=l(n,t.localKeys)||[];return i=d(i)?i:Object.keys(i),r=r.concat(i),b(r).filter(function(e){return e})},makeHasManyForeignKeys:function(e,t,n){return l(n,e.idAttribute)},loadHasMany:function(e,t,n,r){var i=this,a=!1;c(n)&&!d(n)&&(a=!0,n=[n]);var o=n.map(function(n){return i.makeHasManyForeignKey(e,t,n)}),u={where:{}},s=u.where[t.foreignKey]={};return a?s["=="]=o[0]:s.in=o.filter(function(e){return e}),i.findAll(t.getRelation(),u,r).then(function(r){n.forEach(function(n){var i=[];a?i=r:r.forEach(function(r){l(r,t.foreignKey)===n[e.idAttribute]&&i.push(r)}),t.setLocalField(n,i)})})},loadHasManyLocalKeys:function(e,t,n,r){var a=this,o=void 0,u=t.getRelation();if(c(n)&&!d(n)&&(o=n),o)return a.findAll(u,{where:i.defineProperty({},u.idAttribute,{in:a.makeHasManyLocalKeys(e,t,o)})},r).then(function(e){t.setLocalField(o,e)});var s=function(){var o=[];return n.forEach(function(n){o=o.concat(a.self.makeHasManyLocalKeys(e,t,n))}),{v:a.findAll(u,{where:i.defineProperty({},u.idAttribute,{in:b(o).filter(function(e){return e})})},r).then(function(e){return n.forEach(function(n){var r=[],i=l(n,t.localKeys)||[];i=d(i)?i:Object.keys(i),e.forEach(function(e){i&&-1!==i.indexOf(e[u.idAttribute])&&r.push(e)}),t.setLocalField(n,r)}),e})}}();return"object"===("undefined"==typeof s?"undefined":i.typeof(s))?s.v:void 0},loadHasManyForeignKeys:function(e,t,n,r){var a=this,o=t.getRelation(),u=e.idAttribute,s=void 0;return c(n)&&!d(n)&&(s=n),s?a.findAll(t.getRelation(),{where:i.defineProperty({},t.foreignKeys,{contains:a.makeHasManyForeignKeys(e,t,s)})},r).then(function(e){t.setLocalField(s,e)}):a.findAll(o,{where:i.defineProperty({},t.foreignKeys,{isectNotEmpty:n.map(function(n){return a.makeHasManyForeignKeys(e,t,n)})})},r).then(function(e){var r=t.foreignKeys;n.forEach(function(n){var i=[],a=l(n,u);e.forEach(function(t){var n=l(e,r)||[];-1!==n.indexOf(a)&&i.push(t)}),t.setLocalField(n,i)})})},loadHasOne:function(e,t,n,r){return c(n)&&!d(n)&&(n=[n]),this.loadHasMany(e,t,n,r).then(function(){n.forEach(function(e){var n=t.getLocalField(e);d(n)&&n.length&&t.setLocalField(e,n[0])})})},makeBelongsToForeignKey:function(e,t,n){return t.getForeignKey(n)},loadBelongsTo:function(e,t,n,r){var a=this,o=t.getRelation();if(!c(n)||d(n)){var u=n.map(function(n){return a.makeBelongsToForeignKey(e,t,n)}).filter(function(e){return e});return a.findAll(o,{where:i.defineProperty({},o.idAttribute,{in:u})},r).then(function(e){n.forEach(function(n){e.forEach(function(e){e[o.idAttribute]===n[t.foreignKey]&&t.setLocalField(n,e)})})})}var s=function(){var i=n;return{v:a.find(o,a.makeBelongsToForeignKey(e,t,i),r).then(function(e){t.setLocalField(i,e)})}}();return"object"===("undefined"==typeof s?"undefined":i.typeof(s))?s.v:void 0},find:function(e,t,n){var a=this,o=void 0,u=void 0;return n||(n={}),n.with||(n.with=[]),u=n.op="beforeFind",g(a[u](e,t,n)).then(function(){return u=n.op="find",a.dbg(u,e,t,n),g(a._find(e,t,n))}).then(function(t){var r=i.slicedToArray(t,1),u=r[0];if(u){o=u;var s=[];return f(e,n,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,o,n):"hasMany"===t.type&&t.foreignKeys?r=a.loadHasManyForeignKeys(e,t,o,n):"belongsTo"===t.type&&(r=a.loadBelongsTo(e,t,o,n)):r="hasOne"===t.type?a.loadHasOne(e,t,o,n):a.loadHasMany(e,t,o,n),r&&s.push(r)}),Promise.all(s)}}).then(function(){var i=new r(o,{},"find");return i.found=o?1:0,i=a.respond(i,n),u=n.op="afterFind",g(a[u](e,t,n,i)).then(function(e){return p(e)?i:e})})},findAll:function(e,t,n){var a=this;n||(n={}),n.with||(n.with=[]);var u=[],s=void 0,l=n._activeWith;if(c(l)){var d=l.query||{};l.replace?t=d:o(t,d)}return s=n.op="beforeFindAll",g(a[s](e,t,n)).then(function(){return s=n.op="findAll",a.dbg(s,e,t,n),g(a._findAll(e,t,n))}).then(function(t){var r=i.slicedToArray(t,1),o=r[0];o||(o=[]),u=o;var s=[];return f(e,n,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&&s.push(r)}),Promise.all(s)}).then(function(){var i=new r(u,{},"findAll");return i.found=u.length,i=a.respond(i,n),s=n.op="afterFindAll",g(a[s](e,t,n,i)).then(function(e){return p(e)?i:e})})},getOpt:function(e,t){return t||(t={}),y(p(t[e])?this[e]:t[e])},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 a;(a=console)[e].apply(a,[i].concat(n))}else{var o;(o=console).log.apply(o,[i].concat(n))}}},respond:function(e,t){return this.getOpt("raw",t)?e:e.data},update:function(e,t,n,a){var o=this;n||(n={}),a||(a={});var u=void 0;return u=a.op="beforeUpdate",g(o[u](e,t,n,a)).then(function(r){return n=p(r)?n:r,u=a.op="update",o.dbg(u,e,t,n,a),g(o._update(e,t,n,a))}).then(function(s){var f=i.slicedToArray(s,2),l=f[0],d=f[1];d||(d={});var c=new r(l,d,"update");return c.updated=l?1:0,c=o.respond(c,a),u=a.op="afterUpdate",g(o[u](e,t,n,a,c)).then(function(e){return p(e)?c:e})})},updateAll:function(e,t,n,a){var o=this;t||(t={}),n||(n={}),a||(a={});var u=void 0;return u=a.op="beforeUpdateAll",g(o[u](e,t,n,a)).then(function(r){return t=p(r)?t:r,u=a.op="updateAll",o.dbg(u,e,t,n,a),g(o._updateAll(e,t,n,a))}).then(function(s){var f=i.slicedToArray(s,2),l=f[0],d=f[1];l||(l=[]),d||(d={});var c=new r(l,d,"updateAll");return c.updated=l.length,c=o.respond(c,a),u=a.op="afterUpdateAll",g(o[u](e,t,n,a,c)).then(function(e){return p(e)?c:e})})},updateMany:function(e,t,n){var a=this;t||(t=[]),n||(n={});var o=void 0,u=e.idAttribute;return t=t.filter(function(e){return l(e,u)}),o=n.op="beforeUpdateMany",g(a[o](e,t,n)).then(function(r){return t=p(r)?t:r,t=t.map(function(t){return T(e,t)}),o=n.op="updateMany",a.dbg(o,e,t,n),g(a._updateMany(e,t,n))}).then(function(u){var s=i.slicedToArray(u,2),f=s[0],l=s[1];f||(f=[]),l||(l={});var d=new r(f,l,"updateMany");return d.updated=f.length,d=a.respond(d,n),o=n.op="afterUpdateMany",g(a[o](e,t,n,d)).then(function(e){return p(e)?d:e})})}}),e.exports=n})},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.HttpAdapter=t(require("js-data"),require("undefined")):e.HttpAdapter=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 e&&e.__esModule?e:{default:e}}function i(e){return null!=e&&""!==e}function o(e,t){return t||(t=""),e.filter(i).join(t)}function a(){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 s(e,t){if(!t)return e;var n=[];return d.utils.forOwn(t,function(e,t){null!==e&&"undefined"!=typeof e&&(d.utils.isArray(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():d.utils.isObject(e)&&(e=d.utils.toJson(e)),n.push(u(t)+"="+u(e))}))}),n.length>0&&(e+=(-1===e.indexOf("?")?"?":"&")+n.join("&")),e}function l(e){var t=this;e||(e={}),d.utils.fillIn(e,b),p.default.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},d=n(1),c=n(2),p=r(c),h=n(3),y=!1;try{y=window&&window.fetch}catch(e){}var v=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var i=n[n.length-1];return e.dbg.apply(e,[i.op].concat(n)),d.utils.resolve()},g=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var i=n[n.length-2];return e.dbg.apply(e,[i.op].concat(n)),d.utils.resolve()},m=p.default.prototype,b={basePath:"",forceTrailingSlash:!1,http:h,httpConfig:{},suffix:"",useFetch:!1};l.prototype=Object.create(p.default.prototype,{constructor:{value:l,enumerable:!1,writable:!0,configurable:!0}}),Object.defineProperty(l,"__super__",{configurable:!0,value:p.default}),d.utils.addHiddenPropsToTarget(l.prototype,{afterDEL:g,afterGET:g,afterHTTP:g,afterPOST:g,afterPUT:g,beforeDEL:v,beforeGET:v,beforeHTTP:v,beforePOST:v,beforePUT:v,_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),d.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),m.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),m.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),m.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",d.utils.resolve(r[i](e,t,n)).then(function(o){return t=d.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",d.utils.resolve(r[i](e,t,n,o)).then(function(e){return d.utils.isUndefined(e)?o:e})})},deserialize:function(e,t,n){return n||(n={}),d.utils.isFunction(n.deserialize)?n.deserialize(e,t,n):d.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),m.destroy.call(r,e,t,n)},destroyAll:function(e,t,n){var r=this;return t||(t={}),n||(n={}),n.params=r.getParams(n),d.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),m.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=d.utils.toJson(e.data)),fetch(new Request(s(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),m.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),d.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),m.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",d.utils.resolve(r[i](e,t,n)).then(function(o){return t=d.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",d.utils.resolve(r[i](e,t,n,o)).then(function(e){return d.utils.isUndefined(e)?o:e})})},getEndpoint:function(e,t,n){var r=this;n||(n={}),n.params=d.utils.isUndefined(n.params)?{}:n.params;var i=e.relationList||[],o=d.utils.isUndefined(n.endpoint)?d.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(),l=n.params[u];if(l===!1||!u||!s)return l===!1&&delete n.params[u],!1;if(delete n.params[u],d.utils.isObject(t)&&(i=t),i&&(l=l||e.getForeignKey(i)||(e.getLocalField(i)?d.utils.get(e.getLocalField(i),s.idAttribute):null)),l){var c=function(){delete n.endpoint;var e={};return d.utils.forOwn(n,function(t,n){e[n]=t}),d.utils._(e,s),o=a(r.getEndpoint(s,l,e),l,o),{v:!1}}();if("object"===("undefined"==typeof c?"undefined":f(c)))return c.v}}}),o},getPath:function(e,t,n,r){var i=this;r||(r={});var o=[d.utils.isUndefined(r.basePath)?d.utils.isUndefined(t.basePath)?i.basePath:t.basePath:r.basePath,i.getEndpoint(t,d.utils.isString(n)||d.utils.isNumber(n)||"create"===e?n:null,r)];return"find"!==e&&"update"!==e&&"destroy"!==e||o.push(n),a.apply(d.utils,o)},getParams:function(e){return e||(e={}),d.utils.isUndefined(e.params)?{}:d.utils.copy(e.params)},getSuffix:function(e,t){return t||(t={}),d.utils.isUndefined(t.suffix)?d.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),d.utils.reject(t))}var r=this,i=new Date;t||(t={});var o=e.data,a=e.cache,u=e.timeout;e=d.utils.copy(e,null,null,null,["data","cache","timeout"]),e=d.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 d.utils.resolve(r.beforeHTTP(e,t)).then(function(i){return e=i||e,y&&(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 d.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",d.utils.resolve(i[o](e,t,n,r)).then(function(a){return n=d.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",d.utils.resolve(i[o](e,t,n,r,a)).then(function(e){return d.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",d.utils.resolve(i[o](e,t,n,r)).then(function(a){return n=d.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",d.utils.resolve(i[o](e,t,n,r,a)).then(function(e){return d.utils.isUndefined(e)?a:e})})},queryTransform:function(e,t,n){return n||(n={}),d.utils.isFunction(n.queryTransform)?n.queryTransform(e,t,n):d.utils.isFunction(e.queryTransform)?e.queryTransform(e,t,n):t},responseError:function(e,t,n){return d.utils.reject(e)},serialize:function(e,t,n){return n||(n={}),d.utils.isFunction(n.serialize)?n.serialize(e,t,n):d.utils.isFunction(e.serialize)?e.serialize(e,t,n):t},sum:function(e,t,n,r){var i=this;if(n||(n={}),r||(r={}),!d.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),d.utils.deepMixIn(r.params,n),r.params=i.queryTransform(e,r.params,r),m.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),m.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),d.utils.deepMixIn(r.params,n),r.params=i.queryTransform(e,r.params,r),r.suffix=i.getSuffix(e,r),m.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),m.updateMany.call(r,e,t,n)}}),l.addAction=function(e,t){if(!e||!d.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 d.utils.reject(e)},n[e]=function(n,r){var i=this;d.utils.isObject(n)&&(r=n),r=r||{};var o=i.getAdapter(t.adapter||i.defaultAdapter||"http"),u={};if(d.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||o.basePath,o.getEndpoint(i,d.utils.isSorN(n)?n:null,r)];d.utils.isSorN(n)&&s.push(n),s.push(t.pathname||e),u.url=a.apply(null,s)}return u.method=u.method||"GET",u.mapper=i.name,d.utils.deepMixIn(u)(r),d.utils.resolve(u).then(r.request||t.request).then(function(e){return o.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}},l.addActions=function(e){return e||(e={}),function(e){return d.utils.forOwn(e,function(t,n){l.addAction(n,t)(e)}),e}},l.extend=d.utils.extend,l.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=l},function(t,n){t.exports=e},function(e,t,n){!function(e,t){t(n(1))}(this,function(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};n.reserved=["orderBy","sort","limit","offset","skip","where"],n.Response=r,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})})},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)},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])})})},makeBelongsToForeignKey:function(e,t,n){return t.getForeignKey(n)},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])},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))}}},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 s=void 0;return s=a.op="beforeUpdate",t.utils.resolve(u[s](e,n,o,a)).then(function(r){return o=t.utils.isUndefined(r)?o:r,s=a.op="update",u.dbg(s,e,n,o,a),t.utils.resolve(u._update(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,"update");return p.updated=d?1:0,p=u.respond(p,a),s=a.op="afterUpdate",t.utils.resolve(u[s](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 s=void 0;return s=a.op="beforeUpdateAll",t.utils.resolve(u[s](e,n,o,a)).then(function(r){return n=t.utils.isUndefined(r)?n:r,s=a.op="updateAll",u.dbg(s,e,n,o,a),t.utils.resolve(u._updateAll(e,n,o,a))}).then(function(l){var f=i.slicedToArray(l,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),s=a.op="afterUpdateAll",t.utils.resolve(u[s](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.exports=n})},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 3fda589..022a40e 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","_interopRequireDefault","obj","__esModule","default","isValidString","value","join","items","separator","filter","makePath","_len3","arguments","length","args","Array","_key3","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","_jsDataAdapter2","_typeof","Symbol","iterator","constructor","_jsDataAdapter","axios","hasFetch","fetch","e","noop","_len","_key","dbg","apply","op","concat","resolve","noop2","_len2","_key2","__super__","prototype","basePath","forceTrailingSlash","http","httpConfig","suffix","useFetch","Object","create","enumerable","writable","configurable","defineProperty","addHiddenPropsToTarget","afterDEL","afterGET","afterHTTP","afterPOST","afterPUT","beforeDEL","beforeGET","beforeHTTP","beforePOST","beforePUT","_count","mapper","query","GET","getPath","then","response","_end","_create","props","POST","serialize","_createMany","_destroy","DEL","_destroyAll","deserialize","data","_find","_findAll","_sum","field","_update","PUT","_updateAll","_updateMany","records","count","getParams","getSuffix","deepMixIn","queryTransform","createMany","config","method","_config","isUndefined","HTTP","_response","isFunction","hasOwnProperty","destroy","destroyAll","error","console","_console","_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","_args","isSorN","pathname","addActions","extend","version","full","major","parseInt","minor","patch","alpha","beta","global","jsData","Adapter","Response","meta","babelHelpers","typeof","slicedToArray","sliceIterator","arr","i","_arr","_n","_d","_e","undefined","_s","_i","next","done","deepFillIn","forEachRelation","omit","plainCopy","unique","array","seen","final","withoutRelations","relationFields","debug","raw","reserved","afterCreate","afterCreateMany","afterDestroy","afterDestroyAll","afterFind","afterFindAll","afterUpdate","afterUpdateAll","afterUpdateMany","beforeCreate","beforeCreateMany","beforeDestroy","beforeDestroyAll","beforeFind","beforeFindAll","beforeUpdate","beforeUpdateAll","beforeUpdateMany","_props","results","_results","created","respond","map","record","_results2","_results3","_results4","makeHasManyForeignKey","makeHasManyLocalKeys","localKeys","itemKeys","keys","x","makeHasManyForeignKeys","loadHasMany","__opts","singular","IDs","where","criteria","relatedItems","attached","relatedItem","setLocalField","loadHasManyLocalKeys","relatedMapper","in","loadHasManyForeignKeys","foreignKeys","contains","isectNotEmpty","foreignKeysField","_relatedItems","loadHasOne","relatedData","makeBelongsToForeignKey","loadBelongsTo","relationDef","_ret2","with","_results5","_record","tasks","task","Promise","all","found","activeWith","_activeWith","activeQuery","_results6","_records","getOpt","opt","level","_len4","_key4","prefix","_console2","_results7","updated","_results8","_results9"],"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","_interopRequireDefault","obj","__esModule","default","isValidString","value","join","items","separator","filter","makePath","_len3","arguments","length","args","Array","_key3","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","_jsDataAdapter2","_typeof","Symbol","iterator","constructor","_jsDataAdapter","axios","hasFetch","fetch","e","noop","_len","_key","dbg","apply","op","concat","resolve","noop2","_len2","_key2","__super__","prototype","basePath","forceTrailingSlash","http","httpConfig","suffix","useFetch","Object","create","enumerable","writable","configurable","defineProperty","addHiddenPropsToTarget","afterDEL","afterGET","afterHTTP","afterPOST","afterPUT","beforeDEL","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","method","_config","isUndefined","HTTP","_response","isFunction","hasOwnProperty","data","destroy","destroyAll","error","console","_console","_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","_args","isSorN","pathname","addActions","extend","version","full","major","parseInt","minor","patch","alpha","beta","global","jsData","Adapter","Response","meta","babelHelpers","typeof","slicedToArray","sliceIterator","arr","i","_arr","_n","_d","_e","undefined","_s","_i","next","done","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","results","_results","respond","_props","_results2","created","map","record","_results3","_results4","_results5","makeHasManyForeignKey","makeHasManyLocalKeys","localKeys","itemKeys","keys","x","makeHasManyForeignKeys","loadHasMany","__opts","singular","IDs","where","criteria","relatedItems","attached","relatedItem","setLocalField","loadHasManyLocalKeys","relatedMapper","in","loadHasManyForeignKeys","foreignKeys","contains","isectNotEmpty","foreignKeysField","_relatedItems","loadHasOne","relatedData","makeBelongsToForeignKey","loadBelongsTo","relationDef","_ret2","with","_results6","_record","tasks","forEachRelation","task","Promise","all","found","activeWith","_activeWith","activeQuery","deepFillIn","_results7","_records","getOpt","opt","plainCopy","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/fetch/package.json b/fetch/package.json index efe8073..a96968b 100644 --- a/fetch/package.json +++ b/fetch/package.json @@ -1,7 +1,7 @@ { "name": "js-data-fetch", "description": "HTTP adapter for js-data that uses the fetch API.", - "version": "3.0.0-alpha.9", + "version": "3.0.0-alpha.10", "homepage": "https://github.com/js-data/js-data-http", "repository": { "type": "git", diff --git a/node/dist/js-data-http-node.js b/node/dist/js-data-http-node.js index ef5b514..1299742 100644 --- a/node/dist/js-data-http-node.js +++ b/node/dist/js-data-http-node.js @@ -359,7 +359,7 @@ return /******/ (function(modules) { // webpackBootstrap }); }, _end: function _end(mapper, opts, response) { - return [this.deserialize(mapper, response.data, opts), response]; + return [this.deserialize(mapper, response, opts), response]; }, _find: function _find(mapper, id, opts) { var self = this; @@ -528,10 +528,8 @@ return /******/ (function(modules) { // webpackBootstrap if (_jsData.utils.isFunction(mapper.deserialize)) { return mapper.deserialize(mapper, response, opts); } - if (response) { - if (response.hasOwnProperty('data')) { - return response.data; - } + if (response && response.hasOwnProperty('data')) { + return response.data; } return response; }, @@ -1409,20 +1407,6 @@ return /******/ (function(modules) { // webpackBootstrap babelHelpers; - var addHiddenPropsToTarget = jsData.utils.addHiddenPropsToTarget; - var deepFillIn = jsData.utils.deepFillIn; - var extend = jsData.utils.extend; - var fillIn = jsData.utils.fillIn; - var forEachRelation = jsData.utils.forEachRelation; - var get = jsData.utils.get; - var isArray = jsData.utils.isArray; - var isObject = jsData.utils.isObject; - var isUndefined = jsData.utils.isUndefined; - var omit = jsData.utils.omit; - var plainCopy = jsData.utils.plainCopy; - var resolve = jsData.utils.resolve; - - var noop = function noop() { var self = this; @@ -1432,7 +1416,7 @@ return /******/ (function(modules) { // webpackBootstrap var opts = args[args.length - 1]; self.dbg.apply(self, [opts.op].concat(args)); - return resolve(); + return jsData.utils.resolve(); }; var noop2 = function noop2() { @@ -1444,7 +1428,7 @@ return /******/ (function(modules) { // webpackBootstrap var opts = args[args.length - 2]; self.dbg.apply(self, [opts.op].concat(args)); - return resolve(); + return jsData.utils.resolve(); }; var unique = function unique(array) { @@ -1461,7 +1445,7 @@ return /******/ (function(modules) { // webpackBootstrap }; var withoutRelations = function withoutRelations(mapper, props) { - return omit(props, mapper.relationFields || []); + return jsData.utils.omit(props, mapper.relationFields || []); }; var DEFAULTS = { @@ -1497,8 +1481,8 @@ return /******/ (function(modules) { // webpackBootstrap function Adapter(opts) { var self = this; opts || (opts = {}); - fillIn(opts, DEFAULTS); - fillIn(self, opts); + jsData.utils.fillIn(opts, DEFAULTS); + jsData.utils.fillIn(self, opts); } Adapter.reserved = ['orderBy', 'sort', 'limit', 'offset', 'skip', 'where']; @@ -1515,7 +1499,7 @@ return /******/ (function(modules) { // webpackBootstrap var self = this; meta || (meta = {}); self.data = data; - fillIn(self, meta); + jsData.utils.fillIn(self, meta); self.op = op; } @@ -1532,9 +1516,32 @@ return /******/ (function(modules) { // webpackBootstrap * properties to the subclass itself. * @return {Object} Subclass of `Adapter`. */ - Adapter.extend = extend; + Adapter.extend = jsData.utils.extend; + + jsData.utils.addHiddenPropsToTarget(Adapter.prototype, { + /** + * Lifecycle method method called by count. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes count to wait for the Promise to resolve before continuing. + * + * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the count. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by count. + * + * @name Adapter#afterCount + * @method + * @param {Object} mapper The `mapper` argument passed to count. + * @param {Object} props The `props` argument passed to count. + * @param {Object} opts The `opts` argument passed to count. + * @property {string} opts.op `afterCount` + * @param {Object|Response} response Count or {@link Response}, depending on the value of `opts.raw`. + */ + afterCount: noop2, - addHiddenPropsToTarget(Adapter.prototype, { /** * Lifecycle method method called by create. * @@ -1673,6 +1680,29 @@ return /******/ (function(modules) { // webpackBootstrap */ afterFindAll: noop2, + /** + * Lifecycle method method called by sum. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes sum to wait for the Promise to resolve before continuing. + * + * If `opts.raw` is `true` then `response` will be a detailed response object, otherwise `response` will be the sum. + * + * `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. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by sum. + * + * @name Adapter#afterSum + * @method + * @param {Object} mapper The `mapper` argument passed to sum. + * @param {Object} props The `props` argument passed to sum. + * @param {Object} opts The `opts` argument passed to sum. + * @property {string} opts.op `afterSum` + * @param {Object|Response} response Count or {@link Response}, depending on the value of `opts.raw`. + */ + afterSum: noop2, + /** * Lifecycle method method called by update. * @@ -1744,6 +1774,24 @@ return /******/ (function(modules) { // webpackBootstrap */ afterUpdateMany: noop2, + /** + * Lifecycle method method called by count. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes count to wait for the Promise to resolve before continuing. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by count. + * + * @name Adapter#beforeCount + * @method + * @param {Object} mapper The `mapper` argument passed to count. + * @param {Object} query The `query` argument passed to count. + * @param {Object} opts The `opts` argument passed to count. + * @property {string} opts.op `beforeCount` + */ + beforeCount: noop, + /** * Lifecycle method method called by create. * @@ -1856,6 +1904,24 @@ return /******/ (function(modules) { // webpackBootstrap */ beforeFindAll: noop, + /** + * Lifecycle method method called by sum. + * + * Override this method to add custom behavior for this lifecycle hook. + * + * Returning a Promise causes sum to wait for the Promise to resolve before continuing. + * + * A thrown error or rejected Promise will bubble up and reject the Promise returned by sum. + * + * @name Adapter#beforeSum + * @method + * @param {Object} mapper The `mapper` argument passed to sum. + * @param {Object} query The `query` argument passed to sum. + * @param {Object} opts The `opts` argument passed to sum. + * @property {string} opts.op `beforeSum` + */ + beforeSum: noop, + /** * Lifecycle method method called by update. * @@ -1933,6 +1999,58 @@ return /******/ (function(modules) { // webpackBootstrap }, + /** + * Retrieve the number of records that match the selection query. Called by + * `Mapper#count`. + * + * @name Adapter#count + * @method + * @param {Object} mapper The mapper. + * @param {Object} [query] Selection query. + * @param {Object} [query.where] Filtering criteria. + * @param {string|Array} [query.orderBy] Sorting criteria. + * @param {string|Array} [query.sort] Same as `query.sort`. + * @param {number} [query.limit] Limit results. + * @param {number} [query.skip] Offset results. + * @param {number} [query.offset] Same as `query.skip`. + * @param {Object} [opts] Configuration options. + * @param {boolean} [opts.raw=false] Whether to return a more detailed + * response object. + * @return {Promise} + */ + count: function count(mapper, query, opts) { + var self = this; + var op = void 0; + query || (query = {}); + opts || (opts = {}); + + // beforeCount lifecycle hook + op = opts.op = 'beforeCount'; + return jsData.utils.resolve(self[op](mapper, query, opts)).then(function () { + // Allow for re-assignment from lifecycle hook + op = opts.op = 'count'; + self.dbg(op, mapper, query, opts); + return jsData.utils.resolve(self._count(mapper, query, opts)); + }).then(function (results) { + var _results = babelHelpers.slicedToArray(results, 2); + + var data = _results[0]; + var result = _results[1]; + + result || (result = {}); + var response = new Response(data, result, op); + response = self.respond(response, opts); + + // afterCount lifecycle hook + op = opts.op = 'afterCount'; + return jsData.utils.resolve(self[op](mapper, query, opts, response)).then(function (_response) { + // Allow for re-assignment from lifecycle hook + return jsData.utils.isUndefined(_response) ? response : _response; + }); + }); + }, + + /** * Create a new record. Called by `Mapper#create`. * @@ -1953,18 +2071,18 @@ return /******/ (function(modules) { // webpackBootstrap // beforeCreate lifecycle hook op = opts.op = 'beforeCreate'; - return resolve(self[op](mapper, props, opts)).then(function (_props) { + return jsData.utils.resolve(self[op](mapper, props, opts)).then(function (_props) { // Allow for re-assignment from lifecycle hook - props = isUndefined(_props) ? props : _props; + props = jsData.utils.isUndefined(_props) ? props : _props; props = withoutRelations(mapper, props); op = opts.op = 'create'; self.dbg(op, mapper, props, opts); - return resolve(self._create(mapper, props, opts)); + return jsData.utils.resolve(self._create(mapper, props, opts)); }).then(function (results) { - var _results = babelHelpers.slicedToArray(results, 2); + var _results2 = babelHelpers.slicedToArray(results, 2); - var data = _results[0]; - var result = _results[1]; + var data = _results2[0]; + var result = _results2[1]; result || (result = {}); var response = new Response(data, result, 'create'); @@ -1973,9 +2091,9 @@ return /******/ (function(modules) { // webpackBootstrap // afterCreate lifecycle hook op = opts.op = 'afterCreate'; - return resolve(self[op](mapper, props, opts, response)).then(function (_response) { + return jsData.utils.resolve(self[op](mapper, props, opts, response)).then(function (_response) { // Allow for re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return jsData.utils.isUndefined(_response) ? response : _response; }); }); }, @@ -2001,20 +2119,20 @@ return /******/ (function(modules) { // webpackBootstrap // beforeCreateMany lifecycle hook op = opts.op = 'beforeCreateMany'; - return resolve(self[op](mapper, props, opts)).then(function (_props) { + return jsData.utils.resolve(self[op](mapper, props, opts)).then(function (_props) { // Allow for re-assignment from lifecycle hook - props = isUndefined(_props) ? props : _props; + props = jsData.utils.isUndefined(_props) ? props : _props; props = props.map(function (record) { return withoutRelations(mapper, record); }); op = opts.op = 'createMany'; self.dbg(op, mapper, props, opts); - return resolve(self._createMany(mapper, props, opts)); + return jsData.utils.resolve(self._createMany(mapper, props, opts)); }).then(function (results) { - var _results2 = babelHelpers.slicedToArray(results, 2); + var _results3 = babelHelpers.slicedToArray(results, 2); - var data = _results2[0]; - var result = _results2[1]; + var data = _results3[0]; + var result = _results3[1]; data || (data = []); result || (result = {}); @@ -2024,9 +2142,9 @@ return /******/ (function(modules) { // webpackBootstrap // afterCreateMany lifecycle hook op = opts.op = 'afterCreateMany'; - return resolve(self[op](mapper, props, opts, response)).then(function (_response) { + return jsData.utils.resolve(self[op](mapper, props, opts, response)).then(function (_response) { // Allow for re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return jsData.utils.isUndefined(_response) ? response : _response; }); }); }, @@ -2052,15 +2170,15 @@ return /******/ (function(modules) { // webpackBootstrap // beforeDestroy lifecycle hook op = opts.op = 'beforeDestroy'; - return resolve(self[op](mapper, id, opts)).then(function () { + return jsData.utils.resolve(self[op](mapper, id, opts)).then(function () { op = opts.op = 'destroy'; self.dbg(op, mapper, id, opts); - return resolve(self._destroy(mapper, id, opts)); + return jsData.utils.resolve(self._destroy(mapper, id, opts)); }).then(function (results) { - var _results3 = babelHelpers.slicedToArray(results, 2); + var _results4 = babelHelpers.slicedToArray(results, 2); - var data = _results3[0]; - var result = _results3[1]; + var data = _results4[0]; + var result = _results4[1]; result || (result = {}); var response = new Response(data, result, 'destroy'); @@ -2068,9 +2186,9 @@ return /******/ (function(modules) { // webpackBootstrap // afterDestroy lifecycle hook op = opts.op = 'afterDestroy'; - return resolve(self[op](mapper, id, opts, response)).then(function (_response) { + return jsData.utils.resolve(self[op](mapper, id, opts, response)).then(function (_response) { // Allow for re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return jsData.utils.isUndefined(_response) ? response : _response; }); }); }, @@ -2103,15 +2221,15 @@ return /******/ (function(modules) { // webpackBootstrap // beforeDestroyAll lifecycle hook op = opts.op = 'beforeDestroyAll'; - return resolve(self[op](mapper, query, opts)).then(function () { + return jsData.utils.resolve(self[op](mapper, query, opts)).then(function () { op = opts.op = 'destroyAll'; self.dbg(op, mapper, query, opts); - return resolve(self._destroyAll(mapper, query, opts)); + return jsData.utils.resolve(self._destroyAll(mapper, query, opts)); }).then(function (results) { - var _results4 = babelHelpers.slicedToArray(results, 2); + var _results5 = babelHelpers.slicedToArray(results, 2); - var data = _results4[0]; - var result = _results4[1]; + var data = _results5[0]; + var result = _results5[1]; result || (result = {}); var response = new Response(data, result, 'destroyAll'); @@ -2119,9 +2237,9 @@ return /******/ (function(modules) { // webpackBootstrap // afterDestroyAll lifecycle hook op = opts.op = 'afterDestroyAll'; - return resolve(self[op](mapper, query, opts, response)).then(function (_response) { + return jsData.utils.resolve(self[op](mapper, query, opts, response)).then(function (_response) { // Allow for re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return jsData.utils.isUndefined(_response) ? response : _response; }); }); }, @@ -2155,8 +2273,8 @@ return /******/ (function(modules) { // webpackBootstrap */ makeHasManyLocalKeys: function makeHasManyLocalKeys(mapper, def, record) { var localKeys = []; - var itemKeys = get(record, def.localKeys) || []; - itemKeys = isArray(itemKeys) ? itemKeys : Object.keys(itemKeys); + var itemKeys = jsData.utils.get(record, def.localKeys) || []; + itemKeys = jsData.utils.isArray(itemKeys) ? itemKeys : Object.keys(itemKeys); localKeys = localKeys.concat(itemKeys); return unique(localKeys).filter(function (x) { return x; @@ -2174,7 +2292,7 @@ return /******/ (function(modules) { // webpackBootstrap * @return {*} */ makeHasManyForeignKeys: function makeHasManyForeignKeys(mapper, def, record) { - return get(record, mapper.idAttribute); + return jsData.utils.get(record, mapper.idAttribute); }, @@ -2191,7 +2309,7 @@ return /******/ (function(modules) { // webpackBootstrap var self = this; var singular = false; - if (isObject(records) && !isArray(records)) { + if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) { singular = true; records = [records]; } @@ -2218,7 +2336,7 @@ return /******/ (function(modules) { // webpackBootstrap attached = relatedItems; } else { relatedItems.forEach(function (relatedItem) { - if (get(relatedItem, def.foreignKey) === record[mapper.idAttribute]) { + if (jsData.utils.get(relatedItem, def.foreignKey) === record[mapper.idAttribute]) { attached.push(relatedItem); } }); @@ -2232,7 +2350,7 @@ return /******/ (function(modules) { // webpackBootstrap var record = void 0; var relatedMapper = def.getRelation(); - if (isObject(records) && !isArray(records)) { + if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) { record = records; } @@ -2260,8 +2378,8 @@ return /******/ (function(modules) { // webpackBootstrap }, __opts).then(function (relatedItems) { records.forEach(function (item) { var attached = []; - var itemKeys = get(item, def.localKeys) || []; - itemKeys = isArray(itemKeys) ? itemKeys : Object.keys(itemKeys); + var itemKeys = jsData.utils.get(item, def.localKeys) || []; + itemKeys = jsData.utils.isArray(itemKeys) ? itemKeys : Object.keys(itemKeys); relatedItems.forEach(function (relatedItem) { if (itemKeys && itemKeys.indexOf(relatedItem[relatedMapper.idAttribute]) !== -1) { attached.push(relatedItem); @@ -2283,7 +2401,7 @@ return /******/ (function(modules) { // webpackBootstrap var idAttribute = mapper.idAttribute; var record = void 0; - if (isObject(records) && !isArray(records)) { + if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) { record = records; } @@ -2306,9 +2424,9 @@ return /******/ (function(modules) { // webpackBootstrap var foreignKeysField = def.foreignKeys; records.forEach(function (record) { var _relatedItems = []; - var id = get(record, idAttribute); + var id = jsData.utils.get(record, idAttribute); relatedItems.forEach(function (relatedItem) { - var foreignKeys = get(relatedItems, foreignKeysField) || []; + var foreignKeys = jsData.utils.get(relatedItems, foreignKeysField) || []; if (foreignKeys.indexOf(id) !== -1) { _relatedItems.push(relatedItem); } @@ -2330,13 +2448,13 @@ return /******/ (function(modules) { // webpackBootstrap * @return {Promise} */ loadHasOne: function loadHasOne(mapper, def, records, __opts) { - if (isObject(records) && !isArray(records)) { + if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) { records = [records]; } return this.loadHasMany(mapper, def, records, __opts).then(function () { records.forEach(function (record) { var relatedData = def.getLocalField(record); - if (isArray(relatedData) && relatedData.length) { + if (jsData.utils.isArray(relatedData) && relatedData.length) { def.setLocalField(record, relatedData[0]); } }); @@ -2371,7 +2489,7 @@ return /******/ (function(modules) { // webpackBootstrap var self = this; var relationDef = def.getRelation(); - if (isObject(records) && !isArray(records)) { + if (jsData.utils.isObject(records) && !jsData.utils.isArray(records)) { var _ret2 = function () { var record = records; return { @@ -2427,14 +2545,14 @@ return /******/ (function(modules) { // webpackBootstrap // beforeFind lifecycle hook op = opts.op = 'beforeFind'; - return resolve(self[op](mapper, id, opts)).then(function () { + return jsData.utils.resolve(self[op](mapper, id, opts)).then(function () { op = opts.op = 'find'; self.dbg(op, mapper, id, opts); - return resolve(self._find(mapper, id, opts)); + return jsData.utils.resolve(self._find(mapper, id, opts)); }).then(function (results) { - var _results5 = babelHelpers.slicedToArray(results, 1); + var _results6 = babelHelpers.slicedToArray(results, 1); - var _record = _results5[0]; + var _record = _results6[0]; if (!_record) { return; @@ -2442,7 +2560,7 @@ return /******/ (function(modules) { // webpackBootstrap record = _record; var tasks = []; - forEachRelation(mapper, opts, function (def, __opts) { + jsData.utils.forEachRelation(mapper, opts, function (def, __opts) { var task = void 0; if (def.foreignKey && (def.type === 'hasOne' || def.type === 'hasMany')) { if (def.type === 'hasOne') { @@ -2470,9 +2588,9 @@ return /******/ (function(modules) { // webpackBootstrap // afterFind lifecycle hook op = opts.op = 'afterFind'; - return resolve(self[op](mapper, id, opts, response)).then(function (_response) { + return jsData.utils.resolve(self[op](mapper, id, opts, response)).then(function (_response) { // Allow for re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return jsData.utils.isUndefined(_response) ? response : _response; }); }); }, @@ -2506,30 +2624,30 @@ return /******/ (function(modules) { // webpackBootstrap var op = void 0; var activeWith = opts._activeWith; - if (isObject(activeWith)) { + if (jsData.utils.isObject(activeWith)) { var activeQuery = activeWith.query || {}; if (activeWith.replace) { query = activeQuery; } else { - deepFillIn(query, activeQuery); + jsData.utils.deepFillIn(query, activeQuery); } } // beforeFindAll lifecycle hook op = opts.op = 'beforeFindAll'; - return resolve(self[op](mapper, query, opts)).then(function () { + return jsData.utils.resolve(self[op](mapper, query, opts)).then(function () { op = opts.op = 'findAll'; self.dbg(op, mapper, query, opts); - return resolve(self._findAll(mapper, query, opts)); + return jsData.utils.resolve(self._findAll(mapper, query, opts)); }).then(function (results) { - var _results6 = babelHelpers.slicedToArray(results, 1); + var _results7 = babelHelpers.slicedToArray(results, 1); - var _records = _results6[0]; + var _records = _results7[0]; _records || (_records = []); records = _records; var tasks = []; - forEachRelation(mapper, opts, function (def, __opts) { + jsData.utils.forEachRelation(mapper, opts, function (def, __opts) { var task = void 0; if (def.foreignKey && (def.type === 'hasOne' || def.type === 'hasMany')) { if (def.type === 'hasMany') { @@ -2556,9 +2674,9 @@ return /******/ (function(modules) { // webpackBootstrap // afterFindAll lifecycle hook op = opts.op = 'afterFindAll'; - return resolve(self[op](mapper, query, opts, response)).then(function (_response) { + return jsData.utils.resolve(self[op](mapper, query, opts, response)).then(function (_response) { // Allow for re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return jsData.utils.isUndefined(_response) ? response : _response; }); }); }, @@ -2576,7 +2694,7 @@ return /******/ (function(modules) { // webpackBootstrap */ getOpt: function getOpt(opt, opts) { opts || (opts = {}); - return isUndefined(opts[opt]) ? plainCopy(this[opt]) : plainCopy(opts[opt]); + return jsData.utils.isUndefined(opts[opt]) ? jsData.utils.plainCopy(this[opt]) : jsData.utils.plainCopy(opts[opt]); }, @@ -2614,6 +2732,62 @@ return /******/ (function(modules) { // webpackBootstrap }, + /** + * Retrieve sum of the specified field of the records that match the selection + * query. Called by `Mapper#sum`. + * + * @name Adapter#sum + * @method + * @param {Object} mapper The mapper. + * @param {string} field By to sum. + * @param {Object} [query] Selection query. + * @param {Object} [query.where] Filtering criteria. + * @param {string|Array} [query.orderBy] Sorting criteria. + * @param {string|Array} [query.sort] Same as `query.sort`. + * @param {number} [query.limit] Limit results. + * @param {number} [query.skip] Offset results. + * @param {number} [query.offset] Same as `query.skip`. + * @param {Object} [opts] Configuration options. + * @param {boolean} [opts.raw=false] Whether to return a more detailed + * response object. + * @return {Promise} + */ + sum: function sum(mapper, field, query, opts) { + var self = this; + var op = void 0; + if (!jsData.utils.isString(field)) { + throw new Error('field must be a string!'); + } + query || (query = {}); + opts || (opts = {}); + + // beforeSum lifecycle hook + op = opts.op = 'beforeSum'; + return jsData.utils.resolve(self[op](mapper, field, query, opts)).then(function () { + // Allow for re-assignment from lifecycle hook + op = opts.op = 'sum'; + self.dbg(op, mapper, field, query, opts); + return jsData.utils.resolve(self._sum(mapper, field, query, opts)); + }).then(function (results) { + var _results8 = babelHelpers.slicedToArray(results, 2); + + var data = _results8[0]; + var result = _results8[1]; + + result || (result = {}); + var response = new Response(data, result, op); + response = self.respond(response, opts); + + // afterSum lifecycle hook + op = opts.op = 'afterSum'; + return jsData.utils.resolve(self[op](mapper, field, query, opts, response)).then(function (_response) { + // Allow for re-assignment from lifecycle hook + return jsData.utils.isUndefined(_response) ? response : _response; + }); + }); + }, + + /** * @name Adapter#respond * @method @@ -2649,17 +2823,17 @@ return /******/ (function(modules) { // webpackBootstrap // beforeUpdate lifecycle hook op = opts.op = 'beforeUpdate'; - return resolve(self[op](mapper, id, props, opts)).then(function (_props) { + return jsData.utils.resolve(self[op](mapper, id, props, opts)).then(function (_props) { // Allow for re-assignment from lifecycle hook - props = isUndefined(_props) ? props : _props; + props = jsData.utils.isUndefined(_props) ? props : _props; op = opts.op = 'update'; self.dbg(op, mapper, id, props, opts); - return resolve(self._update(mapper, id, props, opts)); + return jsData.utils.resolve(self._update(mapper, id, props, opts)); }).then(function (results) { - var _results7 = babelHelpers.slicedToArray(results, 2); + var _results9 = babelHelpers.slicedToArray(results, 2); - var data = _results7[0]; - var result = _results7[1]; + var data = _results9[0]; + var result = _results9[1]; result || (result = {}); var response = new Response(data, result, 'update'); @@ -2668,9 +2842,9 @@ return /******/ (function(modules) { // webpackBootstrap // afterUpdate lifecycle hook op = opts.op = 'afterUpdate'; - return resolve(self[op](mapper, id, props, opts, response)).then(function (_response) { + return jsData.utils.resolve(self[op](mapper, id, props, opts, response)).then(function (_response) { // Allow for re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return jsData.utils.isUndefined(_response) ? response : _response; }); }); }, @@ -2705,17 +2879,17 @@ return /******/ (function(modules) { // webpackBootstrap // beforeUpdateAll lifecycle hook op = opts.op = 'beforeUpdateAll'; - return resolve(self[op](mapper, props, query, opts)).then(function (_props) { + return jsData.utils.resolve(self[op](mapper, props, query, opts)).then(function (_props) { // Allow for re-assignment from lifecycle hook - props = isUndefined(_props) ? props : _props; + props = jsData.utils.isUndefined(_props) ? props : _props; op = opts.op = 'updateAll'; self.dbg(op, mapper, props, query, opts); - return resolve(self._updateAll(mapper, props, query, opts)); + return jsData.utils.resolve(self._updateAll(mapper, props, query, opts)); }).then(function (results) { - var _results8 = babelHelpers.slicedToArray(results, 2); + var _results10 = babelHelpers.slicedToArray(results, 2); - var data = _results8[0]; - var result = _results8[1]; + var data = _results10[0]; + var result = _results10[1]; data || (data = []); result || (result = {}); @@ -2725,9 +2899,9 @@ return /******/ (function(modules) { // webpackBootstrap // afterUpdateAll lifecycle hook op = opts.op = 'afterUpdateAll'; - return resolve(self[op](mapper, props, query, opts, response)).then(function (_response) { + return jsData.utils.resolve(self[op](mapper, props, query, opts, response)).then(function (_response) { // Allow for re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return jsData.utils.isUndefined(_response) ? response : _response; }); }); }, @@ -2753,25 +2927,25 @@ return /******/ (function(modules) { // webpackBootstrap var idAttribute = mapper.idAttribute; records = records.filter(function (record) { - return get(record, idAttribute); + return jsData.utils.get(record, idAttribute); }); // beforeUpdateMany lifecycle hook op = opts.op = 'beforeUpdateMany'; - return resolve(self[op](mapper, records, opts)).then(function (_records) { + return jsData.utils.resolve(self[op](mapper, records, opts)).then(function (_records) { // Allow for re-assignment from lifecycle hook - records = isUndefined(_records) ? records : _records; + records = jsData.utils.isUndefined(_records) ? records : _records; records = records.map(function (record) { return withoutRelations(mapper, record); }); op = opts.op = 'updateMany'; self.dbg(op, mapper, records, opts); - return resolve(self._updateMany(mapper, records, opts)); + return jsData.utils.resolve(self._updateMany(mapper, records, opts)); }).then(function (results) { - var _results9 = babelHelpers.slicedToArray(results, 2); + var _results11 = babelHelpers.slicedToArray(results, 2); - var data = _results9[0]; - var result = _results9[1]; + var data = _results11[0]; + var result = _results11[1]; data || (data = []); result || (result = {}); @@ -2781,9 +2955,9 @@ return /******/ (function(modules) { // webpackBootstrap // afterUpdateMany lifecycle hook op = opts.op = 'afterUpdateMany'; - return resolve(self[op](mapper, records, opts, response)).then(function (_response) { + return jsData.utils.resolve(self[op](mapper, records, opts, response)).then(function (_response) { // Allow for re-assignment from lifecycle hook - return isUndefined(_response) ? response : _response; + return jsData.utils.isUndefined(_response) ? response : _response; }); }); } diff --git a/node/dist/js-data-http-node.js.map b/node/dist/js-data-http-node.js.map index 2bd640d..2959d86 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 9287d465dd3438b91c71","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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A;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;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,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;;AAEA;;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,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,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;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;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,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;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;;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;AACA,iBAAgB;AAChB;AACA;AACA;AACA,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,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,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,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,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;;AAEA,EAAC;AACD,4C;;;;;;AC36CA,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 9287d465dd3438b91c71\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nimport Adapter from 'js-data-adapter'\n\nlet hasFetch = false\n\ntry {\n hasFetch = window && window.fetch\n} catch (e) {}\n\nconst noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n return utils.resolve()\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n return utils.resolve()\n}\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 * @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// 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\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.data, 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) {\n if (response.hasOwnProperty('data')) {\n return response.data\n }\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 HttpAdapter.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 */\nHttpAdapter.addAction = function (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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n utils.forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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(require('js-data')) :\n typeof define === 'function' && define.amd ? define('js-data-adapter', ['js-data'], factory) :\n (factory(global.JSData));\n}(this, function (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 addHiddenPropsToTarget = jsData.utils.addHiddenPropsToTarget;\n var deepFillIn = jsData.utils.deepFillIn;\n var extend = jsData.utils.extend;\n var fillIn = jsData.utils.fillIn;\n var forEachRelation = jsData.utils.forEachRelation;\n var get = jsData.utils.get;\n var isArray = jsData.utils.isArray;\n var isObject = jsData.utils.isObject;\n var isUndefined = jsData.utils.isUndefined;\n var omit = jsData.utils.omit;\n var plainCopy = jsData.utils.plainCopy;\n var resolve = jsData.utils.resolve;\n\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 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 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 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 fillIn(opts, DEFAULTS);\n fillIn(self, opts);\n }\n\n Adapter.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 * @typedef {Object} Response\n * @property {Object} data Response data.\n * @property {string} op The operation for which the response was created.\n */\n function Response(data, meta, op) {\n var self = this;\n meta || (meta = {});\n self.data = data;\n fillIn(self, meta);\n self.op = op;\n }\n\n Adapter.Response = Response;\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 = extend;\n\n addHiddenPropsToTarget(Adapter.prototype, {\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 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 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 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 * 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 resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n props = withoutRelations(mapper, props);\n op = opts.op = 'create';\n self.dbg(op, mapper, props, opts);\n return resolve(self._create(mapper, props, 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, '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 resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = 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 resolve(self._createMany(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 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 resolve(self[op](mapper, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'destroy';\n self.dbg(op, mapper, id, opts);\n return resolve(self._destroy(mapper, id, 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 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 resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'destroyAll';\n self.dbg(op, mapper, query, opts);\n return resolve(self._destroyAll(mapper, query, 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, 'destroyAll');\n response = self.respond(response, opts);\n\n // afterDestroyAll lifecycle hook\n op = opts.op = 'afterDestroyAll';\n return resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return isUndefined(_response) ? response : _response;\n });\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 = get(record, def.localKeys) || [];\n itemKeys = 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 get(record, mapper.idAttribute);\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 (isObject(records) && !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 (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 (isObject(records) && !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 _ret = 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 = get(item, def.localKeys) || [];\n itemKeys = 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 _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === \"object\") return _ret.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 (isObject(records) && !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 = get(record, idAttribute);\n relatedItems.forEach(function (relatedItem) {\n var foreignKeys = 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 (isObject(records) && !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 (isArray(relatedData) && relatedData.length) {\n def.setLocalField(record, relatedData[0]);\n }\n });\n });\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 * 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 (isObject(records) && !isArray(records)) {\n var _ret2 = 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 _ret2 === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret2)) === \"object\") return _ret2.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 resolve(self[op](mapper, id, opts)).then(function () {\n op = opts.op = 'find';\n self.dbg(op, mapper, id, opts);\n return resolve(self._find(mapper, id, opts));\n }).then(function (results) {\n var _results5 = babelHelpers.slicedToArray(results, 1);\n\n var _record = _results5[0];\n\n if (!_record) {\n return;\n }\n record = _record;\n var tasks = [];\n\n 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 resolve(self[op](mapper, id, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 (isObject(activeWith)) {\n var activeQuery = activeWith.query || {};\n if (activeWith.replace) {\n query = activeQuery;\n } else {\n deepFillIn(query, activeQuery);\n }\n }\n\n // beforeFindAll lifecycle hook\n op = opts.op = 'beforeFindAll';\n return resolve(self[op](mapper, query, opts)).then(function () {\n op = opts.op = 'findAll';\n self.dbg(op, mapper, query, opts);\n return resolve(self._findAll(mapper, query, opts));\n }).then(function (results) {\n var _results6 = babelHelpers.slicedToArray(results, 1);\n\n var _records = _results6[0];\n\n _records || (_records = []);\n records = _records;\n var tasks = [];\n 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 resolve(self[op](mapper, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 isUndefined(opts[opt]) ? plainCopy(this[opt]) : plainCopy(opts[opt]);\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 * @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 resolve(self[op](mapper, id, props, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n op = opts.op = 'update';\n self.dbg(op, mapper, id, props, opts);\n return resolve(self._update(mapper, id, props, opts));\n }).then(function (results) {\n var _results7 = babelHelpers.slicedToArray(results, 2);\n\n var data = _results7[0];\n var result = _results7[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 resolve(self[op](mapper, id, props, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 resolve(self[op](mapper, props, query, opts)).then(function (_props) {\n // Allow for re-assignment from lifecycle hook\n props = isUndefined(_props) ? props : _props;\n op = opts.op = 'updateAll';\n self.dbg(op, mapper, props, query, opts);\n return resolve(self._updateAll(mapper, props, 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 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 resolve(self[op](mapper, props, query, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return 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 get(record, idAttribute);\n });\n\n // beforeUpdateMany lifecycle hook\n op = opts.op = 'beforeUpdateMany';\n return resolve(self[op](mapper, records, opts)).then(function (_records) {\n // Allow for re-assignment from lifecycle hook\n records = 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 resolve(self._updateMany(mapper, records, 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 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 resolve(self[op](mapper, records, opts, response)).then(function (_response) {\n // Allow for re-assignment from lifecycle hook\n return isUndefined(_response) ? response : _response;\n });\n });\n }\n });\n\n module.exports = Adapter;\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 397070f8b3d685b07a81","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;;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,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;;AAEA;;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,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;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;;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;AACA,iBAAgB;AAChB;AACA;AACA;AACA,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,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,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,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,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;;AAEA,EAAC;AACD,4C;;;;;;AC3lDA,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 397070f8b3d685b07a81\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nimport Adapter from 'js-data-adapter'\n\nlet hasFetch = false\n\ntry {\n hasFetch = window && window.fetch\n} catch (e) {}\n\nconst noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n return utils.resolve()\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n return utils.resolve()\n}\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 * @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// 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\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 HttpAdapter.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 */\nHttpAdapter.addAction = function (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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n utils.forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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(require('js-data')) :\n typeof define === 'function' && define.amd ? define('js-data-adapter', ['js-data'], factory) :\n (factory(global.JSData));\n}(this, function (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 Adapter.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 * @typedef {Object} Response\n * @property {Object} data Response data.\n * @property {string} op The operation for which the response was created.\n */\n function Response(data, meta, op) {\n var self = this;\n meta || (meta = {});\n self.data = data;\n jsData.utils.fillIn(self, meta);\n self.op = op;\n }\n\n Adapter.Response = Response;\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 {Object} props The `props` 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 * 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 * 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 _ret = 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 _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === \"object\") return _ret.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 * 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 * 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 _ret2 = 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 _ret2 === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret2)) === \"object\") return _ret2.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 * 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 * 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 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 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 module.exports = Adapter;\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 diff --git a/node/package.json b/node/package.json index afe5809..ee6aff0 100644 --- a/node/package.json +++ b/node/package.json @@ -1,7 +1,7 @@ { "name": "js-data-http-node", "description": "Node.js HTTP adapter for js-data.", - "version": "3.0.0-alpha.9", + "version": "3.0.0-alpha.10", "homepage": "https://github.com/js-data/js-data-http", "repository": { "type": "git", diff --git a/package.json b/package.json index 5c66bc6..b6fb743 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "js-data-http", "description": "HTTP (XHR) adapter for js-data in the browser.", - "version": "3.0.0-alpha.9", + "version": "3.0.0-alpha.10", "homepage": "https://github.com/js-data/js-data-http", "repository": { "type": "git", @@ -56,19 +56,19 @@ "ci": "npm test && cat ./coverage/lcov.info | coveralls || true" }, "peerDependencies": { - "js-data": "^3.0.0-alpha.20" + "js-data": "^3.0.0-alpha.26" }, "devDependencies": { "axios": "0.9.1", - "babel-core": "6.7.2", + "babel-core": "6.7.4", "babel-loader": "6.2.4", "babel-plugin-syntax-async-functions": "6.5.0", "babel-plugin-transform-regenerator": "6.6.5", - "babel-polyfill": "6.7.2", + "babel-polyfill": "6.7.4", "babel-preset-es2015": "6.6.0", "babel-preset-stage-0": "6.5.0", "chai": "3.5.0", - "coveralls": "2.11.8", + "coveralls": "2.11.9", "istanbul": "0.4.2", "js-data-adapter": "0.2.4", "js-data-repo-tools": "0.2.0", @@ -80,10 +80,13 @@ "karma-phantomjs-launcher": "1.0.0", "karma-sinon": "1.0.4", "mocha": "2.4.5", - "phantomjs-prebuilt": "2.1.6", + "phantomjs-prebuilt": "2.1.7", "sinon": "1.17.3", "source-map-support": "0.4.0", "uglify-js": "2.6.2", "webpack": "1.12.14" + }, + "dependencies": { + "js-data": "^3.0.0-alpha.26" } } diff --git a/src/index.js b/src/index.js index 8f077e9..bffb92a 100644 --- a/src/index.js +++ b/src/index.js @@ -307,7 +307,7 @@ utils.addHiddenPropsToTarget(HttpAdapter.prototype, { }, _end (mapper, opts, response) { - return [this.deserialize(mapper, response.data, opts), response] + return [this.deserialize(mapper, response, opts), response] }, _find (mapper, id, opts) { @@ -498,10 +498,8 @@ utils.addHiddenPropsToTarget(HttpAdapter.prototype, { if (utils.isFunction(mapper.deserialize)) { return mapper.deserialize(mapper, response, opts) } - if (response) { - if (response.hasOwnProperty('data')) { - return response.data - } + if (response && response.hasOwnProperty('data')) { + return response.data } return response }, From 4434ef4991785774d346a85ff7ee3c178628864e Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Sun, 17 Apr 2016 20:20:18 -0700 Subject: [PATCH 20/24] 3.0.0-beta.2 --- .github/ISSUE_TEMPLATE.md | 6 +-- AUTHORS | 6 +-- CHANGELOG.md | 7 +++ CONTRIBUTORS | 19 ++++---- README.md | 74 ++++-------------------------- build_examples/node/app.js | 2 +- build_examples/r.js/main.js | 4 +- dist/js-data-http.js | 20 ++++---- dist/js-data-http.js.map | 2 +- dist/js-data-http.min.js | 11 ++--- dist/js-data-http.min.map | 2 +- fetch/AUTHORS | 13 ------ fetch/CONTRIBUTORS | 12 ----- fetch/LICENSE | 2 +- fetch/dist/js-data-fetch.js | 21 ++++++--- fetch/dist/js-data-fetch.js.map | 2 +- fetch/dist/js-data-fetch.min.js | 10 +++- fetch/dist/js-data-fetch.min.map | 2 +- fetch/package.json | 4 +- node/AUTHORS | 13 ------ node/CONTRIBUTORS | 12 ----- node/LICENSE | 2 +- node/dist/js-data-http-node.js | 13 +++--- node/dist/js-data-http-node.js.map | 2 +- node/package.json | 6 +-- package.json | 29 ++++++------ scripts/AUTHORS | 7 --- scripts/CONTRIBUTORS | 6 --- scripts/authors.js | 58 ----------------------- scripts/banner.js | 19 ++++++-- scripts/version.js | 39 ---------------- src/index.js | 9 +--- test/find.test.js | 10 ++++ 33 files changed, 129 insertions(+), 315 deletions(-) delete mode 100644 fetch/AUTHORS delete mode 100644 fetch/CONTRIBUTORS delete mode 100644 node/AUTHORS delete mode 100644 node/CONTRIBUTORS delete mode 100644 scripts/AUTHORS delete mode 100644 scripts/CONTRIBUTORS delete mode 100644 scripts/authors.js delete mode 100644 scripts/version.js diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 2ce62e8..56d48b8 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,7 +1,7 @@ -(delete this line) GitHub Issues are NOT for support questions. -(delete this line) GitHub Issues ARE for bug reports, feature requests, and other issues. +(delete this line) GitHub Issues are not for support questions. +(delete this line) GitHub Issues are for bug reports, feature requests, and other issues. (delete this line) Find out how to Get Support here: http://js-data.io/docs/support. - + Thanks! diff --git a/AUTHORS b/AUTHORS index 9fe6289..050e11f 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,10 +1,10 @@ # This is the official list of js-data-http project authors. # -# This file is controlled by scripts/authors.js -# # Names are formatted as: -# # commits Name or Organization +# Name or Organization +# # The email address is not required for organizations. +# InternalFX Ivan Voznyakovsky Jason Dobry diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a5f475..bb1a2dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +##### 3.0.0-beta.2 - 17 April 2016 + +Official v3 beta release + +###### Other +- Upgraded some devDependencies + ##### 3.0.0-alpha.10 - 02 April 2016 ###### Backwards compatible bug fixes diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 5f11066..61f3803 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -1,12 +1,11 @@ -# People who have contributed to the js-data-http project. +# This is the official list of js-data-http project contributors. # -# This file is controlled by scripts/authors.js +# Names are formatted as: +# Name # -# Names should be added to this file as: -# [commit count] Name - 1 InternalFX - 1 Ivan Voznyakovsky - 69 Jason Dobry - 1 Josh Drake - 1 RobertHerhold - 3 Tomás Fox +InternalFX +Ivan Voznyakovsky +Jason Dobry +Josh Drake +RobertHerhold +Tomás Fox diff --git a/README.md b/README.md index 358c764..f877c90 100644 --- a/README.md +++ b/README.md @@ -21,70 +21,16 @@ and will use axios unless you provide a different http library. Tested on IE9, Chrome 46, Firefox 41 & Safari 7.1 using bs logo -To get started, visit __[http://js-data.io](http://www.js-data.io)__. +To get started, visit the main website at __[http://js-data.io](http://www.js-data.io/v3.0/docs/js-data-http)__. -## Table of contents +## Links -* [Quick start](#quick-start) -* [Dependencies](#dependencies) -* [Guides and Tutorials](#guides-and-tutorials) -* [API Reference Docs](#api-reference-docs) -* [Community](#community) -* [Support](#support) -* [Contributing](#contributing) -* [License](#license) - -## Quick Start -`npm install --save js-data js-data-http` or `bower install --save js-data js-data-http`. - -`npm install --save axios js-data js-data-http-node` - -__ES6__ - -```js -// Doesn't make much sense to use DataStore on the server -import {Container} from 'js-data' -import HttpAdapter from 'js-data-http-node' - -const adapter = new HttpAdapter() -const container = new Container() - -container.registerAdapter('http', adapter, { default: true }) - -container.defineMapper('school') -container.defineMapper('student') - -container.find('school', 1).then(function (school) { - // ... -}) -``` - -## Dependencies - -`js-data-http` bundles axios and depends on `js-data`. `js-data-fetch` depends -on `js-data`. `js-data-http-node` depends on `js-data` and optionally axios. - -See [JSData's dependencies](https://github.com/js-data/js-data/blob/master/README.md#dependencies). - -## Guides and Tutorials - -[Get started at http://js-data.io](http://js-data.io) - -## API Reference Docs - -[Visit http://api.js-data.io](http://api.js-data.io). - -## Community - -[Explore the Community](http://js-data.io/docs/community). - -## Support - -[Find out how to Get Support](http://js-data.io/docs/support). - -## Contributing - -[Read the Contributing Guide](http://js-data.io/docs/contributing). +* [Quick start](http://www.js-data.io/v3.0/docs/js-data-http) +* [Guides and Tutorials](http://www.js-data.io/v3.0/docs/home) +* [API Reference Docs](http://api.js-data.io/js-data-http) +* [Community](http://js-data.io/docs/community) +* [Support](http://js-data.io/docs/support) +* [Contributing](http://js-data.io/docs/contributing) ## License @@ -105,7 +51,7 @@ Copyright (c) 2014-2016 js-data-http project authors [circle_l]: https://circleci.com/gh/js-data/js-data-http/tree/master [dn_b]: https://img.shields.io/npm/dm/js-data-http.svg?style=flat [dn_l]: https://www.npmjs.org/package/js-data-http -[cov_b]: https://img.shields.io/coveralls/js-data/js-data-http/master.svg?style=flat -[cov_l]: https://coveralls.io/github/js-data/js-data-http?branch=master +[cov_b]: https://img.shields.io/codecov/c/github/js-data/js-data-http/3.0.svg?style=flat +[cov_l]: https://codecov.io/github/js-data/js-data-http [cod_b]: https://img.shields.io/codacy/3931bbd8d838463297f70640aa78251b.svg [cod_l]: https://www.codacy.com/app/jasondobry/js-data-http/dashboard \ No newline at end of file diff --git a/build_examples/node/app.js b/build_examples/node/app.js index 1698d6e..60f6296 100644 --- a/build_examples/node/app.js +++ b/build_examples/node/app.js @@ -3,7 +3,7 @@ var JSData = require('js-data') var HttpAdapter = require('../../') var adapter = new HttpAdapter() -var store = new JSData.DataStore() +var store = new JSData.Container() store.registerAdapter('http', adapter, { default: true }) store.defineMapper('user') diff --git a/build_examples/r.js/main.js b/build_examples/r.js/main.js index 3f20ec4..66e0774 100644 --- a/build_examples/r.js/main.js +++ b/build_examples/r.js/main.js @@ -1,7 +1,7 @@ require.config({ paths: { - // customize these ass needed - 'js-data-http': '../../node/dist/js-data-http-node', + // customize these as needed + 'js-data-http': '../../node/dist/js-data-http', 'js-data': '../../node_modules/js-data/dist/js-data', } }); diff --git a/dist/js-data-http.js b/dist/js-data-http.js index d211612..4b8835f 100644 --- a/dist/js-data-http.js +++ b/dist/js-data-http.js @@ -1,11 +1,10 @@ /*! * js-data-http -* @version 3.0.0-alpha.10 - Homepage -* @author Jason Dobry -* @copyright (c) 2014-2015 Jason Dobry +* @version 3.0.0-beta.2 - Homepage +* @copyright (c) 2014-2016 js-data-http project authors * @license MIT * -* @overview HTTP adapter for js-data. +* @overview HTTP (XHR) adapter for js-data in the browser. */ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') @@ -1302,13 +1301,12 @@ return /******/ (function(modules) { // webpackBootstrap * otherwise `false` if the current version is not beta. */ HttpAdapter.version = { - full: '3.0.0-alpha.10', - major: parseInt('3', 10), - minor: parseInt('0', 10), - patch: parseInt('0', 10), - alpha: true ? '10' : false, - beta: true ? 'false' : false - }; + beta: 2, + full: '3.0.0-beta.2', + major: 3, + minor: 0, + patch: 0 +}; /** * Registered as `js-data-http` in NPM and Bower. The build of `js-data-http` diff --git a/dist/js-data-http.js.map b/dist/js-data-http.js.map index 669d230..50a602c 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 cd03ed7151588ace4dd1","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/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;;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,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;;AAEA;;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,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;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;;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;AACA,iBAAgB;AAChB;AACA;AACA;AACA,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,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,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,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,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;;AAEA,EAAC;AACD,4C;;;;;;AC3lDA,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;;AAEA;AACA;AACA;AACA;AACA;;AAEA;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;;;;;;;ACvHD;;AAEA;;AAEA,iCAAgC;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;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;AACA;;;;;;;AC9DA;;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,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;;;;;;;ACnPA;;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;;AAEA;AACA;AACA;;AAEA;AACA,2CAA0C;AAC1C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;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;;AAEA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;;;;;;;ACjIA;;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;;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[\"HttpAdapter\"] = factory(require(\"js-data\"));\n\telse\n\t\troot[\"HttpAdapter\"] = 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 cd03ed7151588ace4dd1\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nimport Adapter from 'js-data-adapter'\n\nlet hasFetch = false\n\ntry {\n hasFetch = window && window.fetch\n} catch (e) {}\n\nconst noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n return utils.resolve()\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n return utils.resolve()\n}\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 * @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// 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\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 HttpAdapter.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 */\nHttpAdapter.addAction = function (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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n utils.forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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(require('js-data')) :\n typeof define === 'function' && define.amd ? define('js-data-adapter', ['js-data'], factory) :\n (factory(global.JSData));\n}(this, function (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 Adapter.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 * @typedef {Object} Response\n * @property {Object} data Response data.\n * @property {string} op The operation for which the response was created.\n */\n function Response(data, meta, op) {\n var self = this;\n meta || (meta = {});\n self.data = data;\n jsData.utils.fillIn(self, meta);\n self.op = op;\n }\n\n Adapter.Response = Response;\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 {Object} props The `props` 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 * 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 * 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 _ret = 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 _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === \"object\") return _ret.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 * 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 * 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 _ret2 = 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 _ret2 === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret2)) === \"object\") return _ret2.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 * 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 * 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 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 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 module.exports = Adapter;\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\naxios.create = function create(defaultConfig) {\n return new Axios(defaultConfig);\n};\n\n// Expose defaults\naxios.defaults = defaultInstance.defaults;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose interceptors\naxios.interceptors = defaultInstance.interceptors;\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 transformResponseJSON(data, headers) {\n if (utils.isFormData(data)) {\n return data;\n }\n if (utils.isArrayBuffer(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 transformResponseJSON(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\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 * 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 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 = window.btoa || require('./../helpers/btoa');\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\n // For IE 8/9 CORS support\n // Only supports POST and GET calls and doesn't returns the response headers.\n if (window.XDomainRequest && !('withCredentials' in request) && !isURLSameOrigin(config.url)) {\n request = new window.XDomainRequest();\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 // Listen for ready state\n request.onload = function handleLoad() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = ['text', ''].indexOf(config.responseType || '') !== -1 ? 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 };\n\n // Resolve or reject the Promise based on the status\n ((response.status >= 200 && response.status < 300) ||\n (!('status' in request) && response.responseText) ?\n resolve :\n 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 // 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 if (utils.isArrayBuffer(requestData)) {\n requestData = new DataView(requestData);\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 InvalidCharacterError(message) {\n this.message = message;\n}\nInvalidCharacterError.prototype = new Error;\nInvalidCharacterError.prototype.code = 5;\nInvalidCharacterError.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 InvalidCharacterError('INVALID_CHARACTER_ERR: DOM Exception 5');\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\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 = 15\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 = 16\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 = 17\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 = 18\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 = 19\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 = 20\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 878550722cb11aefdcf8","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/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":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;;;ACpCA;;AACA;;;;;;;AAFA,KAAM,QAAQ,oBAAQ,CAAR,CAAR;;;AAIN,KAAI,WAAW,KAAX;;AAEJ,KAAI;AACF,cAAW,UAAU,OAAO,KAAP,CADnB;EAAJ,CAEE,OAAO,CAAP,EAAU,EAAV;;AAEF,KAAM,OAAO,SAAP,IAAO,GAAmB;AAC9B,OAAM,OAAO,IAAP,CADwB;;qCAAN;;IAAM;;AAE9B,OAAM,OAAO,KAAK,KAAK,MAAL,GAAc,CAAd,CAAZ,CAFwB;AAG9B,QAAK,GAAL,cAAS,KAAK,EAAL,SAAY,KAArB,EAH8B;AAI9B,UAAO,cAAM,OAAN,EAAP,CAJ8B;EAAnB;;AAOb,KAAM,QAAQ,SAAR,KAAQ,GAAmB;AAC/B,OAAM,OAAO,IAAP,CADyB;;sCAAN;;IAAM;;AAE/B,OAAM,OAAO,KAAK,KAAK,MAAL,GAAc,CAAd,CAAZ,CAFyB;AAG/B,QAAK,GAAL,cAAS,KAAK,EAAL,SAAY,KAArB,EAH+B;AAI/B,UAAO,cAAM,OAAN,EAAP,CAJ+B;EAAnB;;AAOd,UAAS,aAAT,CAAwB,KAAxB,EAA+B;AAC7B,UAAQ,SAAS,IAAT,IAAiB,UAAU,EAAV,CADI;EAA/B;AAGA,UAAS,IAAT,CAAe,KAAf,EAAsB,SAAtB,EAAiC;AAC/B,iBAAc,YAAY,EAAZ,CAAd,CAD+B;AAE/B,UAAO,MAAM,MAAN,CAAa,aAAb,EAA4B,IAA5B,CAAiC,SAAjC,CAAP,CAF+B;EAAjC;AAIA,UAAS,QAAT,GAA4B;sCAAN;;IAAM;;AAC1B,OAAI,SAAS,KAAK,IAAL,EAAW,GAAX,CAAT,CADsB;AAE1B,UAAO,OAAO,OAAP,CAAe,mBAAf,EAAoC,KAApC,CAAP,CAF0B;EAA5B;;AAKA,UAAS,MAAT,CAAiB,GAAjB,EAAsB;AACpB,UAAO,mBAAmB,GAAnB,EACJ,OADI,CACI,OADJ,EACa,GADb,EAEJ,OAFI,CAEI,OAFJ,EAEa,GAFb,EAGJ,OAHI,CAGI,MAHJ,EAGY,GAHZ,EAIJ,OAJI,CAII,OAJJ,EAIa,GAJb,EAKJ,OALI,CAKI,MALJ,EAKY,GALZ,EAMJ,OANI,CAMI,OANJ,EAMa,GANb,EAOJ,OAPI,CAOI,OAPJ,EAOa,GAPb,CAAP,CADoB;EAAtB;;AAWA,UAAS,QAAT,CAAmB,GAAnB,EAAwB,MAAxB,EAAgC;AAC9B,OAAI,CAAC,MAAD,EAAS;AACX,YAAO,GAAP,CADW;IAAb;;AAIA,OAAM,QAAQ,EAAR,CALwB;;AAO9B,iBAAM,MAAN,CAAa,MAAb,EAAqB,UAAU,GAAV,EAAe,GAAf,EAAoB;AACvC,SAAI,QAAQ,IAAR,IAAgB,OAAO,GAAP,KAAe,WAAf,EAA4B;AAC9C,cAD8C;MAAhD;AAGA,SAAI,CAAC,cAAM,OAAN,CAAc,GAAd,CAAD,EAAqB;AACvB,aAAM,CAAC,GAAD,CAAN,CADuB;MAAzB;;AAIA,SAAI,OAAJ,CAAY,UAAU,CAAV,EAAa;AACvB,WAAI,OAAO,QAAP,CAAgB,IAAhB,CAAqB,CAArB,MAA4B,eAA5B,EAA6C;AAC/C,aAAI,EAAE,WAAF,EAAJ,CAD+C;QAAjD,MAEO,IAAI,cAAM,QAAN,CAAe,CAAf,CAAJ,EAAuB;AAC5B,aAAI,cAAM,MAAN,CAAa,CAAb,CAAJ,CAD4B;QAAvB;AAGP,aAAM,IAAN,CAAc,OAAO,GAAP,UAAe,OAAO,CAAP,CAA7B,EANuB;MAAb,CAAZ,CARuC;IAApB,CAArB,CAP8B;;AAyB9B,OAAI,MAAM,MAAN,GAAe,CAAf,EAAkB;AACpB,YAAO,CAAC,IAAI,OAAJ,CAAY,GAAZ,MAAqB,CAAC,CAAD,GAAK,GAA1B,GAAgC,GAAhC,CAAD,GAAwC,MAAM,IAAN,CAAW,GAAX,CAAxC,CADa;IAAtB;;AAIA,UAAO,GAAP,CA7B8B;EAAhC;;AAgCA,KAAM,YAAY,wBAAQ,SAAR;;AAElB,KAAM,WAAW;;;;;;AAMf,aAAU,EAAV;;;;;;;AAOA,uBAAoB,KAApB;;;;;;AAMA,SAAM,KAAN;;;;;;AAMA,eAAY,EAAZ;;;;;;AAMA,WAAQ,EAAR;;;;;;;AAOA,aAAU,KAAV;EAtCI;;;;;;;;;;;;;;;AAsDN,UAAS,WAAT,CAAsB,IAAtB,EAA4B;AAC1B,OAAM,OAAO,IAAP,CADoB;AAE1B,YAAS,OAAO,EAAP,CAAT,CAF0B;AAG1B,iBAAM,MAAN,CAAa,IAAb,EAAmB,QAAnB,EAH0B;AAI1B,2BAAQ,IAAR,CAAa,IAAb,EAAmB,IAAnB,EAJ0B;EAA5B;;;AAQA,aAAY,SAAZ,GAAwB,OAAO,MAAP,CAAc,wBAAQ,SAAR,EAAmB;AACvD,gBAAa;AACX,YAAO,WAAP;AACA,iBAAY,KAAZ;AACA,eAAU,IAAV;AACA,mBAAc,IAAd;IAJF;EADsB,CAAxB;;AASA,QAAO,cAAP,CAAsB,WAAtB,EAAmC,WAAnC,EAAgD;AAC9C,iBAAc,IAAd;AACA,iCAF8C;EAAhD;;AAKA,eAAM,sBAAN,CAA6B,YAAY,SAAZ,EAAuB;;;;;;;;;AASlD,aAAU,KAAV;;;;;;;;;;AAUA,aAAU,KAAV;;;;;;;;;AASA,cAAW,KAAX;;;;;;;;;;;AAWA,cAAW,KAAX;;;;;;;;;;;AAWA,aAAU,KAAV;;;;;;;;;AASA,cAAW,IAAX;;;;;;;;;AASA,cAAW,IAAX;;;;;;;;AAQA,eAAY,IAAZ;;;;;;;;;;AAUA,eAAY,IAAZ;;;;;;;;;;AAUA,cAAW,IAAX;;AAEA,2BAAQ,QAAQ,OAAO,MAAM;AAC3B,SAAM,OAAO,IAAP,CADqB;AAE3B,YAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,OAAb,EAAsB,MAAtB,EAA8B,KAAK,MAAL,EAAa,IAA3C,CADK,EAEL,IAFK,EAGL,IAHK,CAGA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAHP,CAF2B;IAlGqB;AA4GlD,6BAAS,QAAQ,OAAO,MAAM;AAC5B,SAAM,OAAO,IAAP,CADsB;AAE5B,YAAO,KAAK,IAAL,CACL,KAAK,OAAL,CAAa,QAAb,EAAuB,MAAvB,EAA+B,KAA/B,EAAsC,IAAtC,CADK,EAEL,KAAK,SAAL,CAAe,MAAf,EAAuB,KAAvB,EAA8B,IAA9B,CAFK,EAGL,IAHK,EAIL,IAJK,CAIA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAJP,CAF4B;IA5GoB;AAuHlD,qCAAa,QAAQ,OAAO,MAAM;AAChC,SAAM,OAAO,IAAP,CAD0B;AAEhC,YAAO,KAAK,IAAL,CACL,KAAK,OAAL,CAAa,YAAb,EAA2B,MAA3B,EAAmC,IAAnC,EAAyC,IAAzC,CADK,EAEL,KAAK,SAAL,CAAe,MAAf,EAAuB,KAAvB,EAA8B,IAA9B,CAFK,EAGL,IAHK,EAIL,IAJK,CAIA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAJP,CAFgC;IAvHgB;AAkIlD,+BAAU,QAAQ,IAAI,MAAM;AAC1B,SAAM,OAAO,IAAP,CADoB;AAE1B,YAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,SAAb,EAAwB,MAAxB,EAAgC,EAAhC,EAAoC,IAApC,CADK,EAEL,IAFK,EAGL,IAHK,CAGA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAHP,CAF0B;IAlIsB;AA4IlD,qCAAa,QAAQ,OAAO,MAAM;AAChC,SAAM,OAAO,IAAP,CAD0B;AAEhC,YAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,YAAb,EAA2B,MAA3B,EAAmC,IAAnC,EAAyC,IAAzC,CADK,EAEL,IAFK,EAGL,IAHK,CAGA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAHP,CAFgC;IA5IgB;AAsJlD,uBAAM,QAAQ,MAAM,UAAU;AAC5B,YAAO,CAAC,KAAK,WAAL,CAAiB,MAAjB,EAAyB,QAAzB,EAAmC,IAAnC,CAAD,EAA2C,QAA3C,CAAP,CAD4B;IAtJoB;AA0JlD,yBAAO,QAAQ,IAAI,MAAM;AACvB,SAAM,OAAO,IAAP,CADiB;AAEvB,YAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,MAAb,EAAqB,MAArB,EAA6B,EAA7B,EAAiC,IAAjC,CADK,EAEL,IAFK,EAGL,IAHK,CAGA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAHP,CAFuB;IA1JyB;AAoKlD,+BAAU,QAAQ,OAAO,MAAM;AAC7B,SAAM,OAAO,IAAP,CADuB;AAE7B,YAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,SAAb,EAAwB,MAAxB,EAAgC,KAAK,MAAL,EAAa,IAA7C,CADK,EAEL,IAFK,EAGL,IAHK,CAGA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAHP,CAF6B;IApKmB;AA8KlD,uBAAM,QAAQ,OAAO,OAAO,MAAM;AAChC,SAAM,OAAO,IAAP,CAD0B;AAEhC,YAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,KAAb,EAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CADK,EAEL,IAFK,EAGL,IAHK,CAGA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAHP,CAFgC;IA9KgB;AAwLlD,6BAAS,QAAQ,IAAI,OAAO,MAAM;AAChC,SAAM,OAAO,IAAP,CAD0B;AAEhC,YAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,QAAb,EAAuB,MAAvB,EAA+B,EAA/B,EAAmC,IAAnC,CADK,EAEL,KAAK,SAAL,CAAe,MAAf,EAAuB,KAAvB,EAA8B,IAA9B,CAFK,EAGL,IAHK,EAIL,IAJK,CAIA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAJP,CAFgC;IAxLgB;AAmMlD,mCAAY,QAAQ,OAAO,OAAO,MAAM;AACtC,SAAM,OAAO,IAAP,CADgC;AAEtC,YAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,WAAb,EAA0B,MAA1B,EAAkC,IAAlC,EAAwC,IAAxC,CADK,EAEL,KAAK,SAAL,CAAe,MAAf,EAAuB,KAAvB,EAA8B,IAA9B,CAFK,EAGL,IAHK,EAIL,IAJK,CAIA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAJP,CAFsC;IAnMU;AA8MlD,qCAAa,QAAQ,SAAS,MAAM;AAClC,SAAM,OAAO,IAAP,CAD4B;AAElC,YAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,YAAb,EAA2B,MAA3B,EAAmC,IAAnC,EAAyC,IAAzC,CADK,EAEL,KAAK,SAAL,CAAe,MAAf,EAAuB,OAAvB,EAAgC,IAAhC,CAFK,EAGL,IAHK,EAIL,IAJK,CAIA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAJP,CAFkC;IA9Mc;;;;;;;;;;;;;;;AAqOlD,yBAAO,QAAQ,OAAO,MAAM;AAC1B,SAAM,OAAO,IAAP,CADoB;AAE1B,eAAU,QAAQ,EAAR,CAAV,CAF0B;AAG1B,cAAS,OAAO,EAAP,CAAT,CAH0B;AAI1B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,IAAf,CAAd,CAJ0B;AAK1B,UAAK,MAAL,CAAY,KAAZ,GAAoB,IAApB,CAL0B;AAM1B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CAN0B;AAO1B,mBAAM,SAAN,CAAgB,KAAK,MAAL,EAAa,KAA7B,EAP0B;AAQ1B,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAR0B;;AAU1B,YAAO,UAAU,KAAV,CAAgB,IAAhB,CAAqB,IAArB,EAA2B,MAA3B,EAAmC,KAAnC,EAA0C,IAA1C,CAAP,CAV0B;IArOsB;;;;;;;;;;;;;;;AA8PlD,2BAAQ,QAAQ,OAAO,MAAM;AAC3B,SAAM,OAAO,IAAP,CADqB;AAE3B,cAAS,OAAO,EAAP,CAAT,CAF2B;AAG3B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,IAAf,CAAd,CAH2B;AAI3B,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAJ2B;AAK3B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CAL2B;;AAO3B,YAAO,UAAU,MAAV,CAAiB,IAAjB,CAAsB,IAAtB,EAA4B,MAA5B,EAAoC,KAApC,EAA2C,IAA3C,CAAP,CAP2B;IA9PqB;;;;;;;;;;;;;;;AAoRlD,mCAAY,QAAQ,OAAO,MAAM;AAC/B,SAAM,OAAO,IAAP,CADyB;AAE/B,cAAS,OAAO,EAAP,CAAT,CAF+B;AAG/B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,IAAf,CAAd,CAH+B;AAI/B,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAJ+B;AAK/B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CAL+B;;AAO/B,YAAO,UAAU,UAAV,CAAqB,IAArB,CAA0B,IAA1B,EAAgC,MAAhC,EAAwC,KAAxC,EAA+C,IAA/C,CAAP,CAP+B;IApRiB;;;;;;;;;;;;;;AAySlD,qBAAK,KAAK,QAAQ,MAAM;AACtB,SAAM,OAAO,IAAP,CADgB;AAEtB,SAAI,WAAJ,CAFsB;AAGtB,gBAAW,SAAS,EAAT,CAAX,CAHsB;AAItB,cAAS,OAAO,EAAP,CAAT,CAJsB;AAKtB,YAAO,GAAP,GAAa,OAAO,OAAO,GAAP,CALE;AAMtB,YAAO,MAAP,GAAgB,OAAO,MAAP,IAAiB,QAAjB;;;AANM,OAStB,GAAK,KAAK,EAAL,GAAU,WAAV,CATiB;AAUtB,YAAO,cAAM,OAAN,CAAc,KAAK,EAAL,EAAS,GAAT,EAAc,MAAd,EAAsB,IAAtB,CAAd,EAA2C,IAA3C,CAAgD,UAAU,OAAV,EAAmB;;AAExE,gBAAS,cAAM,WAAN,CAAkB,OAAlB,IAA6B,MAA7B,GAAsC,OAAtC,CAF+D;AAGxE,YAAK,KAAK,EAAL,GAAU,KAAV,CAHmE;AAIxE,YAAK,GAAL,CAAS,EAAT,EAAa,GAAb,EAAkB,MAAlB,EAA0B,IAA1B,EAJwE;AAKxE,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,CAAP,CALwE;MAAnB,CAAhD,CAMJ,IANI,CAMC,UAAU,QAAV,EAAoB;;AAE1B,YAAK,KAAK,EAAL,GAAU,UAAV,CAFqB;AAG1B,cAAO,cAAM,OAAN,CAAc,KAAK,EAAL,EAAS,GAAT,EAAc,MAAd,EAAsB,IAAtB,EAA4B,QAA5B,CAAd,EAAqD,IAArD,CAA0D,UAAU,SAAV,EAAqB;;AAEpF,gBAAO,cAAM,WAAN,CAAkB,SAAlB,IAA+B,QAA/B,GAA0C,SAA1C,CAF6E;QAArB,CAAjE,CAH0B;MAApB,CANR,CAVsB;IAzS0B;;;;;;;;;;;;;;AA8UlD,qCAAa,QAAQ,UAAU,MAAM;AACnC,cAAS,OAAO,EAAP,CAAT,CADmC;AAEnC,SAAI,cAAM,UAAN,CAAiB,KAAK,WAAL,CAArB,EAAwC;AACtC,cAAO,KAAK,WAAL,CAAiB,MAAjB,EAAyB,QAAzB,EAAmC,IAAnC,CAAP,CADsC;MAAxC;AAGA,SAAI,cAAM,UAAN,CAAiB,OAAO,WAAP,CAArB,EAA0C;AACxC,cAAO,OAAO,WAAP,CAAmB,MAAnB,EAA2B,QAA3B,EAAqC,IAArC,CAAP,CADwC;MAA1C;AAGA,SAAI,YAAY,SAAS,cAAT,CAAwB,MAAxB,CAAZ,EAA6C;AAC/C,cAAO,SAAS,IAAT,CADwC;MAAjD;AAGA,YAAO,QAAP,CAXmC;IA9Ua;;;;;;;;;;;;;;;AAwWlD,6BAAS,QAAQ,IAAI,MAAM;AACzB,SAAM,OAAO,IAAP,CADmB;AAEzB,cAAS,OAAO,EAAP,CAAT,CAFyB;AAGzB,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,IAAf,CAAd,CAHyB;AAIzB,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAJyB;AAKzB,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CALyB;;AAOzB,YAAO,UAAU,OAAV,CAAkB,IAAlB,CAAuB,IAAvB,EAA6B,MAA7B,EAAqC,EAArC,EAAyC,IAAzC,CAAP,CAPyB;IAxWuB;;;;;;;;;;;;;;;AA8XlD,mCAAY,QAAQ,OAAO,MAAM;AAC/B,SAAM,OAAO,IAAP,CADyB;AAE/B,eAAU,QAAQ,EAAR,CAAV,CAF+B;AAG/B,cAAS,OAAO,EAAP,CAAT,CAH+B;AAI/B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,IAAf,CAAd,CAJ+B;AAK/B,mBAAM,SAAN,CAAgB,KAAK,MAAL,EAAa,KAA7B,EAL+B;AAM/B,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAN+B;AAO/B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CAP+B;;AAS/B,YAAO,UAAU,UAAV,CAAqB,IAArB,CAA0B,IAA1B,EAAgC,MAAhC,EAAwC,KAAxC,EAA+C,IAA/C,CAAP,CAT+B;IA9XiB;;;;;;;;;;AAiZlD,2BAAgB;AACd,SAAI,OAAJ,EAAa;;;AACX,4BAAQ,OAAO,QAAQ,KAAR,KAAkB,UAAzB,GAAsC,OAAtC,GAAgD,KAAhD,CAAR,4BADW;MAAb;IAlZgD;;;;;;;;;;;;;;;;AAoalD;;;;;;;;;;eAAO,QAAQ,MAAM;AACnB,SAAM,gBAAgB;AACpB,eAAQ,OAAO,MAAP;;AAER,gBAAS,IAAI,OAAJ,CAAY,OAAO,OAAP,CAArB;MAHI,CADa;;AAOnB,SAAI,OAAO,IAAP,EAAa;AACf,qBAAc,IAAd,GAAqB,cAAM,MAAN,CAAa,OAAO,IAAP,CAAlC,CADe;MAAjB;;AAIA,YAAO,MAAM,IAAI,OAAJ,CAAY,SAAS,OAAO,GAAP,EAAY,OAAO,MAAP,CAAjC,EAAiD,aAAjD,CAAN,EAAuE,IAAvE,CAA4E,UAAU,QAAV,EAAoB;AACrG,gBAAS,MAAT,GAAkB;AAChB,iBAAQ,OAAO,MAAP;AACR,cAAK,OAAO,GAAP;QAFP,CADqG;AAKrG,cAAO,SAAS,IAAT,GAAgB,IAAhB,CAAqB,UAAU,IAAV,EAAgB;AAC1C,kBAAS,IAAT,GAAgB,IAAhB,CAD0C;AAE1C,gBAAO,QAAP,CAF0C;QAAhB,CAA5B,CALqG;MAApB,CAAnF,CAXmB;KApa6B;;;;;;;;;;;;;;;AAuclD,uBAAM,QAAQ,IAAI,MAAM;AACtB,SAAM,OAAO,IAAP,CADgB;AAEtB,cAAS,OAAO,EAAP,CAAT,CAFsB;AAGtB,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,IAAf,CAAd,CAHsB;AAItB,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAJsB;AAKtB,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CALsB;;AAOtB,YAAO,UAAU,IAAV,CAAe,IAAf,CAAoB,IAApB,EAA0B,MAA1B,EAAkC,EAAlC,EAAsC,IAAtC,CAAP,CAPsB;IAvc0B;;;;;;;;;;;;;;;AA6dlD,6BAAS,QAAQ,OAAO,MAAM;AAC5B,SAAM,OAAO,IAAP,CADsB;AAE5B,eAAU,QAAQ,EAAR,CAAV,CAF4B;AAG5B,cAAS,OAAO,EAAP,CAAT,CAH4B;AAI5B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,IAAf,CAAd,CAJ4B;AAK5B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CAL4B;AAM5B,mBAAM,SAAN,CAAgB,KAAK,MAAL,EAAa,KAA7B,EAN4B;AAO5B,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAP4B;;AAS5B,YAAO,UAAU,OAAV,CAAkB,IAAlB,CAAuB,IAAvB,EAA6B,MAA7B,EAAqC,KAArC,EAA4C,IAA5C,CAAP,CAT4B;IA7doB;;;;;;;;;;;;;AAmflD,qBAAK,KAAK,QAAQ,MAAM;AACtB,SAAM,OAAO,IAAP,CADgB;AAEtB,SAAI,WAAJ,CAFsB;AAGtB,gBAAW,SAAS,EAAT,CAAX,CAHsB;AAItB,cAAS,OAAO,EAAP,CAAT,CAJsB;AAKtB,YAAO,GAAP,GAAa,OAAO,OAAO,GAAP,CALE;AAMtB,YAAO,MAAP,GAAgB,OAAO,MAAP,IAAiB,KAAjB;;;AANM,OAStB,GAAK,KAAK,EAAL,GAAU,WAAV,CATiB;AAUtB,YAAO,cAAM,OAAN,CAAc,KAAK,EAAL,EAAS,GAAT,EAAc,MAAd,EAAsB,IAAtB,CAAd,EAA2C,IAA3C,CAAgD,UAAU,OAAV,EAAmB;;AAExE,gBAAS,cAAM,WAAN,CAAkB,OAAlB,IAA6B,MAA7B,GAAsC,OAAtC,CAF+D;AAGxE,YAAK,KAAK,EAAL,GAAU,KAAV,CAHmE;AAIxE,YAAK,GAAL,CAAS,EAAT,EAAa,GAAb,EAAkB,MAAlB,EAA0B,IAA1B,EAJwE;AAKxE,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,CAAP,CALwE;MAAnB,CAAhD,CAMJ,IANI,CAMC,UAAU,QAAV,EAAoB;;AAE1B,YAAK,KAAK,EAAL,GAAU,UAAV,CAFqB;AAG1B,cAAO,cAAM,OAAN,CAAc,KAAK,EAAL,EAAS,GAAT,EAAc,MAAd,EAAsB,IAAtB,EAA4B,QAA5B,CAAd,EAAqD,IAArD,CAA0D,UAAU,SAAV,EAAqB;;AAEpF,gBAAO,cAAM,WAAN,CAAkB,SAAlB,IAA+B,QAA/B,GAA0C,SAA1C,CAF6E;QAArB,CAAjE,CAH0B;MAApB,CANR,CAVsB;IAnf0B;;;;;;;;;;;AAqhBlD,qCAAa,QAAQ,IAAI,MAAM;AAC7B,SAAM,OAAO,IAAP,CADuB;AAE7B,cAAS,OAAO,EAAP,CAAT,CAF6B;AAG7B,UAAK,MAAL,GAAc,cAAM,WAAN,CAAkB,KAAK,MAAL,CAAlB,GAAiC,EAAjC,GAAsC,KAAK,MAAL,CAHvB;AAI7B,SAAM,eAAe,OAAO,YAAP,IAAuB,EAAvB,CAJQ;AAK7B,SAAI,WAAW,cAAM,WAAN,CAAkB,KAAK,QAAL,CAAlB,GAAoC,cAAM,WAAN,CAAkB,OAAO,QAAP,CAAlB,GAAqC,OAAO,IAAP,GAAc,OAAO,QAAP,GAAmB,KAAK,QAAL,CAL5F;;AAO7B,kBAAa,OAAb,CAAqB,UAAU,GAAV,EAAe;AAClC,WAAI,IAAI,IAAJ,KAAa,WAAb,IAA4B,CAAC,IAAI,MAAJ,EAAY;AAC3C,gBAD2C;QAA7C;AAGA,WAAI,aAAJ,CAJkC;AAKlC,WAAM,YAAY,IAAI,UAAJ,CALgB;AAMlC,WAAM,YAAY,IAAI,WAAJ,EAAZ,CAN4B;AAOlC,WAAI,WAAW,KAAK,MAAL,CAAY,SAAZ,CAAX,CAP8B;;AASlC,WAAI,aAAa,KAAb,IAAsB,CAAC,SAAD,IAAc,CAAC,SAAD,EAAY;AAClD,aAAI,aAAa,KAAb,EAAoB;AACtB,kBAAO,KAAK,MAAL,CAAY,SAAZ,CAAP,CADsB;UAAxB;AAGA,gBAAO,KAAP,CAJkD;QAApD,MAKO;AACL,gBAAO,KAAK,MAAL,CAAY,SAAZ,CAAP,CADK;;AAGL,aAAI,cAAM,QAAN,CAAe,EAAf,CAAJ,EAAwB;AACtB,kBAAO,EAAP,CADsB;UAAxB;;AAIA,aAAI,IAAJ,EAAU;AACR,sBAAW,YAAY,IAAI,aAAJ,CAAkB,IAAlB,CAAZ,KAAwC,IAAI,aAAJ,CAAkB,IAAlB,IAA0B,cAAM,GAAN,CAAU,IAAI,aAAJ,CAAkB,IAAlB,CAAV,EAAmC,UAAU,WAAV,CAA7D,GAAsF,IAAtF,CAAxC,CADH;UAAV;;AAIA,aAAI,QAAJ,EAAc;;AACZ,oBAAO,KAAK,QAAL;AACP,iBAAM,QAAQ,EAAR;AACN,2BAAM,MAAN,CAAa,IAAb,EAAmB,UAAU,KAAV,EAAiB,GAAjB,EAAsB;AACvC,qBAAM,GAAN,IAAa,KAAb,CADuC;cAAtB,CAAnB;AAGA,2BAAM,CAAN,CAAQ,KAAR,EAAe,SAAf;AACA,wBAAW,SAAS,KAAK,WAAL,CAAiB,SAAjB,EAA4B,QAA5B,EAAsC,KAAtC,CAAT,EAAuD,QAAvD,EAAiE,QAAjE,CAAX;AACA;kBAAO;cAAP;eARY;;;UAAd;QAhBF;MATmB,CAArB,CAP6B;;AA6C7B,YAAO,QAAP,CA7C6B;IArhBmB;;;;;;;;;;;AA6kBlD,6BAAS,QAAQ,QAAQ,IAAI,MAAM;AACjC,SAAM,OAAO,IAAP,CAD2B;AAEjC,cAAS,OAAO,EAAP,CAAT,CAFiC;AAGjC,SAAM,OAAO,CACX,cAAM,WAAN,CAAkB,KAAK,QAAL,CAAlB,GAAoC,cAAM,WAAN,CAAkB,OAAO,QAAP,CAAlB,GAAqC,KAAK,QAAL,GAAgB,OAAO,QAAP,GAAmB,KAAK,QAAL,EAC5G,KAAK,WAAL,CAAiB,MAAjB,EAAyB,aAAC,CAAM,QAAN,CAAe,EAAf,KAAsB,cAAM,QAAN,CAAe,EAAf,CAAtB,IAA4C,WAAW,QAAX,GAAuB,EAApE,GAAyE,IAAzE,EAA+E,IAAxG,CAFW,CAAP,CAH2B;AAOjC,SAAI,WAAW,MAAX,IAAqB,WAAW,QAAX,IAAuB,WAAW,SAAX,EAAsB;AACpE,YAAK,IAAL,CAAU,EAAV,EADoE;MAAtE;AAGA,YAAO,SAAS,KAAT,gBAAsB,IAAtB,CAAP,CAViC;IA7kBe;AA0lBlD,iCAAW,MAAM;AACf,cAAS,OAAO,EAAP,CAAT,CADe;AAEf,SAAI,cAAM,WAAN,CAAkB,KAAK,MAAL,CAAtB,EAAoC;AAClC,cAAO,EAAP,CADkC;MAApC;AAGA,YAAO,cAAM,IAAN,CAAW,KAAK,MAAL,CAAlB,CALe;IA1lBiC;AAkmBlD,iCAAW,QAAQ,MAAM;AACvB,cAAS,OAAO,EAAP,CAAT,CADuB;AAEvB,SAAI,cAAM,WAAN,CAAkB,KAAK,MAAL,CAAtB,EAAoC;AAClC,WAAI,cAAM,WAAN,CAAkB,OAAO,MAAP,CAAtB,EAAsC;AACpC,gBAAO,KAAK,MAAL,CAD6B;QAAtC;AAGA,cAAO,OAAO,MAAP,CAJ2B;MAApC;AAMA,YAAO,KAAK,MAAL,CARgB;IAlmByB;;;;;;;;;;;;AAsnBlD,uBAAM,QAAQ,MAAM;AAClB,SAAM,OAAO,IAAP,CADY;AAElB,SAAM,QAAQ,IAAI,IAAJ,EAAR,CAFY;AAGlB,cAAS,OAAO,EAAP,CAAT,CAHkB;AAIlB,SAAM,UAAU,OAAO,IAAP,CAJE;AAKlB,SAAM,QAAQ,OAAO,KAAP,CALI;AAMlB,SAAM,UAAU,OAAO,OAAP,CANE;AAOlB,cAAS,cAAM,IAAN,CAAW,MAAX,EAAmB,IAAnB,EAAyB,IAAzB,EAA+B,IAA/B,EAAqC,CAAC,MAAD,EAAS,OAAT,EAAkB,SAAlB,CAArC,CAAT,CAPkB;AAQlB,cAAS,cAAM,SAAN,CAAgB,MAAhB,EAAwB,KAAK,UAAL,CAAjC,CARkB;AASlB,YAAO,IAAP,GAAc,OAAd,CATkB;AAUlB,YAAO,KAAP,GAAe,KAAf,CAVkB;AAWlB,YAAO,OAAP,GAAiB,OAAjB,CAXkB;AAYlB,SAAI,KAAK,kBAAL,IAA2B,OAAO,GAAP,CAAW,OAAO,GAAP,CAAW,MAAX,GAAoB,CAApB,CAAX,KAAsC,GAAtC,EAA2C;AACxE,cAAO,GAAP,IAAc,GAAd,CADwE;MAA1E;AAGA,YAAO,MAAP,GAAgB,OAAO,MAAP,CAAc,WAAd,EAAhB,CAfkB;AAgBlB,SAAM,SAAS,OAAO,MAAP,IAAiB,KAAK,MAAL,IAAe,KAAK,MAAL,CAhB7B;AAiBlB,SAAI,UAAU,OAAO,GAAP,CAAW,MAAX,CAAkB,OAAO,GAAP,CAAW,MAAX,GAAoB,OAAO,MAAP,CAAtC,KAAyD,MAAzD,EAAiE;AAC7E,cAAO,GAAP,IAAc,MAAd,CAD6E;MAA/E;;AAIA,cAAS,WAAT,CAAsB,IAAtB,EAA4B;AAC1B,WAAM,MAAS,MAAM,WAAN,aAAyB,OAAO,MAAP,CAAc,WAAd,WAA+B,OAAO,GAAP,WAAgB,KAAK,MAAL,UAAgB,IAAI,IAAJ,GAAW,OAAX,KAAuB,MAAM,OAAN,EAAvB,QAAjG,CADoB;AAE1B,WAAI,KAAK,MAAL,IAAe,GAAf,IAAsB,KAAK,MAAL,GAAc,GAAd,EAAmB;AAC3C,aAAI,KAAK,GAAL,EAAU;AACZ,gBAAK,GAAL,CAAS,OAAT,EAAkB,GAAlB,EAAuB,IAAvB,EADY;UAAd;AAGA,gBAAO,IAAP,CAJ2C;QAA7C,MAKO;AACL,aAAI,KAAK,KAAL,EAAY;AACd,gBAAK,KAAL,gBAAuB,GAAvB,EAA8B,IAA9B,EADc;UAAhB;AAGA,gBAAO,cAAM,MAAN,CAAa,IAAb,CAAP,CAJK;QALP;MAFF;;AAeA,SAAI,CAAC,KAAK,IAAL,EAAW;AACd,aAAM,IAAI,KAAJ,CAAU,4DAAV,CAAN,CADc;MAAhB;;AAIA,YAAO,cAAM,OAAN,CAAc,KAAK,UAAL,CAAgB,MAAhB,EAAwB,IAAxB,CAAd,EAA6C,IAA7C,CAAkD,UAAU,OAAV,EAAmB;AAC1E,gBAAS,WAAW,MAAX,CADiE;AAE1E,WAAI,aAAa,KAAK,QAAL,IAAiB,KAAK,QAAL,IAAiB,CAAC,KAAK,IAAL,CAAhD,EAA4D;AAC9D,gBAAO,KAAK,KAAL,CAAW,MAAX,EAAmB,IAAnB,EAAyB,IAAzB,CAA8B,WAA9B,EAA2C,WAA3C,CAAP,CAD8D;QAAhE;AAGA,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,CAAuB,WAAvB,EAAoC,WAApC,EAAiD,KAAjD,CAAuD,UAAU,GAAV,EAAe;AAC3E,gBAAO,KAAK,aAAL,CAAmB,GAAnB,EAAwB,MAAxB,EAAgC,IAAhC,CAAP,CAD2E;QAAf,CAA9D,CAL0E;MAAnB,CAAlD,CAQJ,IARI,CAQC,UAAU,QAAV,EAAoB;AAC1B,cAAO,cAAM,OAAN,CAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,EAA6B,QAA7B,CAAd,EAAsD,IAAtD,CAA2D,UAAU,SAAV,EAAqB;AACrF,gBAAO,aAAa,QAAb,CAD8E;QAArB,CAAlE,CAD0B;MAApB,CARR,CAxCkB;IAtnB8B;;;;;;;;;;;;;;AAwrBlD,uBAAM,KAAK,MAAM,QAAQ,MAAM;AAC7B,SAAM,OAAO,IAAP,CADuB;AAE7B,SAAI,WAAJ,CAF6B;AAG7B,gBAAW,SAAS,EAAT,CAAX,CAH6B;AAI7B,cAAS,OAAO,EAAP,CAAT,CAJ6B;AAK7B,YAAO,GAAP,GAAa,OAAO,OAAO,GAAP,CALS;AAM7B,YAAO,IAAP,GAAc,QAAQ,OAAO,IAAP,CANO;AAO7B,YAAO,MAAP,GAAgB,OAAO,MAAP,IAAiB,MAAjB;;;AAPa,OAU7B,GAAK,KAAK,EAAL,GAAU,YAAV,CAVwB;AAW7B,YAAO,cAAM,OAAN,CAAc,KAAK,EAAL,EAAS,GAAT,EAAc,IAAd,EAAoB,MAApB,EAA4B,IAA5B,CAAd,EAAiD,IAAjD,CAAsD,UAAU,OAAV,EAAmB;;AAE9E,gBAAS,cAAM,WAAN,CAAkB,OAAlB,IAA6B,MAA7B,GAAsC,OAAtC,CAFqE;AAG9E,YAAK,KAAK,EAAL,GAAU,MAAV,CAHyE;AAI9E,YAAK,GAAL,CAAS,EAAT,EAAa,GAAb,EAAkB,IAAlB,EAAwB,MAAxB,EAAgC,IAAhC,EAJ8E;AAK9E,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,CAAP,CAL8E;MAAnB,CAAtD,CAMJ,IANI,CAMC,UAAU,QAAV,EAAoB;;AAE1B,YAAK,KAAK,EAAL,GAAU,WAAV,CAFqB;AAG1B,cAAO,cAAM,OAAN,CAAc,KAAK,EAAL,EAAS,GAAT,EAAc,IAAd,EAAoB,MAApB,EAA4B,IAA5B,EAAkC,QAAlC,CAAd,EAA2D,IAA3D,CAAgE,UAAU,SAAV,EAAqB;;AAE1F,gBAAO,cAAM,WAAN,CAAkB,SAAlB,IAA+B,QAA/B,GAA0C,SAA1C,CAFmF;QAArB,CAAvE,CAH0B;MAApB,CANR,CAX6B;IAxrBmB;;;;;;;;;;;;;;AA8tBlD,qBAAK,KAAK,MAAM,QAAQ,MAAM;AAC5B,SAAM,OAAO,IAAP,CADsB;AAE5B,SAAI,WAAJ,CAF4B;AAG5B,gBAAW,SAAS,EAAT,CAAX,CAH4B;AAI5B,cAAS,OAAO,EAAP,CAAT,CAJ4B;AAK5B,YAAO,GAAP,GAAa,OAAO,OAAO,GAAP,CALQ;AAM5B,YAAO,IAAP,GAAc,QAAQ,OAAO,IAAP,CANM;AAO5B,YAAO,MAAP,GAAgB,OAAO,MAAP,IAAiB,KAAjB;;;AAPY,OAU5B,GAAK,KAAK,EAAL,GAAU,WAAV,CAVuB;AAW5B,YAAO,cAAM,OAAN,CAAc,KAAK,EAAL,EAAS,GAAT,EAAc,IAAd,EAAoB,MAApB,EAA4B,IAA5B,CAAd,EAAiD,IAAjD,CAAsD,UAAU,OAAV,EAAmB;;AAE9E,gBAAS,cAAM,WAAN,CAAkB,OAAlB,IAA6B,MAA7B,GAAsC,OAAtC,CAFqE;AAG9E,YAAK,KAAK,EAAL,GAAU,KAAV,CAHyE;AAI9E,YAAK,GAAL,CAAS,EAAT,EAAa,GAAb,EAAkB,IAAlB,EAAwB,MAAxB,EAAgC,IAAhC,EAJ8E;AAK9E,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,CAAP,CAL8E;MAAnB,CAAtD,CAMJ,IANI,CAMC,UAAU,QAAV,EAAoB;;AAE1B,YAAK,KAAK,EAAL,GAAU,UAAV,CAFqB;AAG1B,cAAO,cAAM,OAAN,CAAc,KAAK,EAAL,EAAS,GAAT,EAAc,IAAd,EAAoB,MAApB,EAA4B,IAA5B,EAAkC,QAAlC,CAAd,EAA2D,IAA3D,CAAgE,UAAU,SAAV,EAAqB;;AAE1F,gBAAO,cAAM,WAAN,CAAkB,SAAlB,IAA+B,QAA/B,GAA0C,SAA1C,CAFmF;QAArB,CAAvE,CAH0B;MAApB,CANR,CAX4B;IA9tBoB;;;;;;;;;;;;;AAmwBlD,2CAAgB,QAAQ,QAAQ,MAAM;AACpC,cAAS,OAAO,EAAP,CAAT,CADoC;AAEpC,SAAI,cAAM,UAAN,CAAiB,KAAK,cAAL,CAArB,EAA2C;AACzC,cAAO,KAAK,cAAL,CAAoB,MAApB,EAA4B,MAA5B,EAAoC,IAApC,CAAP,CADyC;MAA3C;AAGA,SAAI,cAAM,UAAN,CAAiB,OAAO,cAAP,CAArB,EAA6C;AAC3C,cAAO,OAAO,cAAP,CAAsB,MAAtB,EAA8B,MAA9B,EAAsC,IAAtC,CAAP,CAD2C;MAA7C;AAGA,YAAO,MAAP,CARoC;IAnwBY;;;;;;;;;;;;;;;;AA2xBlD,yCAAe,KAAK,QAAQ,MAAM;AAChC,YAAO,cAAM,MAAN,CAAa,GAAb,CAAP,CADgC;IA3xBgB;;;;;;;;;;;;;AAyyBlD,iCAAW,QAAQ,MAAM,MAAM;AAC7B,cAAS,OAAO,EAAP,CAAT,CAD6B;AAE7B,SAAI,cAAM,UAAN,CAAiB,KAAK,SAAL,CAArB,EAAsC;AACpC,cAAO,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,EAA6B,IAA7B,CAAP,CADoC;MAAtC;AAGA,SAAI,cAAM,UAAN,CAAiB,OAAO,SAAP,CAArB,EAAwC;AACtC,cAAO,OAAO,SAAP,CAAiB,MAAjB,EAAyB,IAAzB,EAA+B,IAA/B,CAAP,CADsC;MAAxC;AAGA,YAAO,IAAP,CAR6B;IAzyBmB;;;;;;;;;;;;;;;;AAi0BlD,qBAAK,QAAQ,OAAO,OAAO,MAAM;AAC/B,SAAM,OAAO,IAAP,CADyB;AAE/B,eAAU,QAAQ,EAAR,CAAV,CAF+B;AAG/B,cAAS,OAAO,EAAP,CAAT,CAH+B;AAI/B,SAAI,CAAC,cAAM,KAAN,CAAY,QAAZ,CAAqB,KAArB,CAAD,EAA8B;AAChC,aAAM,IAAI,KAAJ,CAAU,yBAAV,CAAN,CADgC;MAAlC;AAGA,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,IAAf,CAAd,CAP+B;AAQ/B,UAAK,MAAL,CAAY,GAAZ,GAAkB,KAAlB,CAR+B;AAS/B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CAT+B;AAU/B,mBAAM,SAAN,CAAgB,KAAK,MAAL,EAAa,KAA7B,EAV+B;AAW/B,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAX+B;;AAa/B,YAAO,UAAU,GAAV,CAAc,IAAd,CAAmB,IAAnB,EAAyB,MAAzB,EAAiC,KAAjC,EAAwC,KAAxC,EAA+C,IAA/C,CAAP,CAb+B;IAj0BiB;;;;;;;;;;;;;;AA41BlD,2BAAQ,QAAQ,IAAI,OAAO,MAAM;AAC/B,SAAM,OAAO,IAAP,CADyB;AAE/B,cAAS,OAAO,EAAP,CAAT,CAF+B;AAG/B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,IAAf,CAAd,CAH+B;AAI/B,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAJ+B;AAK/B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CAL+B;;AAO/B,YAAO,UAAU,MAAV,CAAiB,IAAjB,CAAsB,IAAtB,EAA4B,MAA5B,EAAoC,EAApC,EAAwC,KAAxC,EAA+C,IAA/C,CAAP,CAP+B;IA51BiB;;;;;;;;;;;;;;AAi3BlD,iCAAW,QAAQ,OAAO,OAAO,MAAM;AACrC,SAAM,OAAO,IAAP,CAD+B;AAErC,eAAU,QAAQ,EAAR,CAAV,CAFqC;AAGrC,cAAS,OAAO,EAAP,CAAT,CAHqC;AAIrC,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,IAAf,CAAd,CAJqC;AAKrC,mBAAM,SAAN,CAAgB,KAAK,MAAL,EAAa,KAA7B,EALqC;AAMrC,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CANqC;AAOrC,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CAPqC;;AASrC,YAAO,UAAU,SAAV,CAAoB,IAApB,CAAyB,IAAzB,EAA+B,MAA/B,EAAuC,KAAvC,EAA8C,KAA9C,EAAqD,IAArD,CAAP,CATqC;IAj3BW;;;;;;;;;;;;;;;;;;;;AA84BlD,mCAAY,QAAQ,SAAS,MAAM;AACjC,SAAM,OAAO,IAAP,CAD2B;AAEjC,cAAS,OAAO,EAAP,CAAT,CAFiC;AAGjC,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,IAAf,CAAd,CAHiC;AAIjC,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAJiC;AAKjC,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CALiC;;AAOjC,YAAO,UAAU,UAAV,CAAqB,IAArB,CAA0B,IAA1B,EAAgC,MAAhC,EAAwC,OAAxC,EAAiD,IAAjD,CAAP,CAPiC;IA94Be;EAApD;;;;;;;;;;;;;;;;;AAw6BA,aAAY,SAAZ,GAAwB,UAAU,IAAV,EAAgB,IAAhB,EAAsB;AAC5C,OAAI,CAAC,IAAD,IAAS,CAAC,cAAM,QAAN,CAAe,IAAf,CAAD,EAAuB;AAClC,WAAM,IAAI,SAAJ,CAAc,4DAA2D,mDAA3D,CAApB,CADkC;IAApC;AAGA,UAAO,UAAU,MAAV,EAAkB;AACvB,SAAI,OAAO,IAAP,CAAJ,EAAkB;AAChB,aAAM,IAAI,KAAJ,CAAU,2BAA2B,IAA3B,GAAkC,4BAAlC,CAAhB,CADgB;MAAlB;AAGA,UAAK,OAAL,GAAe,KAAK,OAAL,IAAgB,UAAU,MAAV,EAAkB;AAAE,cAAO,MAAP,CAAF;MAAlB,CAJR;AAKvB,UAAK,QAAL,GAAgB,KAAK,QAAL,IAAiB,UAAU,QAAV,EAAoB;AAAE,cAAO,QAAP,CAAF;MAApB,CALV;AAMvB,UAAK,aAAL,GAAqB,KAAK,aAAL,IAAsB,UAAU,GAAV,EAAe;AAAE,cAAO,cAAM,MAAN,CAAa,GAAb,CAAP,CAAF;MAAf,CANpB;AAOvB,YAAO,IAAP,IAAe,UAAU,EAAV,EAAc,KAAd,EAAqB;AAClC,WAAM,OAAO,IAAP,CAD4B;AAElC,WAAI,cAAM,QAAN,CAAe,EAAf,CAAJ,EAAwB;AACtB,iBAAQ,EAAR,CADsB;QAAxB;AAGA,eAAQ,SAAS,EAAT,CAL0B;AAMlC,WAAI,UAAU,KAAK,UAAL,CAAgB,KAAK,OAAL,IAAgB,KAAK,cAAL,IAAuB,MAAvC,CAA1B,CAN8B;AAOlC,WAAI,SAAS,EAAT,CAP8B;AAQlC,qBAAM,MAAN,CAAa,MAAb,EAAqB,IAArB,EARkC;AASlC,WAAI,CAAC,MAAM,cAAN,CAAqB,UAArB,CAAD,IAAqC,OAAO,QAAP,EAAiB;AACxD,eAAM,QAAN,GAAiB,OAAO,QAAP,CADuC;QAA1D;AAGA,WAAI,OAAO,MAAM,WAAN,KAAsB,UAA7B,EAAyC;AAC3C,gBAAO,GAAP,GAAa,MAAM,WAAN,CAAkB,IAAlB,EAAwB,KAAxB,CAAb,CAD2C;QAA7C,MAEO;AACL,aAAI,QAAO,CACT,MAAM,QAAN,IAAkB,KAAK,QAAL,IAAiB,QAAQ,QAAR,EACnC,QAAQ,WAAR,CAAoB,IAApB,EAA0B,cAAM,MAAN,CAAa,EAAb,IAAmB,EAAnB,GAAwB,IAAxB,EAA8B,KAAxD,CAFS,CAAP,CADC;AAKL,aAAI,cAAM,MAAN,CAAa,EAAb,CAAJ,EAAsB;AACpB,iBAAK,IAAL,CAAU,EAAV,EADoB;UAAtB;AAGA,eAAK,IAAL,CAAU,KAAK,QAAL,IAAiB,IAAjB,CAAV,CARK;AASL,gBAAO,GAAP,GAAa,SAAS,KAAT,CAAe,IAAf,EAAqB,KAArB,CAAb,CATK;QAFP;AAaA,cAAO,MAAP,GAAgB,OAAO,MAAP,IAAiB,KAAjB,CAzBkB;AA0BlC,cAAO,MAAP,GAAgB,KAAK,IAAL,CA1BkB;AA2BlC,qBAAM,SAAN,CAAgB,MAAhB,EAAwB,KAAxB,EA3BkC;AA4BlC,cAAO,cAAM,OAAN,CAAc,MAAd,EACJ,IADI,CACC,MAAM,OAAN,IAAiB,KAAK,OAAL,CADlB,CAEJ,IAFI,CAEC,UAAU,MAAV,EAAkB;AAAE,gBAAO,QAAQ,IAAR,CAAa,MAAb,CAAP,CAAF;QAAlB,CAFD,CAGJ,IAHI,CAGC,UAAU,IAAV,EAAgB;AACpB,aAAI,QAAQ,KAAK,MAAL,EAAa;AACvB,gBAAK,MAAL,CAAY,MAAZ,GAAqB,KAAK,IAAL,CADE;UAAzB;AAGA,gBAAO,IAAP,CAJoB;QAAhB,CAHD,CASJ,IATI,CASC,MAAM,QAAN,IAAkB,KAAK,QAAL,EAAe,MAAM,aAAN,IAAuB,KAAK,aAAL,CAThE,CA5BkC;MAArB,CAPQ;AA8CvB,YAAO,MAAP,CA9CuB;IAAlB,CAJqC;EAAtB;;;;;;;;;;;;;AAiExB,aAAY,UAAZ,GAAyB,UAAU,IAAV,EAAgB;AACvC,YAAS,OAAO,EAAP,CAAT,CADuC;AAEvC,UAAO,UAAU,MAAV,EAAkB;AACvB,mBAAM,MAAN,CAAa,MAAb,EAAqB,UAAU,KAAV,EAAiB,GAAjB,EAAsB;AACzC,mBAAY,SAAZ,CAAsB,GAAtB,EAA2B,KAA3B,EAAkC,MAAlC,EADyC;MAAtB,CAArB,CADuB;AAIvB,YAAO,MAAP,CAJuB;IAAlB,CAFgC;EAAhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDzB,aAAY,MAAZ,GAAqB,cAAM,MAAN;;;;;;;;;;;;;;;;AAgBrB,aAAY,OAAZ,GAAsB,gBAAtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,QAAO,OAAP,GAAiB,WAAjB,C;;;;;;AC3uCA,gD;;;;;;ACAA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;AAE3B;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,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;;AAEA;;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,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;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;;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;AACA,iBAAgB;AAChB;AACA;AACA;AACA,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,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,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,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,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;;AAEA,EAAC;AACD,4C;;;;;;AC3lDA,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;;AAEA;AACA;AACA;AACA;AACA;;AAEA;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;;;;;;;ACvHD;;AAEA;;AAEA,iCAAgC;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;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;AACA;;;;;;;AC9DA;;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,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;;;;;;;ACnPA;;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;;AAEA;AACA;AACA;;AAEA;AACA,2CAA0C;AAC1C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;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;;AAEA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;;;;;;;ACjIA;;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;;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[\"HttpAdapter\"] = factory(require(\"js-data\"));\n\telse\n\t\troot[\"HttpAdapter\"] = 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 878550722cb11aefdcf8\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nimport Adapter from 'js-data-adapter'\n\nlet hasFetch = false\n\ntry {\n hasFetch = window && window.fetch\n} catch (e) {}\n\nconst noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n return utils.resolve()\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n return utils.resolve()\n}\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 * @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// 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\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 HttpAdapter.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 */\nHttpAdapter.addAction = function (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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n utils.forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.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 */\n\nmodule.exports = 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(require('js-data')) :\n typeof define === 'function' && define.amd ? define('js-data-adapter', ['js-data'], factory) :\n (factory(global.JSData));\n}(this, function (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 Adapter.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 * @typedef {Object} Response\n * @property {Object} data Response data.\n * @property {string} op The operation for which the response was created.\n */\n function Response(data, meta, op) {\n var self = this;\n meta || (meta = {});\n self.data = data;\n jsData.utils.fillIn(self, meta);\n self.op = op;\n }\n\n Adapter.Response = Response;\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 {Object} props The `props` 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 * 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 * 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 _ret = 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 _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === \"object\") return _ret.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 * 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 * 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 _ret2 = 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 _ret2 === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret2)) === \"object\") return _ret2.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 * 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 * 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 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 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 module.exports = Adapter;\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\naxios.create = function create(defaultConfig) {\n return new Axios(defaultConfig);\n};\n\n// Expose defaults\naxios.defaults = defaultInstance.defaults;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose interceptors\naxios.interceptors = defaultInstance.interceptors;\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 transformResponseJSON(data, headers) {\n if (utils.isFormData(data)) {\n return data;\n }\n if (utils.isArrayBuffer(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 transformResponseJSON(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\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 * 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 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 = window.btoa || require('./../helpers/btoa');\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\n // For IE 8/9 CORS support\n // Only supports POST and GET calls and doesn't returns the response headers.\n if (window.XDomainRequest && !('withCredentials' in request) && !isURLSameOrigin(config.url)) {\n request = new window.XDomainRequest();\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 // Listen for ready state\n request.onload = function handleLoad() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = ['text', ''].indexOf(config.responseType || '') !== -1 ? 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 };\n\n // Resolve or reject the Promise based on the status\n ((response.status >= 200 && response.status < 300) ||\n (!('status' in request) && response.responseText) ?\n resolve :\n 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 // 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 if (utils.isArrayBuffer(requestData)) {\n requestData = new DataView(requestData);\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 InvalidCharacterError(message) {\n this.message = message;\n}\nInvalidCharacterError.prototype = new Error;\nInvalidCharacterError.prototype.code = 5;\nInvalidCharacterError.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 InvalidCharacterError('INVALID_CHARACTER_ERR: DOM Exception 5');\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\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 = 15\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 = 16\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 = 17\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 = 18\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 = 19\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 = 20\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 f2c66f4..da1a509 100644 --- a/dist/js-data-http.min.js +++ b/dist/js-data-http.min.js @@ -1,12 +1,11 @@ /*! * js-data-http -* @version 3.0.0-alpha.10 - Homepage -* @author Jason Dobry -* @copyright (c) 2014-2015 Jason Dobry +* @version 3.0.0-beta.2 - Homepage +* @copyright (c) 2014-2016 js-data-http project authors * @license MIT * -* @overview HTTP adapter for js-data. +* @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.HttpAdapter=t(require("js-data")):e.HttpAdapter=t(e.JSData)}(this,function(e){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 e&&e.__esModule?e:{default:e}}function i(e){return null!=e&&""!==e}function o(e,t){return t||(t=""),e.filter(i).join(t)}function u(){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 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 s(e,t){if(!t)return e;var n=[];return c.utils.forOwn(t,function(e,t){null!==e&&"undefined"!=typeof e&&(c.utils.isArray(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():c.utils.isObject(e)&&(e=c.utils.toJson(e)),n.push(a(t)+"="+a(e))}))}),n.length>0&&(e+=(-1===e.indexOf("?")?"?":"&")+n.join("&")),e}function f(e){var t=this;e||(e={}),c.utils.fillIn(e,b),p.default.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},c=n(1),d=n(2),p=r(d),h=n(3),y=!1;try{y=window&&window.fetch}catch(e){}var v=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var i=n[n.length-1];return e.dbg.apply(e,[i.op].concat(n)),c.utils.resolve()},m=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var i=n[n.length-2];return e.dbg.apply(e,[i.op].concat(n)),c.utils.resolve()},g=p.default.prototype,b={basePath:"",forceTrailingSlash:!1,http:h,httpConfig:{},suffix:"",useFetch:!1};f.prototype=Object.create(p.default.prototype,{constructor:{value:f,enumerable:!1,writable:!0,configurable:!0}}),Object.defineProperty(f,"__super__",{configurable:!0,value:p.default}),c.utils.addHiddenPropsToTarget(f.prototype,{afterDEL:m,afterGET:m,afterHTTP:m,afterPOST:m,afterPUT:m,beforeDEL:v,beforeGET:v,beforeHTTP:v,beforePOST:v,beforePUT:v,_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),c.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),g.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),g.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),g.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",c.utils.resolve(r[i](e,t,n)).then(function(o){return t=c.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",c.utils.resolve(r[i](e,t,n,o)).then(function(e){return c.utils.isUndefined(e)?o:e})})},deserialize:function(e,t,n){return n||(n={}),c.utils.isFunction(n.deserialize)?n.deserialize(e,t,n):c.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),g.destroy.call(r,e,t,n)},destroyAll:function(e,t,n){var r=this;return t||(t={}),n||(n={}),n.params=r.getParams(n),c.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),g.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=c.utils.toJson(e.data)),fetch(new Request(s(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),g.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),c.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),g.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",c.utils.resolve(r[i](e,t,n)).then(function(o){return t=c.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",c.utils.resolve(r[i](e,t,n,o)).then(function(e){return c.utils.isUndefined(e)?o:e})})},getEndpoint:function(e,t,n){var r=this;n||(n={}),n.params=c.utils.isUndefined(n.params)?{}:n.params;var i=e.relationList||[],o=c.utils.isUndefined(n.endpoint)?c.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,a=e.foreignKey,s=e.getRelation(),f=n.params[a];if(f===!1||!a||!s)return f===!1&&delete n.params[a],!1;if(delete n.params[a],c.utils.isObject(t)&&(i=t),i&&(f=f||e.getForeignKey(i)||(e.getLocalField(i)?c.utils.get(e.getLocalField(i),s.idAttribute):null)),f){var d=function(){delete n.endpoint;var e={};return c.utils.forOwn(n,function(t,n){e[n]=t}),c.utils._(e,s),o=u(r.getEndpoint(s,f,e),f,o),{v:!1}}();if("object"===("undefined"==typeof d?"undefined":l(d)))return d.v}}}),o},getPath:function(e,t,n,r){var i=this;r||(r={});var o=[c.utils.isUndefined(r.basePath)?c.utils.isUndefined(t.basePath)?i.basePath:t.basePath:r.basePath,i.getEndpoint(t,c.utils.isString(n)||c.utils.isNumber(n)||"create"===e?n:null,r)];return"find"!==e&&"update"!==e&&"destroy"!==e||o.push(n),u.apply(c.utils,o)},getParams:function(e){return e||(e={}),c.utils.isUndefined(e.params)?{}:c.utils.copy(e.params)},getSuffix:function(e,t){return t||(t={}),c.utils.isUndefined(t.suffix)?c.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),c.utils.reject(t))}var r=this,i=new Date;t||(t={});var o=e.data,u=e.cache,a=e.timeout;e=c.utils.copy(e,null,null,null,["data","cache","timeout"]),e=c.utils.deepMixIn(e,r.httpConfig),e.data=o,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 c.utils.resolve(r.beforeHTTP(e,t)).then(function(i){return e=i||e,y&&(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 c.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",c.utils.resolve(i[o](e,t,n,r)).then(function(u){return n=c.utils.isUndefined(u)?n:u,o=r.op="POST",i.dbg(o,e,t,n,r),i.HTTP(n,r)}).then(function(u){return o=r.op="afterPOST",c.utils.resolve(i[o](e,t,n,r,u)).then(function(e){return c.utils.isUndefined(e)?u: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",c.utils.resolve(i[o](e,t,n,r)).then(function(u){return n=c.utils.isUndefined(u)?n:u,o=r.op="PUT",i.dbg(o,e,t,n,r),i.HTTP(n,r)}).then(function(u){return o=r.op="afterPUT",c.utils.resolve(i[o](e,t,n,r,u)).then(function(e){return c.utils.isUndefined(e)?u:e})})},queryTransform:function(e,t,n){return n||(n={}),c.utils.isFunction(n.queryTransform)?n.queryTransform(e,t,n):c.utils.isFunction(e.queryTransform)?e.queryTransform(e,t,n):t},responseError:function(e,t,n){return c.utils.reject(e)},serialize:function(e,t,n){return n||(n={}),c.utils.isFunction(n.serialize)?n.serialize(e,t,n):c.utils.isFunction(e.serialize)?e.serialize(e,t,n):t},sum:function(e,t,n,r){var i=this;if(n||(n={}),r||(r={}),!c.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),c.utils.deepMixIn(r.params,n),r.params=i.queryTransform(e,r.params,r),g.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),g.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),c.utils.deepMixIn(r.params,n),r.params=i.queryTransform(e,r.params,r),r.suffix=i.getSuffix(e,r),g.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),g.updateMany.call(r,e,t,n)}}),f.addAction=function(e,t){if(!e||!c.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 c.utils.reject(e)},n[e]=function(n,r){var i=this;c.utils.isObject(n)&&(r=n),r=r||{};var o=i.getAdapter(t.adapter||i.defaultAdapter||"http"),a={};if(c.utils.fillIn(a,t),!r.hasOwnProperty("endpoint")&&a.endpoint&&(r.endpoint=a.endpoint),"function"==typeof r.getEndpoint)a.url=r.getEndpoint(i,r);else{var s=[r.basePath||i.basePath||o.basePath,o.getEndpoint(i,c.utils.isSorN(n)?n:null,r)];c.utils.isSorN(n)&&s.push(n),s.push(t.pathname||e),a.url=u.apply(null,s)}return a.method=a.method||"GET",a.mapper=i.name,c.utils.deepMixIn(a)(r),c.utils.resolve(a).then(r.request||t.request).then(function(e){return o.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}},f.addActions=function(e){return e||(e={}),function(e){return c.utils.forOwn(e,function(t,n){f.addAction(n,t)(e)}),e}},f.extend=c.utils.extend,f.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=f},function(t,n){t.exports=e},function(e,t,n){!function(e,t){t(n(1))}(this,function(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 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 u,a=e[Symbol.iterator]();!(r=(u=a.next()).done)&&(n.push(u.value),!t||n.length!==t);r=!0);}catch(e){i=!0,o=e}finally{try{!r&&a.return&&a.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()},u=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()},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};n.reserved=["orderBy","sort","limit","offset","skip","where"],n.Response=r,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: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 u=this,a=void 0;return n||(n={}),o||(o={}),a=o.op="beforeCount",t.utils.resolve(u[a](e,n,o)).then(function(){return a=o.op="count",u.dbg(a,e,n,o),t.utils.resolve(u._count(e,n,o))}).then(function(s){var f=i.slicedToArray(s,2),l=f[0],c=f[1];c||(c={});var d=new r(l,c,a);return d=u.respond(d,o),a=o.op="afterCount",t.utils.resolve(u[a](e,n,o,d)).then(function(e){return t.utils.isUndefined(e)?d:e})})},create:function(e,n,o){var u=this,a=void 0;return n||(n={}),o||(o={}),a=o.op="beforeCreate",t.utils.resolve(u[a](e,n,o)).then(function(r){return n=t.utils.isUndefined(r)?n:r,n=s(e,n),a=o.op="create",u.dbg(a,e,n,o),t.utils.resolve(u._create(e,n,o))}).then(function(s){var f=i.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,o),a=o.op="afterCreate",t.utils.resolve(u[a](e,n,o,d)).then(function(e){return t.utils.isUndefined(e)?d:e})})},createMany:function(e,n,o){var u=this,a=void 0;return n||(n={}),o||(o={}),a=o.op="beforeCreateMany",t.utils.resolve(u[a](e,n,o)).then(function(r){return n=t.utils.isUndefined(r)?n:r,n=n.map(function(t){return s(e,t)}),a=o.op="createMany",u.dbg(a,e,n,o),t.utils.resolve(u._createMany(e,n,o))}).then(function(s){var f=i.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,o),a=o.op="afterCreateMany",t.utils.resolve(u[a](e,n,o,d)).then(function(e){return t.utils.isUndefined(e)?d:e})})},destroy:function(e,n,o){var u=this,a=void 0;return o||(o={}),a=o.op="beforeDestroy",t.utils.resolve(u[a](e,n,o)).then(function(){return a=o.op="destroy",u.dbg(a,e,n,o),t.utils.resolve(u._destroy(e,n,o))}).then(function(s){var f=i.slicedToArray(s,2),l=f[0],c=f[1];c||(c={});var d=new r(l,c,"destroy");return d=u.respond(d,o),a=o.op="afterDestroy",t.utils.resolve(u[a](e,n,o,d)).then(function(e){return t.utils.isUndefined(e)?d:e})})},destroyAll:function(e,n,o){var u=this,a=void 0;return n||(n={}),o||(o={}),a=o.op="beforeDestroyAll",t.utils.resolve(u[a](e,n,o)).then(function(){return a=o.op="destroyAll",u.dbg(a,e,n,o),t.utils.resolve(u._destroyAll(e,n,o))}).then(function(s){var f=i.slicedToArray(s,2),l=f[0],c=f[1];c||(c={});var d=new r(l,c,"destroyAll");return d=u.respond(d,o),a=o.op="afterDestroyAll",t.utils.resolve(u[a](e,n,o,d)).then(function(e){return t.utils.isUndefined(e)?d:e})})},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),a(i).filter(function(e){return e})},makeHasManyForeignKeys:function(e,n,r){return t.utils.get(r,e.idAttribute)},loadHasMany:function(e,n,r,i){var o=this,u=!1;t.utils.isObject(r)&&!t.utils.isArray(r)&&(u=!0,r=[r]);var a=r.map(function(t){return o.makeHasManyForeignKey(e,n,t)}),s={where:{}},f=s.where[n.foreignKey]={};return u?f["=="]=a[0]:f.in=a.filter(function(e){return e}),o.findAll(n.getRelation(),s,i).then(function(i){r.forEach(function(r){var o=[];u?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 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:i.defineProperty({},f.idAttribute,{in:u.makeHasManyLocalKeys(e,n,s)})},o).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:i.defineProperty({},f.idAttribute,{in:a(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[f.idAttribute])&&i.push(e)}),n.setLocalField(r,i)}),e})}}();return"object"===("undefined"==typeof l?"undefined":i.typeof(l))?l.v:void 0},loadHasManyForeignKeys:function(e,n,r,o){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:i.defineProperty({},n.foreignKeys,{contains:u.makeHasManyForeignKeys(e,n,f)})},o).then(function(e){n.setLocalField(f,e)}):u.findAll(a,{where:i.defineProperty({},n.foreignKeys,{isectNotEmpty:r.map(function(t){return u.makeHasManyForeignKeys(e,n,t)})})},o).then(function(e){var i=n.foreignKeys;r.forEach(function(r){var o=[],u=t.utils.get(r,s);e.forEach(function(n){var r=t.utils.get(e,i)||[];-1!==r.indexOf(u)&&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])})})},makeBelongsToForeignKey:function(e,t,n){return t.getForeignKey(n)},loadBelongsTo:function(e,n,r,o){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:i.defineProperty({},a.idAttribute,{in:s})},o).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),o).then(function(e){n.setLocalField(t,e)})}}();return"object"===("undefined"==typeof f?"undefined":i.typeof(f))?f.v:void 0},find:function(e,n,o){var u=this,a=void 0,s=void 0;return o||(o={}),o.with||(o.with=[]),s=o.op="beforeFind",t.utils.resolve(u[s](e,n,o)).then(function(){return s=o.op="find",u.dbg(s,e,n,o),t.utils.resolve(u._find(e,n,o))}).then(function(n){var r=i.slicedToArray(n,1),s=r[0];if(s){a=s;var f=[];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=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 i=new r(a,{},"find");return i.found=a?1:0,i=u.respond(i,o),s=o.op="afterFind",t.utils.resolve(u[s](e,n,o,i)).then(function(e){return t.utils.isUndefined(e)?i:e})})},findAll:function(e,n,o){var u=this;o||(o={}),o.with||(o.with=[]);var a=[],s=void 0,f=o._activeWith;if(t.utils.isObject(f)){var l=f.query||{};f.replace?n=l:t.utils.deepFillIn(n,l)}return s=o.op="beforeFindAll",t.utils.resolve(u[s](e,n,o)).then(function(){return s=o.op="findAll",u.dbg(s,e,n,o),t.utils.resolve(u._findAll(e,n,o))}).then(function(n){var r=i.slicedToArray(n,1),s=r[0];s||(s=[]),a=s;var f=[];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=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 i=new r(a,{},"findAll");return i.found=a.length,i=u.respond(i,o),s=o.op="afterFindAll",t.utils.resolve(u[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])},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 u;(u=console).log.apply(u,[i].concat(n))}}},sum:function(e,n,o,u){var a=this,s=void 0;if(!t.utils.isString(n))throw new Error("field must be a string!");return o||(o={}),u||(u={}),s=u.op="beforeSum",t.utils.resolve(a[s](e,n,o,u)).then(function(){return s=u.op="sum",a.dbg(s,e,n,o,u),t.utils.resolve(a._sum(e,n,o,u))}).then(function(f){var l=i.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,o,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,o,u){var a=this;o||(o={}),u||(u={});var s=void 0;return s=u.op="beforeUpdate",t.utils.resolve(a[s](e,n,o,u)).then(function(r){return o=t.utils.isUndefined(r)?o:r,s=u.op="update",a.dbg(s,e,n,o,u),t.utils.resolve(a._update(e,n,o,u))}).then(function(f){var l=i.slicedToArray(f,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),s=u.op="afterUpdate",t.utils.resolve(a[s](e,n,o,u,p)).then(function(e){return t.utils.isUndefined(e)?p:e})})},updateAll:function(e,n,o,u){var a=this;n||(n={}),o||(o={}),u||(u={});var s=void 0;return s=u.op="beforeUpdateAll",t.utils.resolve(a[s](e,n,o,u)).then(function(r){return n=t.utils.isUndefined(r)?n:r,s=u.op="updateAll",a.dbg(s,e,n,o,u),t.utils.resolve(a._updateAll(e,n,o,u))}).then(function(f){var l=i.slicedToArray(f,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),s=u.op="afterUpdateAll",t.utils.resolve(a[s](e,n,o,u,p)).then(function(e){return t.utils.isUndefined(e)?p:e})})},updateMany:function(e,n,o){var u=this;n||(n=[]),o||(o={});var a=void 0,f=e.idAttribute;return n=n.filter(function(e){return t.utils.get(e,f)}),a=o.op="beforeUpdateMany",t.utils.resolve(u[a](e,n,o)).then(function(r){return n=t.utils.isUndefined(r)?n:r,n=n.map(function(t){return s(e,t)}),a=o.op="updateMany",u.dbg(a,e,n,o),t.utils.resolve(u._updateMany(e,n,o))}).then(function(s){var f=i.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,o),a=o.op="afterUpdateMany",t.utils.resolve(u[a](e,n,o,d)).then(function(e){return t.utils.isUndefined(e)?d:e})})}}),e.exports=n})},function(e,t,n){e.exports=n(4)},function(e,t,n){"use strict";function r(e){this.defaults=o.merge({},e),this.interceptors={request:new a,response:new a}}var i=n(5),o=n(6),u=n(7),a=n(16),s=n(17),f=n(18),l=n(19),c=n(12);r.prototype.request=function(e){"string"==typeof e&&(e=o.merge({url:arguments[0]},arguments[1])),e=o.merge(i,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=o.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),o.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(i),p=e.exports=l(r.prototype.request,d);p.create=function(e){return new r(e)},p.defaults=d.defaults,p.all=function(e){return Promise.all(e)},p.spread=n(20),p.interceptors=d.interceptors,o.forEach(["delete","get","head"],function(e){r.prototype[e]=function(t,n){return this.request(o.merge(n||{},{method:e,url:t}))},p[e]=l(r.prototype[e],d)}),o.forEach(["post","put","patch"],function(e){r.prototype[e]=function(t,n,r){return this.request(o.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),i=/^\)\]\}',?\n/,o={"Content-Type":"application/x-www-form-urlencoded"};e.exports={transformRequest:[function(e,t){return r.isFormData(e)?e:r.isArrayBuffer(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(i,"");try{e=JSON.parse(e)}catch(e){}}return e}],headers:{common:{Accept:"application/json, text/plain, */*"},patch:r.merge(o),post:r.merge(o),put:r.merge(o)},timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"}},function(e,t){"use strict";function n(e){return"[object Array]"===m.call(e)}function r(e){return"[object ArrayBuffer]"===m.call(e)}function i(e){return"[object FormData]"===m.call(e)}function o(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]"===m.call(e)}function c(e){return"[object File]"===m.call(e)}function d(e){return"[object Blob]"===m.call(e)}function p(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function h(){return"undefined"!=typeof window&&"undefined"!=typeof document&&"function"==typeof document.createElement}function y(e,t){if(null!==e&&"undefined"!=typeof e)if("object"==typeof e||n(e)||(e=[e]),n(e))for(var r=0,i=e.length;i>r;r++)t.call(null,e[r],r,e);else for(var o in e)e.hasOwnProperty(o)&&t.call(null,e[o],o,e)}function v(){function e(e,n){"object"==typeof t[n]&&"object"==typeof e?t[n]=v(t[n],e):t[n]=e}for(var t={},n=0,r=arguments.length;r>n;n++)y(arguments[n],e);return t}var m=Object.prototype.toString;e.exports={isArray:n,isArrayBuffer:r,isFormData:i,isArrayBufferView:o,isString:u,isNumber:a,isObject:f,isUndefined:s,isDate:l,isFile:c,isBlob:d,isStandardBrowserEnv:h,forEach:y,merge:v,trim:p}},function(e,t,n){(function(t){"use strict";e.exports=function(e){return new Promise(function(r,i){try{var o;"function"==typeof e.adapter?o=e.adapter:"undefined"!=typeof XMLHttpRequest?o=n(9):"undefined"!=typeof t&&(o=n(9)),"function"==typeof o&&o(r,i,e)}catch(e){i(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=200&&i.status<300||!("status"in d)&&i.responseText?e:t)(i),d=null}},d.onerror=function(){t(new Error("Network Error")),d=null},r.isStandardBrowserEnv()){var y=n(15),v=f.withCredentials||a(f.url)?y.read(f.xsrfCookieName):void 0;v&&(c[f.xsrfHeaderName]=v)}if("setRequestHeader"in d&&r.forEach(c,function(e,t){"undefined"==typeof l&&"content-type"===t.toLowerCase()?delete c[t]:d.setRequestHeader(t,e)}),f.withCredentials&&(d.withCredentials=!0),f.responseType)try{d.responseType=f.responseType}catch(e){if("json"!==d.responseType)throw e}r.isArrayBuffer(l)&&(l=new DataView(l)),d.send(l)}},function(e,t,n){"use strict";function r(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,"]")}var i=n(6);e.exports=function(e,t,n){if(!t)return e;var o;if(n)o=n(t);else{var u=[];i.forEach(t,function(e,t){null!==e&&"undefined"!=typeof e&&(i.isArray(e)&&(t+="[]"),i.isArray(e)||(e=[e]),i.forEach(e,function(e){i.isDate(e)?e=e.toISOString():i.isObject(e)&&(e=JSON.stringify(e)),u.push(r(t)+"="+r(e))}))}),o=u.join("&")}return o&&(e+=(-1===e.indexOf("?")?"?":"&")+o),e}},function(e,t,n){"use strict";var r=n(6);e.exports=function(e){var t,n,i,o={};return e?(r.forEach(e.split("\n"),function(e){i=e.indexOf(":"),t=r.trim(e.substr(0,i)).toLowerCase(),n=r.trim(e.substr(i+1)),t&&(o[t]=o[t]?o[t]+", "+n:n)}),o):o}},function(e,t,n){"use strict";var r=n(6);e.exports=function(e,t,n){return r.forEach(n,function(n){e=n(e,t)}),e}},function(e,t,n){"use strict";var r=n(6);e.exports=r.isStandardBrowserEnv()?function(){ -function e(e){var t=e;return n&&(i.setAttribute("href",t),t=i.href),i.setAttribute("href",t),{href:i.href,protocol:i.protocol?i.protocol.replace(/:$/,""):"",host:i.host,search:i.search?i.search.replace(/^\?/,""):"",hash:i.hash?i.hash.replace(/^#/,""):"",hostname:i.hostname,port:i.port,pathname:"/"===i.pathname.charAt(0)?i.pathname:"/"+i.pathname}}var t,n=/(msie|trident)/i.test(navigator.userAgent),i=document.createElement("a");return t=e(window.location.href),function(n){var i=r.isString(n)?e(n):n;return i.protocol===t.protocol&&i.host===t.host}}():function(){return function(){return!0}}()},function(e,t){"use strict";function n(e){this.message=e}function r(e){for(var t,r,o=String(e),u="",a=0,s=i;o.charAt(0|a)||(s="=",a%1);u+=s.charAt(63&t>>8-a%1*8)){if(r=o.charCodeAt(a+=.75),r>255)throw new n("INVALID_CHARACTER_ERR: DOM Exception 5");t=t<<8|r}return u}var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";n.prototype=new Error,n.prototype.code=5,n.prototype.name="InvalidCharacterError",e.exports=r},function(e,t,n){"use strict";var r=n(6);e.exports=r.isStandardBrowserEnv()?function(){return{write:function(e,t,n,i,o,u){var a=[];a.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),r.isString(i)&&a.push("path="+i),r.isString(o)&&a.push("domain="+o),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 i=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){i.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;rn;n++)t[n]=arguments[n];var r=o(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 s(e,t){if(!t)return e;var n=[];return c.utils.forOwn(t,function(e,t){null!==e&&"undefined"!=typeof e&&(c.utils.isArray(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():c.utils.isObject(e)&&(e=c.utils.toJson(e)),n.push(a(t)+"="+a(e))}))}),n.length>0&&(e+=(-1===e.indexOf("?")?"?":"&")+n.join("&")),e}function f(e){var t=this;e||(e={}),c.utils.fillIn(e,b),p.default.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},c=n(1),d=n(2),p=r(d),h=n(3),y=!1;try{y=window&&window.fetch}catch(e){}var v=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var i=n[n.length-1];return e.dbg.apply(e,[i.op].concat(n)),c.utils.resolve()},m=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var i=n[n.length-2];return e.dbg.apply(e,[i.op].concat(n)),c.utils.resolve()},g=p.default.prototype,b={basePath:"",forceTrailingSlash:!1,http:h,httpConfig:{},suffix:"",useFetch:!1};f.prototype=Object.create(p.default.prototype,{constructor:{value:f,enumerable:!1,writable:!0,configurable:!0}}),Object.defineProperty(f,"__super__",{configurable:!0,value:p.default}),c.utils.addHiddenPropsToTarget(f.prototype,{afterDEL:m,afterGET:m,afterHTTP:m,afterPOST:m,afterPUT:m,beforeDEL:v,beforeGET:v,beforeHTTP:v,beforePOST:v,beforePUT:v,_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),c.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),g.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),g.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),g.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",c.utils.resolve(r[i](e,t,n)).then(function(o){return t=c.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",c.utils.resolve(r[i](e,t,n,o)).then(function(e){return c.utils.isUndefined(e)?o:e})})},deserialize:function(e,t,n){return n||(n={}),c.utils.isFunction(n.deserialize)?n.deserialize(e,t,n):c.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),g.destroy.call(r,e,t,n)},destroyAll:function(e,t,n){var r=this;return t||(t={}),n||(n={}),n.params=r.getParams(n),c.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),g.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=c.utils.toJson(e.data)),fetch(new Request(s(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),g.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),c.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),g.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",c.utils.resolve(r[i](e,t,n)).then(function(o){return t=c.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",c.utils.resolve(r[i](e,t,n,o)).then(function(e){return c.utils.isUndefined(e)?o:e})})},getEndpoint:function(e,t,n){var r=this;n||(n={}),n.params=c.utils.isUndefined(n.params)?{}:n.params;var i=e.relationList||[],o=c.utils.isUndefined(n.endpoint)?c.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,a=e.foreignKey,s=e.getRelation(),f=n.params[a];if(f===!1||!a||!s)return f===!1&&delete n.params[a],!1;if(delete n.params[a],c.utils.isObject(t)&&(i=t),i&&(f=f||e.getForeignKey(i)||(e.getLocalField(i)?c.utils.get(e.getLocalField(i),s.idAttribute):null)),f){var d=function(){delete n.endpoint;var e={};return c.utils.forOwn(n,function(t,n){e[n]=t}),c.utils._(e,s),o=u(r.getEndpoint(s,f,e),f,o),{v:!1}}();if("object"===("undefined"==typeof d?"undefined":l(d)))return d.v}}}),o},getPath:function(e,t,n,r){var i=this;r||(r={});var o=[c.utils.isUndefined(r.basePath)?c.utils.isUndefined(t.basePath)?i.basePath:t.basePath:r.basePath,i.getEndpoint(t,c.utils.isString(n)||c.utils.isNumber(n)||"create"===e?n:null,r)];return"find"!==e&&"update"!==e&&"destroy"!==e||o.push(n),u.apply(c.utils,o)},getParams:function(e){return e||(e={}),c.utils.isUndefined(e.params)?{}:c.utils.copy(e.params)},getSuffix:function(e,t){return t||(t={}),c.utils.isUndefined(t.suffix)?c.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),c.utils.reject(t))}var r=this,i=new Date;t||(t={});var o=e.data,u=e.cache,a=e.timeout;e=c.utils.copy(e,null,null,null,["data","cache","timeout"]),e=c.utils.deepMixIn(e,r.httpConfig),e.data=o,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 c.utils.resolve(r.beforeHTTP(e,t)).then(function(i){return e=i||e,y&&(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 c.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",c.utils.resolve(i[o](e,t,n,r)).then(function(u){return n=c.utils.isUndefined(u)?n:u,o=r.op="POST",i.dbg(o,e,t,n,r),i.HTTP(n,r)}).then(function(u){return o=r.op="afterPOST",c.utils.resolve(i[o](e,t,n,r,u)).then(function(e){return c.utils.isUndefined(e)?u: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",c.utils.resolve(i[o](e,t,n,r)).then(function(u){return n=c.utils.isUndefined(u)?n:u,o=r.op="PUT",i.dbg(o,e,t,n,r),i.HTTP(n,r)}).then(function(u){return o=r.op="afterPUT",c.utils.resolve(i[o](e,t,n,r,u)).then(function(e){return c.utils.isUndefined(e)?u:e})})},queryTransform:function(e,t,n){return n||(n={}),c.utils.isFunction(n.queryTransform)?n.queryTransform(e,t,n):c.utils.isFunction(e.queryTransform)?e.queryTransform(e,t,n):t},responseError:function(e,t,n){return c.utils.reject(e)},serialize:function(e,t,n){return n||(n={}),c.utils.isFunction(n.serialize)?n.serialize(e,t,n):c.utils.isFunction(e.serialize)?e.serialize(e,t,n):t},sum:function(e,t,n,r){var i=this;if(n||(n={}),r||(r={}),!c.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),c.utils.deepMixIn(r.params,n),r.params=i.queryTransform(e,r.params,r),g.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),g.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),c.utils.deepMixIn(r.params,n),r.params=i.queryTransform(e,r.params,r),r.suffix=i.getSuffix(e,r),g.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),g.updateMany.call(r,e,t,n)}}),f.addAction=function(e,t){if(!e||!c.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 c.utils.reject(e)},n[e]=function(n,r){var i=this;c.utils.isObject(n)&&(r=n),r=r||{};var o=i.getAdapter(t.adapter||i.defaultAdapter||"http"),a={};if(c.utils.fillIn(a,t),!r.hasOwnProperty("endpoint")&&a.endpoint&&(r.endpoint=a.endpoint),"function"==typeof r.getEndpoint)a.url=r.getEndpoint(i,r);else{var s=[r.basePath||i.basePath||o.basePath,o.getEndpoint(i,c.utils.isSorN(n)?n:null,r)];c.utils.isSorN(n)&&s.push(n),s.push(t.pathname||e),a.url=u.apply(null,s)}return a.method=a.method||"GET",a.mapper=i.name,c.utils.deepMixIn(a)(r),c.utils.resolve(a).then(r.request||t.request).then(function(e){return o.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}},f.addActions=function(e){return e||(e={}),function(e){return c.utils.forOwn(e,function(t,n){f.addAction(n,t)(e)}),e}},f.extend=c.utils.extend,f.version={beta:2,full:"3.0.0-beta.2",major:3,minor:0,patch:0},e.exports=f},function(t,n){t.exports=e},function(e,t,n){!function(e,t){t(n(1))}(this,function(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 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 u,a=e[Symbol.iterator]();!(r=(u=a.next()).done)&&(n.push(u.value),!t||n.length!==t);r=!0);}catch(e){i=!0,o=e}finally{try{!r&&a.return&&a.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()},u=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()},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};n.reserved=["orderBy","sort","limit","offset","skip","where"],n.Response=r,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: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 u=this,a=void 0;return n||(n={}),o||(o={}),a=o.op="beforeCount",t.utils.resolve(u[a](e,n,o)).then(function(){return a=o.op="count",u.dbg(a,e,n,o),t.utils.resolve(u._count(e,n,o))}).then(function(s){var f=i.slicedToArray(s,2),l=f[0],c=f[1];c||(c={});var d=new r(l,c,a);return d=u.respond(d,o),a=o.op="afterCount",t.utils.resolve(u[a](e,n,o,d)).then(function(e){return t.utils.isUndefined(e)?d:e})})},create:function(e,n,o){var u=this,a=void 0;return n||(n={}),o||(o={}),a=o.op="beforeCreate",t.utils.resolve(u[a](e,n,o)).then(function(r){return n=t.utils.isUndefined(r)?n:r,n=s(e,n),a=o.op="create",u.dbg(a,e,n,o),t.utils.resolve(u._create(e,n,o))}).then(function(s){var f=i.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,o),a=o.op="afterCreate",t.utils.resolve(u[a](e,n,o,d)).then(function(e){return t.utils.isUndefined(e)?d:e})})},createMany:function(e,n,o){var u=this,a=void 0;return n||(n={}),o||(o={}),a=o.op="beforeCreateMany",t.utils.resolve(u[a](e,n,o)).then(function(r){return n=t.utils.isUndefined(r)?n:r,n=n.map(function(t){return s(e,t)}),a=o.op="createMany",u.dbg(a,e,n,o),t.utils.resolve(u._createMany(e,n,o))}).then(function(s){var f=i.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,o),a=o.op="afterCreateMany",t.utils.resolve(u[a](e,n,o,d)).then(function(e){return t.utils.isUndefined(e)?d:e})})},destroy:function(e,n,o){var u=this,a=void 0;return o||(o={}),a=o.op="beforeDestroy",t.utils.resolve(u[a](e,n,o)).then(function(){return a=o.op="destroy",u.dbg(a,e,n,o),t.utils.resolve(u._destroy(e,n,o))}).then(function(s){var f=i.slicedToArray(s,2),l=f[0],c=f[1];c||(c={});var d=new r(l,c,"destroy");return d=u.respond(d,o),a=o.op="afterDestroy",t.utils.resolve(u[a](e,n,o,d)).then(function(e){return t.utils.isUndefined(e)?d:e})})},destroyAll:function(e,n,o){var u=this,a=void 0;return n||(n={}),o||(o={}),a=o.op="beforeDestroyAll",t.utils.resolve(u[a](e,n,o)).then(function(){return a=o.op="destroyAll",u.dbg(a,e,n,o),t.utils.resolve(u._destroyAll(e,n,o))}).then(function(s){var f=i.slicedToArray(s,2),l=f[0],c=f[1];c||(c={});var d=new r(l,c,"destroyAll");return d=u.respond(d,o),a=o.op="afterDestroyAll",t.utils.resolve(u[a](e,n,o,d)).then(function(e){return t.utils.isUndefined(e)?d:e})})},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),a(i).filter(function(e){return e})},makeHasManyForeignKeys:function(e,n,r){return t.utils.get(r,e.idAttribute)},loadHasMany:function(e,n,r,i){var o=this,u=!1;t.utils.isObject(r)&&!t.utils.isArray(r)&&(u=!0,r=[r]);var a=r.map(function(t){return o.makeHasManyForeignKey(e,n,t)}),s={where:{}},f=s.where[n.foreignKey]={};return u?f["=="]=a[0]:f.in=a.filter(function(e){return e}),o.findAll(n.getRelation(),s,i).then(function(i){r.forEach(function(r){var o=[];u?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 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:i.defineProperty({},f.idAttribute,{in:u.makeHasManyLocalKeys(e,n,s)})},o).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:i.defineProperty({},f.idAttribute,{in:a(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[f.idAttribute])&&i.push(e)}),n.setLocalField(r,i)}),e})}}();return"object"===("undefined"==typeof l?"undefined":i.typeof(l))?l.v:void 0},loadHasManyForeignKeys:function(e,n,r,o){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:i.defineProperty({},n.foreignKeys,{contains:u.makeHasManyForeignKeys(e,n,f)})},o).then(function(e){n.setLocalField(f,e)}):u.findAll(a,{where:i.defineProperty({},n.foreignKeys,{isectNotEmpty:r.map(function(t){return u.makeHasManyForeignKeys(e,n,t)})})},o).then(function(e){var i=n.foreignKeys;r.forEach(function(r){var o=[],u=t.utils.get(r,s);e.forEach(function(n){var r=t.utils.get(e,i)||[];-1!==r.indexOf(u)&&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])})})},makeBelongsToForeignKey:function(e,t,n){return t.getForeignKey(n)},loadBelongsTo:function(e,n,r,o){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:i.defineProperty({},a.idAttribute,{in:s})},o).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),o).then(function(e){n.setLocalField(t,e)})}}();return"object"===("undefined"==typeof f?"undefined":i.typeof(f))?f.v:void 0},find:function(e,n,o){var u=this,a=void 0,s=void 0;return o||(o={}),o.with||(o.with=[]),s=o.op="beforeFind",t.utils.resolve(u[s](e,n,o)).then(function(){return s=o.op="find",u.dbg(s,e,n,o),t.utils.resolve(u._find(e,n,o))}).then(function(n){var r=i.slicedToArray(n,1),s=r[0];if(s){a=s;var f=[];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=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 i=new r(a,{},"find");return i.found=a?1:0,i=u.respond(i,o),s=o.op="afterFind",t.utils.resolve(u[s](e,n,o,i)).then(function(e){return t.utils.isUndefined(e)?i:e})})},findAll:function(e,n,o){var u=this;o||(o={}),o.with||(o.with=[]);var a=[],s=void 0,f=o._activeWith;if(t.utils.isObject(f)){var l=f.query||{};f.replace?n=l:t.utils.deepFillIn(n,l)}return s=o.op="beforeFindAll",t.utils.resolve(u[s](e,n,o)).then(function(){return s=o.op="findAll",u.dbg(s,e,n,o),t.utils.resolve(u._findAll(e,n,o))}).then(function(n){var r=i.slicedToArray(n,1),s=r[0];s||(s=[]),a=s;var f=[];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=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 i=new r(a,{},"findAll");return i.found=a.length,i=u.respond(i,o),s=o.op="afterFindAll",t.utils.resolve(u[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])},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 u;(u=console).log.apply(u,[i].concat(n))}}},sum:function(e,n,o,u){var a=this,s=void 0;if(!t.utils.isString(n))throw new Error("field must be a string!");return o||(o={}),u||(u={}),s=u.op="beforeSum",t.utils.resolve(a[s](e,n,o,u)).then(function(){return s=u.op="sum",a.dbg(s,e,n,o,u),t.utils.resolve(a._sum(e,n,o,u))}).then(function(f){var l=i.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,o,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,o,u){var a=this;o||(o={}),u||(u={});var s=void 0;return s=u.op="beforeUpdate",t.utils.resolve(a[s](e,n,o,u)).then(function(r){return o=t.utils.isUndefined(r)?o:r,s=u.op="update",a.dbg(s,e,n,o,u),t.utils.resolve(a._update(e,n,o,u))}).then(function(f){var l=i.slicedToArray(f,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),s=u.op="afterUpdate",t.utils.resolve(a[s](e,n,o,u,p)).then(function(e){return t.utils.isUndefined(e)?p:e})})},updateAll:function(e,n,o,u){var a=this;n||(n={}),o||(o={}),u||(u={});var s=void 0;return s=u.op="beforeUpdateAll",t.utils.resolve(a[s](e,n,o,u)).then(function(r){return n=t.utils.isUndefined(r)?n:r,s=u.op="updateAll",a.dbg(s,e,n,o,u),t.utils.resolve(a._updateAll(e,n,o,u))}).then(function(f){var l=i.slicedToArray(f,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),s=u.op="afterUpdateAll",t.utils.resolve(a[s](e,n,o,u,p)).then(function(e){return t.utils.isUndefined(e)?p:e})})},updateMany:function(e,n,o){var u=this;n||(n=[]),o||(o={});var a=void 0,f=e.idAttribute;return n=n.filter(function(e){return t.utils.get(e,f)}),a=o.op="beforeUpdateMany",t.utils.resolve(u[a](e,n,o)).then(function(r){return n=t.utils.isUndefined(r)?n:r,n=n.map(function(t){return s(e,t)}),a=o.op="updateMany",u.dbg(a,e,n,o),t.utils.resolve(u._updateMany(e,n,o))}).then(function(s){var f=i.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,o),a=o.op="afterUpdateMany",t.utils.resolve(u[a](e,n,o,d)).then(function(e){return t.utils.isUndefined(e)?d:e})})}}),e.exports=n})},function(e,t,n){e.exports=n(4)},function(e,t,n){"use strict";function r(e){this.defaults=o.merge({},e),this.interceptors={request:new a,response:new a}}var i=n(5),o=n(6),u=n(7),a=n(16),s=n(17),f=n(18),l=n(19),c=n(12);r.prototype.request=function(e){"string"==typeof e&&(e=o.merge({url:arguments[0]},arguments[1])),e=o.merge(i,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=o.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),o.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(i),p=e.exports=l(r.prototype.request,d);p.create=function(e){return new r(e)},p.defaults=d.defaults,p.all=function(e){return Promise.all(e)},p.spread=n(20),p.interceptors=d.interceptors,o.forEach(["delete","get","head"],function(e){r.prototype[e]=function(t,n){return this.request(o.merge(n||{},{method:e,url:t}))},p[e]=l(r.prototype[e],d)}),o.forEach(["post","put","patch"],function(e){r.prototype[e]=function(t,n,r){return this.request(o.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),i=/^\)\]\}',?\n/,o={"Content-Type":"application/x-www-form-urlencoded"};e.exports={transformRequest:[function(e,t){return r.isFormData(e)?e:r.isArrayBuffer(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(i,"");try{e=JSON.parse(e)}catch(e){}}return e}],headers:{common:{Accept:"application/json, text/plain, */*"},patch:r.merge(o),post:r.merge(o),put:r.merge(o)},timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"}},function(e,t){"use strict";function n(e){return"[object Array]"===m.call(e)}function r(e){return"[object ArrayBuffer]"===m.call(e)}function i(e){return"[object FormData]"===m.call(e)}function o(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]"===m.call(e)}function c(e){return"[object File]"===m.call(e)}function d(e){return"[object Blob]"===m.call(e)}function p(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function h(){return"undefined"!=typeof window&&"undefined"!=typeof document&&"function"==typeof document.createElement}function y(e,t){if(null!==e&&"undefined"!=typeof e)if("object"==typeof e||n(e)||(e=[e]),n(e))for(var r=0,i=e.length;i>r;r++)t.call(null,e[r],r,e);else for(var o in e)e.hasOwnProperty(o)&&t.call(null,e[o],o,e)}function v(){function e(e,n){"object"==typeof t[n]&&"object"==typeof e?t[n]=v(t[n],e):t[n]=e}for(var t={},n=0,r=arguments.length;r>n;n++)y(arguments[n],e);return t}var m=Object.prototype.toString;e.exports={isArray:n,isArrayBuffer:r,isFormData:i,isArrayBufferView:o,isString:u,isNumber:a,isObject:f,isUndefined:s,isDate:l,isFile:c,isBlob:d,isStandardBrowserEnv:h,forEach:y,merge:v,trim:p}},function(e,t,n){(function(t){"use strict";e.exports=function(e){return new Promise(function(r,i){try{var o;"function"==typeof e.adapter?o=e.adapter:"undefined"!=typeof XMLHttpRequest?o=n(9):"undefined"!=typeof t&&(o=n(9)),"function"==typeof o&&o(r,i,e)}catch(e){i(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=200&&i.status<300||!("status"in d)&&i.responseText?e:t)(i),d=null}},d.onerror=function(){t(new Error("Network Error")),d=null},r.isStandardBrowserEnv()){var y=n(15),v=f.withCredentials||a(f.url)?y.read(f.xsrfCookieName):void 0;v&&(c[f.xsrfHeaderName]=v)}if("setRequestHeader"in d&&r.forEach(c,function(e,t){"undefined"==typeof l&&"content-type"===t.toLowerCase()?delete c[t]:d.setRequestHeader(t,e)}),f.withCredentials&&(d.withCredentials=!0),f.responseType)try{d.responseType=f.responseType}catch(e){if("json"!==d.responseType)throw e}r.isArrayBuffer(l)&&(l=new DataView(l)),d.send(l)}},function(e,t,n){"use strict";function r(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,"]")}var i=n(6);e.exports=function(e,t,n){if(!t)return e;var o;if(n)o=n(t);else{var u=[];i.forEach(t,function(e,t){null!==e&&"undefined"!=typeof e&&(i.isArray(e)&&(t+="[]"),i.isArray(e)||(e=[e]),i.forEach(e,function(e){i.isDate(e)?e=e.toISOString():i.isObject(e)&&(e=JSON.stringify(e)),u.push(r(t)+"="+r(e))}))}),o=u.join("&")}return o&&(e+=(-1===e.indexOf("?")?"?":"&")+o),e}},function(e,t,n){"use strict";var r=n(6);e.exports=function(e){var t,n,i,o={};return e?(r.forEach(e.split("\n"),function(e){i=e.indexOf(":"),t=r.trim(e.substr(0,i)).toLowerCase(),n=r.trim(e.substr(i+1)),t&&(o[t]=o[t]?o[t]+", "+n:n)}),o):o}},function(e,t,n){"use strict";var r=n(6);e.exports=function(e,t,n){return r.forEach(n,function(n){e=n(e,t)}),e}},function(e,t,n){"use strict";var r=n(6);e.exports=r.isStandardBrowserEnv()?function(){function e(e){var t=e;return n&&(i.setAttribute("href",t),t=i.href),i.setAttribute("href",t), +{href:i.href,protocol:i.protocol?i.protocol.replace(/:$/,""):"",host:i.host,search:i.search?i.search.replace(/^\?/,""):"",hash:i.hash?i.hash.replace(/^#/,""):"",hostname:i.hostname,port:i.port,pathname:"/"===i.pathname.charAt(0)?i.pathname:"/"+i.pathname}}var t,n=/(msie|trident)/i.test(navigator.userAgent),i=document.createElement("a");return t=e(window.location.href),function(n){var i=r.isString(n)?e(n):n;return i.protocol===t.protocol&&i.host===t.host}}():function(){return function(){return!0}}()},function(e,t){"use strict";function n(e){this.message=e}function r(e){for(var t,r,o=String(e),u="",a=0,s=i;o.charAt(0|a)||(s="=",a%1);u+=s.charAt(63&t>>8-a%1*8)){if(r=o.charCodeAt(a+=.75),r>255)throw new n("INVALID_CHARACTER_ERR: DOM Exception 5");t=t<<8|r}return u}var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";n.prototype=new Error,n.prototype.code=5,n.prototype.name="InvalidCharacterError",e.exports=r},function(e,t,n){"use strict";var r=n(6);e.exports=r.isStandardBrowserEnv()?function(){return{write:function(e,t,n,i,o,u){var a=[];a.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),r.isString(i)&&a.push("path="+i),r.isString(o)&&a.push("domain="+o),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 i=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){i.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 -# The email address is not required for organizations. -InternalFX -Ivan Voznyakovsky -Jason Dobry -Josh Drake -RobertHerhold -Tomás Fox diff --git a/fetch/CONTRIBUTORS b/fetch/CONTRIBUTORS deleted file mode 100644 index 5f11066..0000000 --- a/fetch/CONTRIBUTORS +++ /dev/null @@ -1,12 +0,0 @@ -# People who have contributed to the js-data-http project. -# -# This file is controlled by scripts/authors.js -# -# Names should be added to this file as: -# [commit count] Name - 1 InternalFX - 1 Ivan Voznyakovsky - 69 Jason Dobry - 1 Josh Drake - 1 RobertHerhold - 3 Tomás Fox diff --git a/fetch/LICENSE b/fetch/LICENSE index 73d2777..7ff3781 100644 --- a/fetch/LICENSE +++ b/fetch/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2014-2016 Jason Dobry +Copyright (c) 2014-2016 js-data-http project authors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/fetch/dist/js-data-fetch.js b/fetch/dist/js-data-fetch.js index 732fab8..0eb34bb 100644 --- a/fetch/dist/js-data-fetch.js +++ b/fetch/dist/js-data-fetch.js @@ -1,3 +1,11 @@ +/*! +* js-data-fetch +* @version 3.0.0-beta.2 - Homepage +* @copyright (c) 2014-2016 js-data-http project authors +* @license MIT +* +* @overview HTTP adapter for js-data that uses the fetch API. +*/ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(require("js-data"), require("undefined")); @@ -1293,13 +1301,12 @@ return /******/ (function(modules) { // webpackBootstrap * otherwise `false` if the current version is not beta. */ HttpAdapter.version = { - full: '<%= pkg.version %>', - major: parseInt('<%= major %>', 10), - minor: parseInt('<%= minor %>', 10), - patch: parseInt('<%= patch %>', 10), - alpha: true ? '<%= alpha %>' : false, - beta: true ? '<%= beta %>' : false - }; + beta: 2, + full: '3.0.0-beta.2', + major: 3, + minor: 0, + patch: 0 +}; /** * Registered as `js-data-http` in NPM and Bower. The build of `js-data-http` diff --git a/fetch/dist/js-data-fetch.js.map b/fetch/dist/js-data-fetch.js.map index 5312d0f..6710742 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 15384622f1b482df8fe1","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":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;;;ACpCA;;AACA;;;;;;;AAFA,KAAM,QAAQ,oBAAQ,CAAR,CAAR;;;AAIN,KAAI,WAAW,KAAX;;AAEJ,KAAI;AACF,cAAW,UAAU,OAAO,KAAP,CADnB;EAAJ,CAEE,OAAO,CAAP,EAAU,EAAV;;AAEF,KAAM,OAAO,SAAP,IAAO,GAAmB;AAC9B,OAAM,OAAO,IAAP,CADwB;;qCAAN;;IAAM;;AAE9B,OAAM,OAAO,KAAK,KAAK,MAAL,GAAc,CAAd,CAAZ,CAFwB;AAG9B,QAAK,GAAL,cAAS,KAAK,EAAL,SAAY,KAArB,EAH8B;AAI9B,UAAO,cAAM,OAAN,EAAP,CAJ8B;EAAnB;;AAOb,KAAM,QAAQ,SAAR,KAAQ,GAAmB;AAC/B,OAAM,OAAO,IAAP,CADyB;;sCAAN;;IAAM;;AAE/B,OAAM,OAAO,KAAK,KAAK,MAAL,GAAc,CAAd,CAAZ,CAFyB;AAG/B,QAAK,GAAL,cAAS,KAAK,EAAL,SAAY,KAArB,EAH+B;AAI/B,UAAO,cAAM,OAAN,EAAP,CAJ+B;EAAnB;;AAOd,UAAS,aAAT,CAAwB,KAAxB,EAA+B;AAC7B,UAAQ,SAAS,IAAT,IAAiB,UAAU,EAAV,CADI;EAA/B;AAGA,UAAS,IAAT,CAAe,KAAf,EAAsB,SAAtB,EAAiC;AAC/B,iBAAc,YAAY,EAAZ,CAAd,CAD+B;AAE/B,UAAO,MAAM,MAAN,CAAa,aAAb,EAA4B,IAA5B,CAAiC,SAAjC,CAAP,CAF+B;EAAjC;AAIA,UAAS,QAAT,GAA4B;sCAAN;;IAAM;;AAC1B,OAAI,SAAS,KAAK,IAAL,EAAW,GAAX,CAAT,CADsB;AAE1B,UAAO,OAAO,OAAP,CAAe,mBAAf,EAAoC,KAApC,CAAP,CAF0B;EAA5B;;AAKA,UAAS,MAAT,CAAiB,GAAjB,EAAsB;AACpB,UAAO,mBAAmB,GAAnB,EACJ,OADI,CACI,OADJ,EACa,GADb,EAEJ,OAFI,CAEI,OAFJ,EAEa,GAFb,EAGJ,OAHI,CAGI,MAHJ,EAGY,GAHZ,EAIJ,OAJI,CAII,OAJJ,EAIa,GAJb,EAKJ,OALI,CAKI,MALJ,EAKY,GALZ,EAMJ,OANI,CAMI,OANJ,EAMa,GANb,EAOJ,OAPI,CAOI,OAPJ,EAOa,GAPb,CAAP,CADoB;EAAtB;;AAWA,UAAS,QAAT,CAAmB,GAAnB,EAAwB,MAAxB,EAAgC;AAC9B,OAAI,CAAC,MAAD,EAAS;AACX,YAAO,GAAP,CADW;IAAb;;AAIA,OAAM,QAAQ,EAAR,CALwB;;AAO9B,iBAAM,MAAN,CAAa,MAAb,EAAqB,UAAU,GAAV,EAAe,GAAf,EAAoB;AACvC,SAAI,QAAQ,IAAR,IAAgB,OAAO,GAAP,KAAe,WAAf,EAA4B;AAC9C,cAD8C;MAAhD;AAGA,SAAI,CAAC,cAAM,OAAN,CAAc,GAAd,CAAD,EAAqB;AACvB,aAAM,CAAC,GAAD,CAAN,CADuB;MAAzB;;AAIA,SAAI,OAAJ,CAAY,UAAU,CAAV,EAAa;AACvB,WAAI,OAAO,QAAP,CAAgB,IAAhB,CAAqB,CAArB,MAA4B,eAA5B,EAA6C;AAC/C,aAAI,EAAE,WAAF,EAAJ,CAD+C;QAAjD,MAEO,IAAI,cAAM,QAAN,CAAe,CAAf,CAAJ,EAAuB;AAC5B,aAAI,cAAM,MAAN,CAAa,CAAb,CAAJ,CAD4B;QAAvB;AAGP,aAAM,IAAN,CAAc,OAAO,GAAP,UAAe,OAAO,CAAP,CAA7B,EANuB;MAAb,CAAZ,CARuC;IAApB,CAArB,CAP8B;;AAyB9B,OAAI,MAAM,MAAN,GAAe,CAAf,EAAkB;AACpB,YAAO,CAAC,IAAI,OAAJ,CAAY,GAAZ,MAAqB,CAAC,CAAD,GAAK,GAA1B,GAAgC,GAAhC,CAAD,GAAwC,MAAM,IAAN,CAAW,GAAX,CAAxC,CADa;IAAtB;;AAIA,UAAO,GAAP,CA7B8B;EAAhC;;AAgCA,KAAM,YAAY,wBAAQ,SAAR;;AAElB,KAAM,WAAW;;;;;;AAMf,aAAU,EAAV;;;;;;;AAOA,uBAAoB,KAApB;;;;;;AAMA,SAAM,KAAN;;;;;;AAMA,eAAY,EAAZ;;;;;;AAMA,WAAQ,EAAR;;;;;;;AAOA,aAAU,KAAV;EAtCI;;;;;;;;;;;;;;;AAsDN,UAAS,WAAT,CAAsB,IAAtB,EAA4B;AAC1B,OAAM,OAAO,IAAP,CADoB;AAE1B,YAAS,OAAO,EAAP,CAAT,CAF0B;AAG1B,iBAAM,MAAN,CAAa,IAAb,EAAmB,QAAnB,EAH0B;AAI1B,2BAAQ,IAAR,CAAa,IAAb,EAAmB,IAAnB,EAJ0B;EAA5B;;;AAQA,aAAY,SAAZ,GAAwB,OAAO,MAAP,CAAc,wBAAQ,SAAR,EAAmB;AACvD,gBAAa;AACX,YAAO,WAAP;AACA,iBAAY,KAAZ;AACA,eAAU,IAAV;AACA,mBAAc,IAAd;IAJF;EADsB,CAAxB;;AASA,QAAO,cAAP,CAAsB,WAAtB,EAAmC,WAAnC,EAAgD;AAC9C,iBAAc,IAAd;AACA,iCAF8C;EAAhD;;AAKA,eAAM,sBAAN,CAA6B,YAAY,SAAZ,EAAuB;;;;;;;;;AASlD,aAAU,KAAV;;;;;;;;;;AAUA,aAAU,KAAV;;;;;;;;;AASA,cAAW,KAAX;;;;;;;;;;;AAWA,cAAW,KAAX;;;;;;;;;;;AAWA,aAAU,KAAV;;;;;;;;;AASA,cAAW,IAAX;;;;;;;;;AASA,cAAW,IAAX;;;;;;;;AAQA,eAAY,IAAZ;;;;;;;;;;AAUA,eAAY,IAAZ;;;;;;;;;;AAUA,cAAW,IAAX;;AAEA,2BAAQ,QAAQ,OAAO,MAAM;AAC3B,SAAM,OAAO,IAAP,CADqB;AAE3B,YAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,OAAb,EAAsB,MAAtB,EAA8B,KAAK,MAAL,EAAa,IAA3C,CADK,EAEL,IAFK,EAGL,IAHK,CAGA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAHP,CAF2B;IAlGqB;AA4GlD,6BAAS,QAAQ,OAAO,MAAM;AAC5B,SAAM,OAAO,IAAP,CADsB;AAE5B,YAAO,KAAK,IAAL,CACL,KAAK,OAAL,CAAa,QAAb,EAAuB,MAAvB,EAA+B,KAA/B,EAAsC,IAAtC,CADK,EAEL,KAAK,SAAL,CAAe,MAAf,EAAuB,KAAvB,EAA8B,IAA9B,CAFK,EAGL,IAHK,EAIL,IAJK,CAIA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAJP,CAF4B;IA5GoB;AAuHlD,qCAAa,QAAQ,OAAO,MAAM;AAChC,SAAM,OAAO,IAAP,CAD0B;AAEhC,YAAO,KAAK,IAAL,CACL,KAAK,OAAL,CAAa,YAAb,EAA2B,MAA3B,EAAmC,IAAnC,EAAyC,IAAzC,CADK,EAEL,KAAK,SAAL,CAAe,MAAf,EAAuB,KAAvB,EAA8B,IAA9B,CAFK,EAGL,IAHK,EAIL,IAJK,CAIA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAJP,CAFgC;IAvHgB;AAkIlD,+BAAU,QAAQ,IAAI,MAAM;AAC1B,SAAM,OAAO,IAAP,CADoB;AAE1B,YAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,SAAb,EAAwB,MAAxB,EAAgC,EAAhC,EAAoC,IAApC,CADK,EAEL,IAFK,EAGL,IAHK,CAGA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAHP,CAF0B;IAlIsB;AA4IlD,qCAAa,QAAQ,OAAO,MAAM;AAChC,SAAM,OAAO,IAAP,CAD0B;AAEhC,YAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,YAAb,EAA2B,MAA3B,EAAmC,IAAnC,EAAyC,IAAzC,CADK,EAEL,IAFK,EAGL,IAHK,CAGA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAHP,CAFgC;IA5IgB;AAsJlD,uBAAM,QAAQ,MAAM,UAAU;AAC5B,YAAO,CAAC,KAAK,WAAL,CAAiB,MAAjB,EAAyB,QAAzB,EAAmC,IAAnC,CAAD,EAA2C,QAA3C,CAAP,CAD4B;IAtJoB;AA0JlD,yBAAO,QAAQ,IAAI,MAAM;AACvB,SAAM,OAAO,IAAP,CADiB;AAEvB,YAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,MAAb,EAAqB,MAArB,EAA6B,EAA7B,EAAiC,IAAjC,CADK,EAEL,IAFK,EAGL,IAHK,CAGA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAHP,CAFuB;IA1JyB;AAoKlD,+BAAU,QAAQ,OAAO,MAAM;AAC7B,SAAM,OAAO,IAAP,CADuB;AAE7B,YAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,SAAb,EAAwB,MAAxB,EAAgC,KAAK,MAAL,EAAa,IAA7C,CADK,EAEL,IAFK,EAGL,IAHK,CAGA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAHP,CAF6B;IApKmB;AA8KlD,uBAAM,QAAQ,OAAO,OAAO,MAAM;AAChC,SAAM,OAAO,IAAP,CAD0B;AAEhC,YAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,KAAb,EAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CADK,EAEL,IAFK,EAGL,IAHK,CAGA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAHP,CAFgC;IA9KgB;AAwLlD,6BAAS,QAAQ,IAAI,OAAO,MAAM;AAChC,SAAM,OAAO,IAAP,CAD0B;AAEhC,YAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,QAAb,EAAuB,MAAvB,EAA+B,EAA/B,EAAmC,IAAnC,CADK,EAEL,KAAK,SAAL,CAAe,MAAf,EAAuB,KAAvB,EAA8B,IAA9B,CAFK,EAGL,IAHK,EAIL,IAJK,CAIA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAJP,CAFgC;IAxLgB;AAmMlD,mCAAY,QAAQ,OAAO,OAAO,MAAM;AACtC,SAAM,OAAO,IAAP,CADgC;AAEtC,YAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,WAAb,EAA0B,MAA1B,EAAkC,IAAlC,EAAwC,IAAxC,CADK,EAEL,KAAK,SAAL,CAAe,MAAf,EAAuB,KAAvB,EAA8B,IAA9B,CAFK,EAGL,IAHK,EAIL,IAJK,CAIA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAJP,CAFsC;IAnMU;AA8MlD,qCAAa,QAAQ,SAAS,MAAM;AAClC,SAAM,OAAO,IAAP,CAD4B;AAElC,YAAO,KAAK,GAAL,CACL,KAAK,OAAL,CAAa,YAAb,EAA2B,MAA3B,EAAmC,IAAnC,EAAyC,IAAzC,CADK,EAEL,KAAK,SAAL,CAAe,MAAf,EAAuB,OAAvB,EAAgC,IAAhC,CAFK,EAGL,IAHK,EAIL,IAJK,CAIA,UAAU,QAAV,EAAoB;AACzB,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,EAAwB,QAAxB,CAAP,CADyB;MAApB,CAJP,CAFkC;IA9Mc;;;;;;;;;;;;;;;AAqOlD,yBAAO,QAAQ,OAAO,MAAM;AAC1B,SAAM,OAAO,IAAP,CADoB;AAE1B,eAAU,QAAQ,EAAR,CAAV,CAF0B;AAG1B,cAAS,OAAO,EAAP,CAAT,CAH0B;AAI1B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,IAAf,CAAd,CAJ0B;AAK1B,UAAK,MAAL,CAAY,KAAZ,GAAoB,IAApB,CAL0B;AAM1B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CAN0B;AAO1B,mBAAM,SAAN,CAAgB,KAAK,MAAL,EAAa,KAA7B,EAP0B;AAQ1B,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAR0B;;AAU1B,YAAO,UAAU,KAAV,CAAgB,IAAhB,CAAqB,IAArB,EAA2B,MAA3B,EAAmC,KAAnC,EAA0C,IAA1C,CAAP,CAV0B;IArOsB;;;;;;;;;;;;;;;AA8PlD,2BAAQ,QAAQ,OAAO,MAAM;AAC3B,SAAM,OAAO,IAAP,CADqB;AAE3B,cAAS,OAAO,EAAP,CAAT,CAF2B;AAG3B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,IAAf,CAAd,CAH2B;AAI3B,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAJ2B;AAK3B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CAL2B;;AAO3B,YAAO,UAAU,MAAV,CAAiB,IAAjB,CAAsB,IAAtB,EAA4B,MAA5B,EAAoC,KAApC,EAA2C,IAA3C,CAAP,CAP2B;IA9PqB;;;;;;;;;;;;;;;AAoRlD,mCAAY,QAAQ,OAAO,MAAM;AAC/B,SAAM,OAAO,IAAP,CADyB;AAE/B,cAAS,OAAO,EAAP,CAAT,CAF+B;AAG/B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,IAAf,CAAd,CAH+B;AAI/B,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAJ+B;AAK/B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CAL+B;;AAO/B,YAAO,UAAU,UAAV,CAAqB,IAArB,CAA0B,IAA1B,EAAgC,MAAhC,EAAwC,KAAxC,EAA+C,IAA/C,CAAP,CAP+B;IApRiB;;;;;;;;;;;;;;AAySlD,qBAAK,KAAK,QAAQ,MAAM;AACtB,SAAM,OAAO,IAAP,CADgB;AAEtB,SAAI,WAAJ,CAFsB;AAGtB,gBAAW,SAAS,EAAT,CAAX,CAHsB;AAItB,cAAS,OAAO,EAAP,CAAT,CAJsB;AAKtB,YAAO,GAAP,GAAa,OAAO,OAAO,GAAP,CALE;AAMtB,YAAO,MAAP,GAAgB,OAAO,MAAP,IAAiB,QAAjB;;;AANM,OAStB,GAAK,KAAK,EAAL,GAAU,WAAV,CATiB;AAUtB,YAAO,cAAM,OAAN,CAAc,KAAK,EAAL,EAAS,GAAT,EAAc,MAAd,EAAsB,IAAtB,CAAd,EAA2C,IAA3C,CAAgD,UAAU,OAAV,EAAmB;;AAExE,gBAAS,cAAM,WAAN,CAAkB,OAAlB,IAA6B,MAA7B,GAAsC,OAAtC,CAF+D;AAGxE,YAAK,KAAK,EAAL,GAAU,KAAV,CAHmE;AAIxE,YAAK,GAAL,CAAS,EAAT,EAAa,GAAb,EAAkB,MAAlB,EAA0B,IAA1B,EAJwE;AAKxE,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,CAAP,CALwE;MAAnB,CAAhD,CAMJ,IANI,CAMC,UAAU,QAAV,EAAoB;;AAE1B,YAAK,KAAK,EAAL,GAAU,UAAV,CAFqB;AAG1B,cAAO,cAAM,OAAN,CAAc,KAAK,EAAL,EAAS,GAAT,EAAc,MAAd,EAAsB,IAAtB,EAA4B,QAA5B,CAAd,EAAqD,IAArD,CAA0D,UAAU,SAAV,EAAqB;;AAEpF,gBAAO,cAAM,WAAN,CAAkB,SAAlB,IAA+B,QAA/B,GAA0C,SAA1C,CAF6E;QAArB,CAAjE,CAH0B;MAApB,CANR,CAVsB;IAzS0B;;;;;;;;;;;;;;AA8UlD,qCAAa,QAAQ,UAAU,MAAM;AACnC,cAAS,OAAO,EAAP,CAAT,CADmC;AAEnC,SAAI,cAAM,UAAN,CAAiB,KAAK,WAAL,CAArB,EAAwC;AACtC,cAAO,KAAK,WAAL,CAAiB,MAAjB,EAAyB,QAAzB,EAAmC,IAAnC,CAAP,CADsC;MAAxC;AAGA,SAAI,cAAM,UAAN,CAAiB,OAAO,WAAP,CAArB,EAA0C;AACxC,cAAO,OAAO,WAAP,CAAmB,MAAnB,EAA2B,QAA3B,EAAqC,IAArC,CAAP,CADwC;MAA1C;AAGA,SAAI,YAAY,SAAS,cAAT,CAAwB,MAAxB,CAAZ,EAA6C;AAC/C,cAAO,SAAS,IAAT,CADwC;MAAjD;AAGA,YAAO,QAAP,CAXmC;IA9Ua;;;;;;;;;;;;;;;AAwWlD,6BAAS,QAAQ,IAAI,MAAM;AACzB,SAAM,OAAO,IAAP,CADmB;AAEzB,cAAS,OAAO,EAAP,CAAT,CAFyB;AAGzB,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,IAAf,CAAd,CAHyB;AAIzB,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAJyB;AAKzB,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CALyB;;AAOzB,YAAO,UAAU,OAAV,CAAkB,IAAlB,CAAuB,IAAvB,EAA6B,MAA7B,EAAqC,EAArC,EAAyC,IAAzC,CAAP,CAPyB;IAxWuB;;;;;;;;;;;;;;;AA8XlD,mCAAY,QAAQ,OAAO,MAAM;AAC/B,SAAM,OAAO,IAAP,CADyB;AAE/B,eAAU,QAAQ,EAAR,CAAV,CAF+B;AAG/B,cAAS,OAAO,EAAP,CAAT,CAH+B;AAI/B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,IAAf,CAAd,CAJ+B;AAK/B,mBAAM,SAAN,CAAgB,KAAK,MAAL,EAAa,KAA7B,EAL+B;AAM/B,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAN+B;AAO/B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CAP+B;;AAS/B,YAAO,UAAU,UAAV,CAAqB,IAArB,CAA0B,IAA1B,EAAgC,MAAhC,EAAwC,KAAxC,EAA+C,IAA/C,CAAP,CAT+B;IA9XiB;;;;;;;;;;AAiZlD,2BAAgB;AACd,SAAI,OAAJ,EAAa;;;AACX,4BAAQ,OAAO,QAAQ,KAAR,KAAkB,UAAzB,GAAsC,OAAtC,GAAgD,KAAhD,CAAR,4BADW;MAAb;IAlZgD;;;;;;;;;;;;;;;;AAoalD;;;;;;;;;;eAAO,QAAQ,MAAM;AACnB,SAAM,gBAAgB;AACpB,eAAQ,OAAO,MAAP;;AAER,gBAAS,IAAI,OAAJ,CAAY,OAAO,OAAP,CAArB;MAHI,CADa;;AAOnB,SAAI,OAAO,IAAP,EAAa;AACf,qBAAc,IAAd,GAAqB,cAAM,MAAN,CAAa,OAAO,IAAP,CAAlC,CADe;MAAjB;;AAIA,YAAO,MAAM,IAAI,OAAJ,CAAY,SAAS,OAAO,GAAP,EAAY,OAAO,MAAP,CAAjC,EAAiD,aAAjD,CAAN,EAAuE,IAAvE,CAA4E,UAAU,QAAV,EAAoB;AACrG,gBAAS,MAAT,GAAkB;AAChB,iBAAQ,OAAO,MAAP;AACR,cAAK,OAAO,GAAP;QAFP,CADqG;AAKrG,cAAO,SAAS,IAAT,GAAgB,IAAhB,CAAqB,UAAU,IAAV,EAAgB;AAC1C,kBAAS,IAAT,GAAgB,IAAhB,CAD0C;AAE1C,gBAAO,QAAP,CAF0C;QAAhB,CAA5B,CALqG;MAApB,CAAnF,CAXmB;KApa6B;;;;;;;;;;;;;;;AAuclD,uBAAM,QAAQ,IAAI,MAAM;AACtB,SAAM,OAAO,IAAP,CADgB;AAEtB,cAAS,OAAO,EAAP,CAAT,CAFsB;AAGtB,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,IAAf,CAAd,CAHsB;AAItB,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAJsB;AAKtB,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CALsB;;AAOtB,YAAO,UAAU,IAAV,CAAe,IAAf,CAAoB,IAApB,EAA0B,MAA1B,EAAkC,EAAlC,EAAsC,IAAtC,CAAP,CAPsB;IAvc0B;;;;;;;;;;;;;;;AA6dlD,6BAAS,QAAQ,OAAO,MAAM;AAC5B,SAAM,OAAO,IAAP,CADsB;AAE5B,eAAU,QAAQ,EAAR,CAAV,CAF4B;AAG5B,cAAS,OAAO,EAAP,CAAT,CAH4B;AAI5B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,IAAf,CAAd,CAJ4B;AAK5B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CAL4B;AAM5B,mBAAM,SAAN,CAAgB,KAAK,MAAL,EAAa,KAA7B,EAN4B;AAO5B,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAP4B;;AAS5B,YAAO,UAAU,OAAV,CAAkB,IAAlB,CAAuB,IAAvB,EAA6B,MAA7B,EAAqC,KAArC,EAA4C,IAA5C,CAAP,CAT4B;IA7doB;;;;;;;;;;;;;AAmflD,qBAAK,KAAK,QAAQ,MAAM;AACtB,SAAM,OAAO,IAAP,CADgB;AAEtB,SAAI,WAAJ,CAFsB;AAGtB,gBAAW,SAAS,EAAT,CAAX,CAHsB;AAItB,cAAS,OAAO,EAAP,CAAT,CAJsB;AAKtB,YAAO,GAAP,GAAa,OAAO,OAAO,GAAP,CALE;AAMtB,YAAO,MAAP,GAAgB,OAAO,MAAP,IAAiB,KAAjB;;;AANM,OAStB,GAAK,KAAK,EAAL,GAAU,WAAV,CATiB;AAUtB,YAAO,cAAM,OAAN,CAAc,KAAK,EAAL,EAAS,GAAT,EAAc,MAAd,EAAsB,IAAtB,CAAd,EAA2C,IAA3C,CAAgD,UAAU,OAAV,EAAmB;;AAExE,gBAAS,cAAM,WAAN,CAAkB,OAAlB,IAA6B,MAA7B,GAAsC,OAAtC,CAF+D;AAGxE,YAAK,KAAK,EAAL,GAAU,KAAV,CAHmE;AAIxE,YAAK,GAAL,CAAS,EAAT,EAAa,GAAb,EAAkB,MAAlB,EAA0B,IAA1B,EAJwE;AAKxE,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,CAAP,CALwE;MAAnB,CAAhD,CAMJ,IANI,CAMC,UAAU,QAAV,EAAoB;;AAE1B,YAAK,KAAK,EAAL,GAAU,UAAV,CAFqB;AAG1B,cAAO,cAAM,OAAN,CAAc,KAAK,EAAL,EAAS,GAAT,EAAc,MAAd,EAAsB,IAAtB,EAA4B,QAA5B,CAAd,EAAqD,IAArD,CAA0D,UAAU,SAAV,EAAqB;;AAEpF,gBAAO,cAAM,WAAN,CAAkB,SAAlB,IAA+B,QAA/B,GAA0C,SAA1C,CAF6E;QAArB,CAAjE,CAH0B;MAApB,CANR,CAVsB;IAnf0B;;;;;;;;;;;AAqhBlD,qCAAa,QAAQ,IAAI,MAAM;AAC7B,SAAM,OAAO,IAAP,CADuB;AAE7B,cAAS,OAAO,EAAP,CAAT,CAF6B;AAG7B,UAAK,MAAL,GAAc,cAAM,WAAN,CAAkB,KAAK,MAAL,CAAlB,GAAiC,EAAjC,GAAsC,KAAK,MAAL,CAHvB;AAI7B,SAAM,eAAe,OAAO,YAAP,IAAuB,EAAvB,CAJQ;AAK7B,SAAI,WAAW,cAAM,WAAN,CAAkB,KAAK,QAAL,CAAlB,GAAoC,cAAM,WAAN,CAAkB,OAAO,QAAP,CAAlB,GAAqC,OAAO,IAAP,GAAc,OAAO,QAAP,GAAmB,KAAK,QAAL,CAL5F;;AAO7B,kBAAa,OAAb,CAAqB,UAAU,GAAV,EAAe;AAClC,WAAI,IAAI,IAAJ,KAAa,WAAb,IAA4B,CAAC,IAAI,MAAJ,EAAY;AAC3C,gBAD2C;QAA7C;AAGA,WAAI,aAAJ,CAJkC;AAKlC,WAAM,YAAY,IAAI,UAAJ,CALgB;AAMlC,WAAM,YAAY,IAAI,WAAJ,EAAZ,CAN4B;AAOlC,WAAI,WAAW,KAAK,MAAL,CAAY,SAAZ,CAAX,CAP8B;;AASlC,WAAI,aAAa,KAAb,IAAsB,CAAC,SAAD,IAAc,CAAC,SAAD,EAAY;AAClD,aAAI,aAAa,KAAb,EAAoB;AACtB,kBAAO,KAAK,MAAL,CAAY,SAAZ,CAAP,CADsB;UAAxB;AAGA,gBAAO,KAAP,CAJkD;QAApD,MAKO;AACL,gBAAO,KAAK,MAAL,CAAY,SAAZ,CAAP,CADK;;AAGL,aAAI,cAAM,QAAN,CAAe,EAAf,CAAJ,EAAwB;AACtB,kBAAO,EAAP,CADsB;UAAxB;;AAIA,aAAI,IAAJ,EAAU;AACR,sBAAW,YAAY,IAAI,aAAJ,CAAkB,IAAlB,CAAZ,KAAwC,IAAI,aAAJ,CAAkB,IAAlB,IAA0B,cAAM,GAAN,CAAU,IAAI,aAAJ,CAAkB,IAAlB,CAAV,EAAmC,UAAU,WAAV,CAA7D,GAAsF,IAAtF,CAAxC,CADH;UAAV;;AAIA,aAAI,QAAJ,EAAc;;AACZ,oBAAO,KAAK,QAAL;AACP,iBAAM,QAAQ,EAAR;AACN,2BAAM,MAAN,CAAa,IAAb,EAAmB,UAAU,KAAV,EAAiB,GAAjB,EAAsB;AACvC,qBAAM,GAAN,IAAa,KAAb,CADuC;cAAtB,CAAnB;AAGA,2BAAM,CAAN,CAAQ,KAAR,EAAe,SAAf;AACA,wBAAW,SAAS,KAAK,WAAL,CAAiB,SAAjB,EAA4B,QAA5B,EAAsC,KAAtC,CAAT,EAAuD,QAAvD,EAAiE,QAAjE,CAAX;AACA;kBAAO;cAAP;eARY;;;UAAd;QAhBF;MATmB,CAArB,CAP6B;;AA6C7B,YAAO,QAAP,CA7C6B;IArhBmB;;;;;;;;;;;AA6kBlD,6BAAS,QAAQ,QAAQ,IAAI,MAAM;AACjC,SAAM,OAAO,IAAP,CAD2B;AAEjC,cAAS,OAAO,EAAP,CAAT,CAFiC;AAGjC,SAAM,OAAO,CACX,cAAM,WAAN,CAAkB,KAAK,QAAL,CAAlB,GAAoC,cAAM,WAAN,CAAkB,OAAO,QAAP,CAAlB,GAAqC,KAAK,QAAL,GAAgB,OAAO,QAAP,GAAmB,KAAK,QAAL,EAC5G,KAAK,WAAL,CAAiB,MAAjB,EAAyB,aAAC,CAAM,QAAN,CAAe,EAAf,KAAsB,cAAM,QAAN,CAAe,EAAf,CAAtB,IAA4C,WAAW,QAAX,GAAuB,EAApE,GAAyE,IAAzE,EAA+E,IAAxG,CAFW,CAAP,CAH2B;AAOjC,SAAI,WAAW,MAAX,IAAqB,WAAW,QAAX,IAAuB,WAAW,SAAX,EAAsB;AACpE,YAAK,IAAL,CAAU,EAAV,EADoE;MAAtE;AAGA,YAAO,SAAS,KAAT,gBAAsB,IAAtB,CAAP,CAViC;IA7kBe;AA0lBlD,iCAAW,MAAM;AACf,cAAS,OAAO,EAAP,CAAT,CADe;AAEf,SAAI,cAAM,WAAN,CAAkB,KAAK,MAAL,CAAtB,EAAoC;AAClC,cAAO,EAAP,CADkC;MAApC;AAGA,YAAO,cAAM,IAAN,CAAW,KAAK,MAAL,CAAlB,CALe;IA1lBiC;AAkmBlD,iCAAW,QAAQ,MAAM;AACvB,cAAS,OAAO,EAAP,CAAT,CADuB;AAEvB,SAAI,cAAM,WAAN,CAAkB,KAAK,MAAL,CAAtB,EAAoC;AAClC,WAAI,cAAM,WAAN,CAAkB,OAAO,MAAP,CAAtB,EAAsC;AACpC,gBAAO,KAAK,MAAL,CAD6B;QAAtC;AAGA,cAAO,OAAO,MAAP,CAJ2B;MAApC;AAMA,YAAO,KAAK,MAAL,CARgB;IAlmByB;;;;;;;;;;;;AAsnBlD,uBAAM,QAAQ,MAAM;AAClB,SAAM,OAAO,IAAP,CADY;AAElB,SAAM,QAAQ,IAAI,IAAJ,EAAR,CAFY;AAGlB,cAAS,OAAO,EAAP,CAAT,CAHkB;AAIlB,SAAM,UAAU,OAAO,IAAP,CAJE;AAKlB,SAAM,QAAQ,OAAO,KAAP,CALI;AAMlB,SAAM,UAAU,OAAO,OAAP,CANE;AAOlB,cAAS,cAAM,IAAN,CAAW,MAAX,EAAmB,IAAnB,EAAyB,IAAzB,EAA+B,IAA/B,EAAqC,CAAC,MAAD,EAAS,OAAT,EAAkB,SAAlB,CAArC,CAAT,CAPkB;AAQlB,cAAS,cAAM,SAAN,CAAgB,MAAhB,EAAwB,KAAK,UAAL,CAAjC,CARkB;AASlB,YAAO,IAAP,GAAc,OAAd,CATkB;AAUlB,YAAO,KAAP,GAAe,KAAf,CAVkB;AAWlB,YAAO,OAAP,GAAiB,OAAjB,CAXkB;AAYlB,SAAI,KAAK,kBAAL,IAA2B,OAAO,GAAP,CAAW,OAAO,GAAP,CAAW,MAAX,GAAoB,CAApB,CAAX,KAAsC,GAAtC,EAA2C;AACxE,cAAO,GAAP,IAAc,GAAd,CADwE;MAA1E;AAGA,YAAO,MAAP,GAAgB,OAAO,MAAP,CAAc,WAAd,EAAhB,CAfkB;AAgBlB,SAAM,SAAS,OAAO,MAAP,IAAiB,KAAK,MAAL,IAAe,KAAK,MAAL,CAhB7B;AAiBlB,SAAI,UAAU,OAAO,GAAP,CAAW,MAAX,CAAkB,OAAO,GAAP,CAAW,MAAX,GAAoB,OAAO,MAAP,CAAtC,KAAyD,MAAzD,EAAiE;AAC7E,cAAO,GAAP,IAAc,MAAd,CAD6E;MAA/E;;AAIA,cAAS,WAAT,CAAsB,IAAtB,EAA4B;AAC1B,WAAM,MAAS,MAAM,WAAN,aAAyB,OAAO,MAAP,CAAc,WAAd,WAA+B,OAAO,GAAP,WAAgB,KAAK,MAAL,UAAgB,IAAI,IAAJ,GAAW,OAAX,KAAuB,MAAM,OAAN,EAAvB,QAAjG,CADoB;AAE1B,WAAI,KAAK,MAAL,IAAe,GAAf,IAAsB,KAAK,MAAL,GAAc,GAAd,EAAmB;AAC3C,aAAI,KAAK,GAAL,EAAU;AACZ,gBAAK,GAAL,CAAS,OAAT,EAAkB,GAAlB,EAAuB,IAAvB,EADY;UAAd;AAGA,gBAAO,IAAP,CAJ2C;QAA7C,MAKO;AACL,aAAI,KAAK,KAAL,EAAY;AACd,gBAAK,KAAL,gBAAuB,GAAvB,EAA8B,IAA9B,EADc;UAAhB;AAGA,gBAAO,cAAM,MAAN,CAAa,IAAb,CAAP,CAJK;QALP;MAFF;;AAeA,SAAI,CAAC,KAAK,IAAL,EAAW;AACd,aAAM,IAAI,KAAJ,CAAU,4DAAV,CAAN,CADc;MAAhB;;AAIA,YAAO,cAAM,OAAN,CAAc,KAAK,UAAL,CAAgB,MAAhB,EAAwB,IAAxB,CAAd,EAA6C,IAA7C,CAAkD,UAAU,OAAV,EAAmB;AAC1E,gBAAS,WAAW,MAAX,CADiE;AAE1E,WAAI,aAAa,KAAK,QAAL,IAAiB,KAAK,QAAL,IAAiB,CAAC,KAAK,IAAL,CAAhD,EAA4D;AAC9D,gBAAO,KAAK,KAAL,CAAW,MAAX,EAAmB,IAAnB,EAAyB,IAAzB,CAA8B,WAA9B,EAA2C,WAA3C,CAAP,CAD8D;QAAhE;AAGA,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,CAAuB,WAAvB,EAAoC,WAApC,EAAiD,KAAjD,CAAuD,UAAU,GAAV,EAAe;AAC3E,gBAAO,KAAK,aAAL,CAAmB,GAAnB,EAAwB,MAAxB,EAAgC,IAAhC,CAAP,CAD2E;QAAf,CAA9D,CAL0E;MAAnB,CAAlD,CAQJ,IARI,CAQC,UAAU,QAAV,EAAoB;AAC1B,cAAO,cAAM,OAAN,CAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,EAA6B,QAA7B,CAAd,EAAsD,IAAtD,CAA2D,UAAU,SAAV,EAAqB;AACrF,gBAAO,aAAa,QAAb,CAD8E;QAArB,CAAlE,CAD0B;MAApB,CARR,CAxCkB;IAtnB8B;;;;;;;;;;;;;;AAwrBlD,uBAAM,KAAK,MAAM,QAAQ,MAAM;AAC7B,SAAM,OAAO,IAAP,CADuB;AAE7B,SAAI,WAAJ,CAF6B;AAG7B,gBAAW,SAAS,EAAT,CAAX,CAH6B;AAI7B,cAAS,OAAO,EAAP,CAAT,CAJ6B;AAK7B,YAAO,GAAP,GAAa,OAAO,OAAO,GAAP,CALS;AAM7B,YAAO,IAAP,GAAc,QAAQ,OAAO,IAAP,CANO;AAO7B,YAAO,MAAP,GAAgB,OAAO,MAAP,IAAiB,MAAjB;;;AAPa,OAU7B,GAAK,KAAK,EAAL,GAAU,YAAV,CAVwB;AAW7B,YAAO,cAAM,OAAN,CAAc,KAAK,EAAL,EAAS,GAAT,EAAc,IAAd,EAAoB,MAApB,EAA4B,IAA5B,CAAd,EAAiD,IAAjD,CAAsD,UAAU,OAAV,EAAmB;;AAE9E,gBAAS,cAAM,WAAN,CAAkB,OAAlB,IAA6B,MAA7B,GAAsC,OAAtC,CAFqE;AAG9E,YAAK,KAAK,EAAL,GAAU,MAAV,CAHyE;AAI9E,YAAK,GAAL,CAAS,EAAT,EAAa,GAAb,EAAkB,IAAlB,EAAwB,MAAxB,EAAgC,IAAhC,EAJ8E;AAK9E,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,CAAP,CAL8E;MAAnB,CAAtD,CAMJ,IANI,CAMC,UAAU,QAAV,EAAoB;;AAE1B,YAAK,KAAK,EAAL,GAAU,WAAV,CAFqB;AAG1B,cAAO,cAAM,OAAN,CAAc,KAAK,EAAL,EAAS,GAAT,EAAc,IAAd,EAAoB,MAApB,EAA4B,IAA5B,EAAkC,QAAlC,CAAd,EAA2D,IAA3D,CAAgE,UAAU,SAAV,EAAqB;;AAE1F,gBAAO,cAAM,WAAN,CAAkB,SAAlB,IAA+B,QAA/B,GAA0C,SAA1C,CAFmF;QAArB,CAAvE,CAH0B;MAApB,CANR,CAX6B;IAxrBmB;;;;;;;;;;;;;;AA8tBlD,qBAAK,KAAK,MAAM,QAAQ,MAAM;AAC5B,SAAM,OAAO,IAAP,CADsB;AAE5B,SAAI,WAAJ,CAF4B;AAG5B,gBAAW,SAAS,EAAT,CAAX,CAH4B;AAI5B,cAAS,OAAO,EAAP,CAAT,CAJ4B;AAK5B,YAAO,GAAP,GAAa,OAAO,OAAO,GAAP,CALQ;AAM5B,YAAO,IAAP,GAAc,QAAQ,OAAO,IAAP,CANM;AAO5B,YAAO,MAAP,GAAgB,OAAO,MAAP,IAAiB,KAAjB;;;AAPY,OAU5B,GAAK,KAAK,EAAL,GAAU,WAAV,CAVuB;AAW5B,YAAO,cAAM,OAAN,CAAc,KAAK,EAAL,EAAS,GAAT,EAAc,IAAd,EAAoB,MAApB,EAA4B,IAA5B,CAAd,EAAiD,IAAjD,CAAsD,UAAU,OAAV,EAAmB;;AAE9E,gBAAS,cAAM,WAAN,CAAkB,OAAlB,IAA6B,MAA7B,GAAsC,OAAtC,CAFqE;AAG9E,YAAK,KAAK,EAAL,GAAU,KAAV,CAHyE;AAI9E,YAAK,GAAL,CAAS,EAAT,EAAa,GAAb,EAAkB,IAAlB,EAAwB,MAAxB,EAAgC,IAAhC,EAJ8E;AAK9E,cAAO,KAAK,IAAL,CAAU,MAAV,EAAkB,IAAlB,CAAP,CAL8E;MAAnB,CAAtD,CAMJ,IANI,CAMC,UAAU,QAAV,EAAoB;;AAE1B,YAAK,KAAK,EAAL,GAAU,UAAV,CAFqB;AAG1B,cAAO,cAAM,OAAN,CAAc,KAAK,EAAL,EAAS,GAAT,EAAc,IAAd,EAAoB,MAApB,EAA4B,IAA5B,EAAkC,QAAlC,CAAd,EAA2D,IAA3D,CAAgE,UAAU,SAAV,EAAqB;;AAE1F,gBAAO,cAAM,WAAN,CAAkB,SAAlB,IAA+B,QAA/B,GAA0C,SAA1C,CAFmF;QAArB,CAAvE,CAH0B;MAApB,CANR,CAX4B;IA9tBoB;;;;;;;;;;;;;AAmwBlD,2CAAgB,QAAQ,QAAQ,MAAM;AACpC,cAAS,OAAO,EAAP,CAAT,CADoC;AAEpC,SAAI,cAAM,UAAN,CAAiB,KAAK,cAAL,CAArB,EAA2C;AACzC,cAAO,KAAK,cAAL,CAAoB,MAApB,EAA4B,MAA5B,EAAoC,IAApC,CAAP,CADyC;MAA3C;AAGA,SAAI,cAAM,UAAN,CAAiB,OAAO,cAAP,CAArB,EAA6C;AAC3C,cAAO,OAAO,cAAP,CAAsB,MAAtB,EAA8B,MAA9B,EAAsC,IAAtC,CAAP,CAD2C;MAA7C;AAGA,YAAO,MAAP,CARoC;IAnwBY;;;;;;;;;;;;;;;;AA2xBlD,yCAAe,KAAK,QAAQ,MAAM;AAChC,YAAO,cAAM,MAAN,CAAa,GAAb,CAAP,CADgC;IA3xBgB;;;;;;;;;;;;;AAyyBlD,iCAAW,QAAQ,MAAM,MAAM;AAC7B,cAAS,OAAO,EAAP,CAAT,CAD6B;AAE7B,SAAI,cAAM,UAAN,CAAiB,KAAK,SAAL,CAArB,EAAsC;AACpC,cAAO,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,EAA6B,IAA7B,CAAP,CADoC;MAAtC;AAGA,SAAI,cAAM,UAAN,CAAiB,OAAO,SAAP,CAArB,EAAwC;AACtC,cAAO,OAAO,SAAP,CAAiB,MAAjB,EAAyB,IAAzB,EAA+B,IAA/B,CAAP,CADsC;MAAxC;AAGA,YAAO,IAAP,CAR6B;IAzyBmB;;;;;;;;;;;;;;;;AAi0BlD,qBAAK,QAAQ,OAAO,OAAO,MAAM;AAC/B,SAAM,OAAO,IAAP,CADyB;AAE/B,eAAU,QAAQ,EAAR,CAAV,CAF+B;AAG/B,cAAS,OAAO,EAAP,CAAT,CAH+B;AAI/B,SAAI,CAAC,cAAM,KAAN,CAAY,QAAZ,CAAqB,KAArB,CAAD,EAA8B;AAChC,aAAM,IAAI,KAAJ,CAAU,yBAAV,CAAN,CADgC;MAAlC;AAGA,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,IAAf,CAAd,CAP+B;AAQ/B,UAAK,MAAL,CAAY,GAAZ,GAAkB,KAAlB,CAR+B;AAS/B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CAT+B;AAU/B,mBAAM,SAAN,CAAgB,KAAK,MAAL,EAAa,KAA7B,EAV+B;AAW/B,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAX+B;;AAa/B,YAAO,UAAU,GAAV,CAAc,IAAd,CAAmB,IAAnB,EAAyB,MAAzB,EAAiC,KAAjC,EAAwC,KAAxC,EAA+C,IAA/C,CAAP,CAb+B;IAj0BiB;;;;;;;;;;;;;;AA41BlD,2BAAQ,QAAQ,IAAI,OAAO,MAAM;AAC/B,SAAM,OAAO,IAAP,CADyB;AAE/B,cAAS,OAAO,EAAP,CAAT,CAF+B;AAG/B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,IAAf,CAAd,CAH+B;AAI/B,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAJ+B;AAK/B,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CAL+B;;AAO/B,YAAO,UAAU,MAAV,CAAiB,IAAjB,CAAsB,IAAtB,EAA4B,MAA5B,EAAoC,EAApC,EAAwC,KAAxC,EAA+C,IAA/C,CAAP,CAP+B;IA51BiB;;;;;;;;;;;;;;AAi3BlD,iCAAW,QAAQ,OAAO,OAAO,MAAM;AACrC,SAAM,OAAO,IAAP,CAD+B;AAErC,eAAU,QAAQ,EAAR,CAAV,CAFqC;AAGrC,cAAS,OAAO,EAAP,CAAT,CAHqC;AAIrC,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,IAAf,CAAd,CAJqC;AAKrC,mBAAM,SAAN,CAAgB,KAAK,MAAL,EAAa,KAA7B,EALqC;AAMrC,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CANqC;AAOrC,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CAPqC;;AASrC,YAAO,UAAU,SAAV,CAAoB,IAApB,CAAyB,IAAzB,EAA+B,MAA/B,EAAuC,KAAvC,EAA8C,KAA9C,EAAqD,IAArD,CAAP,CATqC;IAj3BW;;;;;;;;;;;;;;;;;;;;AA84BlD,mCAAY,QAAQ,SAAS,MAAM;AACjC,SAAM,OAAO,IAAP,CAD2B;AAEjC,cAAS,OAAO,EAAP,CAAT,CAFiC;AAGjC,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,IAAf,CAAd,CAHiC;AAIjC,UAAK,MAAL,GAAc,KAAK,cAAL,CAAoB,MAApB,EAA4B,KAAK,MAAL,EAAa,IAAzC,CAAd,CAJiC;AAKjC,UAAK,MAAL,GAAc,KAAK,SAAL,CAAe,MAAf,EAAuB,IAAvB,CAAd,CALiC;;AAOjC,YAAO,UAAU,UAAV,CAAqB,IAArB,CAA0B,IAA1B,EAAgC,MAAhC,EAAwC,OAAxC,EAAiD,IAAjD,CAAP,CAPiC;IA94Be;EAApD;;;;;;;;;;;;;;;;;AAw6BA,aAAY,SAAZ,GAAwB,UAAU,IAAV,EAAgB,IAAhB,EAAsB;AAC5C,OAAI,CAAC,IAAD,IAAS,CAAC,cAAM,QAAN,CAAe,IAAf,CAAD,EAAuB;AAClC,WAAM,IAAI,SAAJ,CAAc,4DAA2D,mDAA3D,CAApB,CADkC;IAApC;AAGA,UAAO,UAAU,MAAV,EAAkB;AACvB,SAAI,OAAO,IAAP,CAAJ,EAAkB;AAChB,aAAM,IAAI,KAAJ,CAAU,2BAA2B,IAA3B,GAAkC,4BAAlC,CAAhB,CADgB;MAAlB;AAGA,UAAK,OAAL,GAAe,KAAK,OAAL,IAAgB,UAAU,MAAV,EAAkB;AAAE,cAAO,MAAP,CAAF;MAAlB,CAJR;AAKvB,UAAK,QAAL,GAAgB,KAAK,QAAL,IAAiB,UAAU,QAAV,EAAoB;AAAE,cAAO,QAAP,CAAF;MAApB,CALV;AAMvB,UAAK,aAAL,GAAqB,KAAK,aAAL,IAAsB,UAAU,GAAV,EAAe;AAAE,cAAO,cAAM,MAAN,CAAa,GAAb,CAAP,CAAF;MAAf,CANpB;AAOvB,YAAO,IAAP,IAAe,UAAU,EAAV,EAAc,KAAd,EAAqB;AAClC,WAAM,OAAO,IAAP,CAD4B;AAElC,WAAI,cAAM,QAAN,CAAe,EAAf,CAAJ,EAAwB;AACtB,iBAAQ,EAAR,CADsB;QAAxB;AAGA,eAAQ,SAAS,EAAT,CAL0B;AAMlC,WAAI,UAAU,KAAK,UAAL,CAAgB,KAAK,OAAL,IAAgB,KAAK,cAAL,IAAuB,MAAvC,CAA1B,CAN8B;AAOlC,WAAI,SAAS,EAAT,CAP8B;AAQlC,qBAAM,MAAN,CAAa,MAAb,EAAqB,IAArB,EARkC;AASlC,WAAI,CAAC,MAAM,cAAN,CAAqB,UAArB,CAAD,IAAqC,OAAO,QAAP,EAAiB;AACxD,eAAM,QAAN,GAAiB,OAAO,QAAP,CADuC;QAA1D;AAGA,WAAI,OAAO,MAAM,WAAN,KAAsB,UAA7B,EAAyC;AAC3C,gBAAO,GAAP,GAAa,MAAM,WAAN,CAAkB,IAAlB,EAAwB,KAAxB,CAAb,CAD2C;QAA7C,MAEO;AACL,aAAI,QAAO,CACT,MAAM,QAAN,IAAkB,KAAK,QAAL,IAAiB,QAAQ,QAAR,EACnC,QAAQ,WAAR,CAAoB,IAApB,EAA0B,cAAM,MAAN,CAAa,EAAb,IAAmB,EAAnB,GAAwB,IAAxB,EAA8B,KAAxD,CAFS,CAAP,CADC;AAKL,aAAI,cAAM,MAAN,CAAa,EAAb,CAAJ,EAAsB;AACpB,iBAAK,IAAL,CAAU,EAAV,EADoB;UAAtB;AAGA,eAAK,IAAL,CAAU,KAAK,QAAL,IAAiB,IAAjB,CAAV,CARK;AASL,gBAAO,GAAP,GAAa,SAAS,KAAT,CAAe,IAAf,EAAqB,KAArB,CAAb,CATK;QAFP;AAaA,cAAO,MAAP,GAAgB,OAAO,MAAP,IAAiB,KAAjB,CAzBkB;AA0BlC,cAAO,MAAP,GAAgB,KAAK,IAAL,CA1BkB;AA2BlC,qBAAM,SAAN,CAAgB,MAAhB,EAAwB,KAAxB,EA3BkC;AA4BlC,cAAO,cAAM,OAAN,CAAc,MAAd,EACJ,IADI,CACC,MAAM,OAAN,IAAiB,KAAK,OAAL,CADlB,CAEJ,IAFI,CAEC,UAAU,MAAV,EAAkB;AAAE,gBAAO,QAAQ,IAAR,CAAa,MAAb,CAAP,CAAF;QAAlB,CAFD,CAGJ,IAHI,CAGC,UAAU,IAAV,EAAgB;AACpB,aAAI,QAAQ,KAAK,MAAL,EAAa;AACvB,gBAAK,MAAL,CAAY,MAAZ,GAAqB,KAAK,IAAL,CADE;UAAzB;AAGA,gBAAO,IAAP,CAJoB;QAAhB,CAHD,CASJ,IATI,CASC,MAAM,QAAN,IAAkB,KAAK,QAAL,EAAe,MAAM,aAAN,IAAuB,KAAK,aAAL,CAThE,CA5BkC;MAArB,CAPQ;AA8CvB,YAAO,MAAP,CA9CuB;IAAlB,CAJqC;EAAtB;;;;;;;;;;;;;AAiExB,aAAY,UAAZ,GAAyB,UAAU,IAAV,EAAgB;AACvC,YAAS,OAAO,EAAP,CAAT,CADuC;AAEvC,UAAO,UAAU,MAAV,EAAkB;AACvB,mBAAM,MAAN,CAAa,MAAb,EAAqB,UAAU,KAAV,EAAiB,GAAjB,EAAsB;AACzC,mBAAY,SAAZ,CAAsB,GAAtB,EAA2B,KAA3B,EAAkC,MAAlC,EADyC;MAAtB,CAArB,CADuB;AAIvB,YAAO,MAAP,CAJuB;IAAlB,CAFgC;EAAhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDzB,aAAY,MAAZ,GAAqB,cAAM,MAAN;;;;;;;;;;;;;;;;AAgBrB,aAAY,OAAZ,GAAsB;AACpB,SAAM,oBAAN;AACA,UAAO,SAAS,cAAT,EAAyB,EAAzB,CAAP;AACA,UAAO,SAAS,cAAT,EAAyB,EAAzB,CAAP;AACA,UAAO,SAAS,cAAT,EAAyB,EAAzB,CAAP;AACA,UAAO,QAA6B,cAA7B,GAA8C,KAA9C;AACP,SAAM,QAA4B,aAA5B,GAA4C,KAA5C;EANR;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCA,QAAO,OAAP,GAAiB,WAAjB,C;;;;;;AClvCA,gD;;;;;;ACAA;AACA;AACA;AACA;AACA,EAAC,0BAA0B;;AAE3B;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,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;;AAEA;;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,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;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;;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;AACA,iBAAgB;AAChB;AACA;AACA;AACA,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,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,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,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,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;;AAEA,EAAC;AACD,4C;;;;;;AC3lDA,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[\"HttpAdapter\"] = factory(require(\"js-data\"), require(\"undefined\"));\n\telse\n\t\troot[\"HttpAdapter\"] = 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 15384622f1b482df8fe1\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nimport Adapter from 'js-data-adapter'\n\nlet hasFetch = false\n\ntry {\n hasFetch = window && window.fetch\n} catch (e) {}\n\nconst noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n return utils.resolve()\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n return utils.resolve()\n}\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 * @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// 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\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 HttpAdapter.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 */\nHttpAdapter.addAction = function (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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n utils.forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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(require('js-data')) :\n typeof define === 'function' && define.amd ? define('js-data-adapter', ['js-data'], factory) :\n (factory(global.JSData));\n}(this, function (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 Adapter.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 * @typedef {Object} Response\n * @property {Object} data Response data.\n * @property {string} op The operation for which the response was created.\n */\n function Response(data, meta, op) {\n var self = this;\n meta || (meta = {});\n self.data = data;\n jsData.utils.fillIn(self, meta);\n self.op = op;\n }\n\n Adapter.Response = Response;\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 {Object} props The `props` 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 * 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 * 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 _ret = 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 _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === \"object\") return _ret.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 * 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 * 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 _ret2 = 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 _ret2 === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret2)) === \"object\") return _ret2.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 * 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 * 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 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 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 module.exports = Adapter;\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 27f47e9c2e60000cdeca","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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ACA;;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,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;;AAEA;;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,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;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;;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;AACA,iBAAgB;AAChB;AACA;AACA;AACA,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,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,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,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,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;;AAEA,EAAC;AACD,4C;;;;;;AC3lDA,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[\"HttpAdapter\"] = factory(require(\"js-data\"), require(\"undefined\"));\n\telse\n\t\troot[\"HttpAdapter\"] = 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 27f47e9c2e60000cdeca\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nimport Adapter from 'js-data-adapter'\n\nlet hasFetch = false\n\ntry {\n hasFetch = window && window.fetch\n} catch (e) {}\n\nconst noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n return utils.resolve()\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n return utils.resolve()\n}\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 * @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// 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\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 HttpAdapter.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 */\nHttpAdapter.addAction = function (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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n utils.forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.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 */\n\nmodule.exports = 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(require('js-data')) :\n typeof define === 'function' && define.amd ? define('js-data-adapter', ['js-data'], factory) :\n (factory(global.JSData));\n}(this, function (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 Adapter.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 * @typedef {Object} Response\n * @property {Object} data Response data.\n * @property {string} op The operation for which the response was created.\n */\n function Response(data, meta, op) {\n var self = this;\n meta || (meta = {});\n self.data = data;\n jsData.utils.fillIn(self, meta);\n self.op = op;\n }\n\n Adapter.Response = Response;\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 {Object} props The `props` 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 * 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 * 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 _ret = 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 _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === \"object\") return _ret.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 * 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 * 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 _ret2 = 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 _ret2 === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret2)) === \"object\") return _ret2.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 * 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 * 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 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 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 module.exports = Adapter;\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 ea4dcd8..35f0608 100644 --- a/fetch/dist/js-data-fetch.min.js +++ b/fetch/dist/js-data-fetch.min.js @@ -1,2 +1,10 @@ -!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.HttpAdapter=t(require("js-data"),require("undefined")):e.HttpAdapter=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 e&&e.__esModule?e:{default:e}}function i(e){return null!=e&&""!==e}function o(e,t){return t||(t=""),e.filter(i).join(t)}function a(){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 s(e,t){if(!t)return e;var n=[];return d.utils.forOwn(t,function(e,t){null!==e&&"undefined"!=typeof e&&(d.utils.isArray(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():d.utils.isObject(e)&&(e=d.utils.toJson(e)),n.push(u(t)+"="+u(e))}))}),n.length>0&&(e+=(-1===e.indexOf("?")?"?":"&")+n.join("&")),e}function l(e){var t=this;e||(e={}),d.utils.fillIn(e,b),p.default.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},d=n(1),c=n(2),p=r(c),h=n(3),y=!1;try{y=window&&window.fetch}catch(e){}var v=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var i=n[n.length-1];return e.dbg.apply(e,[i.op].concat(n)),d.utils.resolve()},g=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var i=n[n.length-2];return e.dbg.apply(e,[i.op].concat(n)),d.utils.resolve()},m=p.default.prototype,b={basePath:"",forceTrailingSlash:!1,http:h,httpConfig:{},suffix:"",useFetch:!1};l.prototype=Object.create(p.default.prototype,{constructor:{value:l,enumerable:!1,writable:!0,configurable:!0}}),Object.defineProperty(l,"__super__",{configurable:!0,value:p.default}),d.utils.addHiddenPropsToTarget(l.prototype,{afterDEL:g,afterGET:g,afterHTTP:g,afterPOST:g,afterPUT:g,beforeDEL:v,beforeGET:v,beforeHTTP:v,beforePOST:v,beforePUT:v,_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),d.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),m.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),m.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),m.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",d.utils.resolve(r[i](e,t,n)).then(function(o){return t=d.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",d.utils.resolve(r[i](e,t,n,o)).then(function(e){return d.utils.isUndefined(e)?o:e})})},deserialize:function(e,t,n){return n||(n={}),d.utils.isFunction(n.deserialize)?n.deserialize(e,t,n):d.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),m.destroy.call(r,e,t,n)},destroyAll:function(e,t,n){var r=this;return t||(t={}),n||(n={}),n.params=r.getParams(n),d.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),m.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=d.utils.toJson(e.data)),fetch(new Request(s(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),m.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),d.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),m.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",d.utils.resolve(r[i](e,t,n)).then(function(o){return t=d.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",d.utils.resolve(r[i](e,t,n,o)).then(function(e){return d.utils.isUndefined(e)?o:e})})},getEndpoint:function(e,t,n){var r=this;n||(n={}),n.params=d.utils.isUndefined(n.params)?{}:n.params;var i=e.relationList||[],o=d.utils.isUndefined(n.endpoint)?d.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(),l=n.params[u];if(l===!1||!u||!s)return l===!1&&delete n.params[u],!1;if(delete n.params[u],d.utils.isObject(t)&&(i=t),i&&(l=l||e.getForeignKey(i)||(e.getLocalField(i)?d.utils.get(e.getLocalField(i),s.idAttribute):null)),l){var c=function(){delete n.endpoint;var e={};return d.utils.forOwn(n,function(t,n){e[n]=t}),d.utils._(e,s),o=a(r.getEndpoint(s,l,e),l,o),{v:!1}}();if("object"===("undefined"==typeof c?"undefined":f(c)))return c.v}}}),o},getPath:function(e,t,n,r){var i=this;r||(r={});var o=[d.utils.isUndefined(r.basePath)?d.utils.isUndefined(t.basePath)?i.basePath:t.basePath:r.basePath,i.getEndpoint(t,d.utils.isString(n)||d.utils.isNumber(n)||"create"===e?n:null,r)];return"find"!==e&&"update"!==e&&"destroy"!==e||o.push(n),a.apply(d.utils,o)},getParams:function(e){return e||(e={}),d.utils.isUndefined(e.params)?{}:d.utils.copy(e.params)},getSuffix:function(e,t){return t||(t={}),d.utils.isUndefined(t.suffix)?d.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),d.utils.reject(t))}var r=this,i=new Date;t||(t={});var o=e.data,a=e.cache,u=e.timeout;e=d.utils.copy(e,null,null,null,["data","cache","timeout"]),e=d.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 d.utils.resolve(r.beforeHTTP(e,t)).then(function(i){return e=i||e,y&&(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 d.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",d.utils.resolve(i[o](e,t,n,r)).then(function(a){return n=d.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",d.utils.resolve(i[o](e,t,n,r,a)).then(function(e){return d.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",d.utils.resolve(i[o](e,t,n,r)).then(function(a){return n=d.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",d.utils.resolve(i[o](e,t,n,r,a)).then(function(e){return d.utils.isUndefined(e)?a:e})})},queryTransform:function(e,t,n){return n||(n={}),d.utils.isFunction(n.queryTransform)?n.queryTransform(e,t,n):d.utils.isFunction(e.queryTransform)?e.queryTransform(e,t,n):t},responseError:function(e,t,n){return d.utils.reject(e)},serialize:function(e,t,n){return n||(n={}),d.utils.isFunction(n.serialize)?n.serialize(e,t,n):d.utils.isFunction(e.serialize)?e.serialize(e,t,n):t},sum:function(e,t,n,r){var i=this;if(n||(n={}),r||(r={}),!d.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),d.utils.deepMixIn(r.params,n),r.params=i.queryTransform(e,r.params,r),m.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),m.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),d.utils.deepMixIn(r.params,n),r.params=i.queryTransform(e,r.params,r),r.suffix=i.getSuffix(e,r),m.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),m.updateMany.call(r,e,t,n)}}),l.addAction=function(e,t){if(!e||!d.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 d.utils.reject(e)},n[e]=function(n,r){var i=this;d.utils.isObject(n)&&(r=n),r=r||{};var o=i.getAdapter(t.adapter||i.defaultAdapter||"http"),u={};if(d.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||o.basePath,o.getEndpoint(i,d.utils.isSorN(n)?n:null,r)];d.utils.isSorN(n)&&s.push(n),s.push(t.pathname||e),u.url=a.apply(null,s)}return u.method=u.method||"GET",u.mapper=i.name,d.utils.deepMixIn(u)(r),d.utils.resolve(u).then(r.request||t.request).then(function(e){return o.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}},l.addActions=function(e){return e||(e={}),function(e){return d.utils.forOwn(e,function(t,n){l.addAction(n,t)(e)}),e}},l.extend=d.utils.extend,l.version={full:"<%= pkg.version %>",major:parseInt("<%= major %>",10),minor:parseInt("<%= minor %>",10),patch:parseInt("<%= patch %>",10),alpha:"<%= alpha %>",beta:"<%= beta %>"},e.exports=l},function(t,n){t.exports=e},function(e,t,n){!function(e,t){t(n(1))}(this,function(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};n.reserved=["orderBy","sort","limit","offset","skip","where"],n.Response=r,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})})},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)},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])})})},makeBelongsToForeignKey:function(e,t,n){return t.getForeignKey(n)},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])},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))}}},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 s=void 0;return s=a.op="beforeUpdate",t.utils.resolve(u[s](e,n,o,a)).then(function(r){return o=t.utils.isUndefined(r)?o:r,s=a.op="update",u.dbg(s,e,n,o,a),t.utils.resolve(u._update(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,"update");return p.updated=d?1:0,p=u.respond(p,a),s=a.op="afterUpdate",t.utils.resolve(u[s](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 s=void 0;return s=a.op="beforeUpdateAll",t.utils.resolve(u[s](e,n,o,a)).then(function(r){return n=t.utils.isUndefined(r)?n:r,s=a.op="updateAll",u.dbg(s,e,n,o,a),t.utils.resolve(u._updateAll(e,n,o,a))}).then(function(l){var f=i.slicedToArray(l,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),s=a.op="afterUpdateAll",t.utils.resolve(u[s](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.exports=n})},function(e,t){e.exports=void 0}])}); +/*! +* js-data-fetch +* @version 3.0.0-beta.2 - 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.HttpAdapter=t(require("js-data"),require("undefined")):e.HttpAdapter=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 e&&e.__esModule?e:{default:e}}function i(e){return null!=e&&""!==e}function o(e,t){return t||(t=""),e.filter(i).join(t)}function u(){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 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 s(e,t){if(!t)return e;var n=[];return d.utils.forOwn(t,function(e,t){null!==e&&"undefined"!=typeof e&&(d.utils.isArray(e)||(e=[e]),e.forEach(function(e){"[object Date]"===window.toString.call(e)?e=e.toISOString():d.utils.isObject(e)&&(e=d.utils.toJson(e)),n.push(a(t)+"="+a(e))}))}),n.length>0&&(e+=(-1===e.indexOf("?")?"?":"&")+n.join("&")),e}function l(e){var t=this;e||(e={}),d.utils.fillIn(e,b),p.default.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},d=n(1),c=n(2),p=r(c),h=n(3),y=!1;try{y=window&&window.fetch}catch(e){}var v=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var i=n[n.length-1];return e.dbg.apply(e,[i.op].concat(n)),d.utils.resolve()},g=function(){for(var e=this,t=arguments.length,n=Array(t),r=0;t>r;r++)n[r]=arguments[r];var i=n[n.length-2];return e.dbg.apply(e,[i.op].concat(n)),d.utils.resolve()},m=p.default.prototype,b={basePath:"",forceTrailingSlash:!1,http:h,httpConfig:{},suffix:"",useFetch:!1};l.prototype=Object.create(p.default.prototype,{constructor:{value:l,enumerable:!1,writable:!0,configurable:!0}}),Object.defineProperty(l,"__super__",{configurable:!0,value:p.default}),d.utils.addHiddenPropsToTarget(l.prototype,{afterDEL:g,afterGET:g,afterHTTP:g,afterPOST:g,afterPUT:g,beforeDEL:v,beforeGET:v,beforeHTTP:v,beforePOST:v,beforePUT:v,_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),d.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),m.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),m.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),m.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",d.utils.resolve(r[i](e,t,n)).then(function(o){return t=d.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",d.utils.resolve(r[i](e,t,n,o)).then(function(e){return d.utils.isUndefined(e)?o:e})})},deserialize:function(e,t,n){return n||(n={}),d.utils.isFunction(n.deserialize)?n.deserialize(e,t,n):d.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),m.destroy.call(r,e,t,n)},destroyAll:function(e,t,n){var r=this;return t||(t={}),n||(n={}),n.params=r.getParams(n),d.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),n.suffix=r.getSuffix(e,n),m.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=d.utils.toJson(e.data)),fetch(new Request(s(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),m.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),d.utils.deepMixIn(n.params,t),n.params=r.queryTransform(e,n.params,n),m.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",d.utils.resolve(r[i](e,t,n)).then(function(o){return t=d.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",d.utils.resolve(r[i](e,t,n,o)).then(function(e){return d.utils.isUndefined(e)?o:e})})},getEndpoint:function(e,t,n){var r=this;n||(n={}),n.params=d.utils.isUndefined(n.params)?{}:n.params;var i=e.relationList||[],o=d.utils.isUndefined(n.endpoint)?d.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,a=e.foreignKey,s=e.getRelation(),l=n.params[a];if(l===!1||!a||!s)return l===!1&&delete n.params[a],!1;if(delete n.params[a],d.utils.isObject(t)&&(i=t),i&&(l=l||e.getForeignKey(i)||(e.getLocalField(i)?d.utils.get(e.getLocalField(i),s.idAttribute):null)),l){var c=function(){delete n.endpoint;var e={};return d.utils.forOwn(n,function(t,n){e[n]=t}),d.utils._(e,s),o=u(r.getEndpoint(s,l,e),l,o),{v:!1}}();if("object"===("undefined"==typeof c?"undefined":f(c)))return c.v}}}),o},getPath:function(e,t,n,r){var i=this;r||(r={});var o=[d.utils.isUndefined(r.basePath)?d.utils.isUndefined(t.basePath)?i.basePath:t.basePath:r.basePath,i.getEndpoint(t,d.utils.isString(n)||d.utils.isNumber(n)||"create"===e?n:null,r)];return"find"!==e&&"update"!==e&&"destroy"!==e||o.push(n),u.apply(d.utils,o)},getParams:function(e){return e||(e={}),d.utils.isUndefined(e.params)?{}:d.utils.copy(e.params)},getSuffix:function(e,t){return t||(t={}),d.utils.isUndefined(t.suffix)?d.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),d.utils.reject(t))}var r=this,i=new Date;t||(t={});var o=e.data,u=e.cache,a=e.timeout;e=d.utils.copy(e,null,null,null,["data","cache","timeout"]),e=d.utils.deepMixIn(e,r.httpConfig),e.data=o,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 d.utils.resolve(r.beforeHTTP(e,t)).then(function(i){return e=i||e,y&&(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 d.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",d.utils.resolve(i[o](e,t,n,r)).then(function(u){return n=d.utils.isUndefined(u)?n:u,o=r.op="POST",i.dbg(o,e,t,n,r),i.HTTP(n,r)}).then(function(u){return o=r.op="afterPOST",d.utils.resolve(i[o](e,t,n,r,u)).then(function(e){return d.utils.isUndefined(e)?u: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",d.utils.resolve(i[o](e,t,n,r)).then(function(u){return n=d.utils.isUndefined(u)?n:u,o=r.op="PUT",i.dbg(o,e,t,n,r),i.HTTP(n,r)}).then(function(u){return o=r.op="afterPUT",d.utils.resolve(i[o](e,t,n,r,u)).then(function(e){return d.utils.isUndefined(e)?u:e})})},queryTransform:function(e,t,n){return n||(n={}),d.utils.isFunction(n.queryTransform)?n.queryTransform(e,t,n):d.utils.isFunction(e.queryTransform)?e.queryTransform(e,t,n):t},responseError:function(e,t,n){return d.utils.reject(e)},serialize:function(e,t,n){return n||(n={}),d.utils.isFunction(n.serialize)?n.serialize(e,t,n):d.utils.isFunction(e.serialize)?e.serialize(e,t,n):t},sum:function(e,t,n,r){var i=this;if(n||(n={}),r||(r={}),!d.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),d.utils.deepMixIn(r.params,n),r.params=i.queryTransform(e,r.params,r),m.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),m.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),d.utils.deepMixIn(r.params,n),r.params=i.queryTransform(e,r.params,r),r.suffix=i.getSuffix(e,r),m.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),m.updateMany.call(r,e,t,n)}}),l.addAction=function(e,t){if(!e||!d.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 d.utils.reject(e)},n[e]=function(n,r){var i=this;d.utils.isObject(n)&&(r=n),r=r||{};var o=i.getAdapter(t.adapter||i.defaultAdapter||"http"),a={};if(d.utils.fillIn(a,t),!r.hasOwnProperty("endpoint")&&a.endpoint&&(r.endpoint=a.endpoint),"function"==typeof r.getEndpoint)a.url=r.getEndpoint(i,r);else{var s=[r.basePath||i.basePath||o.basePath,o.getEndpoint(i,d.utils.isSorN(n)?n:null,r)];d.utils.isSorN(n)&&s.push(n),s.push(t.pathname||e),a.url=u.apply(null,s)}return a.method=a.method||"GET",a.mapper=i.name,d.utils.deepMixIn(a)(r),d.utils.resolve(a).then(r.request||t.request).then(function(e){return o.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}},l.addActions=function(e){return e||(e={}),function(e){return d.utils.forOwn(e,function(t,n){l.addAction(n,t)(e)}),e}},l.extend=d.utils.extend,l.version={beta:2,full:"3.0.0-beta.2",major:3,minor:0,patch:0},e.exports=l},function(t,n){t.exports=e},function(e,t,n){!function(e,t){t(n(1))}(this,function(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 u,a=e[Symbol.iterator]();!(r=(u=a.next()).done)&&(n.push(u.value),!t||n.length!==t);r=!0);}catch(e){i=!0,o=e}finally{try{!r&&a.return&&a.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()},u=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()},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||[])},l={debug:!1,raw:!1};n.reserved=["orderBy","sort","limit","offset","skip","where"],n.Response=r,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: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 u=this,a=void 0;return n||(n={}),o||(o={}),a=o.op="beforeCount",t.utils.resolve(u[a](e,n,o)).then(function(){return a=o.op="count",u.dbg(a,e,n,o),t.utils.resolve(u._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,a);return c=u.respond(c,o),a=o.op="afterCount",t.utils.resolve(u[a](e,n,o,c)).then(function(e){return t.utils.isUndefined(e)?c:e})})},create:function(e,n,o){var u=this,a=void 0;return n||(n={}),o||(o={}),a=o.op="beforeCreate",t.utils.resolve(u[a](e,n,o)).then(function(r){return n=t.utils.isUndefined(r)?n:r,n=s(e,n),a=o.op="create",u.dbg(a,e,n,o),t.utils.resolve(u._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=u.respond(c,o),a=o.op="afterCreate",t.utils.resolve(u[a](e,n,o,c)).then(function(e){return t.utils.isUndefined(e)?c:e})})},createMany:function(e,n,o){var u=this,a=void 0;return n||(n={}),o||(o={}),a=o.op="beforeCreateMany",t.utils.resolve(u[a](e,n,o)).then(function(r){return n=t.utils.isUndefined(r)?n:r,n=n.map(function(t){return s(e,t)}),a=o.op="createMany",u.dbg(a,e,n,o),t.utils.resolve(u._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=u.respond(c,o),a=o.op="afterCreateMany",t.utils.resolve(u[a](e,n,o,c)).then(function(e){return t.utils.isUndefined(e)?c:e})})},destroy:function(e,n,o){var u=this,a=void 0;return o||(o={}),a=o.op="beforeDestroy",t.utils.resolve(u[a](e,n,o)).then(function(){return a=o.op="destroy",u.dbg(a,e,n,o),t.utils.resolve(u._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=u.respond(c,o),a=o.op="afterDestroy",t.utils.resolve(u[a](e,n,o,c)).then(function(e){return t.utils.isUndefined(e)?c:e})})},destroyAll:function(e,n,o){var u=this,a=void 0;return n||(n={}),o||(o={}),a=o.op="beforeDestroyAll",t.utils.resolve(u[a](e,n,o)).then(function(){return a=o.op="destroyAll",u.dbg(a,e,n,o),t.utils.resolve(u._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=u.respond(c,o),a=o.op="afterDestroyAll",t.utils.resolve(u[a](e,n,o,c)).then(function(e){return t.utils.isUndefined(e)?c:e})})},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),a(i).filter(function(e){return e})},makeHasManyForeignKeys:function(e,n,r){return t.utils.get(r,e.idAttribute)},loadHasMany:function(e,n,r,i){var o=this,u=!1;t.utils.isObject(r)&&!t.utils.isArray(r)&&(u=!0,r=[r]);var a=r.map(function(t){return o.makeHasManyForeignKey(e,n,t)}),s={where:{}},l=s.where[n.foreignKey]={};return u?l["=="]=a[0]:l.in=a.filter(function(e){return e}),o.findAll(n.getRelation(),s,i).then(function(i){r.forEach(function(r){var o=[];u?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 u=this,s=void 0,l=n.getRelation();if(t.utils.isObject(r)&&!t.utils.isArray(r)&&(s=r),s)return u.findAll(l,{where:i.defineProperty({},l.idAttribute,{in:u.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(u.self.makeHasManyLocalKeys(e,n,t))}),{v:u.findAll(l,{where:i.defineProperty({},l.idAttribute,{in:a(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 u=this,a=n.getRelation(),s=e.idAttribute,l=void 0;return t.utils.isObject(r)&&!t.utils.isArray(r)&&(l=r),l?u.findAll(n.getRelation(),{where:i.defineProperty({},n.foreignKeys,{contains:u.makeHasManyForeignKeys(e,n,l)})},o).then(function(e){n.setLocalField(l,e)}):u.findAll(a,{where:i.defineProperty({},n.foreignKeys,{isectNotEmpty:r.map(function(t){return u.makeHasManyForeignKeys(e,n,t)})})},o).then(function(e){var i=n.foreignKeys;r.forEach(function(r){var o=[],u=t.utils.get(r,s);e.forEach(function(n){var r=t.utils.get(e,i)||[];-1!==r.indexOf(u)&&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])})})},makeBelongsToForeignKey:function(e,t,n){return t.getForeignKey(n)},loadBelongsTo:function(e,n,r,o){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:i.defineProperty({},a.idAttribute,{in:s})},o).then(function(e){r.forEach(function(t){e.forEach(function(e){e[a.idAttribute]===t[n.foreignKey]&&n.setLocalField(t,e)})})})}var l=function(){var t=r;return{v:u.find(a,u.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 u=this,a=void 0,s=void 0;return o||(o={}),o.with||(o.with=[]),s=o.op="beforeFind",t.utils.resolve(u[s](e,n,o)).then(function(){return s=o.op="find",u.dbg(s,e,n,o),t.utils.resolve(u._find(e,n,o))}).then(function(n){var r=i.slicedToArray(n,1),s=r[0];if(s){a=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=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&&l.push(r)}),Promise.all(l)}}).then(function(){var i=new r(a,{},"find");return i.found=a?1:0,i=u.respond(i,o),s=o.op="afterFind",t.utils.resolve(u[s](e,n,o,i)).then(function(e){return t.utils.isUndefined(e)?i:e})})},findAll:function(e,n,o){var u=this;o||(o={}),o.with||(o.with=[]);var a=[],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(u[s](e,n,o)).then(function(){return s=o.op="findAll",u.dbg(s,e,n,o),t.utils.resolve(u._findAll(e,n,o))}).then(function(n){var r=i.slicedToArray(n,1),s=r[0];s||(s=[]),a=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=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&&l.push(r)}),Promise.all(l)}).then(function(){var i=new r(a,{},"findAll");return i.found=a.length,i=u.respond(i,o),s=o.op="afterFindAll",t.utils.resolve(u[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])},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 u;(u=console).log.apply(u,[i].concat(n))}}},sum:function(e,n,o,u){var a=this,s=void 0;if(!t.utils.isString(n))throw new Error("field must be a string!");return o||(o={}),u||(u={}),s=u.op="beforeSum",t.utils.resolve(a[s](e,n,o,u)).then(function(){return s=u.op="sum",a.dbg(s,e,n,o,u),t.utils.resolve(a._sum(e,n,o,u))}).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=a.respond(p,u),s=u.op="afterSum",t.utils.resolve(a[s](e,n,o,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,o,u){var a=this;o||(o={}),u||(u={});var s=void 0;return s=u.op="beforeUpdate",t.utils.resolve(a[s](e,n,o,u)).then(function(r){return o=t.utils.isUndefined(r)?o:r,s=u.op="update",a.dbg(s,e,n,o,u),t.utils.resolve(a._update(e,n,o,u))}).then(function(l){var f=i.slicedToArray(l,2),d=f[0],c=f[1];c||(c={});var p=new r(d,c,"update");return p.updated=d?1:0,p=a.respond(p,u),s=u.op="afterUpdate",t.utils.resolve(a[s](e,n,o,u,p)).then(function(e){return t.utils.isUndefined(e)?p:e})})},updateAll:function(e,n,o,u){var a=this;n||(n={}),o||(o={}),u||(u={});var s=void 0;return s=u.op="beforeUpdateAll",t.utils.resolve(a[s](e,n,o,u)).then(function(r){return n=t.utils.isUndefined(r)?n:r,s=u.op="updateAll",a.dbg(s,e,n,o,u),t.utils.resolve(a._updateAll(e,n,o,u))}).then(function(l){var f=i.slicedToArray(l,2),d=f[0],c=f[1];d||(d=[]),c||(c={});var p=new r(d,c,"updateAll");return p.updated=d.length,p=a.respond(p,u),s=u.op="afterUpdateAll",t.utils.resolve(a[s](e,n,o,u,p)).then(function(e){return t.utils.isUndefined(e)?p:e})})},updateMany:function(e,n,o){var u=this;n||(n=[]),o||(o={});var a=void 0,l=e.idAttribute;return n=n.filter(function(e){return t.utils.get(e,l)}),a=o.op="beforeUpdateMany",t.utils.resolve(u[a](e,n,o)).then(function(r){return n=t.utils.isUndefined(r)?n:r,n=n.map(function(t){return s(e,t)}),a=o.op="updateMany",u.dbg(a,e,n,o),t.utils.resolve(u._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=u.respond(c,o),a=o.op="afterUpdateMany",t.utils.resolve(u[a](e,n,o,c)).then(function(e){return t.utils.isUndefined(e)?c:e})})}}),e.exports=n})},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 022a40e..516db84 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","_interopRequireDefault","obj","__esModule","default","isValidString","value","join","items","separator","filter","makePath","_len3","arguments","length","args","Array","_key3","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","_jsDataAdapter2","_typeof","Symbol","iterator","constructor","_jsDataAdapter","axios","hasFetch","fetch","e","noop","_len","_key","dbg","apply","op","concat","resolve","noop2","_len2","_key2","__super__","prototype","basePath","forceTrailingSlash","http","httpConfig","suffix","useFetch","Object","create","enumerable","writable","configurable","defineProperty","addHiddenPropsToTarget","afterDEL","afterGET","afterHTTP","afterPOST","afterPUT","beforeDEL","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","method","_config","isUndefined","HTTP","_response","isFunction","hasOwnProperty","data","destroy","destroyAll","error","console","_console","_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","_args","isSorN","pathname","addActions","extend","version","full","major","parseInt","minor","patch","alpha","beta","global","jsData","Adapter","Response","meta","babelHelpers","typeof","slicedToArray","sliceIterator","arr","i","_arr","_n","_d","_e","undefined","_s","_i","next","done","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","results","_results","respond","_props","_results2","created","map","record","_results3","_results4","_results5","makeHasManyForeignKey","makeHasManyLocalKeys","localKeys","itemKeys","keys","x","makeHasManyForeignKeys","loadHasMany","__opts","singular","IDs","where","criteria","relatedItems","attached","relatedItem","setLocalField","loadHasManyLocalKeys","relatedMapper","in","loadHasManyForeignKeys","foreignKeys","contains","isectNotEmpty","foreignKeysField","_relatedItems","loadHasOne","relatedData","makeBelongsToForeignKey","loadBelongsTo","relationDef","_ret2","with","_results6","_record","tasks","forEachRelation","task","Promise","all","found","activeWith","_activeWith","activeQuery","deepFillIn","_results7","_records","getOpt","opt","plainCopy","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","_interopRequireDefault","obj","__esModule","default","isValidString","value","join","items","separator","filter","makePath","_len3","arguments","length","args","Array","_key3","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","_jsDataAdapter2","_typeof","Symbol","iterator","constructor","_jsDataAdapter","axios","hasFetch","fetch","e","noop","_len","_key","dbg","apply","op","concat","resolve","noop2","_len2","_key2","__super__","prototype","basePath","forceTrailingSlash","http","httpConfig","suffix","useFetch","Object","create","enumerable","writable","configurable","defineProperty","addHiddenPropsToTarget","afterDEL","afterGET","afterHTTP","afterPOST","afterPUT","beforeDEL","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","method","_config","isUndefined","HTTP","_response","isFunction","hasOwnProperty","data","destroy","destroyAll","error","console","_console","_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","_args","isSorN","pathname","addActions","extend","version","beta","full","major","minor","patch","global","jsData","Adapter","Response","meta","babelHelpers","typeof","slicedToArray","sliceIterator","arr","i","_arr","_n","_d","_e","undefined","_s","_i","next","done","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","results","_results","respond","_props","_results2","created","map","record","_results3","_results4","_results5","makeHasManyForeignKey","makeHasManyLocalKeys","localKeys","itemKeys","keys","x","makeHasManyForeignKeys","loadHasMany","__opts","singular","IDs","where","criteria","relatedItems","attached","relatedItem","setLocalField","loadHasManyLocalKeys","relatedMapper","in","loadHasManyForeignKeys","foreignKeys","contains","isectNotEmpty","foreignKeysField","_relatedItems","loadHasOne","relatedData","makeBelongsToForeignKey","loadBelongsTo","relationDef","_ret2","with","_results6","_record","tasks","forEachRelation","task","Promise","all","found","activeWith","_activeWith","activeQuery","deepFillIn","_results7","_records","getOpt","opt","plainCopy","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/fetch/package.json b/fetch/package.json index a96968b..e682b4a 100644 --- a/fetch/package.json +++ b/fetch/package.json @@ -1,7 +1,7 @@ { "name": "js-data-fetch", "description": "HTTP adapter for js-data that uses the fetch API.", - "version": "3.0.0-alpha.10", + "version": "3.0.0-beta.2", "homepage": "https://github.com/js-data/js-data-http", "repository": { "type": "git", @@ -19,6 +19,6 @@ "fetch" ], "peerDependencies": { - "js-data": "^3.0.0-alpha.20" + "js-data": "^3.0.0-beta.1" } } diff --git a/node/AUTHORS b/node/AUTHORS deleted file mode 100644 index 9fe6289..0000000 --- a/node/AUTHORS +++ /dev/null @@ -1,13 +0,0 @@ -# This is the official list of js-data-http project authors. -# -# This file is controlled by scripts/authors.js -# -# Names are formatted as: -# # commits Name or Organization -# The email address is not required for organizations. -InternalFX -Ivan Voznyakovsky -Jason Dobry -Josh Drake -RobertHerhold -Tomás Fox diff --git a/node/CONTRIBUTORS b/node/CONTRIBUTORS deleted file mode 100644 index 5f11066..0000000 --- a/node/CONTRIBUTORS +++ /dev/null @@ -1,12 +0,0 @@ -# People who have contributed to the js-data-http project. -# -# This file is controlled by scripts/authors.js -# -# Names should be added to this file as: -# [commit count] Name - 1 InternalFX - 1 Ivan Voznyakovsky - 69 Jason Dobry - 1 Josh Drake - 1 RobertHerhold - 3 Tomás Fox diff --git a/node/LICENSE b/node/LICENSE index 73d2777..7ff3781 100644 --- a/node/LICENSE +++ b/node/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2014-2016 Jason Dobry +Copyright (c) 2014-2016 js-data-http project authors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/node/dist/js-data-http-node.js b/node/dist/js-data-http-node.js index 1299742..bdf5871 100644 --- a/node/dist/js-data-http-node.js +++ b/node/dist/js-data-http-node.js @@ -1293,13 +1293,12 @@ return /******/ (function(modules) { // webpackBootstrap * otherwise `false` if the current version is not beta. */ HttpAdapter.version = { - full: '<%= pkg.version %>', - major: parseInt('<%= major %>', 10), - minor: parseInt('<%= minor %>', 10), - patch: parseInt('<%= patch %>', 10), - alpha: true ? '<%= alpha %>' : false, - beta: true ? '<%= beta %>' : false - }; + beta: 2, + full: '3.0.0-beta.2', + major: 3, + minor: 0, + patch: 0 +}; /** * Registered as `js-data-http` in NPM and Bower. The build of `js-data-http` diff --git a/node/dist/js-data-http-node.js.map b/node/dist/js-data-http-node.js.map index 2959d86..2e944d4 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 397070f8b3d685b07a81","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;;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,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;;AAEA;;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,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;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;;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;AACA,iBAAgB;AAChB;AACA;AACA;AACA,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,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,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,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,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;;AAEA,EAAC;AACD,4C;;;;;;AC3lDA,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 397070f8b3d685b07a81\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nimport Adapter from 'js-data-adapter'\n\nlet hasFetch = false\n\ntry {\n hasFetch = window && window.fetch\n} catch (e) {}\n\nconst noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n return utils.resolve()\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n return utils.resolve()\n}\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 * @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// 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\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 HttpAdapter.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 */\nHttpAdapter.addAction = function (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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n utils.forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.version = {\n full: '<%= pkg.version %>',\n major: parseInt('<%= major %>', 10),\n minor: parseInt('<%= minor %>', 10),\n patch: parseInt('<%= patch %>', 10),\n alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false,\n beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false\n}\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 */\n\nmodule.exports = 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(require('js-data')) :\n typeof define === 'function' && define.amd ? define('js-data-adapter', ['js-data'], factory) :\n (factory(global.JSData));\n}(this, function (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 Adapter.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 * @typedef {Object} Response\n * @property {Object} data Response data.\n * @property {string} op The operation for which the response was created.\n */\n function Response(data, meta, op) {\n var self = this;\n meta || (meta = {});\n self.data = data;\n jsData.utils.fillIn(self, meta);\n self.op = op;\n }\n\n Adapter.Response = Response;\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 {Object} props The `props` 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 * 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 * 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 _ret = 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 _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === \"object\") return _ret.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 * 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 * 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 _ret2 = 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 _ret2 === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret2)) === \"object\") return _ret2.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 * 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 * 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 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 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 module.exports = Adapter;\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 66471f2167b1b4c3962f","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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ACA;;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,gBAAe,OAAO;AACtB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;;AAEA;;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,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;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;;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;AACA,iBAAgB;AAChB;AACA;AACA;AACA,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,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,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,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,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;;AAEA,EAAC;AACD,4C;;;;;;AC3lDA,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 66471f2167b1b4c3962f\n **/","/* global fetch:true Headers:true Request:true */\nconst axios = require('axios')\nimport {utils} from 'js-data'\nimport Adapter from 'js-data-adapter'\n\nlet hasFetch = false\n\ntry {\n hasFetch = window && window.fetch\n} catch (e) {}\n\nconst noop = function (...args) {\n const self = this\n const opts = args[args.length - 1]\n self.dbg(opts.op, ...args)\n return utils.resolve()\n}\n\nconst noop2 = function (...args) {\n const self = this\n const opts = args[args.length - 2]\n self.dbg(opts.op, ...args)\n return utils.resolve()\n}\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 * @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// 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\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 HttpAdapter.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 */\nHttpAdapter.addAction = function (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 HttpAdapter.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 */\nHttpAdapter.addActions = function (opts) {\n opts || (opts = {})\n return function (mapper) {\n utils.forOwn(mapper, function (value, key) {\n HttpAdapter.addAction(key, value)(mapper)\n })\n return mapper\n }\n}\n\n/**\n * Alternative to ES6 class syntax for extending `HttpAdapter`.\n *\n * __ES6__:\n * ```javascript\n * class MyHttpAdapter extends HttpAdapter {\n * deserialize (Model, data, opts) {\n * const data = super.deserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * }\n * }\n * ```\n *\n * __ES5__:\n * ```javascript\n * var instanceProps = {\n * // override deserialize\n * deserialize: function (Model, data, opts) {\n * var Ctor = this.constructor\n * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize\n * // call the super deserialize\n * var data = superDeserialize(Model, data, opts)\n * data.foo = 'bar'\n * return data\n * },\n * say: function () { return 'hi' }\n * }\n * var classProps = {\n * yell: function () { return 'HI' }\n * }\n *\n * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps)\n * var adapter = new MyHttpAdapter()\n * adapter.say() // \"hi\"\n * MyHttpAdapter.yell() // \"HI\"\n * ```\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\n/**\n * Details of the current version of the `js-data-http` module.\n *\n * @name HttpAdapter.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 */\nHttpAdapter.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 */\n\nmodule.exports = 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(require('js-data')) :\n typeof define === 'function' && define.amd ? define('js-data-adapter', ['js-data'], factory) :\n (factory(global.JSData));\n}(this, function (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 Adapter.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 * @typedef {Object} Response\n * @property {Object} data Response data.\n * @property {string} op The operation for which the response was created.\n */\n function Response(data, meta, op) {\n var self = this;\n meta || (meta = {});\n self.data = data;\n jsData.utils.fillIn(self, meta);\n self.op = op;\n }\n\n Adapter.Response = Response;\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 {Object} props The `props` 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 * 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 * 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 _ret = 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 _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === \"object\") return _ret.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 * 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 * 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 _ret2 = 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 _ret2 === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret2)) === \"object\") return _ret2.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 * 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 * 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 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 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 module.exports = Adapter;\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 diff --git a/node/package.json b/node/package.json index ee6aff0..c7e325e 100644 --- a/node/package.json +++ b/node/package.json @@ -1,7 +1,7 @@ { "name": "js-data-http-node", "description": "Node.js HTTP adapter for js-data.", - "version": "3.0.0-alpha.10", + "version": "3.0.0-beta.2", "homepage": "https://github.com/js-data/js-data-http", "repository": { "type": "git", @@ -19,10 +19,10 @@ "node.js" ], "dependencies": { - "js-data-adapter": "^0.2.4" + "js-data-adapter": "~0.3.0" }, "peerDependencies": { "axios": "^0.9.1", - "js-data": "^3.0.0-alpha.20" + "js-data": "^3.0.0-beta.1" } } diff --git a/package.json b/package.json index b6fb743..0892437 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "js-data-http", "description": "HTTP (XHR) adapter for js-data in the browser.", - "version": "3.0.0-alpha.10", + "version": "3.0.0-beta.2", "homepage": "https://github.com/js-data/js-data-http", "repository": { "type": "git", @@ -38,14 +38,14 @@ "scripts": { "lint": "repo-tools lint karma.start.js karma.conf.js src/**/*.js test/*.test.js fetch/karma.*.js node/mocha.start.js scripts/*.js", "doc": "jsdoc -c conf.json src node_modules/js-data-adapter/src && node scripts/cleanup.js", - "webpack": "webpack --config webpack.config.js && webpack --config node/webpack.config.js && webpack --config fetch/webpack.config.js", + "version": "repo-tools write-version dist/js-data-http.js fetch/dist/js-data-fetch.js node/dist/js-data-http-node.js", + "webpack": "webpack --config webpack.config.js && webpack --config node/webpack.config.js && webpack --config fetch/webpack.config.js && npm run version", "min": "uglifyjs dist/js-data-http.js -o dist/js-data-http.min.js --source-map dist/js-data-http.min.map --source-map-url js-data-http.min.map -v -m -c --screw-ie8", "min_fetch": "uglifyjs fetch/dist/js-data-fetch.js -o fetch/dist/js-data-fetch.min.js --source-map fetch/dist/js-data-fetch.min.map --source-map-url js-data-fetch.min.map -v -m -c --screw-ie8", - "version": "node scripts/version.js", "banner": "node scripts/banner.js", "gzip": "echo js-data-http gzipped size: $(cat dist/js-data-http.min.js | gzip -f9 | wc -c)kb", "gzip_fetch": "echo js-data-fetch gzipped size: $(cat fetch/dist/js-data-fetch.min.js | gzip -f9 | wc -c)kb", - "build": "npm run lint && npm run webpack && npm run min && npm run min_fetch && npm run version && npm run banner", + "build": "npm run lint && npm run webpack && npm run min && npm run min_fetch && npm run banner", "karma": "karma start", "karma_fetch": "karma start fetch/karma.conf.js", "mocha": "mocha -t 20000 -R dot -r source-map-support/register node/mocha.start.js test/*.test.js", @@ -53,14 +53,14 @@ "test": "npm run build && npm run karma && npm run karma_fetch && npm run cover", "repo-tools": "repo-tools updates && repo-tools changelog && repo-tools authors", "release": "npm test && npm run doc && npm run repo-tools", - "ci": "npm test && cat ./coverage/lcov.info | coveralls || true" + "ci": "npm test && cat ./coverage/lcov.info | codecov" }, "peerDependencies": { - "js-data": "^3.0.0-alpha.26" + "js-data": "^3.0.0-beta.1" }, "devDependencies": { "axios": "0.9.1", - "babel-core": "6.7.4", + "babel-core": "6.7.6", "babel-loader": "6.2.4", "babel-plugin-syntax-async-functions": "6.5.0", "babel-plugin-transform-regenerator": "6.6.5", @@ -68,13 +68,13 @@ "babel-preset-es2015": "6.6.0", "babel-preset-stage-0": "6.5.0", "chai": "3.5.0", - "coveralls": "2.11.9", - "istanbul": "0.4.2", - "js-data-adapter": "0.2.4", - "js-data-repo-tools": "0.2.0", + "codecov": "1.0.1", + "istanbul": "0.4.3", + "js-data-adapter": "0.3.0", + "js-data-repo-tools": "0.3.0", "jsdoc": "3.4.0", "karma": "0.13.22", - "karma-browserstack-launcher": "0.1.10", + "karma-browserstack-launcher": "0.1.11", "karma-chai": "0.1.0", "karma-mocha": "0.2.2", "karma-phantomjs-launcher": "1.0.0", @@ -84,9 +84,6 @@ "sinon": "1.17.3", "source-map-support": "0.4.0", "uglify-js": "2.6.2", - "webpack": "1.12.14" - }, - "dependencies": { - "js-data": "^3.0.0-alpha.26" + "webpack": "1.13.0" } } diff --git a/scripts/AUTHORS b/scripts/AUTHORS deleted file mode 100644 index fa2423d..0000000 --- a/scripts/AUTHORS +++ /dev/null @@ -1,7 +0,0 @@ -# This is the official list of js-data-http project authors. -# -# This file is controlled by scripts/authors.js -# -# Names are formatted as: -# # commits Name or Organization -# The email address is not required for organizations. diff --git a/scripts/CONTRIBUTORS b/scripts/CONTRIBUTORS deleted file mode 100644 index 429081a..0000000 --- a/scripts/CONTRIBUTORS +++ /dev/null @@ -1,6 +0,0 @@ -# People who have contributed to the js-data-http project. -# -# This file is controlled by scripts/authors.js -# -# Names should be added to this file as: -# [commit count] Name diff --git a/scripts/authors.js b/scripts/authors.js deleted file mode 100644 index 778dc8f..0000000 --- a/scripts/authors.js +++ /dev/null @@ -1,58 +0,0 @@ -var fs = require('fs') -var exec = require('child_process').exec -var path = require('path') - -console.log('Writing AUTHORS file...') - -var authorsFile = fs.readFileSync(path.join(__dirname, '/AUTHORS'), { - encoding: 'utf-8' -}) -var contributorsFile = fs.readFileSync(path.join(__dirname, '/CONTRIBUTORS'), { - encoding: 'utf-8' -}) - -var tty = process.platform === 'win32' ? 'CON' : '/dev/tty' - -exec('git shortlog -s -e < ' + tty, function (err, stdout, stderr) { - if (err) { - console.error(err) - process.exit(-1) - } else { - var lines = stdout.split('\n') - var countsAndNames = lines.map(function (line) { - return line.split('\t') - }) - var names = countsAndNames.map(function (pair) { - return pair[1] - }) - - // Add to or otherwise modify "names" if necessary - - fs.writeFileSync(path.join(__dirname, '/../AUTHORS'), authorsFile + names.join('\n'), { - encoding: 'utf-8' - }) - fs.writeFileSync(path.join(__dirname, '/../fetch/AUTHORS'), authorsFile + names.join('\n'), { - encoding: 'utf-8' - }) - fs.writeFileSync(path.join(__dirname, '/../node/AUTHORS'), authorsFile + names.join('\n'), { - encoding: 'utf-8' - }) - console.log('Done!') - console.log('Writing CONTRIBUTORS file...') - - names = lines - - // Add to or otherwise modify "names" if necessary - - fs.writeFileSync(path.join(__dirname, '/../CONTRIBUTORS'), contributorsFile + names.join('\n'), { - encoding: 'utf-8' - }) - fs.writeFileSync(path.join(__dirname, '/../fetch/CONTRIBUTORS'), contributorsFile + names.join('\n'), { - encoding: 'utf-8' - }) - fs.writeFileSync(path.join(__dirname, '/../node/CONTRIBUTORS'), contributorsFile + names.join('\n'), { - encoding: 'utf-8' - }) - console.log('Done!') - } -}) diff --git a/scripts/banner.js b/scripts/banner.js index 5493e4e..f2f761b 100644 --- a/scripts/banner.js +++ b/scripts/banner.js @@ -3,12 +3,11 @@ var pkg = require('../package.json') var banner = '/*!\n' + '* js-data-http\n' + - '* @version ' + pkg.version + ' - Homepage \n' + - '* @author Jason Dobry \n' + - '* @copyright (c) 2014-2015 Jason Dobry\n' + + '* @version ' + pkg.version + ' - Homepage \n' + + '* @copyright (c) 2014-2016 js-data-http project authors\n' + '* @license MIT \n' + '*\n' + - '* @overview HTTP adapter for js-data.\n' + + '* @overview HTTP (XHR) adapter for js-data in the browser.\n' + '*/\n' console.log('Adding banner to dist/ files...') @@ -27,4 +26,16 @@ function addBanner (filepath) { addBanner('dist/js-data-http.js') addBanner('dist/js-data-http.min.js') +banner = '/*!\n' + + '* js-data-fetch\n' + + '* @version ' + pkg.version + ' - Homepage \n' + + '* @copyright (c) 2014-2016 js-data-http project authors\n' + + '* @license MIT \n' + + '*\n' + + '* @overview HTTP adapter for js-data that uses the fetch API.\n' + + '*/\n' + +addBanner('fetch/dist/js-data-fetch.js') +addBanner('fetch/dist/js-data-fetch.min.js') + console.log('Done!') diff --git a/scripts/version.js b/scripts/version.js deleted file mode 100644 index c1452c8..0000000 --- a/scripts/version.js +++ /dev/null @@ -1,39 +0,0 @@ -var fs = require('fs') -var pkg = require('../package.json') - -console.log('Adding version to dist/ files...') - -function version (filepath) { - var file = fs.readFileSync(filepath, { - encoding: 'utf-8' - }) - - file = file.replace(/<%= pkg\.version %>/gi, pkg.version) - - var parts = pkg.version.split('-') - var numbers = parts[0].split('.') - - file = file.replace(/<%= major %>/gi, numbers[0]) - file = file.replace(/<%= minor %>/gi, numbers[1]) - file = file.replace(/<%= patch %>/gi, numbers[2]) - - if (pkg.version.indexOf('alpha') !== -1) { - file = file.replace(/<%= alpha %>/gi, parts[1].replace('alpha.', '') + (parts.length > 2 ? '-' + parts[2] : '')) - } else { - file = file.replace(/<%= alpha %>/gi, false) - } - - if (pkg.version.indexOf('beta') !== -1) { - file = file.replace(/<%= beta %>/gi, parts[1].replace('beta.', '') + (parts.length > 2 ? '-' + parts[2] : '')) - } else { - file = file.replace(/<%= beta %>/gi, false) - } - - fs.writeFileSync(filepath, file, { - encoding: 'utf-8' - }) -} - -version('dist/js-data-http.js') - -console.log('Done!') diff --git a/src/index.js b/src/index.js index bffb92a..baadff9 100644 --- a/src/index.js +++ b/src/index.js @@ -1229,14 +1229,7 @@ HttpAdapter.extend = utils.extend * @property {(string|boolean)} version.beta The beta version value, * otherwise `false` if the current version is not beta. */ -HttpAdapter.version = { - full: '<%= pkg.version %>', - major: parseInt('<%= major %>', 10), - minor: parseInt('<%= minor %>', 10), - patch: parseInt('<%= patch %>', 10), - alpha: '<%= alpha %>' !== 'false' ? '<%= alpha %>' : false, - beta: '<%= beta %>' !== 'false' ? '<%= beta %>' : false -} +HttpAdapter.version = '<%= version %>' /** * Registered as `js-data-http` in NPM and Bower. The build of `js-data-http` diff --git a/test/find.test.js b/test/find.test.js index 7edeb25..5081f06 100644 --- a/test/find.test.js +++ b/test/find.test.js @@ -127,6 +127,10 @@ describe('find', function () { post: { foreignKey: 'userId', localField: 'posts' + }, + comment: { + foreignKey: 'userId', + localField: 'comments' } } } @@ -140,6 +144,12 @@ describe('find', function () { foreignKey: 'userId', localField: 'user' } + }, + hasMany: { + comment: { + localField: 'comments', + foreignKey: 'postId' + } } } }) From 5c6939997f3363707fd2b008f756f9d87bf08e2e Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Sun, 17 Apr 2016 20:42:05 -0700 Subject: [PATCH 21/24] Test fix --- test/find.test.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/find.test.js b/test/find.test.js index 5081f06..f37990d 100644 --- a/test/find.test.js +++ b/test/find.test.js @@ -170,18 +170,18 @@ describe('find', function () { } }) - const post = { + var post = { id: 1, userId: 10 } - const comment = { + var comment = { id: 3, postId: 1, userId: 13 } - const comment2 = { + var comment2 = { id: 4, userId: 7 } From 6be2435c34df8fe59db6b4123fe62b0f71dfbc46 Mon Sep 17 00:00:00 2001 From: nlac Date: Sun, 24 Apr 2016 21:53:28 +0200 Subject: [PATCH 22/24] added type definition file for typescript --- dist/js-data-http.d.ts | 45 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 dist/js-data-http.d.ts diff --git a/dist/js-data-http.d.ts b/dist/js-data-http.d.ts new file mode 100644 index 0000000..4978351 --- /dev/null +++ b/dist/js-data-http.d.ts @@ -0,0 +1,45 @@ +declare module JSDataHttp { + + interface IDict { + [key: string]: any; + } + + interface IActionOpts { + adapter?: string, + pathname?: string, + request?: Function, + response?: Function, + responseError?: Function + } + + interface IBaseHttpAdapter { + basePath?: string, + suffix?: string, + debug?: boolean, + forceTrailingSlash?: boolean, + useFetch?: boolean + http?: any, + httpConfig?: IDict + } + + export class HttpAdapter implements IBaseHttpAdapter { + + static version: { + full?: string, + minor?: string, + major?: string, + patch?: string, + alpha?: string | boolean, + beta?: string | boolean + } + static addAction(name: string, opts: IActionOpts): Function + static addActions(opts?: {[key:string]: IActionOpts}): Function + static extend(instanceProps?: IDict, classProps?: IDict): HttpAdapter + + constructor(opts: IBaseHttpAdapter) + } +} + +declare module 'js-data-http' { + export = JSDataHttp.HttpAdapter +} \ No newline at end of file From c749f0075e650ac9534689dd4b23a2952018cc86 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Wed, 27 Apr 2016 23:39:49 -0700 Subject: [PATCH 23/24] Improving TypeScript support --- .gitignore | 3 +- .npmignore | 36 ------ CHANGELOG.md | 14 +++ dist/js-data-http.d.ts | 79 ++++++------- fetch/.npmignore | 4 - fetch/dist/js-data-fetch.d.ts | 38 ++++++ fetch/package.json | 7 +- fetch/typings.json | 10 ++ karma.start.js | 6 +- node/.npmignore | 2 - node/dist/js-data-http-node.d.ts | 38 ++++++ node/package.json | 9 +- node/typings.json | 10 ++ package.json | 20 +++- src/index.js | 192 +++++++++++++++---------------- typings.json | 10 ++ webpack.config.js | 2 +- 17 files changed, 282 insertions(+), 198 deletions(-) delete mode 100644 .npmignore delete mode 100644 fetch/.npmignore create mode 100644 fetch/dist/js-data-fetch.d.ts create mode 100644 fetch/typings.json delete mode 100644 node/.npmignore create mode 100644 node/dist/js-data-http-node.d.ts create mode 100644 node/typings.json create mode 100644 typings.json diff --git a/.gitignore b/.gitignore index 1abddc4..33745c3 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,5 @@ coverage/ junit/ doc/ node_modules/ -*.log \ No newline at end of file +*.log +typings \ No newline at end of file diff --git a/.npmignore b/.npmignore deleted file mode 100644 index 8d96fc1..0000000 --- a/.npmignore +++ /dev/null @@ -1,36 +0,0 @@ -lib-cov -*.seed -*.log -*.csv -*.dat -*.out -*.pid -*.gz - -pids -logs -results - -npm-debug.log -node_modules - -junit/ -coverage/ -doc/ -bower_components/ - -*.iml -.idea/ - -*.png -CONTRIBUTING.md -favicon.ico -circle.yml -bower.json -.bowerrc -Gruntfile.js -*.start.js -karma.conf.js -test/ -lib/ -src/ diff --git a/CHANGELOG.md b/CHANGELOG.md index bb1a2dc..4c07f8e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,17 @@ +##### 3.0.0-beta.3 - 28 April 2016 + +###### Breaking changes +- js-data-http.js no longer exports a default module, you must now do: + - `import {HttpAdapter} from 'js-data-http' + - `var HttpAdapter = require('js-data-http').HttpAdapter + - `var adapter = new window.JSDataHttp.HttpAdapter()` + - `define(['js-data-http'], function (JSDataHttp) { var adapter = new window.JSDataHttp.HttpAdapter(); }) + +###### Backwards compatible changes +- Added `typings` field to `package.json` +- Added `typings.json` +- Added `dist/js-data-http.d.ts` + ##### 3.0.0-beta.2 - 17 April 2016 Official v3 beta release diff --git a/dist/js-data-http.d.ts b/dist/js-data-http.d.ts index 4978351..36186ca 100644 --- a/dist/js-data-http.d.ts +++ b/dist/js-data-http.d.ts @@ -1,45 +1,38 @@ -declare module JSDataHttp { - - interface IDict { - [key: string]: any; - } - - interface IActionOpts { - adapter?: string, - pathname?: string, - request?: Function, - response?: Function, - responseError?: Function - } - - interface IBaseHttpAdapter { - basePath?: string, - suffix?: string, - debug?: boolean, - forceTrailingSlash?: boolean, - useFetch?: boolean - http?: any, - httpConfig?: IDict - } - - export class HttpAdapter implements IBaseHttpAdapter { +import {Adapter} from 'js-data-adapter' - static version: { - full?: string, - minor?: string, - major?: string, - patch?: string, - alpha?: string | boolean, - beta?: string | boolean - } - static addAction(name: string, opts: IActionOpts): Function - static addActions(opts?: {[key:string]: IActionOpts}): Function - static extend(instanceProps?: IDict, classProps?: IDict): HttpAdapter - - constructor(opts: IBaseHttpAdapter) - } +interface IDict { + [key: string]: any; +} +interface IActionOpts { + adapter?: string, + pathname?: string, + request?: Function, + response?: Function, + responseError?: Function +} +interface IBaseAdapter extends IDict { + debug?: boolean, + raw?: boolean +} +interface IBaseHttpAdapter extends IBaseAdapter { + basePath?: string + forceTrailingSlash?: boolean + http?: any + httpConfig?: IDict + suffix?: string + useFetch?: boolean +} +export function addAction(name: string, opts: IActionOpts): Function +export function addActions(opts ?: { [key:string]: IActionOpts }): Function +export class HttpAdapter extends Adapter { + static version: { + full?: string + minor?: string + major?: string + patch?: string + alpha?: string | boolean + beta?: string | boolean + } + static extend(instanceProps?: IDict, classProps?: IDict): typeof HttpAdapter + constructor(opts?: IBaseHttpAdapter) } - -declare module 'js-data-http' { - export = JSDataHttp.HttpAdapter -} \ No newline at end of file diff --git a/fetch/.npmignore b/fetch/.npmignore deleted file mode 100644 index b1510e2..0000000 --- a/fetch/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -webpack.config.js -karma.conf.js -karma.start.js -junit/ \ No newline at end of file diff --git a/fetch/dist/js-data-fetch.d.ts b/fetch/dist/js-data-fetch.d.ts new file mode 100644 index 0000000..8e54a7c --- /dev/null +++ b/fetch/dist/js-data-fetch.d.ts @@ -0,0 +1,38 @@ +import {Adapter} from 'js-data-adapter' + +interface IDict { + [key: string]: any; +} +interface IActionOpts { + adapter?: string, + pathname?: string, + request?: Function, + response?: Function, + responseError?: Function +} +interface IBaseAdapter extends IDict { + debug?: boolean, + raw?: boolean +} +interface IBaseHttpAdapter extends IBaseAdapter { + basePath?: string + forceTrailingSlash?: boolean + http?: any + httpConfig?: IDict + suffix?: string + useFetch?: boolean +} +export function addAction(name: string, opts: IActionOpts): Function +export function addActions(opts ?: { [key:string]: IActionOpts }): Function +export class HttpAdapter extends Adapter { + static version: { + full?: string + minor?: string + major?: string + patch?: string + alpha?: string | boolean + beta?: string | boolean + } + static extend(instanceProps?: IDict, classProps?: IDict): typeof HttpAdapter + constructor(opts?: IBaseHttpAdapter) +} diff --git a/fetch/package.json b/fetch/package.json index e682b4a..1634988 100644 --- a/fetch/package.json +++ b/fetch/package.json @@ -1,7 +1,7 @@ { "name": "js-data-fetch", "description": "HTTP adapter for js-data that uses the fetch API.", - "version": "3.0.0-beta.2", + "version": "3.0.0-beta.3", "homepage": "https://github.com/js-data/js-data-http", "repository": { "type": "git", @@ -10,6 +10,9 @@ "author": "js-data-http project authors", "license": "MIT", "main": "./dist/js-data-fetch.js", + "files": [ + "dist/" + ], "keywords": [ "ajax", "axios", @@ -19,6 +22,6 @@ "fetch" ], "peerDependencies": { - "js-data": "^3.0.0-beta.1" + "js-data": "^3.0.0-beta.2" } } diff --git a/fetch/typings.json b/fetch/typings.json new file mode 100644 index 0000000..4ebc46e --- /dev/null +++ b/fetch/typings.json @@ -0,0 +1,10 @@ +{ + "name": "js-data-fetch", + "version": false, + "main": "./dist/js-data-fetch.d.ts", + "ambientDependencies": { + "js-data": "npm:js-data", + "js-data-adapter": "npm:js-data-adapter", + "es6-shim": "registry:dt/es6-shim#0.31.2+20160317120654" + } +} diff --git a/karma.start.js b/karma.start.js index 665423f..b5cb77b 100644 --- a/karma.start.js +++ b/karma.start.js @@ -1,4 +1,4 @@ -/* global JSData:true, HttpAdapter:true, sinon:true, chai:true */ +/* global JSData:true, JSDataHttp:true, sinon:true, chai:true */ before(function () { var Test = this Test.fail = function (msg) { @@ -14,7 +14,7 @@ before(function () { } Test.sinon = sinon Test.JSData = JSData - Test.HttpAdapter = HttpAdapter + Test.HttpAdapter = JSDataHttp.HttpAdapter Test.User = new JSData.Mapper({ name: 'user' }) @@ -29,7 +29,7 @@ before(function () { beforeEach(function () { var Test = this - Test.adapter = new HttpAdapter() + Test.adapter = new JSDataHttp.HttpAdapter() Test.User.registerAdapter('http', Test.adapter, { default: true }) Test.Post.registerAdapter('http', Test.adapter, { default: true }) diff --git a/node/.npmignore b/node/.npmignore deleted file mode 100644 index 7200422..0000000 --- a/node/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -mocha.start.js -webpack.config.js \ No newline at end of file diff --git a/node/dist/js-data-http-node.d.ts b/node/dist/js-data-http-node.d.ts new file mode 100644 index 0000000..9da417e --- /dev/null +++ b/node/dist/js-data-http-node.d.ts @@ -0,0 +1,38 @@ +import {Adapter} from 'js-data-adapter' + +interface IDict { + [key: string]: any; +} +interface IActionOpts { + adapter?: string, + pathname?: string, + request?: Function, + response?: Function, + responseError?: Function +} +interface IBaseAdapter extends IDict { + debug?: boolean, + raw?: boolean +} +interface IBaseHttpAdapter extends IBaseAdapter { + basePath?: string + forceTrailingSlash?: boolean + http?: any + httpConfig?: IDict + suffix?: string + useFetch?: boolean +} +export function addAction(name: string, opts: IActionOpts): Function +export function addActions(opts?: { [key: string]: IActionOpts }): Function +export class HttpAdapter extends Adapter { + static version: { + full?: string + minor?: string + major?: string + patch?: string + alpha?: string | boolean + beta?: string | boolean + } + static extend(instanceProps?: IDict, classProps?: IDict): typeof HttpAdapter + constructor(opts?: IBaseHttpAdapter) +} diff --git a/node/package.json b/node/package.json index c7e325e..7126302 100644 --- a/node/package.json +++ b/node/package.json @@ -1,7 +1,7 @@ { "name": "js-data-http-node", "description": "Node.js HTTP adapter for js-data.", - "version": "3.0.0-beta.2", + "version": "3.0.0-beta.3", "homepage": "https://github.com/js-data/js-data-http", "repository": { "type": "git", @@ -10,6 +10,9 @@ "author": "js-data-http project authors", "license": "MIT", "main": "./dist/js-data-http-node.js", + "files": [ + "dist/" + ], "keywords": [ "ajax", "axios", @@ -22,7 +25,7 @@ "js-data-adapter": "~0.3.0" }, "peerDependencies": { - "axios": "^0.9.1", - "js-data": "^3.0.0-beta.1" + "axios": "^0.11.0", + "js-data": "^3.0.0-beta.2" } } diff --git a/node/typings.json b/node/typings.json new file mode 100644 index 0000000..a4970e8 --- /dev/null +++ b/node/typings.json @@ -0,0 +1,10 @@ +{ + "name": "js-data-http-node", + "version": false, + "main": "./dist/js-data-http-node.d.ts", + "ambientDependencies": { + "js-data": "npm:js-data", + "js-data-adapter": "npm:js-data-adapter", + "es6-shim": "registry:dt/es6-shim#0.31.2+20160317120654" + } +} diff --git a/package.json b/package.json index 0892437..b60e33a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "js-data-http", "description": "HTTP (XHR) adapter for js-data in the browser.", - "version": "3.0.0-beta.2", + "version": "3.0.0-beta.3", "homepage": "https://github.com/js-data/js-data-http", "repository": { "type": "git", @@ -10,6 +10,14 @@ "author": "js-data-http project authors", "license": "MIT", "main": "./dist/js-data-http.js", + "typings": "./dist/js-data-http.d.ts", + "files": [ + "dist/", + "src/", + "AUTHORS", + "CONTRIBUTORS", + "typings.json" + ], "keywords": [ "ajax", "axios", @@ -55,12 +63,15 @@ "release": "npm test && npm run doc && npm run repo-tools", "ci": "npm test && cat ./coverage/lcov.info | codecov" }, + "dependencies": { + "js-data-adapter": "0.5.0" + }, "peerDependencies": { - "js-data": "^3.0.0-beta.1" + "js-data": "^3.0.0-beta.3" }, "devDependencies": { - "axios": "0.9.1", - "babel-core": "6.7.6", + "axios": "0.11.0", + "babel-core": "6.7.7", "babel-loader": "6.2.4", "babel-plugin-syntax-async-functions": "6.5.0", "babel-plugin-transform-regenerator": "6.6.5", @@ -70,7 +81,6 @@ "chai": "3.5.0", "codecov": "1.0.1", "istanbul": "0.4.3", - "js-data-adapter": "0.3.0", "js-data-repo-tools": "0.3.0", "jsdoc": "3.4.0", "karma": "0.13.22", diff --git a/src/index.js b/src/index.js index baadff9..1950856 100644 --- a/src/index.js +++ b/src/index.js @@ -1,7 +1,38 @@ /* global fetch:true Headers:true Request:true */ + +/** + * Registered as `js-data-http` in NPM and Bower. The build of `js-data-http` + * that works on Node.js is registered in NPM as `js-data-http-node`. The build + * 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) { ... }) + * ``` + * + * @module js-data-http + */ + const axios = require('axios') import {utils} from 'js-data' -import Adapter from 'js-data-adapter' +import { + Adapter, + noop, + noop2 +} from 'js-data-adapter' let hasFetch = false @@ -9,20 +40,6 @@ try { hasFetch = window && window.fetch } catch (e) {} -const noop = function (...args) { - const self = this - const opts = args[args.length - 1] - self.dbg(opts.op, ...args) - return utils.resolve() -} - -const noop2 = function (...args) { - const self = this - const opts = args[args.length - 2] - self.dbg(opts.op, ...args) - return utils.resolve() -} - function isValidString (value) { return (value != null && value !== '') } @@ -125,6 +142,7 @@ const DEFAULTS = { * HttpAdapter class. * * @class HttpAdapter + * @extends Adapter * @param {Object} [opts] Configuration options. * @param {string} [opts.basePath=''] TODO * @param {boolean} [opts.debug=false] TODO @@ -141,6 +159,12 @@ function HttpAdapter (opts) { Adapter.call(self, opts) } +/** + * @name module:js-data-http.HttpAdapter + * @see HttpAdapter + */ +exports.HttpAdapter = HttpAdapter + // Setup prototype inheritance from Adapter HttpAdapter.prototype = Object.create(Adapter.prototype, { constructor: { @@ -156,6 +180,54 @@ Object.defineProperty(HttpAdapter, '__super__', { value: Adapter }) +/** + * Alternative to ES6 class syntax for extending `HttpAdapter`. + * + * __ES6__: + * ```javascript + * class MyHttpAdapter extends HttpAdapter { + * deserialize (Model, data, opts) { + * const data = super.deserialize(Model, data, opts) + * data.foo = 'bar' + * return data + * } + * } + * ``` + * + * __ES5__: + * ```javascript + * var instanceProps = { + * // override deserialize + * deserialize: function (Model, data, opts) { + * var Ctor = this.constructor + * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize + * // call the super deserialize + * var data = superDeserialize(Model, data, opts) + * data.foo = 'bar' + * return data + * }, + * say: function () { return 'hi' } + * } + * var classProps = { + * yell: function () { return 'HI' } + * } + * + * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps) + * var adapter = new MyHttpAdapter() + * adapter.say() // "hi" + * MyHttpAdapter.yell() // "HI" + * ``` + * + * @name HttpAdapter.extend + * @method + * @param {Object} [instanceProps] Properties that will be added to the + * prototype of the subclass. + * @param {Object} [classProps] Properties that will be added as static + * properties to the subclass itself. + * @return {Object} Subclass of `HttpAdapter`. + */ +HttpAdapter.extend = utils.extend + utils.addHiddenPropsToTarget(HttpAdapter.prototype, { /** * @name HttpAdapter#afterDEL @@ -1080,7 +1152,7 @@ utils.addHiddenPropsToTarget(HttpAdapter.prototype, { /** * Add an Http actions to a mapper. * - * @name HttpAdapter.addAction + * @name module:js-data-http.addAction * @method * @param {string} name Name of the new action. * @param {Object} [opts] Action configuration @@ -1092,7 +1164,7 @@ utils.addHiddenPropsToTarget(HttpAdapter.prototype, { * @return {Function} Decoration function, which should be passed the mapper to * decorate when invoked. */ -HttpAdapter.addAction = function (name, opts) { +exports.addAction = function addAction (name, opts) { if (!name || !utils.isString(name)) { throw new TypeError('action(name[, opts]): Expected: string, Found: ' + typeof name) } @@ -1150,75 +1222,27 @@ HttpAdapter.addAction = function (name, opts) { * Add multiple Http actions to a mapper. See {@link HttpAdapter.addAction} for * action configuration options. * - * @name HttpAdapter.addActions + * @name module:js-data-http.addActions * @method * @param {Object.} opts Object where the key is an action name * and the value is the configuration for the action. * @return {Function} Decoration function, which should be passed the mapper to * decorate when invoked. */ -HttpAdapter.addActions = function (opts) { +exports.addActions = function addActions (opts) { opts || (opts = {}) return function (mapper) { utils.forOwn(mapper, function (value, key) { - HttpAdapter.addAction(key, value)(mapper) + exports.addAction(key, value)(mapper) }) return mapper } } -/** - * Alternative to ES6 class syntax for extending `HttpAdapter`. - * - * __ES6__: - * ```javascript - * class MyHttpAdapter extends HttpAdapter { - * deserialize (Model, data, opts) { - * const data = super.deserialize(Model, data, opts) - * data.foo = 'bar' - * return data - * } - * } - * ``` - * - * __ES5__: - * ```javascript - * var instanceProps = { - * // override deserialize - * deserialize: function (Model, data, opts) { - * var Ctor = this.constructor - * var superDeserialize = (Ctor.__super__ || Object.getPrototypeOf(Ctor)).deserialize - * // call the super deserialize - * var data = superDeserialize(Model, data, opts) - * data.foo = 'bar' - * return data - * }, - * say: function () { return 'hi' } - * } - * var classProps = { - * yell: function () { return 'HI' } - * } - * - * var MyHttpAdapter = HttpAdapter.extend(instanceProps, classProps) - * var adapter = new MyHttpAdapter() - * adapter.say() // "hi" - * MyHttpAdapter.yell() // "HI" - * ``` - * - * @name HttpAdapter.extend - * @method - * @param {Object} [instanceProps] Properties that will be added to the - * prototype of the subclass. - * @param {Object} [classProps] Properties that will be added as static - * properties to the subclass itself. - * @return {Object} Subclass of `HttpAdapter`. - */ -HttpAdapter.extend = utils.extend - /** * Details of the current version of the `js-data-http` module. * - * @name HttpAdapter.version + * @name module:js-data-http.version * @type {Object} * @property {string} version.full The full semver value. * @property {number} version.major The major version number. @@ -1229,32 +1253,4 @@ HttpAdapter.extend = utils.extend * @property {(string|boolean)} version.beta The beta version value, * otherwise `false` if the current version is not beta. */ -HttpAdapter.version = '<%= version %>' - -/** - * Registered as `js-data-http` in NPM and Bower. The build of `js-data-http` - * that works on Node.js is registered in NPM as `js-data-http-node`. The build - * 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) { ... }) - * ``` - * - * @module js-data-http - */ - -module.exports = HttpAdapter +exports.version = '<%= version %>' diff --git a/typings.json b/typings.json new file mode 100644 index 0000000..2f71f35 --- /dev/null +++ b/typings.json @@ -0,0 +1,10 @@ +{ + "name": "js-data-http", + "version": false, + "main": "./dist/js-data-http.d.ts", + "ambientDependencies": { + "js-data": "npm:js-data", + "js-data-adapter": "npm:js-data-adapter", + "es6-shim": "registry:dt/es6-shim#0.31.2+20160317120654" + } +} diff --git a/webpack.config.js b/webpack.config.js index fb21ce4..60458a6 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -8,7 +8,7 @@ module.exports = { output: { filename: '[name]', libraryTarget: 'umd', - library: 'HttpAdapter' + library: 'JSDataHttp' }, externals: { 'chai': { From 5c71c11564c5d22b916b07d14ac08a5d9ad2923f Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Wed, 27 Apr 2016 23:47:45 -0700 Subject: [PATCH 24/24] Fix test setup --- fetch/karma.start.js | 6 +++--- fetch/webpack.config.js | 2 +- karma.start.js | 2 +- node/mocha.start.js | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/fetch/karma.start.js b/fetch/karma.start.js index e5068f1..acaa197 100644 --- a/fetch/karma.start.js +++ b/fetch/karma.start.js @@ -1,4 +1,4 @@ -/* global JSData:true, HttpAdapter:true, sinon:true, chai:true */ +/* global JSData:true, JSDataHttp:true, sinon:true, chai:true */ before(function () { var Test = this Test.fail = function (msg) { @@ -14,7 +14,7 @@ before(function () { } Test.sinon = sinon Test.JSData = JSData - Test.HttpAdapter = HttpAdapter + Test.HttpAdapter = JSDataHttp.HttpAdapter Test.User = new JSData.Mapper({ name: 'user' }) @@ -29,7 +29,7 @@ before(function () { beforeEach(function () { var Test = this - Test.adapter = new HttpAdapter() + Test.adapter = new Test.HttpAdapter() Test.User.registerAdapter('http', Test.adapter, { default: true }) Test.Post.registerAdapter('http', Test.adapter, { default: true }) diff --git a/fetch/webpack.config.js b/fetch/webpack.config.js index e4a1806..e87bc60 100644 --- a/fetch/webpack.config.js +++ b/fetch/webpack.config.js @@ -8,7 +8,7 @@ module.exports = { output: { filename: '[name]', libraryTarget: 'umd', - library: 'HttpAdapter' + library: 'JSDataHttp' }, externals: [ { diff --git a/karma.start.js b/karma.start.js index b5cb77b..464dc71 100644 --- a/karma.start.js +++ b/karma.start.js @@ -29,7 +29,7 @@ before(function () { beforeEach(function () { var Test = this - Test.adapter = new JSDataHttp.HttpAdapter() + Test.adapter = new Test.HttpAdapter() Test.User.registerAdapter('http', Test.adapter, { default: true }) Test.Post.registerAdapter('http', Test.adapter, { default: true }) diff --git a/node/mocha.start.js b/node/mocha.start.js index 2cf4c91..afc2cf7 100644 --- a/node/mocha.start.js +++ b/node/mocha.start.js @@ -17,7 +17,7 @@ before(function () { } Test.sinon = require('sinon') Test.JSData = require('js-data') - Test.HttpAdapter = require('./dist/js-data-http-node') + Test.HttpAdapter = require('./dist/js-data-http-node').HttpAdapter Test.User = new Test.JSData.Mapper({ name: 'user' })