/
js-data-debug.js.map
1 lines (1 loc) · 286 KB
/
js-data-debug.js.map
1
{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap aacbe202dc73a84af267","webpack:///./src/index.js","webpack:///./src/datastore/index.js","webpack:///./src/utils.js","webpack:///./src/errors.js","webpack:///./~/yabh/dist/yabh.js","webpack:///./~/mout/array/forEach.js","webpack:///./~/mout/array/slice.js","webpack:///./~/mout/object/forOwn.js","webpack:///./~/mout/object/hasOwn.js","webpack:///./~/mout/object/forIn.js","webpack:///./~/mout/array/contains.js","webpack:///./~/mout/array/indexOf.js","webpack:///./~/mout/object/deepMixIn.js","webpack:///./~/mout/lang/isPlainObject.js","webpack:///./~/mout/string/pascalCase.js","webpack:///./~/mout/lang/toString.js","webpack:///./~/mout/string/camelCase.js","webpack:///./~/mout/string/replaceAccents.js","webpack:///./~/mout/string/removeNonWord.js","webpack:///./~/mout/string/upperCase.js","webpack:///./~/mout/string/lowerCase.js","webpack:///./~/mout/array/remove.js","webpack:///./~/mout/object/pick.js","webpack:///./~/mout/object/keys.js","webpack:///./~/mout/array/sort.js","webpack:///./~/mout/object/get.js","webpack:///./~/mout/lang/isPrimitive.js","webpack:///./~/mout/object/set.js","webpack:///./~/mout/object/namespace.js","webpack:///./lib/observe-js/observe.js","webpack:///./~/mout/random/guid.js","webpack:///./~/mout/random/randHex.js","webpack:///./~/mout/random/choice.js","webpack:///./~/mout/random/randInt.js","webpack:///./~/mout/number/MIN_INT.js","webpack:///./~/mout/number/MAX_INT.js","webpack:///./~/mout/random/rand.js","webpack:///./~/mout/random/random.js","webpack:///./~/mout/lang/isArray.js","webpack:///./~/mout/lang/isKind.js","webpack:///./~/mout/lang/kindOf.js","webpack:///./src/datastore/sync_methods/index.js","webpack:///./src/datastore/sync_methods/defineResource.js","webpack:///./src/datastore/sync_methods/eject.js","webpack:///./src/datastore/sync_methods/ejectAll.js","webpack:///./src/datastore/sync_methods/filter.js","webpack:///./src/datastore/sync_methods/inject.js","webpack:///./src/datastore/async_methods/index.js","webpack:///./src/datastore/async_methods/create.js","webpack:///./src/datastore/async_methods/destroy.js","webpack:///./src/datastore/async_methods/destroyAll.js","webpack:///./src/datastore/async_methods/find.js","webpack:///./src/datastore/async_methods/findAll.js","webpack:///./src/datastore/async_methods/loadRelations.js","webpack:///./src/datastore/async_methods/reap.js","webpack:///./src/datastore/async_methods/save.js","webpack:///./src/datastore/async_methods/update.js","webpack:///./src/datastore/async_methods/updateAll.js"],"names":["module","exports","DS","DSUtils","DSErrors","createStore","options","version","full","major","parseInt","minor","patch","alpha","beta","lifecycleNoopCb","resource","attrs","cb","lifecycleNoop","compare","orderBy","index","a","b","def","cA","get","cB","_s","upperCase","length","Defaults","error","Error","err","name","defaultsPrototype","prototype","actions","afterCreate","afterCreateCollection","afterCreateInstance","afterDestroy","afterEject","afterFind","afterFindAll","afterInject","afterLoadRelations","afterReap","afterUpdate","afterValidate","allowSimpleWhere","applyDefaultsOnInject","basePath","beforeCreate","beforeCreateCollection","beforeCreateInstance","beforeDestroy","beforeEject","beforeInject","beforeReap","beforeUpdate","beforeValidate","bypassCache","cacheResponse","w","csp","clearEmptyQueries","computed","defaultAdapter","debug","defaultValues","eagerEject","eagerInject","endpoint","console","c","errorHandler","Promise","reject","fallbackAdapters","findStrictCache","idAttribute","ignoredChanges","instanceEvents","keepChangeHistory","linkRelations","log","d","e","info","logFn","_this","maxAge","methods","notify","omit","onConflict","reapAction","reapInterval","relationsEnumerable","resetHistoryOnInject","returnMeta","scopes","strategy","upsert","useClass","useFilter","usePendingFind","usePendingFindAll","validate","watchChanges","escapeRegExp","percentRegExp","underscoreRegExp","escape","pattern","replace","like","flags","RegExp","defaultFilter","collection","resourceName","params","definition","definitions","idA","store","filtered","where","reserved","skip","offset","limit","sort","_o","forOwn","value","key","isEmpty","filter","first","keep","excludeTemporary","temporaryItems","clause","field","term","op","expr","isOr","val","substr","intersection","indexOf","contains","exec","undefined","_a","forEach","i","IA","toJson","actual","expected","_n","slice","Math","min","adapters","defaults","observe","v","k","concat","P","spread","then","arr","apply","Events","errorIfNotExist","adapter","getAdapterName","Adapter","isFunction","default","instance","NER","class","ejected","ejectAll","completedQueries","queryData","args","defaultHandler","dsPrototype","shorthand","getAdapter","registerAdapter","errors","utils","addMethods","target","obj","before","fn","orig","BinaryHeap","require","deepMixIn","pascalCase","remove","pick","_keys","set","guid","File","objectProto","Object","toString","window","_isArray","call","isArray","Array","isRegExp","isString","isObject","isDate","isNumber","type","isStringOrNumber","isStringOrNumberErr","isObjectErr","isArrayErr","result","array1","array2","item","push","array","thisObj","results","events","defineProperties","on","func","ctx","f","off","listeners","splice","emit","shift","toPromisify","isBlacklisted","copy","source","destination","stackSource","stackDest","blacklist","Date","getTime","match","lastIndex","create","getPrototypeOf","hasOwnProperty","equals","o1","o2","t1","t2","keySet","charAt","resolveId","idOrInstance","resolveItem","isValidString","join","items","separator","makePath","_","parent","constructor","promisify","O","Options","self","_sn","_snErr","_oErr","_aErr","applyScope","scope","_params","unshift","_scope","scopeDef","compute","deps","dep","diffObjectFromOldObject","fillIn","fromJson","json","JSON","parse","keys","bl","toRemove","resolve","promise","stringify","updateTimestamp","timestamp","newTimestamp","now","removeCircular","object","rmCirc","nu","Boolean","Number","String","cur","respond","response","meta","applyRelationGettersToTarget","relationList","relationName","relation","localField","localKey","foreignKey","localKeys","foreignKeys","enumerable","link","prop","hasKey","getResource","getAll","children","id","child","sibling","defineProperty","IllegalArgumentError","message","captureStackTrace","RuntimeError","NonexistentResourceError","R","fakeId","diffIsEmpty","diff","added","removed","changed","check","fnName","_resourceName","_id","_options","changes","observer","observers","deliver","relationFields","previousAttributes","changeset","toKeep","changeHistory","errorFn","changeHistories","commit","changeRecord","createInstance","relationData","Resource","relationDataItem","Constructor","createCollection","fetch","__this","findAll","data","$$injected","writable","defineResource","digest","Platform","performMicrotaskCheckpoint","eject","ids","hasChanges","inject","isNew","lastModified","modified","collectionModified","lastSaved","saved","previous","revert","preserve","injectObj","previousInstance","instanceMethods","extends","relations","relatedModels","defs","belongsTo","parents","relatedModel","modelName","parentKey","parentField","freeze","_class","Function","proto","Ctor","m","setTimeout","handleChange","parentOmit","split","x","trim","DSCreate","expiresHeap","expires","y","pendingQueries","setInterval","reap","fns","action","request","config","responseError","getEndpoint","url","pathname","method","HTTP","found","queryHash","close","makeObserverHandler","_react","oldValueFn","firstTime","innerId","_inject","injected","temporary","relationDef","toInject","toInjectItem","injectedItem","initialLastModified","ObjectObserver","open","MAX_VALUE","destroy","destroyAll","find","loadRelations","refresh","catch","refreshAll","existing","save","update","updateAll","rejectionError","created","toEject","expired","query","findStrategy","makeFallbackCall","findFallbackAdapters","processResults","date","findAllStrategy","findAllFallbackAdapters","tasks","__options","task","defKey","hasDefKey","load","hasOnes","all","expiredItem","peek","pop","noChanges","changesOnly","always","property","origOptions","instances"],"mappings":"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A;AACA;AACA;AACA,EAAC,oBAAoB;;AAErB;AACA;AACA,cAAa,MAAM;AACnB,cAAa,SAAS;AACtB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa,MAAM;AACnB,cAAa,SAAS;AACtB,cAAa,OAAO;AACpB;AACA;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,QAAO;AACP;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;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,EAAC;AACD,iC;;;;;;;;AC/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;AChCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;ACTA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,0BAAyB,iBAAiB;AAC1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;ACzEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;;;;;;;AC1BA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;;;;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C;AAC3C;AACA;AACA;;;;;;;;AClBA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClCA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACTA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACXA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;ACfA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;;;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;ACpDA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;AClBA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;;;;;;;;;ACdA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA,wCAAuC;AACvC,oBAAmB,YAAY,EAAE;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAmB,eAAe;AAClC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oBAAmB,qBAAqB;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,8BAA6B;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA,MAAK;;AAEL;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,sBAAqB,oBAAoB;AACzC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,yBAAwB;AACxB,2BAA0B;AAC1B,2BAA0B;AAC1B;AACA;AACA;AACA;;AAEA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAmB,0BAA0B;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,wDAAuD;AACvD;AACA;AACA;;AAEA,EAAC;;;;;;;AC/hBD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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","file":"./dist/js-data-debug.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"JSData\"] = factory();\n\telse\n\t\troot[\"JSData\"] = factory();\n})(this, function() {\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 aacbe202dc73a84af267\n **/","import DS from './datastore/index'\nimport DSUtils from './utils'\nimport DSErrors from './errors'\n\n/**\n * The library export.\n * - window.JSData\n * - require('js-data')\n * - define(['js-data', function (JSData) { ... }]);\n * - import JSData from 'js-data'\n */\nmodule.exports = {\n DS,\n DSUtils,\n DSErrors,\n createStore (options) {\n return new DS(options)\n },\n 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\n\n/** WEBPACK FOOTER **\n ** ./src/index.js\n **/","/* jshint eqeqeq:false */\nimport DSUtils from '../utils'\nimport DSErrors from '../errors'\nimport syncMethods from './sync_methods/index'\nimport asyncMethods from './async_methods/index'\n\nfunction lifecycleNoopCb (resource, attrs, cb) {\n cb(null, attrs)\n}\n\nfunction lifecycleNoop (resource, attrs) {\n return attrs\n}\n\nfunction compare (orderBy, index, a, b) {\n let def = orderBy[index]\n let cA = DSUtils.get(a, def[0])\n let cB = DSUtils.get(b, def[0])\n if (DSUtils._s(cA)) {\n cA = DSUtils.upperCase(cA)\n }\n if (DSUtils._s(cB)) {\n cB = DSUtils.upperCase(cB)\n }\n if (def[1] === 'DESC') {\n if (cB < cA) {\n return -1\n } else if (cB > cA) {\n return 1\n } else {\n if (index < orderBy.length - 1) {\n return compare(orderBy, index + 1, a, b)\n } else {\n return 0\n }\n }\n } else {\n if (cA < cB) {\n return -1\n } else if (cA > cB) {\n return 1\n } else {\n if (index < orderBy.length - 1) {\n return compare(orderBy, index + 1, a, b)\n } else {\n return 0\n }\n }\n }\n}\n\nclass Defaults {\n errorFn (a, b) {\n if (this.error && typeof this.error === 'function') {\n try {\n if (typeof a === 'string') {\n throw new Error(a)\n } else {\n throw a\n }\n } catch (err) {\n a = err\n }\n this.error(this.name || null, a || null, b || null)\n }\n }\n}\n\nvar defaultsPrototype = Defaults.prototype\n\ndefaultsPrototype.actions = {}\ndefaultsPrototype.afterCreate = lifecycleNoopCb\ndefaultsPrototype.afterCreateCollection = lifecycleNoop\ndefaultsPrototype.afterCreateInstance = lifecycleNoop\ndefaultsPrototype.afterDestroy = lifecycleNoopCb\ndefaultsPrototype.afterEject = lifecycleNoop\ndefaultsPrototype.afterFind = lifecycleNoopCb\ndefaultsPrototype.afterFindAll = lifecycleNoopCb\ndefaultsPrototype.afterInject = lifecycleNoop\ndefaultsPrototype.afterLoadRelations = lifecycleNoopCb\ndefaultsPrototype.afterReap = lifecycleNoop\ndefaultsPrototype.afterUpdate = lifecycleNoopCb\ndefaultsPrototype.afterValidate = lifecycleNoopCb\ndefaultsPrototype.allowSimpleWhere = true\ndefaultsPrototype.applyDefaultsOnInject = false\ndefaultsPrototype.basePath = ''\ndefaultsPrototype.beforeCreate = lifecycleNoopCb\ndefaultsPrototype.beforeCreateCollection = lifecycleNoop\ndefaultsPrototype.beforeCreateInstance = lifecycleNoop\ndefaultsPrototype.beforeDestroy = lifecycleNoopCb\ndefaultsPrototype.beforeEject = lifecycleNoop\ndefaultsPrototype.beforeInject = lifecycleNoop\ndefaultsPrototype.beforeReap = lifecycleNoop\ndefaultsPrototype.beforeUpdate = lifecycleNoopCb\ndefaultsPrototype.beforeValidate = lifecycleNoopCb\ndefaultsPrototype.bypassCache = false\ndefaultsPrototype.cacheResponse = !!DSUtils.w\ndefaultsPrototype.csp = false\ndefaultsPrototype.clearEmptyQueries = true\ndefaultsPrototype.computed = {}\ndefaultsPrototype.defaultAdapter = 'http'\ndefaultsPrototype.debug = false\ndefaultsPrototype.defaultValues = {}\ndefaultsPrototype.eagerEject = false\n// TODO: Implement eagerInject in DS#create\ndefaultsPrototype.eagerInject = false\ndefaultsPrototype.endpoint = ''\ndefaultsPrototype.error = console ? (a, b, c) => console[typeof console.error === 'function' ? 'error' : 'log'](a, b, c) : false\ndefaultsPrototype.errorHandler = function (...args) {\n return DSUtils.Promise.reject(args[0])\n}\ndefaultsPrototype.fallbackAdapters = ['http']\ndefaultsPrototype.findStrictCache = false\ndefaultsPrototype.idAttribute = 'id'\ndefaultsPrototype.ignoredChanges = [/\\$/]\ndefaultsPrototype.instanceEvents = !!DSUtils.w\ndefaultsPrototype.keepChangeHistory = false\ndefaultsPrototype.linkRelations = !!DSUtils.w\ndefaultsPrototype.log = console ? (a, b, c, d, e) => console[typeof console.info === 'function' ? 'info' : 'log'](a, b, c, d, e) : false\n\ndefaultsPrototype.logFn = function (a, b, c, d) {\n let _this = this\n if (_this.debug && _this.log && typeof _this.log === 'function') {\n _this.log(_this.name || null, a || null, b || null, c || null, d || null)\n }\n}\n\ndefaultsPrototype.maxAge = false\ndefaultsPrototype.methods = {}\ndefaultsPrototype.notify = !!DSUtils.w\ndefaultsPrototype.omit = []\ndefaultsPrototype.onConflict = 'merge'\ndefaultsPrototype.reapAction = DSUtils.w ? 'inject' : 'none'\ndefaultsPrototype.reapInterval = DSUtils.w ? 30000 : false\ndefaultsPrototype.relationsEnumerable = false\ndefaultsPrototype.resetHistoryOnInject = true\ndefaultsPrototype.returnMeta = false\ndefaultsPrototype.scopes = {}\ndefaultsPrototype.strategy = 'single'\ndefaultsPrototype.upsert = !!DSUtils.w\ndefaultsPrototype.useClass = true\ndefaultsPrototype.useFilter = false\ndefaultsPrototype.usePendingFind = true\ndefaultsPrototype.usePendingFindAll = true\ndefaultsPrototype.validate = lifecycleNoopCb\ndefaultsPrototype.watchChanges = !!DSUtils.w\n\nlet escapeRegExp = /([.*+?^=!:${}()|[\\]\\/\\\\])/g\nlet percentRegExp = /%/g\nlet underscoreRegExp = /_/g\n\nfunction escape (pattern) {\n return pattern.replace(escapeRegExp, '\\\\$1')\n}\n\nfunction like (pattern, flags) {\n return new RegExp(`^${(escape(pattern).replace(percentRegExp, '.*').replace(underscoreRegExp, '.'))}$`, flags)\n}\n\ndefaultsPrototype.defaultFilter = function (collection, resourceName, params, options) {\n let definition = this.definitions[resourceName]\n let idA = 'id'\n let resource\n if (definition) {\n idA = definition.idAttribute\n resource = this.store[resourceName]\n }\n let filtered = collection\n let where = null\n let reserved = {\n skip: '',\n offset: '',\n where: '',\n limit: '',\n orderBy: '',\n sort: ''\n }\n\n params = params || {}\n options = options || {}\n\n if (DSUtils._o(params.where)) {\n where = params.where\n } else {\n where = {}\n }\n\n if (options.allowSimpleWhere) {\n DSUtils.forOwn(params, function (value, key) {\n if (!(key in reserved) && !(key in where)) {\n where[key] = {\n '==': value\n }\n }\n })\n }\n\n if (DSUtils.isEmpty(where)) {\n where = null\n }\n\n if (where) {\n filtered = DSUtils.filter(filtered, function (attrs) {\n let first = true\n let keep = true\n\n if (options.excludeTemporary && resource && resource.temporaryItems[attrs[idA]]) {\n return false\n }\n\n DSUtils.forOwn(where, function (clause, field) {\n if (!DSUtils._o(clause)) {\n clause = {\n '==': clause\n }\n }\n DSUtils.forOwn(clause, function (term, op) {\n let expr\n let isOr = op[0] === '|'\n let val = DSUtils.get(attrs, field)\n op = isOr ? op.substr(1) : op\n if (op === '==') {\n expr = val == term // eslint-disable-line\n } else if (op === '===') {\n expr = val === term\n } else if (op === '!=') {\n expr = val != term // eslint-disable-line\n } else if (op === '!==') {\n expr = val !== term\n } else if (op === '>') {\n expr = val > term\n } else if (op === '>=') {\n expr = val >= term\n } else if (op === '<') {\n expr = val < term\n } else if (op === '<=') {\n expr = val <= term\n } else if (op === 'isectEmpty') {\n expr = !DSUtils.intersection((val || []), (term || [])).length\n } else if (op === 'isectNotEmpty') {\n expr = DSUtils.intersection((val || []), (term || [])).length\n } else if (op === 'in') {\n if (DSUtils._s(term)) {\n expr = term.indexOf(val) !== -1\n } else {\n expr = DSUtils.contains(term, val)\n }\n } else if (op === 'notIn') {\n if (DSUtils._s(term)) {\n expr = term.indexOf(val) === -1\n } else {\n expr = !DSUtils.contains(term, val)\n }\n } else if (op.indexOf('like') === 0) {\n expr = like(term, op.substr(4)).exec(val) !== null\n } else if (op.indexOf('notLike') === 0) {\n expr = like(term, op.substr(7)).exec(val) === null\n } else if (op === 'contains') {\n if (DSUtils._s(val)) {\n expr = val.indexOf(term) !== -1\n } else {\n expr = DSUtils.contains(val, term)\n }\n } else if (op === 'notContains') {\n if (DSUtils._s(val)) {\n expr = val.indexOf(term) === -1\n } else {\n expr = !DSUtils.contains(val, term)\n }\n }\n if (expr !== undefined) {\n keep = first ? expr : (isOr ? keep || expr : keep && expr)\n }\n first = false\n })\n })\n\n return keep\n })\n } else if (options.excludeTemporary && resource) {\n filtered = DSUtils.filter(filtered, function (attrs) {\n return resource.temporaryItems[attrs[idA]]\n })\n }\n\n let orderBy = null\n\n if (DSUtils._s(params.orderBy)) {\n orderBy = [\n [params.orderBy, 'ASC']\n ]\n } else if (DSUtils._a(params.orderBy)) {\n orderBy = params.orderBy\n }\n\n if (!orderBy && DSUtils._s(params.sort)) {\n orderBy = [\n [params.sort, 'ASC']\n ]\n } else if (!orderBy && DSUtils._a(params.sort)) {\n orderBy = params.sort\n }\n\n // Apply 'orderBy'\n if (orderBy) {\n let index = 0\n DSUtils.forEach(orderBy, function (def, i) {\n if (DSUtils._s(def)) {\n orderBy[i] = [def, 'ASC']\n } else if (!DSUtils._a(def)) {\n throw new DSErrors.IA(`DS.filter(\"${resourceName}\"[, params][, options]): ${DSUtils.toJson(def)}: Must be a string or an array!`, {\n params: {\n 'orderBy[i]': {\n actual: typeof def,\n expected: 'string|array'\n }\n }\n })\n }\n })\n filtered = DSUtils.sort(filtered, function (a, b) {\n return compare(orderBy, index, a, b)\n })\n }\n\n let limit = DSUtils._n(params.limit) ? params.limit : null\n let skip = null\n\n if (DSUtils._n(params.skip)) {\n skip = params.skip\n } else if (DSUtils._n(params.offset)) {\n skip = params.offset\n }\n\n // Apply 'limit' and 'skip'\n if (limit && skip) {\n filtered = DSUtils.slice(filtered, skip, Math.min(filtered.length, skip + limit))\n } else if (DSUtils._n(limit)) {\n filtered = DSUtils.slice(filtered, 0, Math.min(filtered.length, limit))\n } else if (DSUtils._n(skip)) {\n if (skip < filtered.length) {\n filtered = DSUtils.slice(filtered, skip)\n } else {\n filtered = []\n }\n }\n\n return filtered === collection ? filtered.slice() : filtered\n}\n\nclass DS {\n constructor (options) {\n let _this = this\n options = options || {}\n\n _this.store = {}\n _this.definitions = {}\n _this.adapters = {}\n _this.defaults = new Defaults()\n _this.observe = DSUtils.observe\n DSUtils.forOwn(options, function (v, k) {\n if (k === 'omit') {\n _this.defaults.omit = v.concat(Defaults.prototype.omit)\n } else {\n _this.defaults[k] = v\n }\n })\n _this.defaults.logFn('new data store created', _this.defaults)\n\n let P = DSUtils.Promise\n\n if (P && !P.prototype.spread) {\n P.prototype.spread = function (cb) {\n return this.then(function (arr) {\n return cb.apply(this, arr)\n })\n }\n }\n\n DSUtils.Events(_this)\n }\n\n getAdapterName (options) {\n let errorIfNotExist = false\n options = options || {}\n this.defaults.logFn('getAdapterName', options)\n if (DSUtils._s(options)) {\n errorIfNotExist = true\n options = {\n adapter: options\n }\n }\n if (this.adapters[options.adapter]) {\n return options.adapter\n } else if (errorIfNotExist) {\n throw new Error(`${options.adapter} is not a registered adapter!`)\n } else {\n return options.defaultAdapter\n }\n }\n\n getAdapter (options) {\n options = options || {}\n this.defaults.logFn('getAdapter', options)\n return this.adapters[this.getAdapterName(options)]\n }\n\n registerAdapter (name, Adapter, options) {\n let _this = this\n options = options || {}\n _this.defaults.logFn('registerAdapter', name, Adapter, options)\n if (DSUtils.isFunction(Adapter)) {\n _this.adapters[name] = new Adapter(options)\n } else {\n _this.adapters[name] = Adapter\n }\n if (options.default) {\n _this.defaults.defaultAdapter = name\n }\n _this.defaults.logFn(`default adapter is ${_this.defaults.defaultAdapter}`)\n }\n\n is (resourceName, instance) {\n let definition = this.definitions[resourceName]\n if (!definition) {\n throw new DSErrors.NER(resourceName)\n }\n return instance instanceof definition[definition.class]\n }\n\n clear () {\n let ejected = {}\n DSUtils.forOwn(this.definitions, (definition) => {\n let name = definition.name\n ejected[name] = definition.ejectAll()\n this.store[name].completedQueries = {}\n this.store[name].queryData = {}\n })\n return ejected\n }\n\n errorFn (...args) {\n let options = args[args.length - 1]\n let defaultHandler = this.defaults.errorHandler\n let errorHandler = options ? options.errorHandler : defaultHandler\n errorHandler = errorHandler || defaultHandler\n return function (err) {\n return errorHandler(err, ...args)\n }\n }\n}\n\nvar dsPrototype = DS.prototype\n\ndsPrototype.getAdapterName.shorthand = false\ndsPrototype.getAdapter.shorthand = false\ndsPrototype.registerAdapter.shorthand = false\ndsPrototype.errors = DSErrors\ndsPrototype.utils = DSUtils\n\nfunction addMethods (target, obj) {\n DSUtils.forOwn(obj, function (v, k) {\n target[k] = v\n target[k].before = function (fn) {\n let orig = target[k]\n target[k] = function (...args) {\n return orig.apply(this, fn.apply(this, args) || args)\n }\n }\n })\n}\n\naddMethods(dsPrototype, syncMethods)\naddMethods(dsPrototype, asyncMethods)\n\nexport default DS\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/index.js\n **/","/* jshint eqeqeq:false */\n\n/**\n * Mix of ES6 and CommonJS module imports because the interop of Babel + Webpack + ES6 modules + CommonJS isn't very good.\n */\nimport DSErrors from './errors'\nlet BinaryHeap = require('yabh')\nlet forEach = require('mout/array/forEach')\nlet slice = require('mout/array/slice')\nlet forOwn = require('mout/object/forOwn')\nlet contains = require('mout/array/contains')\nlet deepMixIn = require('mout/object/deepMixIn')\nlet pascalCase = require('mout/string/pascalCase')\nlet remove = require('mout/array/remove')\nlet pick = require('mout/object/pick')\nlet _keys = require('mout/object/keys')\nlet sort = require('mout/array/sort')\nlet upperCase = require('mout/string/upperCase')\nlet get = require('mout/object/get')\nlet set = require('mout/object/set')\nlet observe = require('../lib/observe-js/observe.js')\nlet guid = require('mout/random/guid')\nlet w, P, File\nlet objectProto = Object.prototype\nlet toString = objectProto.toString\n\n/**\n * Attempt to detect the global Promise constructor.\n * JSData will still work without one, as long you do something like this:\n *\n * var JSData = require('js-data');\n * JSData.DSUtils.Promise = MyPromiseLib;\n */\ntry {\n P = Promise\n} catch (e) {\n console.error('js-data requires a global Promise constructor!')\n}\n\ntry {\n File = window.File\n} catch (e) {\n File = function () {}\n}\n\nfunction _isArray (value) {\n return toString.call(value) === '[object Array]' || false\n}\n\nlet isArray = Array.isArray || _isArray\n\nfunction isRegExp (value) {\n return toString.call(value) === '[object RegExp]' || false\n}\n\n// adapted from lodash.isString\nfunction isString (value) {\n return typeof value === 'string' || (value && typeof value === 'object' && toString.call(value) === '[object String]') || false\n}\n\nfunction isObject (value) {\n return toString.call(value) === '[object Object]' || false\n}\n\n// adapted from lodash.isDate\nfunction isDate (value) {\n return (value && typeof value === 'object' && toString.call(value) === '[object Date]') || false\n}\n\n// adapted from lodash.isNumber\nfunction isNumber (value) {\n let type = typeof value\n return type === 'number' || (value && type === 'object' && toString.call(value) === '[object Number]') || false\n}\n\n// adapted from lodash.isFunction\nfunction isFunction (value) {\n return typeof value === 'function' || (value && toString.call(value) === '[object Function]') || false\n}\n\n// shorthand argument checking functions, using these shaves 1.18 kb off of the minified build\nfunction isStringOrNumber (value) {\n return isString(value) || isNumber(value)\n}\n\nfunction isStringOrNumberErr (field) {\n return new DSErrors.IA(`\"${field}\" must be a string or a number!`)\n}\n\nfunction isObjectErr (field) {\n return new DSErrors.IA(`\"${field}\" must be an object!`)\n}\n\nfunction isArrayErr (field) {\n return new DSErrors.IA(`\"${field}\" must be an array!`)\n}\n\n// adapted from mout.isEmpty\nfunction isEmpty (val) {\n if (val == null) { // jshint ignore:line\n // typeof null == 'object' so we check it first\n return true\n } else if (typeof val === 'string' || isArray(val)) {\n return !val.length\n } else if (typeof val === 'object') {\n let result = true\n forOwn(val, function () {\n result = false\n return false // break loop\n })\n return result\n } else {\n return true\n }\n}\n\n// Find the intersection between two arrays\nfunction intersection (array1, array2) {\n if (!array1 || !array2) {\n return []\n }\n let result = []\n let item\n for (let i = 0, length = array1.length; i < length; i++) {\n item = array1[i]\n if (contains(result, item)) {\n continue\n }\n if (contains(array2, item)) {\n result.push(item)\n }\n }\n return result\n}\n\nfunction filter (array, cb, thisObj) {\n let results = []\n forEach(array, function (value, key, arr) {\n if (cb(value, key, arr)) {\n results.push(value)\n }\n }, thisObj)\n return results\n}\n\n/**\n * Attempt to detect whether we are in the browser.\n */\ntry {\n w = window\n w = {}\n} catch (e) {\n w = null\n}\n\n/**\n * Event mixin. Usage:\n *\n * function handler() { ... }\n * Events(myObject);\n * myObject.on('foo', handler);\n * myObject.emit('foo', 'some', 'data');\n * myObject.off('foo', handler);\n */\nfunction Events (target) {\n let events = {}\n target = target || this\n Object.defineProperties(target, {\n on: {\n value: function (type, func, ctx) {\n events[type] = events[type] || []\n events[type].push({\n f: func,\n c: ctx\n })\n }\n },\n off: {\n value: function (type, func) {\n let listeners = events[type]\n if (!listeners) {\n events = {}\n } else if (func) {\n for (let i = 0; i < listeners.length; i++) {\n if (listeners[i].f === func) {\n listeners.splice(i, 1)\n break\n }\n }\n } else {\n listeners.splice(0, listeners.length)\n }\n }\n },\n emit: {\n value: function (...args) {\n let listeners = events[args.shift()] || []\n if (listeners) {\n for (let i = 0; i < listeners.length; i++) {\n listeners[i].f.apply(listeners[i].c, args)\n }\n }\n }\n }\n })\n}\n\n/**\n * Lifecycle hooks that should support promises.\n */\nlet toPromisify = [\n 'beforeValidate',\n 'validate',\n 'afterValidate',\n 'beforeCreate',\n 'afterCreate',\n 'beforeUpdate',\n 'afterUpdate',\n 'beforeDestroy',\n 'afterDestroy'\n]\n\n/**\n * Return whether \"prop\" is in the blacklist.\n */\nlet isBlacklisted = observe.isBlacklisted\n\n// adapted from angular.copy\nfunction copy (source, destination, stackSource, stackDest, blacklist) {\n if (!destination) {\n destination = source\n if (source) {\n if (isArray(source)) {\n destination = copy(source, [], stackSource, stackDest, blacklist)\n } else if (isDate(source)) {\n destination = new Date(source.getTime())\n } else if (isRegExp(source)) {\n destination = new RegExp(source.source, source.toString().match(/[^\\/]*$/)[0])\n destination.lastIndex = source.lastIndex\n } else if (isObject(source)) {\n destination = copy(source, Object.create(Object.getPrototypeOf(source)), stackSource, stackDest, blacklist)\n }\n }\n } else {\n if (source === destination) {\n throw new Error('Cannot copy! Source and destination are identical.')\n }\n\n stackSource = stackSource || []\n stackDest = stackDest || []\n\n if (isObject(source)) {\n let index = stackSource.indexOf(source)\n if (index !== -1) {\n return stackDest[index]\n }\n\n stackSource.push(source)\n stackDest.push(destination)\n }\n\n let result\n if (isArray(source)) {\n let i\n destination.length = 0\n for (i = 0; i < source.length; i++) {\n result = copy(source[i], null, stackSource, stackDest, blacklist)\n if (isObject(source[i])) {\n stackSource.push(source[i])\n stackDest.push(result)\n }\n destination.push(result)\n }\n } else {\n if (isArray(destination)) {\n destination.length = 0\n } else {\n forEach(destination, function (value, key) {\n delete destination[key]\n })\n }\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n if (isBlacklisted(key, blacklist)) {\n continue\n }\n result = copy(source[key], null, stackSource, stackDest, blacklist)\n if (isObject(source[key])) {\n stackSource.push(source[key])\n stackDest.push(result)\n }\n destination[key] = result\n }\n }\n }\n }\n return destination\n}\n\n// adapted from angular.equals\nfunction equals (o1, o2) {\n if (o1 === o2) {\n return true\n }\n if (o1 === null || o2 === null) {\n return false\n }\n if (o1 !== o1 && o2 !== o2) { // eslint-disable-line\n return true\n } // NaN === NaN\n var t1 = typeof o1\n var t2 = typeof o2\n var length, key, keySet\n if (t1 == t2) { // eslint-disable-line\n if (t1 == 'object') { // eslint-disable-line\n if (isArray(o1)) {\n if (!isArray(o2)) {\n return false\n }\n if ((length = o1.length) === o2.length) { // jshint ignore:line\n for (key = 0; key < length; key++) {\n if (!equals(o1[key], o2[key])) {\n return false\n }\n }\n return true\n }\n } else if (isDate(o1)) {\n if (!isDate(o2)) {\n return false\n }\n return equals(o1.getTime(), o2.getTime())\n } else if (isRegExp(o1) && isRegExp(o2)) {\n return o1.toString() == o2.toString() // eslint-disable-line\n } else {\n if (isArray(o2)) {\n return false\n }\n keySet = {}\n for (key in o1) {\n if (key.charAt(0) === '$' || isFunction(o1[key])) {\n continue\n }\n if (!equals(o1[key], o2[key])) {\n return false\n }\n keySet[key] = true\n }\n for (key in o2) {\n if (!keySet.hasOwnProperty(key) &&\n key.charAt(0) !== '$' &&\n o2[key] !== undefined && !isFunction(o2[key])) {\n return false\n }\n }\n return true\n }\n }\n }\n return false\n}\n\n/**\n * Given either an instance or the primary key of an instance, return the primary key.\n */\nfunction resolveId (definition, idOrInstance) {\n if (isString(idOrInstance) || isNumber(idOrInstance)) {\n return idOrInstance\n } else if (idOrInstance && definition) {\n return idOrInstance[definition.idAttribute] || idOrInstance\n } else {\n return idOrInstance\n }\n}\n\n/**\n * Given either an instance or the primary key of an instance, return the instance.\n */\nfunction resolveItem (resource, idOrInstance) {\n if (resource && (isString(idOrInstance) || isNumber(idOrInstance))) {\n return resource.index[idOrInstance] || idOrInstance\n } else {\n return idOrInstance\n }\n}\n\nfunction isValidString (val) {\n return (val != null && val !== '') // jshint ignore:line\n}\n\nfunction join (items, separator) {\n separator = separator || ''\n return filter(items, isValidString).join(separator)\n}\n\nfunction makePath (...args) {\n let result = join(args, '/')\n return result.replace(/([^:\\/]|^)\\/{2,}/g, '$1/')\n}\n\nexport default {\n Promise: P,\n /**\n * Method to wrap an \"options\" object so that it will inherit from\n * some parent object, such as a resource definition.\n */\n _ (parent, options) {\n let _this = this\n parent = parent || {}\n options = options || {}\n if (options && options.constructor === parent.constructor) {\n return options\n } else if (!isObject(options)) {\n throw new DSErrors.IA('\"options\" must be an object!')\n }\n forEach(toPromisify, function (name) {\n if (typeof options[name] === 'function' && options[name].toString().indexOf('for (var _len3 = arg') === -1) {\n options[name] = _this.promisify(options[name])\n }\n })\n // Dynamic constructor function\n let O = function Options (attrs) {\n let self = this\n forOwn(attrs, function (value, key) {\n self[key] = value\n })\n }\n // Inherit from some parent object\n O.prototype = parent\n // Give us a way to get the original options back.\n O.prototype.orig = function () {\n let orig = {}\n forOwn(this, function (value, key) {\n orig[key] = value\n })\n return orig\n }\n return new O(options)\n },\n _n: isNumber,\n _s: isString,\n _sn: isStringOrNumber,\n _snErr: isStringOrNumberErr,\n _o: isObject,\n _oErr: isObjectErr,\n _a: isArray,\n _aErr: isArrayErr,\n applyScope (definition, params, options) {\n let scope = options.scope\n let _params = copy(params)\n if (scope) {\n if (isString(scope)) {\n scope = [scope]\n }\n } else {\n scope = []\n }\n scope.unshift('defaultScope')\n forEach(scope, function (_scope) {\n let scopeDef = options.scopes[_scope]\n if (typeof scopeDef === 'function') {\n deepMixIn(params, scopeDef(definition))\n } else if (scopeDef) {\n deepMixIn(params, scopeDef)\n }\n })\n deepMixIn(params, _params)\n },\n compute (fn, field) {\n let _this = this\n let args = []\n if (!isObject(fn)) {\n forEach(fn.deps, function (dep) {\n args.push(get(_this, dep))\n })\n // compute property\n set(_this, field, fn[fn.length - 1].apply(_this, args))\n }\n },\n contains,\n copy,\n deepMixIn,\n diffObjectFromOldObject: observe.diffObjectFromOldObject,\n BinaryHeap,\n equals,\n Events,\n filter,\n fillIn (target, obj) {\n forOwn(obj, function (v, k) {\n if (!(k in target)) {\n target[k] = v\n }\n })\n return target\n },\n forEach,\n forOwn,\n fromJson (json) {\n return isString(json) ? JSON.parse(json) : json\n },\n get,\n guid,\n intersection,\n isArray,\n isBlacklisted,\n isEmpty,\n isFunction,\n isObject,\n isNumber,\n isString,\n keys: _keys,\n makePath,\n observe,\n omit (obj, bl) {\n let toRemove = []\n forOwn(obj, function (v, k) {\n if (isBlacklisted(k, bl)) {\n toRemove.push(k)\n }\n })\n forEach(toRemove, function (k) {\n delete obj[k]\n })\n return obj\n },\n pascalCase,\n pick,\n // Turn the given node-style callback function into one that can return a promise.\n promisify (fn, target) {\n let _this = this\n if (!fn) {\n return\n } else if (typeof fn !== 'function') {\n throw new Error('Can only promisify functions!')\n }\n return function (...args) {\n return new _this.Promise(function (resolve, reject) {\n args.push(function (err, result) {\n if (err) {\n reject(err)\n } else {\n resolve(result)\n }\n })\n\n try {\n let promise = fn.apply(target || this, args)\n if (promise && promise.then) {\n promise.then(resolve, reject)\n }\n } catch (err) {\n reject(err)\n }\n })\n }\n },\n remove,\n set,\n slice,\n sort,\n toJson: JSON.stringify,\n updateTimestamp (timestamp) {\n let newTimestamp = typeof Date.now === 'function' ? Date.now() : new Date().getTime()\n if (timestamp && newTimestamp <= timestamp) {\n return timestamp + 1\n } else {\n return newTimestamp\n }\n },\n upperCase,\n // Return a copy of \"object\" with cycles removed.\n removeCircular (object) {\n return (function rmCirc (value, ctx) {\n let i\n let nu\n\n if (\n typeof value === 'object' &&\n value !== null &&\n !(value instanceof Boolean) &&\n !(value instanceof Date) &&\n !(value instanceof Number) &&\n !(value instanceof RegExp) &&\n !(value instanceof String) &&\n (!File || !(value instanceof File))\n ) {\n // check if current object points back to itself\n let cur = ctx.cur\n var parent = ctx.ctx\n while (parent) {\n if (parent.cur === cur) {\n return undefined\n }\n parent = parent.ctx\n }\n\n if (isArray(value)) {\n nu = []\n for (i = 0; i < value.length; i += 1) {\n nu[i] = rmCirc(value[i], {ctx, cur: value[i]})\n }\n } else {\n nu = {}\n forOwn(value, function (v, k) {\n nu[k] = rmCirc(value[k], {ctx, cur: value[k]})\n })\n }\n return nu\n }\n return value\n }(object, {ctx: null, cur: object}))\n },\n resolveItem,\n resolveId,\n respond (response, meta, options) {\n if (options.returnMeta === 'array') {\n return [response, meta]\n } else if (options.returnMeta === 'object') {\n return {response, meta}\n } else {\n return response\n }\n },\n w,\n // This is where the magic of relations happens.\n applyRelationGettersToTarget (store, definition, target) {\n this.forEach(definition.relationList, def => {\n let relationName = def.relation\n let localField = def.localField\n let localKey = def.localKey\n let foreignKey = def.foreignKey\n let localKeys = def.localKeys\n let foreignKeys = def.foreignKeys\n let enumerable = typeof def.enumerable === 'boolean' ? def.enumerable : !!definition.relationsEnumerable\n if (typeof def.link === 'boolean' ? def.link : !!definition.linkRelations) {\n delete target[localField]\n let prop = {\n enumerable\n }\n if (def.type === 'belongsTo') {\n prop.get = function () {\n let key = get(this, localKey)\n let hasKey = !!(key || key === 0)\n return hasKey ? definition.getResource(relationName).get(key) : undefined\n }\n prop.set = function (parent) {\n if (parent) {\n set(this, localKey, get(parent, definition.getResource(relationName).idAttribute))\n }\n return get(this, localField)\n }\n } else if (def.type === 'hasMany') {\n prop.get = function () {\n let params = {}\n if (foreignKey) {\n params[foreignKey] = this[definition.idAttribute]\n return definition.getResource(relationName).defaultFilter.call(store, store.store[relationName].collection, relationName, params, {allowSimpleWhere: true})\n } else if (localKeys) {\n let keys = get(this, localKeys) || []\n return definition.getResource(relationName).getAll(isArray(keys) ? keys : _keys(keys))\n } else if (foreignKeys) {\n set(params, `where.${foreignKeys}.contains`, this[definition.idAttribute])\n return definition.getResource(relationName).defaultFilter.call(store, store.store[relationName].collection, relationName, params)\n }\n return undefined\n }\n prop.set = function (children) {\n if (children && children.length) {\n let id = get(this, definition.idAttribute)\n if (foreignKey) {\n forEach(children, function (child) {\n set(child, foreignKey, id)\n })\n } else if (localKeys) {\n let keys = []\n forEach(children, function (child) {\n keys.push(get(child, definition.getResource(relationName).idAttribute))\n })\n set(this, localKeys, keys)\n } else if (foreignKeys) {\n forEach(children, function (child) {\n let keys = get(child, foreignKeys)\n if (keys) {\n if (!contains(keys, id)) {\n keys.push(id)\n }\n } else {\n set(child, foreignKeys, [id])\n }\n })\n }\n }\n return get(this, localField)\n }\n } else if (def.type === 'hasOne') {\n if (localKey) {\n prop.get = function () {\n let key = get(this, localKey)\n let hasKey = !!(key || key === 0)\n return hasKey ? definition.getResource(relationName).get(key) : undefined\n }\n prop.set = function (sibling) {\n if (sibling) {\n set(this, localKey, get(sibling, definition.getResource(relationName).idAttribute))\n }\n return get(this, localField)\n }\n } else {\n prop.get = function () {\n let params = {}\n params[foreignKey] = this[definition.idAttribute]\n let items = params[foreignKey] ? definition.getResource(relationName).defaultFilter.call(store, store.store[relationName].collection, relationName, params, {allowSimpleWhere: true}) : []\n if (items.length) {\n return items[0]\n }\n return undefined\n }\n prop.set = function (sibling) {\n if (sibling) {\n set(sibling, foreignKey, get(this, definition.idAttribute))\n }\n return get(this, localField)\n }\n }\n }\n if (def.get) {\n let orig = prop.get\n prop.get = function () {\n return def.get(definition, def, this, (...args) => orig.apply(this, args))\n }\n }\n Object.defineProperty(target, localField, prop)\n }\n })\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/utils.js\n **/","/**\n * Thrown during a method call when an argument passed into the method is invalid.\n */\nclass IllegalArgumentError extends Error {\n constructor (message) {\n super()\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, this.constructor)\n }\n this.type = this.constructor.name\n this.message = message\n }\n}\n\n/**\n * Thrown when an invariant is violated or unrecoverable error is encountered during execution.\n */\nclass RuntimeError extends Error {\n constructor (message) {\n super()\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, this.constructor)\n }\n this.type = this.constructor.name\n this.message = message\n }\n}\n\n/**\n * Thrown when attempting to access or work with a non-existent resource.\n */\nclass NonexistentResourceError extends Error {\n constructor (resourceName) {\n super()\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, this.constructor)\n }\n this.type = this.constructor.name\n this.message = `${resourceName} is not a registered resource!`\n }\n}\n\nexport default {\n IllegalArgumentError,\n IA: IllegalArgumentError,\n RuntimeError,\n R: RuntimeError,\n NonexistentResourceError,\n NER: NonexistentResourceError\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/errors.js\n **/","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define('yabh', factory) :\n (global.BinaryHeap = factory());\n}(this, function () { 'use strict';\n\n /**\n * @method bubbleUp\n * @param {array} heap The heap.\n * @param {function} weightFunc The weight function.\n * @param {number} n The index of the element to bubble up.\n */\n var bubbleUp = function bubbleUp(heap, weightFunc, n) {\n var element = heap[n];\n var weight = weightFunc(element);\n // When at 0, an element can not go up any further.\n while (n > 0) {\n // Compute the parent element's index, and fetch it.\n var parentN = Math.floor((n + 1) / 2) - 1;\n var parent = heap[parentN];\n // If the parent has a lesser weight, things are in order and we\n // are done.\n if (weight >= weightFunc(parent)) {\n break;\n } else {\n heap[parentN] = element;\n heap[n] = parent;\n n = parentN;\n }\n }\n };\n\n /**\n * @method bubbleDown\n * @param {array} heap The heap.\n * @param {function} weightFunc The weight function.\n * @param {number} n The index of the element to sink down.\n */\n var bubbleDown = function bubbleDown(heap, weightFunc, n) {\n var length = heap.length;\n var node = heap[n];\n var nodeWeight = weightFunc(node);\n\n while (true) {\n var child2N = (n + 1) * 2;\n var child1N = child2N - 1;\n var swap = null;\n if (child1N < length) {\n var child1 = heap[child1N];\n var child1Weight = weightFunc(child1);\n // If the score is less than our node's, we need to swap.\n if (child1Weight < nodeWeight) {\n swap = child1N;\n }\n }\n // Do the same checks for the other child.\n if (child2N < length) {\n var child2 = heap[child2N];\n var child2Weight = weightFunc(child2);\n if (child2Weight < (swap === null ? nodeWeight : weightFunc(heap[child1N]))) {\n swap = child2N;\n }\n }\n\n if (swap === null) {\n break;\n } else {\n heap[n] = heap[swap];\n heap[swap] = node;\n n = swap;\n }\n }\n };\n\n function BinaryHeap(weightFunc, compareFunc) {\n if (!weightFunc) {\n weightFunc = function weightFunc(x) {\n return x;\n };\n }\n if (!compareFunc) {\n compareFunc = function compareFunc(x, y) {\n return x === y;\n };\n }\n if (typeof weightFunc !== 'function') {\n throw new Error('BinaryHeap([weightFunc][, compareFunc]): \"weightFunc\" must be a function!');\n }\n if (typeof compareFunc !== 'function') {\n throw new Error('BinaryHeap([weightFunc][, compareFunc]): \"compareFunc\" must be a function!');\n }\n this.weightFunc = weightFunc;\n this.compareFunc = compareFunc;\n this.heap = [];\n }\n\n var BHProto = BinaryHeap.prototype;\n\n BHProto.push = function (node) {\n this.heap.push(node);\n bubbleUp(this.heap, this.weightFunc, this.heap.length - 1);\n };\n\n BHProto.peek = function () {\n return this.heap[0];\n };\n\n BHProto.pop = function () {\n var front = this.heap[0];\n var end = this.heap.pop();\n if (this.heap.length > 0) {\n this.heap[0] = end;\n bubbleDown(this.heap, this.weightFunc, 0);\n }\n return front;\n };\n\n BHProto.remove = function (node) {\n var length = this.heap.length;\n for (var i = 0; i < length; i++) {\n if (this.compareFunc(this.heap[i], node)) {\n var removed = this.heap[i];\n var end = this.heap.pop();\n if (i !== length - 1) {\n this.heap[i] = end;\n bubbleUp(this.heap, this.weightFunc, i);\n bubbleDown(this.heap, this.weightFunc, i);\n }\n return removed;\n }\n }\n return null;\n };\n\n BHProto.removeAll = function () {\n this.heap = [];\n };\n\n BHProto.size = function () {\n return this.heap.length;\n };\n\n return BinaryHeap;\n\n}));\n//# sourceMappingURL=yabh.js.map\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/yabh/dist/yabh.js\n ** module id = 4\n ** module chunks = 0\n **/","\n\n /**\n * Array forEach\n */\n function forEach(arr, callback, thisObj) {\n if (arr == null) {\n return;\n }\n var i = -1,\n len = arr.length;\n while (++i < len) {\n // we iterate over sparse items since there is no way to make it\n // work properly on IE 7-8. see #64\n if ( callback.call(thisObj, arr[i], i, arr) === false ) {\n break;\n }\n }\n }\n\n module.exports = forEach;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/array/forEach.js\n ** module id = 5\n ** module chunks = 0\n **/","\n\n /**\n * Create slice of source array or array-like object\n */\n function slice(arr, start, end){\n var len = arr.length;\n\n if (start == null) {\n start = 0;\n } else if (start < 0) {\n start = Math.max(len + start, 0);\n } else {\n start = Math.min(start, len);\n }\n\n if (end == null) {\n end = len;\n } else if (end < 0) {\n end = Math.max(len + end, 0);\n } else {\n end = Math.min(end, len);\n }\n\n var result = [];\n while (start < end) {\n result.push(arr[start++]);\n }\n\n return result;\n }\n\n module.exports = slice;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/array/slice.js\n ** module id = 6\n ** module chunks = 0\n **/","var hasOwn = require('./hasOwn');\nvar forIn = require('./forIn');\n\n /**\n * Similar to Array/forEach but works over object properties and fixes Don't\n * Enum bug on IE.\n * based on: http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation\n */\n function forOwn(obj, fn, thisObj){\n forIn(obj, function(val, key){\n if (hasOwn(obj, key)) {\n return fn.call(thisObj, obj[key], key, obj);\n }\n });\n }\n\n module.exports = forOwn;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/object/forOwn.js\n ** module id = 7\n ** module chunks = 0\n **/","\n\n /**\n * Safer Object.hasOwnProperty\n */\n function hasOwn(obj, prop){\n return Object.prototype.hasOwnProperty.call(obj, prop);\n }\n\n module.exports = hasOwn;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/object/hasOwn.js\n ** module id = 8\n ** module chunks = 0\n **/","var hasOwn = require('./hasOwn');\n\n var _hasDontEnumBug,\n _dontEnums;\n\n function checkDontEnum(){\n _dontEnums = [\n 'toString',\n 'toLocaleString',\n 'valueOf',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'constructor'\n ];\n\n _hasDontEnumBug = true;\n\n for (var key in {'toString': null}) {\n _hasDontEnumBug = false;\n }\n }\n\n /**\n * Similar to Array/forEach but works over object properties and fixes Don't\n * Enum bug on IE.\n * based on: http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation\n */\n function forIn(obj, fn, thisObj){\n var key, i = 0;\n // no need to check if argument is a real object that way we can use\n // it for arrays, functions, date, etc.\n\n //post-pone check till needed\n if (_hasDontEnumBug == null) checkDontEnum();\n\n for (key in obj) {\n if (exec(fn, obj, key, thisObj) === false) {\n break;\n }\n }\n\n\n if (_hasDontEnumBug) {\n var ctor = obj.constructor,\n isProto = !!ctor && obj === ctor.prototype;\n\n while (key = _dontEnums[i++]) {\n // For constructor, if it is a prototype object the constructor\n // is always non-enumerable unless defined otherwise (and\n // enumerated above). For non-prototype objects, it will have\n // to be defined on this object, since it cannot be defined on\n // any prototype objects.\n //\n // For other [[DontEnum]] properties, check if the value is\n // different than Object prototype value.\n if (\n (key !== 'constructor' ||\n (!isProto && hasOwn(obj, key))) &&\n obj[key] !== Object.prototype[key]\n ) {\n if (exec(fn, obj, key, thisObj) === false) {\n break;\n }\n }\n }\n }\n }\n\n function exec(fn, obj, key, thisObj){\n return fn.call(thisObj, obj[key], key, obj);\n }\n\n module.exports = forIn;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/object/forIn.js\n ** module id = 9\n ** module chunks = 0\n **/","var indexOf = require('./indexOf');\n\n /**\n * If array contains values.\n */\n function contains(arr, val) {\n return indexOf(arr, val) !== -1;\n }\n module.exports = contains;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/array/contains.js\n ** module id = 10\n ** module chunks = 0\n **/","\n\n /**\n * Array.indexOf\n */\n function indexOf(arr, item, fromIndex) {\n fromIndex = fromIndex || 0;\n if (arr == null) {\n return -1;\n }\n\n var len = arr.length,\n i = fromIndex < 0 ? len + fromIndex : fromIndex;\n while (i < len) {\n // we iterate over sparse items since there is no way to make it\n // work properly on IE 7-8. see #64\n if (arr[i] === item) {\n return i;\n }\n\n i++;\n }\n\n return -1;\n }\n\n module.exports = indexOf;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/array/indexOf.js\n ** module id = 11\n ** module chunks = 0\n **/","var forOwn = require('./forOwn');\nvar isPlainObject = require('../lang/isPlainObject');\n\n /**\n * Mixes objects into the target object, recursively mixing existing child\n * objects.\n */\n function deepMixIn(target, objects) {\n var i = 0,\n n = arguments.length,\n obj;\n\n while(++i < n){\n obj = arguments[i];\n if (obj) {\n forOwn(obj, copyProp, target);\n }\n }\n\n return target;\n }\n\n function copyProp(val, key) {\n var existing = this[key];\n if (isPlainObject(val) && isPlainObject(existing)) {\n deepMixIn(existing, val);\n } else {\n this[key] = val;\n }\n }\n\n module.exports = deepMixIn;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/object/deepMixIn.js\n ** module id = 12\n ** module chunks = 0\n **/","\n\n /**\n * Checks if the value is created by the `Object` constructor.\n */\n function isPlainObject(value) {\n return (!!value && typeof value === 'object' &&\n value.constructor === Object);\n }\n\n module.exports = isPlainObject;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/lang/isPlainObject.js\n ** module id = 13\n ** module chunks = 0\n **/","var toString = require('../lang/toString');\nvar camelCase = require('./camelCase');\nvar upperCase = require('./upperCase');\n /**\n * camelCase + UPPERCASE first char\n */\n function pascalCase(str){\n str = toString(str);\n return camelCase(str).replace(/^[a-z]/, upperCase);\n }\n\n module.exports = pascalCase;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/string/pascalCase.js\n ** module id = 14\n ** module chunks = 0\n **/","\n\n /**\n * Typecast a value to a String, using an empty string value for null or\n * undefined.\n */\n function toString(val){\n return val == null ? '' : val.toString();\n }\n\n module.exports = toString;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/lang/toString.js\n ** module id = 15\n ** module chunks = 0\n **/","var toString = require('../lang/toString');\nvar replaceAccents = require('./replaceAccents');\nvar removeNonWord = require('./removeNonWord');\nvar upperCase = require('./upperCase');\nvar lowerCase = require('./lowerCase');\n /**\n * Convert string to camelCase text.\n */\n function camelCase(str){\n str = toString(str);\n str = replaceAccents(str);\n str = removeNonWord(str)\n .replace(/[\\-_]/g, ' ') //convert all hyphens and underscores to spaces\n .replace(/\\s[a-z]/g, upperCase) //convert first char of each word to UPPERCASE\n .replace(/\\s+/g, '') //remove spaces\n .replace(/^[A-Z]/g, lowerCase); //convert first char to lowercase\n return str;\n }\n module.exports = camelCase;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/string/camelCase.js\n ** module id = 16\n ** module chunks = 0\n **/","var toString = require('../lang/toString');\n /**\n * Replaces all accented chars with regular ones\n */\n function replaceAccents(str){\n str = toString(str);\n\n // verifies if the String has accents and replace them\n if (str.search(/[\\xC0-\\xFF]/g) > -1) {\n str = str\n .replace(/[\\xC0-\\xC5]/g, \"A\")\n .replace(/[\\xC6]/g, \"AE\")\n .replace(/[\\xC7]/g, \"C\")\n .replace(/[\\xC8-\\xCB]/g, \"E\")\n .replace(/[\\xCC-\\xCF]/g, \"I\")\n .replace(/[\\xD0]/g, \"D\")\n .replace(/[\\xD1]/g, \"N\")\n .replace(/[\\xD2-\\xD6\\xD8]/g, \"O\")\n .replace(/[\\xD9-\\xDC]/g, \"U\")\n .replace(/[\\xDD]/g, \"Y\")\n .replace(/[\\xDE]/g, \"P\")\n .replace(/[\\xE0-\\xE5]/g, \"a\")\n .replace(/[\\xE6]/g, \"ae\")\n .replace(/[\\xE7]/g, \"c\")\n .replace(/[\\xE8-\\xEB]/g, \"e\")\n .replace(/[\\xEC-\\xEF]/g, \"i\")\n .replace(/[\\xF1]/g, \"n\")\n .replace(/[\\xF2-\\xF6\\xF8]/g, \"o\")\n .replace(/[\\xF9-\\xFC]/g, \"u\")\n .replace(/[\\xFE]/g, \"p\")\n .replace(/[\\xFD\\xFF]/g, \"y\");\n }\n return str;\n }\n module.exports = replaceAccents;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/string/replaceAccents.js\n ** module id = 17\n ** module chunks = 0\n **/","var toString = require('../lang/toString');\n // This pattern is generated by the _build/pattern-removeNonWord.js script\n var PATTERN = /[^\\x20\\x2D0-9A-Z\\x5Fa-z\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\xFF]/g;\n\n /**\n * Remove non-word chars.\n */\n function removeNonWord(str){\n str = toString(str);\n return str.replace(PATTERN, '');\n }\n\n module.exports = removeNonWord;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/string/removeNonWord.js\n ** module id = 18\n ** module chunks = 0\n **/","var toString = require('../lang/toString');\n /**\n * \"Safer\" String.toUpperCase()\n */\n function upperCase(str){\n str = toString(str);\n return str.toUpperCase();\n }\n module.exports = upperCase;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/string/upperCase.js\n ** module id = 19\n ** module chunks = 0\n **/","var toString = require('../lang/toString');\n /**\n * \"Safer\" String.toLowerCase()\n */\n function lowerCase(str){\n str = toString(str);\n return str.toLowerCase();\n }\n\n module.exports = lowerCase;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/string/lowerCase.js\n ** module id = 20\n ** module chunks = 0\n **/","var indexOf = require('./indexOf');\n\n /**\n * Remove a single item from the array.\n * (it won't remove duplicates, just a single item)\n */\n function remove(arr, item){\n var idx = indexOf(arr, item);\n if (idx !== -1) arr.splice(idx, 1);\n }\n\n module.exports = remove;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/array/remove.js\n ** module id = 21\n ** module chunks = 0\n **/","var slice = require('../array/slice');\n\n /**\n * Return a copy of the object, filtered to only have values for the whitelisted keys.\n */\n function pick(obj, var_keys){\n var keys = typeof arguments[1] !== 'string'? arguments[1] : slice(arguments, 1),\n out = {},\n i = 0, key;\n while (key = keys[i++]) {\n out[key] = obj[key];\n }\n return out;\n }\n\n module.exports = pick;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/object/pick.js\n ** module id = 22\n ** module chunks = 0\n **/","var forOwn = require('./forOwn');\n\n /**\n * Get object keys\n */\n var keys = Object.keys || function (obj) {\n var keys = [];\n forOwn(obj, function(val, key){\n keys.push(key);\n });\n return keys;\n };\n\n module.exports = keys;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/object/keys.js\n ** module id = 23\n ** module chunks = 0\n **/","\n\n /**\n * Merge sort (http://en.wikipedia.org/wiki/Merge_sort)\n */\n function mergeSort(arr, compareFn) {\n if (arr == null) {\n return [];\n } else if (arr.length < 2) {\n return arr;\n }\n\n if (compareFn == null) {\n compareFn = defaultCompare;\n }\n\n var mid, left, right;\n\n mid = ~~(arr.length / 2);\n left = mergeSort( arr.slice(0, mid), compareFn );\n right = mergeSort( arr.slice(mid, arr.length), compareFn );\n\n return merge(left, right, compareFn);\n }\n\n function defaultCompare(a, b) {\n return a < b ? -1 : (a > b? 1 : 0);\n }\n\n function merge(left, right, compareFn) {\n var result = [];\n\n while (left.length && right.length) {\n if (compareFn(left[0], right[0]) <= 0) {\n // if 0 it should preserve same order (stable)\n result.push(left.shift());\n } else {\n result.push(right.shift());\n }\n }\n\n if (left.length) {\n result.push.apply(result, left);\n }\n\n if (right.length) {\n result.push.apply(result, right);\n }\n\n return result;\n }\n\n module.exports = mergeSort;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/array/sort.js\n ** module id = 24\n ** module chunks = 0\n **/","var isPrimitive = require('../lang/isPrimitive');\n\n /**\n * get \"nested\" object property\n */\n function get(obj, prop){\n var parts = prop.split('.'),\n last = parts.pop();\n\n while (prop = parts.shift()) {\n obj = obj[prop];\n if (obj == null) return;\n }\n\n return obj[last];\n }\n\n module.exports = get;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/object/get.js\n ** module id = 25\n ** module chunks = 0\n **/","\n\n /**\n * Checks if the object is a primitive\n */\n function isPrimitive(value) {\n // Using switch fallthrough because it's simple to read and is\n // generally fast: http://jsperf.com/testing-value-is-primitive/5\n switch (typeof value) {\n case \"string\":\n case \"number\":\n case \"boolean\":\n return true;\n }\n\n return value == null;\n }\n\n module.exports = isPrimitive;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/lang/isPrimitive.js\n ** module id = 26\n ** module chunks = 0\n **/","var namespace = require('./namespace');\n\n /**\n * set \"nested\" object property\n */\n function set(obj, prop, val){\n var parts = (/^(.+)\\.(.+)$/).exec(prop);\n if (parts){\n namespace(obj, parts[1])[parts[2]] = val;\n } else {\n obj[prop] = val;\n }\n }\n\n module.exports = set;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/object/set.js\n ** module id = 27\n ** module chunks = 0\n **/","var forEach = require('../array/forEach');\n\n /**\n * Create nested object if non-existent\n */\n function namespace(obj, path){\n if (!path) return obj;\n forEach(path.split('.'), function(key){\n if (!obj[key]) {\n obj[key] = {};\n }\n obj = obj[key];\n });\n return obj;\n }\n\n module.exports = namespace;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/object/namespace.js\n ** module id = 28\n ** module chunks = 0\n **/","/*\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n// Modifications\n// Copyright 2014-2015 Jason Dobry\n//\n// Summary of modifications:\n// Fixed use of \"delete\" keyword for IE8 compatibility\n// Exposed diffObjectFromOldObject on the exported object\n// Added the \"equals\" argument to diffObjectFromOldObject to be used to check equality\n// Added a way in diffObjectFromOldObject to ignore changes to certain properties\n// Removed all code related to:\n// - ArrayObserver\n// - ArraySplice\n// - PathObserver\n// - CompoundObserver\n// - Path\n// - ObserverTransform\n\n(function(global) {\n var testingExposeCycleCount = global.testingExposeCycleCount;\n\n // Detect and do basic sanity checking on Object/Array.observe.\n function detectObjectObserve() {\n if (typeof Object.observe !== 'function' ||\n typeof Array.observe !== 'function') {\n return false;\n }\n\n var records = [];\n\n function callback(recs) {\n records = recs;\n }\n\n var test = {};\n var arr = [];\n Object.observe(test, callback);\n Array.observe(arr, callback);\n test.id = 1;\n test.id = 2;\n delete test.id;\n arr.push(1, 2);\n arr.length = 0;\n\n Object.deliverChangeRecords(callback);\n if (records.length !== 5)\n return false;\n\n if (records[0].type != 'add' ||\n records[1].type != 'update' ||\n records[2].type != 'delete' ||\n records[3].type != 'splice' ||\n records[4].type != 'splice') {\n return false;\n }\n\n Object.unobserve(test, callback);\n Array.unobserve(arr, callback);\n\n return true;\n }\n\n var hasObserve = detectObjectObserve();\n\n var createObject = ('__proto__' in {}) ?\n function(obj) { return obj; } :\n function(obj) {\n var proto = obj.__proto__;\n if (!proto)\n return obj;\n var newObject = Object.create(proto);\n Object.getOwnPropertyNames(obj).forEach(function(name) {\n Object.defineProperty(newObject, name,\n Object.getOwnPropertyDescriptor(obj, name));\n });\n return newObject;\n };\n\n var MAX_DIRTY_CHECK_CYCLES = 1000;\n\n function dirtyCheck(observer) {\n var cycles = 0;\n while (cycles < MAX_DIRTY_CHECK_CYCLES && observer.check_()) {\n cycles++;\n }\n if (testingExposeCycleCount)\n global.dirtyCheckCycleCount = cycles;\n\n return cycles > 0;\n }\n\n function objectIsEmpty(object) {\n for (var prop in object)\n return false;\n return true;\n }\n\n function diffIsEmpty(diff) {\n return objectIsEmpty(diff.added) &&\n objectIsEmpty(diff.removed) &&\n objectIsEmpty(diff.changed);\n }\n\n function isBlacklisted(prop, bl) {\n if (!bl || !bl.length) {\n return false;\n }\n var matches;\n for (var i = 0; i < bl.length; i++) {\n if ((Object.prototype.toString.call(bl[i]) === '[object RegExp]' && bl[i].test(prop)) || bl[i] === prop) {\n return matches = prop;\n }\n }\n return !!matches;\n }\n\n function diffObjectFromOldObject(object, oldObject, equals, bl) {\n var added = {};\n var removed = {};\n var changed = {};\n\n for (var prop in oldObject) {\n var newValue = object[prop];\n\n if (isBlacklisted(prop, bl))\n continue;\n\n if (newValue !== undefined && (equals ? equals(newValue, oldObject[prop]) : newValue === oldObject[prop]))\n continue;\n\n if (!(prop in object)) {\n removed[prop] = undefined;\n continue;\n }\n\n if (equals ? !equals(newValue, oldObject[prop]) : newValue !== oldObject[prop])\n changed[prop] = newValue;\n }\n\n for (var prop in object) {\n if (prop in oldObject)\n continue;\n\n if (isBlacklisted(prop, bl))\n continue;\n\n added[prop] = object[prop];\n }\n\n if (Array.isArray(object) && object.length !== oldObject.length)\n changed.length = object.length;\n\n return {\n added: added,\n removed: removed,\n changed: changed\n };\n }\n\n var eomTasks = [];\n function runEOMTasks() {\n if (!eomTasks.length)\n return false;\n\n for (var i = 0; i < eomTasks.length; i++) {\n eomTasks[i]();\n }\n eomTasks.length = 0;\n return true;\n }\n\n var runEOM = hasObserve ? (function(){\n return function(fn) {\n return Promise.resolve().then(fn);\n }\n })() :\n (function() {\n return function(fn) {\n eomTasks.push(fn);\n };\n })();\n\n var observedObjectCache = [];\n\n function newObservedObject() {\n var observer;\n var object;\n var discardRecords = false;\n var first = true;\n\n function callback(records) {\n if (observer && observer.state_ === OPENED && !discardRecords)\n observer.check_(records);\n }\n\n return {\n open: function(obs) {\n if (observer)\n throw Error('ObservedObject in use');\n\n if (!first)\n Object.deliverChangeRecords(callback);\n\n observer = obs;\n first = false;\n },\n observe: function(obj, arrayObserve) {\n object = obj;\n if (arrayObserve)\n Array.observe(object, callback);\n else\n Object.observe(object, callback);\n },\n deliver: function(discard) {\n discardRecords = discard;\n Object.deliverChangeRecords(callback);\n discardRecords = false;\n },\n close: function() {\n observer = undefined;\n Object.unobserve(object, callback);\n observedObjectCache.push(this);\n }\n };\n }\n\n function getObservedObject(observer, object, arrayObserve) {\n var dir = observedObjectCache.pop() || newObservedObject();\n dir.open(observer);\n dir.observe(object, arrayObserve);\n return dir;\n }\n\n var UNOPENED = 0;\n var OPENED = 1;\n var CLOSED = 2;\n\n var nextObserverId = 1;\n\n function Observer() {\n this.state_ = UNOPENED;\n this.callback_ = undefined;\n this.target_ = undefined; // TODO(rafaelw): Should be WeakRef\n this.directObserver_ = undefined;\n this.value_ = undefined;\n this.id_ = nextObserverId++;\n }\n\n Observer.prototype = {\n open: function(callback, target) {\n if (this.state_ != UNOPENED)\n throw Error('Observer has already been opened.');\n\n addToAll(this);\n this.callback_ = callback;\n this.target_ = target;\n this.connect_();\n this.state_ = OPENED;\n return this.value_;\n },\n\n close: function() {\n if (this.state_ != OPENED)\n return;\n\n removeFromAll(this);\n this.disconnect_();\n this.value_ = undefined;\n this.callback_ = undefined;\n this.target_ = undefined;\n this.state_ = CLOSED;\n },\n\n deliver: function() {\n if (this.state_ != OPENED)\n return;\n\n dirtyCheck(this);\n },\n\n report_: function(changes) {\n try {\n this.callback_.apply(this.target_, changes);\n } catch (ex) {\n Observer._errorThrownDuringCallback = true;\n console.error('Exception caught during observer callback: ' +\n (ex.stack || ex));\n }\n },\n\n discardChanges: function() {\n this.check_(undefined, true);\n return this.value_;\n }\n }\n\n var collectObservers = !hasObserve;\n var allObservers;\n Observer._allObserversCount = 0;\n\n if (collectObservers) {\n allObservers = [];\n }\n\n function addToAll(observer) {\n Observer._allObserversCount++;\n if (!collectObservers)\n return;\n\n allObservers.push(observer);\n }\n\n function removeFromAll(observer) {\n Observer._allObserversCount--;\n }\n\n var runningMicrotaskCheckpoint = false;\n\n global.Platform = global.Platform || {};\n\n global.Platform.performMicrotaskCheckpoint = function() {\n if (runningMicrotaskCheckpoint)\n return;\n\n if (!collectObservers)\n return;\n\n runningMicrotaskCheckpoint = true;\n\n var cycles = 0;\n var anyChanged, toCheck;\n\n do {\n cycles++;\n toCheck = allObservers;\n allObservers = [];\n anyChanged = false;\n\n for (var i = 0; i < toCheck.length; i++) {\n var observer = toCheck[i];\n if (observer.state_ != OPENED)\n continue;\n\n if (observer.check_())\n anyChanged = true;\n\n allObservers.push(observer);\n }\n if (runEOMTasks())\n anyChanged = true;\n } while (cycles < MAX_DIRTY_CHECK_CYCLES && anyChanged);\n\n if (testingExposeCycleCount)\n global.dirtyCheckCycleCount = cycles;\n\n runningMicrotaskCheckpoint = false;\n };\n\n if (collectObservers) {\n global.Platform.clearObservers = function() {\n allObservers = [];\n };\n }\n\n function ObjectObserver(object) {\n Observer.call(this);\n this.value_ = object;\n this.oldObject_ = undefined;\n }\n\n ObjectObserver.prototype = createObject({\n __proto__: Observer.prototype,\n\n arrayObserve: false,\n\n connect_: function(callback, target) {\n if (hasObserve) {\n this.directObserver_ = getObservedObject(this, this.value_,\n this.arrayObserve);\n } else {\n this.oldObject_ = this.copyObject(this.value_);\n }\n\n },\n\n copyObject: function(object) {\n var copy = Array.isArray(object) ? [] : {};\n for (var prop in object) {\n copy[prop] = object[prop];\n };\n if (Array.isArray(object))\n copy.length = object.length;\n return copy;\n },\n\n check_: function(changeRecords, skipChanges) {\n var diff;\n var oldValues;\n if (hasObserve) {\n if (!changeRecords)\n return false;\n\n oldValues = {};\n diff = diffObjectFromChangeRecords(this.value_, changeRecords,\n oldValues);\n } else {\n oldValues = this.oldObject_;\n diff = diffObjectFromOldObject(this.value_, this.oldObject_);\n }\n\n if (diffIsEmpty(diff))\n return false;\n\n if (!hasObserve)\n this.oldObject_ = this.copyObject(this.value_);\n\n this.report_([\n diff.added || {},\n diff.removed || {},\n diff.changed || {},\n function(property) {\n return oldValues[property];\n }\n ]);\n\n return true;\n },\n\n disconnect_: function() {\n if (hasObserve) {\n this.directObserver_.close();\n this.directObserver_ = undefined;\n } else {\n this.oldObject_ = undefined;\n }\n },\n\n deliver: function() {\n if (this.state_ != OPENED)\n return;\n\n if (hasObserve)\n this.directObserver_.deliver(false);\n else\n dirtyCheck(this);\n },\n\n discardChanges: function() {\n if (this.directObserver_)\n this.directObserver_.deliver(true);\n else\n this.oldObject_ = this.copyObject(this.value_);\n\n return this.value_;\n }\n });\n\n var observerSentinel = {};\n\n var expectedRecordTypes = {\n add: true,\n update: true,\n 'delete': true\n };\n\n function diffObjectFromChangeRecords(object, changeRecords, oldValues) {\n var added = {};\n var removed = {};\n\n for (var i = 0; i < changeRecords.length; i++) {\n var record = changeRecords[i];\n if (!expectedRecordTypes[record.type]) {\n console.error('Unknown changeRecord type: ' + record.type);\n console.error(record);\n continue;\n }\n\n if (!(record.name in oldValues))\n oldValues[record.name] = record.oldValue;\n\n if (record.type == 'update')\n continue;\n\n if (record.type == 'add') {\n if (record.name in removed)\n delete removed[record.name];\n else\n added[record.name] = true;\n\n continue;\n }\n\n // type = 'delete'\n if (record.name in added) {\n delete added[record.name];\n delete oldValues[record.name];\n } else {\n removed[record.name] = true;\n }\n }\n\n for (var prop in added)\n added[prop] = object[prop];\n\n for (var prop in removed)\n removed[prop] = undefined;\n\n var changed = {};\n for (var prop in oldValues) {\n if (prop in added || prop in removed)\n continue;\n\n var newValue = object[prop];\n if (oldValues[prop] !== newValue)\n changed[prop] = newValue;\n }\n\n return {\n added: added,\n removed: removed,\n changed: changed\n };\n }\n\n // Export the observe-js object for **Node.js**, with backwards-compatibility\n // for the old `require()` API. Also ensure `exports` is not a DOM Element.\n // If we're in the browser, export as a global object.\n\n global.Observer = Observer;\n global.isBlacklisted = isBlacklisted;\n global.Observer.runEOM_ = runEOM;\n global.Observer.observerSentinel_ = observerSentinel; // for testing.\n global.Observer.hasObjectObserve = hasObserve;\n global.diffObjectFromOldObject = diffObjectFromOldObject;\n global.ObjectObserver = ObjectObserver;\n\n})(exports);\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./lib/observe-js/observe.js\n ** module id = 29\n ** module chunks = 0\n **/","var randHex = require('./randHex');\nvar choice = require('./choice');\n\n /**\n * Returns pseudo-random guid (UUID v4)\n * IMPORTANT: it's not totally \"safe\" since randHex/choice uses Math.random\n * by default and sequences can be predicted in some cases. See the\n * \"random/random\" documentation for more info about it and how to replace\n * the default PRNG.\n */\n function guid() {\n return (\n randHex(8)+'-'+\n randHex(4)+'-'+\n // v4 UUID always contain \"4\" at this position to specify it was\n // randomly generated\n '4' + randHex(3) +'-'+\n // v4 UUID always contain chars [a,b,8,9] at this position\n choice(8, 9, 'a', 'b') + randHex(3)+'-'+\n randHex(12)\n );\n }\n module.exports = guid;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/random/guid.js\n ** module id = 30\n ** module chunks = 0\n **/","var choice = require('./choice');\n\n var _chars = '0123456789abcdef'.split('');\n\n /**\n * Returns a random hexadecimal string\n */\n function randHex(size){\n size = size && size > 0? size : 6;\n var str = '';\n while (size--) {\n str += choice(_chars);\n }\n return str;\n }\n\n module.exports = randHex;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/random/randHex.js\n ** module id = 31\n ** module chunks = 0\n **/","var randInt = require('./randInt');\nvar isArray = require('../lang/isArray');\n\n /**\n * Returns a random element from the supplied arguments\n * or from the array (if single argument is an array).\n */\n function choice(items) {\n var target = (arguments.length === 1 && isArray(items))? items : arguments;\n return target[ randInt(0, target.length - 1) ];\n }\n\n module.exports = choice;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/random/choice.js\n ** module id = 32\n ** module chunks = 0\n **/","var MIN_INT = require('../number/MIN_INT');\nvar MAX_INT = require('../number/MAX_INT');\nvar rand = require('./rand');\n\n /**\n * Gets random integer inside range or snap to min/max values.\n */\n function randInt(min, max){\n min = min == null? MIN_INT : ~~min;\n max = max == null? MAX_INT : ~~max;\n // can't be max + 0.5 otherwise it will round up if `rand`\n // returns `max` causing it to overflow range.\n // -0.5 and + 0.49 are required to avoid bias caused by rounding\n return Math.round( rand(min - 0.5, max + 0.499999999999) );\n }\n\n module.exports = randInt;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/random/randInt.js\n ** module id = 33\n ** module chunks = 0\n **/","/**\n * @constant Minimum 32-bit signed integer value (-2^31).\n */\n\n module.exports = -2147483648;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/number/MIN_INT.js\n ** module id = 34\n ** module chunks = 0\n **/","/**\n * @constant Maximum 32-bit signed integer value. (2^31 - 1)\n */\n\n module.exports = 2147483647;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/number/MAX_INT.js\n ** module id = 35\n ** module chunks = 0\n **/","var random = require('./random');\nvar MIN_INT = require('../number/MIN_INT');\nvar MAX_INT = require('../number/MAX_INT');\n\n /**\n * Returns random number inside range\n */\n function rand(min, max){\n min = min == null? MIN_INT : min;\n max = max == null? MAX_INT : max;\n return min + (max - min) * random();\n }\n\n module.exports = rand;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/random/rand.js\n ** module id = 36\n ** module chunks = 0\n **/","\n\n /**\n * Just a wrapper to Math.random. No methods inside mout/random should call\n * Math.random() directly so we can inject the pseudo-random number\n * generator if needed (ie. in case we need a seeded random or a better\n * algorithm than the native one)\n */\n function random(){\n return random.get();\n }\n\n // we expose the method so it can be swapped if needed\n random.get = Math.random;\n\n module.exports = random;\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/random/random.js\n ** module id = 37\n ** module chunks = 0\n **/","var isKind = require('./isKind');\n /**\n */\n var isArray = Array.isArray || function (val) {\n return isKind(val, 'Array');\n };\n module.exports = isArray;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/lang/isArray.js\n ** module id = 38\n ** module chunks = 0\n **/","var kindOf = require('./kindOf');\n /**\n * Check if value is from a specific \"kind\".\n */\n function isKind(val, kind){\n return kindOf(val) === kind;\n }\n module.exports = isKind;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/lang/isKind.js\n ** module id = 39\n ** module chunks = 0\n **/","\n\n var _rKind = /^\\[object (.*)\\]$/,\n _toString = Object.prototype.toString,\n UNDEF;\n\n /**\n * Gets the \"kind\" of value. (e.g. \"String\", \"Number\", etc)\n */\n function kindOf(val) {\n if (val === null) {\n return 'Null';\n } else if (val === UNDEF) {\n return 'Undefined';\n } else {\n return _rKind.exec( _toString.call(val) )[1];\n }\n }\n module.exports = kindOf;\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/mout/lang/kindOf.js\n ** module id = 40\n ** module chunks = 0\n **/","import DSUtils from '../../utils'\nimport DSErrors from '../../errors'\n\nlet {NER, IA, R} = DSErrors\nconst fakeId = `DS_${new Date().getTime()}`\n\nfunction diffIsEmpty (diff) {\n return !(DSUtils.isEmpty(diff.added) &&\n DSUtils.isEmpty(diff.removed) &&\n DSUtils.isEmpty(diff.changed))\n}\n\nfunction check (fnName, resourceName, id, options) {\n let _this = this\n let definition = _this.definitions[resourceName]\n options = options || {}\n\n id = DSUtils.resolveId(definition, id)\n if (!definition) {\n throw new NER(resourceName)\n } else if (!DSUtils._sn(id)) {\n throw DSUtils._snErr('id')\n }\n id = id === fakeId ? undefined : id\n\n options = DSUtils._(definition, options)\n\n options.logFn(fnName, id, options)\n\n return {_this, definition, _resourceName: resourceName, _id: id, _options: options}\n}\n\nexport default {\n // Return the changes for the given item, if any.\n //\n // @param resourceName The name of the type of resource of the item whose changes are to be returned.\n // @param id The primary key of the item whose changes are to be returned.\n // @param options Optional configuration.\n // @param options.ignoredChanges Array of strings or regular expressions of fields, the changes of which are to be ignored.\n // @returns The changes of the given item, if any.\n changes (resourceName, id, options) {\n let {_this, definition, _resourceName, _id, _options} = check.call(this, 'changes', resourceName, id, options)\n\n let item = definition.get(_id)\n if (item) {\n let observer = _this.store[_resourceName].observers[_id]\n if (observer && typeof observer === 'function') {\n // force observation handler to be fired for item if there are changes and `Object.observe` is not available\n observer.deliver()\n }\n\n let ignoredChanges = DSUtils.copy(_options.ignoredChanges || [])\n // add linked relations to list of ignored changes\n DSUtils.forEach(definition.relationFields, function (field) {\n if (!DSUtils.contains(ignoredChanges, field)) {\n ignoredChanges.push(field)\n }\n })\n // calculate changes\n let diff = DSUtils.diffObjectFromOldObject(item, _this.store[_resourceName].previousAttributes[_id], DSUtils.equals, ignoredChanges)\n // remove functions from diff\n DSUtils.forOwn(diff, function (changeset, name) {\n let toKeep = []\n DSUtils.forOwn(changeset, function (value, field) {\n if (!DSUtils.isFunction(value)) {\n toKeep.push(field)\n }\n })\n diff[name] = DSUtils.pick(diff[name], toKeep)\n })\n // definitely ignore changes to linked relations\n DSUtils.forEach(definition.relationFields, function (field) {\n delete diff.added[field]\n delete diff.removed[field]\n delete diff.changed[field]\n })\n return diff\n }\n },\n\n // Return the change history of the given item, if any.\n //\n // @param resourceName The name of the type of resource of the item whose change history is to be returned.\n // @param id The primary key of the item whose change history is to be returned.\n // @returns The change history of the given item, if any.\n changeHistory (resourceName, id) {\n let {_this, definition, _resourceName, _id} = check.call(this, 'changeHistory', resourceName, id || fakeId)\n let resource = _this.store[_resourceName]\n\n if (!definition.keepChangeHistory) {\n definition.errorFn('changeHistory is disabled for this resource!')\n } else {\n if (_resourceName) {\n let item = definition.get(_id)\n if (item) {\n return resource.changeHistories[_id]\n }\n } else {\n return resource.changeHistory\n }\n }\n },\n\n commit (resourceName, id) {\n let {_this, definition, _resourceName, _id} = check.call(this, 'commit', resourceName, id)\n let resource = _this.store[_resourceName]\n let item = _this.store[_resourceName].index[_id]\n if (item) {\n const relationFields = definition.relationFields || []\n const previousAttributes = {}\n for (let key in item) {\n if (relationFields.indexOf(key) === -1) {\n previousAttributes[key] = DSUtils.copy(item[key], null, null, null, [])\n }\n }\n resource.previousAttributes[_id] = previousAttributes\n }\n\n if (resource.changeHistories[_id].length) {\n DSUtils.forEach(resource.changeHistories[_id], function (changeRecord) {\n DSUtils.remove(resource.changeHistory, changeRecord)\n })\n resource.changeHistories[_id].splice(0, resource.changeHistories[_id].length)\n }\n return item\n },\n\n // Re-compute the computed properties of the given item.\n //\n // @param resourceName The name of the type of resource of the item whose computed properties are to be re-computed.\n // @param instance The instance whose computed properties are to be re-computed.\n // @returns The item whose computed properties were re-computed.\n compute (resourceName, instance) {\n let _this = this\n let definition = _this.definitions[resourceName]\n\n instance = DSUtils.resolveItem(_this.store[resourceName], instance)\n if (!definition) {\n throw new NER(resourceName)\n } else if (!instance) {\n throw new R('Item not in the store!')\n } else if (!DSUtils._o(instance) && !DSUtils._sn(instance)) {\n throw new IA('\"instance\" must be an object, string or number!')\n }\n\n definition.logFn('compute', instance)\n\n // re-compute all computed properties\n DSUtils.forOwn(definition.computed, function (fn, field) {\n DSUtils.compute.call(instance, fn, field)\n })\n return instance\n },\n\n // Factory function to create an instance of the specified Resource.\n //\n // @param resourceName The name of the type of resource of which to create an instance.\n // @param attrs Hash of properties with which to initialize the instance.\n // @param options Optional configuration.\n // @param options.defaultValues Default values with which to initialize the instance.\n // @returns The new instance.\n createInstance (resourceName, attrs, options) {\n let definition = this.definitions[resourceName]\n let item\n\n attrs = attrs || {}\n\n if (!definition) {\n throw new NER(resourceName)\n } else if (attrs && !DSUtils.isObject(attrs)) {\n throw new IA('\"attrs\" must be an object!')\n }\n\n options = DSUtils._(definition, options)\n\n const relationList = definition.relationList || []\n if (relationList.length) {\n DSUtils.forEach(relationList, function (def) {\n const relationData = DSUtils.get(attrs, def.localField)\n if (relationData) {\n if (DSUtils.isArray(relationData)) {\n const array = []\n const Resource = definition.getResource(def.relation)\n const _options = options.orig()\n DSUtils.forEach(relationData, function (relationDataItem) {\n array.push(Resource.createInstance(relationDataItem, _options))\n })\n DSUtils.set(attrs, def.localField, array)\n } else if (DSUtils.isObject(relationData)) {\n DSUtils.set(attrs, def.localField, definition.getResource(def.relation).createInstance(relationData, options.orig()))\n }\n }\n })\n }\n\n options.logFn('createInstance', attrs, options)\n\n // lifecycle\n options.beforeCreateInstance(options, attrs)\n\n // grab instance constructor function from Resource definition\n let Constructor = definition[definition.class]\n\n // create instance\n item = new Constructor()\n\n if (definition.instanceEvents) {\n DSUtils.Events(item)\n }\n\n // add default values\n if (options.defaultValues) {\n DSUtils.deepMixIn(item, DSUtils.copy(options.defaultValues))\n }\n DSUtils.deepMixIn(item, attrs)\n\n // compute computed properties\n if (definition.computed) {\n definition.compute(item)\n }\n // lifecycle\n options.afterCreateInstance(options, item)\n return item\n },\n\n // Create a new collection of the specified Resource.\n //\n // @param resourceName The name of the type of resource of which to create a collection\n // @param arr Possibly empty array of data from which to create the collection.\n // @param params The criteria by which to filter items. Will be passed to `DS#findAll` if `fetch` is called. See http://www.js-data.io/docs/query-syntax\n // @param options Optional configuration.\n // @param options.notify Whether to call the beforeCreateCollection and afterCreateCollection lifecycle hooks..\n // @returns The new collection.\n createCollection (resourceName, arr, params, options) {\n let _this = this\n let definition = _this.definitions[resourceName]\n\n arr = arr || []\n params = params || {}\n\n if (!definition) {\n throw new NER(resourceName)\n } else if (arr && !DSUtils.isArray(arr)) {\n throw new IA('\"arr\" must be an array!')\n }\n\n options = DSUtils._(definition, options)\n\n options.logFn('createCollection', arr, options)\n\n // lifecycle\n options.beforeCreateCollection(options, arr)\n\n // define the API for this collection\n Object.defineProperties(arr, {\n // Call DS#findAll with the params of this collection, filling the collection with the results.\n fetch: {\n value: function (params, options) {\n let __this = this\n __this.params = params || __this.params\n return definition.findAll(__this.params, options).then(function (data) {\n if (data === __this) {\n return __this\n }\n data.unshift(__this.length)\n data.unshift(0)\n __this.splice.apply(__this, data)\n data.shift()\n data.shift()\n if (data.$$injected) {\n _this.store[resourceName].queryData[DSUtils.toJson(__this.params)] = __this\n __this.$$injected = true\n }\n return __this\n })\n }\n },\n // params for this collection. See http://www.js-data.io/docs/query-syntax\n params: {\n value: params,\n writable: true\n },\n // name of the resource type of this collection\n resourceName: {\n value: resourceName\n }\n })\n\n // lifecycle\n options.afterCreateCollection(options, arr)\n return arr\n },\n defineResource: require('./defineResource'),\n digest () {\n this.observe.Platform.performMicrotaskCheckpoint()\n },\n eject: require('./eject'),\n ejectAll: require('./ejectAll'),\n filter: require('./filter'),\n\n // Return the item with the given primary key if its in the store.\n //\n // @param resourceName The name of the type of resource of the item to retrieve.\n // @param id The primary key of the item to retrieve.\n // @returns The item with the given primary key if it's in the store.\n // /\n get (resourceName, id) {\n let {_this, _resourceName, _id} = check.call(this, 'get', resourceName, id)\n\n // return the item if it exists\n return _this.store[_resourceName].index[_id]\n },\n\n // Return the items in the store that have the given primary keys.\n //\n // @param resourceName The name of the type of resource of the items to retrieve.\n // @param ids The primary keys of the items to retrieve.\n // @returns The items with the given primary keys if they're in the store.\n getAll (resourceName, ids) {\n let _this = this\n let definition = _this.definitions[resourceName]\n let resource = _this.store[resourceName]\n let collection = []\n\n if (!definition) {\n throw new NER(resourceName)\n } else if (ids && !DSUtils._a(ids)) {\n throw DSUtils._aErr('ids')\n }\n\n definition.logFn('getAll', ids)\n\n if (DSUtils._a(ids)) {\n // return just the items with the given primary keys\n let length = ids.length\n for (var i = 0; i < length; i++) {\n if (resource.index[ids[i]]) {\n collection.push(resource.index[ids[i]])\n }\n }\n } else {\n // most efficient of retrieving ALL items from the store\n collection = resource.collection.slice()\n }\n\n return collection\n },\n\n // Return the whether the item with the given primary key has any changes.\n //\n // @param resourceName The name of the type of resource of the item.\n // @param id The primary key of the item.\n // @returns Whether the item with the given primary key has any changes.\n hasChanges (resourceName, id) {\n let {definition, _id} = check.call(this, 'hasChanges', resourceName, id)\n\n return definition.get(_id) ? diffIsEmpty(definition.changes(_id)) : false\n },\n inject: require('./inject'),\n\n // Return whether the item with the given primary key is a temporary item.\n //\n // @param resourceName The name of the type of resource of the item.\n // @param id The primary key of the item.\n // @returns Whether the item with the given primary key is a temporary item.\n isNew (resourceName, id) {\n let {_this, _resourceName, _id} = check.call(this, 'isNew', resourceName, id || fakeId)\n let resource = _this.store[_resourceName]\n\n return !!resource.temporaryItems[_id]\n },\n\n // Return the timestamp from the last time the item with the given primary key was changed.\n //\n // @param resourceName The name of the type of resource of the item.\n // @param id The primary key of the item.\n // @returns Timestamp from the last time the item was changed.\n lastModified (resourceName, id) {\n let {_this, _resourceName, _id} = check.call(this, 'lastModified', resourceName, id || fakeId)\n let resource = _this.store[_resourceName]\n\n if (_id) {\n if (!(_id in resource.modified)) {\n resource.modified[_id] = 0\n }\n return resource.modified[_id]\n }\n return resource.collectionModified\n },\n\n // Return the timestamp from the last time the item with the given primary key was saved via an adapter.\n //\n // @param resourceName The name of the type of resource of the item.\n // @param id The primary key of the item.\n // @returns Timestamp from the last time the item was saved.\n lastSaved (resourceName, id) {\n let {_this, _resourceName, _id} = check.call(this, 'lastSaved', resourceName, id || fakeId)\n let resource = _this.store[_resourceName]\n\n if (!(_id in resource.saved)) {\n resource.saved[_id] = 0\n }\n return resource.saved[_id]\n },\n\n // Return the previous attributes of the item with the given primary key before it was changed.\n //\n // @param resourceName The name of the type of resource of the item.\n // @param id The primary key of the item.\n // @returns The previous attributes of the item\n previous (resourceName, id) {\n let {_this, _resourceName, _id} = check.call(this, 'previous', resourceName, id)\n let resource = _this.store[_resourceName]\n\n // return resource from cache\n return resource.previousAttributes[_id] ? DSUtils.copy(resource.previousAttributes[_id]) : undefined\n },\n\n // Revert all attributes of the item with the given primary key to their previous values.\n //\n // @param resourceName The name of the type of resource of the item.\n // @param id The primary key of the item.\n // @param options Optional configuration.\n // @returns The reverted item\n revert (resourceName, id, options) {\n let {_this, definition, _resourceName, _id, _options} = check.call(this, 'revert', resourceName, id, options)\n\n let preserve = _options.preserve || []\n let injectObj = {}\n\n if (preserve.length === 0) {\n injectObj = _this.previous(_resourceName, _id)\n } else {\n let instance = definition.get(id)\n let previousInstance = _this.previous(_resourceName, _id)\n\n if (!instance) { return }\n\n DSUtils.forOwn(instance, function (value, key) {\n if (DSUtils.contains(preserve, key)) {\n injectObj[key] = instance[key]\n } else {\n injectObj[key] = previousInstance[key]\n }\n })\n }\n\n return definition.inject(injectObj, {\n onConflict: 'replace'\n })\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/sync_methods/index.js\n **/","/* jshint evil:true, loopfunc:true */\nimport DSUtils from '../../utils'\nimport DSErrors from '../../errors'\n\n/**\n * These are DS methods that will be proxied by instances. e.g.\n *\n * var store = new JSData.DS()\n * var User = store.defineResource('user')\n * var user = User.createInstance({ id: 1 })\n *\n * store.update(resourceName, id, attrs[, options]) // DS method\n * User.update(id, attrs[, options]) // DS method proxied on a Resource\n * user.DSUpdate(attrs[, options]) // DS method proxied on an Instance\n */\nlet instanceMethods = [\n 'compute',\n 'eject',\n 'refresh',\n 'save',\n 'update',\n 'destroy',\n 'loadRelations',\n 'changeHistory',\n 'changes',\n 'commit',\n 'hasChanges',\n 'isNew',\n 'lastModified',\n 'lastSaved',\n 'previous',\n 'revert'\n]\n\nmodule.exports = function defineResource (definition) {\n let _this = this\n let definitions = _this.definitions\n\n /**\n * This allows the name-only definition shorthand.\n * store.defineResource('user') is the same as store.defineResource({ name: 'user'})\n */\n if (DSUtils._s(definition)) {\n definition = {\n name: definition.replace(/\\s/gi, '')\n }\n }\n if (!DSUtils._o(definition)) {\n throw DSUtils._oErr('definition')\n } else if (!DSUtils._s(definition.name)) {\n throw new DSErrors.IA('\"name\" must be a string!')\n } else if (definitions[definition.name]) {\n throw new DSErrors.R(`${definition.name} is already registered!`)\n }\n\n /**\n * Dynamic Resource constructor function.\n *\n * A Resource inherits from the defaults of the data store that created it.\n */\n function Resource (options) {\n this.defaultValues = {}\n this.methods = {}\n this.computed = {}\n this.scopes = {}\n this.actions = {}\n DSUtils.deepMixIn(this, options)\n let parent = _this.defaults\n if (definition.extends && definitions[definition.extends]) {\n parent = definitions[definition.extends]\n }\n DSUtils.fillIn(this.defaultValues, parent.defaultValues)\n DSUtils.fillIn(this.methods, parent.methods)\n DSUtils.fillIn(this.computed, parent.computed)\n DSUtils.fillIn(this.scopes, parent.scopes)\n DSUtils.fillIn(this.actions, parent.actions)\n this.endpoint = ('endpoint' in options) ? options.endpoint : this.name\n }\n\n try {\n // Resources can inherit from another resource instead of inheriting directly from the data store defaults.\n if (definition.extends && definitions[definition.extends]) {\n // Inherit from another resource\n Resource.prototype = definitions[definition.extends]\n } else {\n // Inherit from global defaults\n Resource.prototype = _this.defaults\n }\n definitions[definition.name] = new Resource(definition)\n\n var def = definitions[definition.name]\n\n def.getResource = function (resourceName) { return _this.definitions[resourceName] }\n\n def.logFn('Preparing resource.')\n\n if (!DSUtils._s(def.idAttribute)) {\n throw new DSErrors.IA('\"idAttribute\" must be a string!')\n }\n\n // Setup nested parent configuration\n if (def.relations) {\n def.relationList = []\n def.relationFields = []\n DSUtils.forOwn(def.relations, function (relatedModels, type) {\n DSUtils.forOwn(relatedModels, function (defs, relationName) {\n if (!DSUtils._a(defs)) {\n relatedModels[relationName] = [defs]\n }\n DSUtils.forEach(relatedModels[relationName], function (d) {\n d.type = type\n d.relation = relationName\n d.name = def.name\n def.relationList.push(d)\n if (d.localField) {\n def.relationFields.push(d.localField)\n }\n })\n })\n })\n if (def.relations.belongsTo) {\n def.parents = {}\n DSUtils.forOwn(def.relations.belongsTo, function (relatedModel, modelName) {\n DSUtils.forEach(relatedModel, function (relation) {\n if (relation.parent) {\n def.parent = modelName\n def.parentKey = relation.localKey\n def.parentField = relation.localField\n def.parents[modelName] = {\n key: def.parentKey,\n field: def.parentField\n }\n }\n })\n })\n }\n if (typeof Object.freeze === 'function') {\n Object.freeze(def.relations)\n Object.freeze(def.relationList)\n }\n }\n\n // Create the wrapper class for the new resource\n var _class = def['class'] = DSUtils.pascalCase(def.name)\n try {\n if (typeof def.useClass === 'function') {\n if (def.csp) {\n def[_class] = function () { def.useClass.call(this) }\n } else {\n def[_class] = new Function('def', `return function ${_class}() { def.useClass.call(this); }`)(def) // eslint-disable-line\n }\n def[_class].prototype = (function (proto) {\n function Ctor () {\n }\n\n Ctor.prototype = proto\n return new Ctor()\n })(def.useClass.prototype)\n } else if (def.csp) {\n def[_class] = function () { }\n } else {\n def[_class] = new Function(`return function ${_class}() {}`)() // eslint-disable-line\n }\n } catch (e) {\n def[_class] = function () {}\n }\n\n // Apply developer-defined instance methods\n DSUtils.forOwn(def.methods, function (fn, m) {\n def[_class].prototype[m] = fn\n })\n\n /**\n * var user = User.createInstance({ id: 1 })\n * user.set('foo', 'bar')\n */\n def[_class].prototype.set = function (key, value) {\n DSUtils.set(this, key, value)\n def.compute(this)\n if (def.instanceEvents) {\n setTimeout(() => {\n this.emit('DS.change', def, this)\n }, 0)\n }\n def.handleChange(this)\n return this\n }\n\n /**\n * var user = User.createInstance({ id: 1 })\n * user.get('id') // 1\n */\n def[_class].prototype.get = function (key) {\n return DSUtils.get(this, key)\n }\n\n // Setup the relation links\n DSUtils.applyRelationGettersToTarget(_this, def, def[_class].prototype)\n\n let parentOmit = null\n if (!def.hasOwnProperty('omit')) {\n parentOmit = def.omit\n def.omit = []\n } else {\n parentOmit = _this.defaults.omit\n }\n def.omit = def.omit.concat(parentOmit || [])\n\n // Prepare for computed properties\n DSUtils.forOwn(def.computed, function (fn, field) {\n if (DSUtils.isFunction(fn)) {\n def.computed[field] = [fn]\n fn = def.computed[field]\n }\n if (def.methods && field in def.methods) {\n def.errorFn(`Computed property \"${field}\" conflicts with previously defined prototype method!`)\n }\n def.omit.push(field)\n if (DSUtils.isArray(fn)) {\n var deps\n if (fn.length === 1) {\n let match = fn[0].toString().match(/function.*?\\(([\\s\\S]*?)\\)/)\n deps = match[1].split(',')\n deps = DSUtils.filter(deps, function (x) { return x })\n def.computed[field] = deps.concat(fn)\n fn = def.computed[field]\n if (deps.length) {\n def.errorFn('Use the computed property array syntax for compatibility with minified code!')\n }\n }\n deps = fn.slice(0, fn.length - 1)\n DSUtils.forEach(deps, function (val, index) {\n deps[index] = val.trim()\n })\n fn.deps = DSUtils.filter(deps, function (dep) {\n return !!dep\n })\n } else if (DSUtils.isObject(fn)) {\n Object.defineProperty(def[_class].prototype, field, fn)\n }\n })\n\n // add instance proxies of DS methods\n DSUtils.forEach(instanceMethods, function (name) {\n def[_class].prototype[`DS${DSUtils.pascalCase(name)}`] = function (...args) {\n args.unshift(this[def.idAttribute] || this)\n args.unshift(def.name)\n return _this[name].apply(_this, args)\n }\n })\n\n // manually add instance proxy for DS#create\n def[_class].prototype.DSCreate = function (...args) {\n args.unshift(this)\n args.unshift(def.name)\n return _this.create.apply(_this, args)\n }\n\n // Initialize store data for the new resource\n _this.store[def.name] = {\n collection: [],\n expiresHeap: new DSUtils.BinaryHeap(function (x) { return x.expires }, function (x, y) { return x.item === y }),\n completedQueries: {},\n queryData: {},\n pendingQueries: {},\n index: {},\n modified: {},\n saved: {},\n previousAttributes: {},\n observers: {},\n changeHistories: {},\n changeHistory: [],\n collectionModified: 0,\n temporaryItems: {}\n }\n\n let resource = _this.store[def.name]\n\n // start the reaping\n if (def.reapInterval) {\n setInterval(() => def.reap(), def.reapInterval)\n }\n\n // proxy DS methods with shorthand ones\n let fns = ['registerAdapter', 'getAdapterName', 'getAdapter', 'is', '!clear']\n for (let key in _this) {\n if (typeof _this[key] === 'function') {\n fns.push(key)\n }\n }\n\n /**\n * Create the Resource shorthands that proxy DS methods. e.g.\n *\n * var store = new JSData.DS()\n * var User = store.defineResource('user')\n *\n * store.update(resourceName, id, attrs[, options]) // DS method\n * User.update(id, attrs[, options]) // DS method proxied on a Resource\n */\n DSUtils.forEach(fns, function (key) {\n let k = key\n if (k[0] === '!') {\n return\n }\n if (_this[k].shorthand !== false) {\n def[k] = function (...args) {\n args.unshift(def.name)\n return _this[k].apply(_this, args)\n }\n def[k].before = function (fn) {\n let orig = def[k]\n def[k] = function (...args) {\n return orig.apply(def, fn.apply(def, args) || args)\n }\n }\n } else {\n def[k] = function (...args) { return _this[k].apply(_this, args) }\n }\n })\n\n def.beforeValidate = DSUtils.promisify(def.beforeValidate)\n def.validate = DSUtils.promisify(def.validate)\n def.afterValidate = DSUtils.promisify(def.afterValidate)\n def.beforeCreate = DSUtils.promisify(def.beforeCreate)\n def.afterCreate = DSUtils.promisify(def.afterCreate)\n def.afterFind = DSUtils.promisify(def.afterFind)\n def.afterFindAll = DSUtils.promisify(def.afterFindAll)\n def.afterLoadRelations = DSUtils.promisify(def.afterLoadRelations)\n def.beforeUpdate = DSUtils.promisify(def.beforeUpdate)\n def.afterUpdate = DSUtils.promisify(def.afterUpdate)\n def.beforeDestroy = DSUtils.promisify(def.beforeDestroy)\n def.afterDestroy = DSUtils.promisify(def.afterDestroy)\n\n let defaultAdapter\n if (def.hasOwnProperty('defaultAdapter')) {\n defaultAdapter = def.defaultAdapter\n }\n\n // setup \"actions\"\n DSUtils.forOwn(def.actions, function (action, name) {\n if (def[name] && !def.actions[name]) {\n throw new Error(`Cannot override existing method \"${name}\"!`)\n }\n action.request = action.request || function (config) { return config }\n action.response = action.response || function (response) { return response }\n action.responseError = action.responseError || function (err) { return DSUtils.Promise.reject(err) }\n def[name] = function (id, options) {\n if (DSUtils._o(id)) {\n options = id\n }\n options = options || {}\n let adapter = def.getAdapter(action.adapter || defaultAdapter || 'http')\n let config = DSUtils.deepMixIn({}, action)\n if (!options.hasOwnProperty('endpoint') && config.endpoint) {\n options.endpoint = config.endpoint\n }\n if (typeof options.getEndpoint === 'function') {\n config.url = options.getEndpoint(def, options)\n } else {\n let args = [options.basePath || def.basePath || adapter.defaults.basePath, adapter.getEndpoint(def, DSUtils._sn(id) ? id : null, options)]\n if (DSUtils._sn(id)) {\n args.push(id)\n }\n args.push(action.pathname || name)\n config.url = DSUtils.makePath.apply(null, args)\n }\n config.method = config.method || 'GET'\n config.resourceName = def.name\n DSUtils.deepMixIn(config, options)\n return new DSUtils.Promise(function (resolve) { return resolve(config) })\n .then(options.request || action.request)\n .then(function (config) { return adapter.HTTP(config) })\n .then(function (data) {\n if (data && data.config) {\n data.config.resourceName = def.name\n }\n return data\n })\n .then(options.response || action.response, options.responseError || action.responseError)\n }\n })\n\n // mix in events\n DSUtils.Events(def)\n\n def.handleChange = function (data) {\n resource.collectionModified = DSUtils.updateTimestamp(resource.collectionModified)\n if (def.notify) {\n setTimeout(() => {\n def.emit('DS.change', def, data)\n }, 0)\n }\n }\n\n def.logFn('Done preparing resource.')\n\n return def\n } catch (err) {\n _this.defaults.errorFn(err)\n delete definitions[definition.name]\n delete _this.store[definition.name]\n throw err\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/sync_methods/defineResource.js\n **/","/* jshint eqeqeq:false */\n/**\n * Eject an item from the store, if it is currently in the store.\n *\n * @param resourceName The name of the resource type of the item eject.\n * @param id The primary key of the item to eject.\n * @param options Optional configuration.\n * @param options.notify Whether to emit the \"DS.beforeEject\" and \"DS.afterEject\" events\n * @param options.clearEmptyQueries Whether to remove cached findAll queries that become empty as a result of this method call.\n * @returns The ejected item if one was ejected.\n */\nmodule.exports = function eject (resourceName, id, options) {\n let _this = this\n let DSUtils = _this.utils\n let definition = _this.definitions[resourceName]\n let resource = _this.store[resourceName]\n let item\n let found = false\n\n id = DSUtils.resolveId(definition, id)\n\n if (!definition) {\n throw new _this.errors.NER(resourceName)\n } else if (!DSUtils._sn(id)) {\n throw DSUtils._snErr('id')\n }\n\n options = DSUtils._(definition, options)\n\n options.logFn('eject', id, options)\n\n // find the item to eject\n for (var i = 0; i < resource.collection.length; i++) {\n if (resource.collection[i][definition.idAttribute] == id) { // eslint-disable-line\n item = resource.collection[i]\n // remove its expiration timestamp\n resource.expiresHeap.remove(item)\n found = true\n break\n }\n }\n if (found) {\n // lifecycle\n definition.beforeEject(options, item)\n if (options.notify) {\n definition.emit('DS.beforeEject', definition, item)\n }\n\n // find the item in any ($$injected) cached queries\n let toRemove = []\n DSUtils.forOwn(resource.queryData, function (items, queryHash) {\n if (items.$$injected) {\n DSUtils.remove(items, item)\n }\n // optionally remove any empty queries\n if (!items.length && options.clearEmptyQueries) {\n toRemove.push(queryHash)\n }\n })\n\n // clean up\n DSUtils.forEach(resource.changeHistories[id], function (changeRecord) {\n DSUtils.remove(resource.changeHistory, changeRecord)\n })\n DSUtils.forEach(toRemove, function (queryHash) {\n delete resource.completedQueries[queryHash]\n delete resource.queryData[queryHash]\n })\n if (resource.observers[id] && typeof resource.observers[id].close === 'function') {\n // stop observation\n resource.observers[id].close()\n }\n delete resource.observers[id]\n delete resource.index[id]\n delete resource.previousAttributes[id]\n delete resource.completedQueries[id]\n delete resource.pendingQueries[id]\n delete resource.changeHistories[id]\n delete resource.modified[id]\n delete resource.saved[id]\n if (definition.instanceEvents && item.off) {\n item.off()\n }\n\n // remove it from the store\n resource.collection.splice(i, 1)\n // collection has been modified\n definition.handleChange(item)\n\n // lifecycle\n definition.afterEject(options, item)\n if (options.notify) {\n definition.emit('DS.afterEject', definition, item)\n }\n\n return item\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/sync_methods/eject.js\n **/","/**\n * Eject a collection of items from the store, if any items currently in the store match the given criteria.\n *\n * @param resourceName The name of the resource type of the items eject.\n * @param params The criteria by which to match items to eject. See http://www.js-data.io/docs/query-syntax\n * @param options Optional configuration.\n * @returns The collection of items that were ejected, if any.\n */\nmodule.exports = function ejectAll (resourceName, params, options) {\n let _this = this\n let DSUtils = _this.utils\n let definition = _this.definitions[resourceName]\n params = params || {}\n\n if (!definition) {\n throw new _this.errors.NER(resourceName)\n } else if (!DSUtils._o(params)) {\n throw DSUtils._oErr('params')\n }\n\n options = DSUtils._(definition, options)\n definition.logFn('ejectAll', params, options)\n\n DSUtils.applyScope(definition, params, options)\n\n let resource = _this.store[resourceName]\n let queryHash = DSUtils.toJson(params)\n\n // get items that match the criteria\n let items\n\n if (DSUtils.isEmpty(params)) {\n items = definition.getAll()\n // remove all completed queries if ejecting all items\n resource.completedQueries = {}\n } else {\n items = definition.filter(params)\n // remove matching completed query, if any\n delete resource.completedQueries[queryHash]\n }\n // prepare to remove matching items\n DSUtils.forEach(items, function (item) {\n if (item && item[definition.idAttribute]) {\n definition.eject(item[definition.idAttribute], options)\n }\n })\n // collection has been modified\n definition.handleChange(items)\n return items\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/sync_methods/ejectAll.js\n **/","/**\n * Return the subset of items currently in the store that match the given criteria.\n *\n * The actual filtering is delegated to DS#defaults.defaultFilter, which can be overridden by developers.\n *\n * @param resourceName The name of the resource type of the items to filter.\n * @param params The criteria by which to filter items. See http://www.js-data.io/docs/query-syntax\n * @param options Optional configuration.\n * @returns Matching items.\n */\nmodule.exports = function filter (resourceName, params, options) {\n let _this = this\n let DSUtils = _this.utils\n let definition = _this.definitions[resourceName]\n\n if (!definition) {\n throw new _this.errors.NER(resourceName)\n } else if (params && !DSUtils._o(params)) {\n throw DSUtils._oErr('params')\n }\n\n // Protect against null\n params = params || {}\n options = DSUtils._(definition, options)\n options.logFn('filter', params, options)\n\n DSUtils.applyScope(definition, params, options)\n\n // delegate filtering to DS#defaults.defaultFilter, which can be overridden by developers.\n return definition.defaultFilter.call(_this, _this.store[resourceName].collection, resourceName, params, options)\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/sync_methods/filter.js\n **/","import DSUtils from '../../utils'\nimport DSErrors from '../../errors'\n\n/**\n * This is a beast of a file, but it's where a significant portion of the magic happens.\n *\n * DS#inject makes up the core of how data gets into the store.\n */\n\n/**\n * This factory function produces an observer handler function tailor-made for the current item being injected.\n *\n * The observer handler is what allows computed properties and change tracking to function.\n *\n * @param definition Resource definition produced by DS#defineResource\n * @param resource Resource data as internally stored by the data store\n * @returns {Function} Observer handler function\n * @private\n */\nfunction makeObserverHandler (definition, resource) {\n var DS = this\n\n // using \"var\" avoids a JSHint error\n var name = definition.name\n\n /**\n * This will be called by observe-js when a new change record is available for the observed object\n *\n * @param added Change record for added properties\n * @param removed Change record for removed properties\n * @param changed Change record for changed properties\n * @param oldValueFn Function that can be used to get the previous value of a changed property\n * @param firstTime Whether this is the first time this function is being called for the given item. Will only be true once.\n */\n return function _react (added, removed, changed, oldValueFn, firstTime) {\n let target = this\n let item\n\n // Get the previous primary key of the observed item, in-case some knucklehead changed it\n let innerId = (oldValueFn && oldValueFn(definition.idAttribute)) ? oldValueFn(definition.idAttribute) : target[definition.idAttribute]\n\n // Ignore changes to relation links\n DSUtils.forEach(definition.relationFields, function (field) {\n delete added[field]\n delete removed[field]\n delete changed[field]\n })\n\n // Detect whether there are actually any changes\n if (!DSUtils.isEmpty(added) || !DSUtils.isEmpty(removed) || !DSUtils.isEmpty(changed) || firstTime) {\n item = DS.get(name, innerId)\n\n // update item and collection \"modified\" timestamps\n resource.modified[innerId] = DSUtils.updateTimestamp(resource.modified[innerId])\n\n if (item && definition.instanceEvents) {\n setTimeout(function () {\n item.emit('DS.change', definition, item)\n }, 0)\n }\n\n definition.handleChange(item)\n\n // Save a change record for the item\n if (definition.keepChangeHistory) {\n let changeRecord = {\n resourceName: name,\n target: item,\n added,\n removed,\n changed,\n timestamp: resource.modified[innerId]\n }\n resource.changeHistories[innerId].push(changeRecord)\n resource.changeHistory.push(changeRecord)\n }\n }\n\n // Recompute computed properties if any computed properties depend on changed properties\n if (definition.computed) {\n item = item || DS.get(name, innerId)\n DSUtils.forOwn(definition.computed, function (fn, field) {\n if (DSUtils._o(fn)) {\n return\n }\n let compute = false\n // check if required fields changed\n DSUtils.forEach(fn.deps, function (dep) {\n if (dep in added || dep in removed || dep in changed || !(field in item)) {\n compute = true\n }\n })\n compute = compute || !fn.deps.length\n if (compute) {\n DSUtils.compute.call(item, fn, field)\n }\n })\n }\n\n if (definition.idAttribute in changed) {\n definition.errorFn(`Doh! You just changed the primary key of an object! Your data for the \"${name}\" resource is now in an undefined (probably broken) state.`)\n }\n }\n}\n\n/**\n * A recursive function for injecting data into the store.\n *\n * @param definition Resource definition produced by DS#defineResource\n * @param resource Resource data as internally stored by the data store\n * @param attrs The data to be injected. Will be an object or an array of objects.\n * @param options Optional configuration.\n * @returns The injected data\n * @private\n */\nfunction _inject (definition, resource, attrs, options) {\n let _this = this\n let injected\n\n if (DSUtils._a(attrs)) {\n // have an array of objects, go ahead and inject each one individually and return the resulting array\n injected = []\n for (var i = 0; i < attrs.length; i++) {\n injected.push(_inject.call(_this, definition, resource, attrs[i], options))\n }\n } else {\n // check if \"idAttribute\" is a computed property\n let c = definition.computed\n let idA = definition.idAttribute\n // compute the primary key if necessary\n if (c && c[idA]) {\n let args = []\n DSUtils.forEach(c[idA].deps, function (dep) {\n args.push(attrs[dep])\n })\n attrs[idA] = c[idA][c[idA].length - 1].apply(attrs, args)\n } else if (options.temporary) {\n attrs[idA] = DSUtils.guid()\n }\n\n if (!(idA in attrs)) {\n let error = new DSErrors.R(`${definition.name}.inject: \"attrs\" must contain the property specified by \"idAttribute\"!`)\n options.errorFn(error)\n throw error\n } else {\n try {\n // when injecting object that contain their nested relations, this code\n // will recursively inject them into their proper places in the data store.\n // Magic!\n DSUtils.forEach(definition.relationList, function (def) {\n let relationName = def.relation\n let relationDef = _this.definitions[relationName]\n let toInject = attrs[def.localField]\n if (typeof def.inject === 'function') {\n def.inject(definition, def, attrs)\n } else if (toInject && def.inject !== false) {\n if (!relationDef) {\n throw new DSErrors.R(`${definition.name} relation is defined but the resource is not!`)\n }\n // handle injecting hasMany relations\n if (DSUtils._a(toInject)) {\n let items = []\n DSUtils.forEach(toInject, function (toInjectItem) {\n if (toInjectItem !== _this.store[relationName].index[toInjectItem[relationDef.idAttribute]]) {\n try {\n let injectedItem = relationDef.inject(toInjectItem, options.orig())\n if (def.foreignKey) {\n DSUtils.set(injectedItem, def.foreignKey, attrs[definition.idAttribute])\n }\n items.push(injectedItem)\n } catch (err) {\n options.errorFn(err, `Failed to inject ${def.type} relation: \"${relationName}\"!`)\n }\n }\n })\n } else {\n // handle injecting belongsTo and hasOne relations\n if (toInject !== _this.store[relationName].index[toInject[relationDef.idAttribute]]) {\n try {\n let injected = relationDef.inject(attrs[def.localField], options.orig())\n if (def.foreignKey) {\n DSUtils.set(injected, def.foreignKey, attrs[definition.idAttribute])\n }\n if (def.localKey) {\n DSUtils.set(attrs, def.localKey, DSUtils.get(injected, relationDef.idAttribute))\n }\n } catch (err) {\n options.errorFn(err, `Failed to inject ${def.type} relation: \"${relationName}\"!`)\n }\n }\n }\n }\n })\n\n // primary key of item being injected\n let id = attrs[idA]\n // item being injected\n let item = definition.get(id)\n // 0 if the item is new, otherwise the previous last modified timestamp of the item\n let initialLastModified = item ? resource.modified[id] : 0\n\n // item is new\n if (!item) {\n if (attrs instanceof definition[definition['class']]) {\n item = attrs\n } else {\n item = new definition[definition['class']]()\n if (options.applyDefaultsOnInject && options.defaultValues) {\n DSUtils.deepMixIn(item, DSUtils.copy(options.defaultValues))\n }\n }\n\n if (definition.instanceEvents && typeof item.emit !== 'function') {\n DSUtils.Events(item)\n }\n // remove relation properties from the item, since those relations have been injected by now\n DSUtils.forEach(definition.relationList, function (def) {\n if (typeof def.link === 'boolean' ? def.link : !!definition.linkRelations) {\n delete attrs[def.localField]\n }\n })\n\n // copy remaining properties to the injected item\n DSUtils.deepMixIn(item, attrs)\n\n // add item to collection\n resource.collection.push(item)\n resource.changeHistories[id] = []\n\n // create the observer handler for the data to be injected\n let _react = makeObserverHandler.call(_this, definition, resource)\n\n // If we're in the browser, start observation\n if (definition.watchChanges) {\n resource.observers[id] = new _this.observe.ObjectObserver(item)\n resource.observers[id].open(_react, item)\n }\n\n // index item\n resource.index[id] = item\n // fire observation handler for the first time\n _react.call(item, {}, {}, {}, null, true)\n // save \"previous\" attributes of the injected item, for change diffs later\n resource.previousAttributes[id] = DSUtils.copy(item, null, null, null, definition.relationFields)\n // mark item as temporary if guid has been generated\n if (options.temporary) {\n resource.temporaryItems[id] = true\n }\n } else {\n // item is being re-injected\n // new properties take precedence\n if (options.onConflict === 'merge') {\n DSUtils.deepMixIn(item, attrs)\n DSUtils.forOwn(definition.computed, function (fn, field) {\n DSUtils.compute.call(item, fn, field)\n })\n } else if (options.onConflict === 'replace') {\n DSUtils.forOwn(definition.computed, function (fn, field) {\n DSUtils.compute.call(attrs, fn, field)\n })\n DSUtils.forOwn(item, function (v, k) {\n if (k !== definition.idAttribute) {\n if (!attrs.hasOwnProperty(k)) {\n delete item[k]\n }\n }\n })\n DSUtils.forOwn(attrs, function (v, k) {\n if (k !== definition.idAttribute) {\n item[k] = v\n }\n })\n }\n\n if (definition.resetHistoryOnInject) {\n // clear change history for item\n _this.commit(definition.name, id)\n }\n if (resource.observers[id] && typeof resource.observers[id] === 'function') {\n // force observation callback to be fired if there are any changes to the item and `Object.observe` is not available\n resource.observers[id].deliver()\n }\n }\n // update modified timestamp of item\n resource.modified[id] = initialLastModified && resource.modified[id] === initialLastModified ? DSUtils.updateTimestamp(resource.modified[id]) : resource.modified[id]\n\n // reset expiry tracking for item\n resource.expiresHeap.remove(item)\n let timestamp = new Date().getTime()\n resource.expiresHeap.push({\n item: item,\n timestamp: timestamp,\n expires: definition.maxAge ? timestamp + definition.maxAge : Number.MAX_VALUE\n })\n\n // final injected item\n injected = item\n } catch (err) {\n options.errorFn(err, attrs)\n }\n }\n }\n return injected\n}\n\n/**\n * Inject the given object or array of objects into the data store.\n *\n * @param resourceName The name of the type of resource of the data to be injected.\n * @param attrs Object or array of objects. Objects must contain a primary key.\n * @param options Optional configuration.\n * @param options.notify Whether to emit the \"DS.beforeInject\" and \"DS.afterInject\" events.\n * @returns The injected data.\n */\nmodule.exports = function inject (resourceName, attrs, options) {\n let _this = this\n let definition = _this.definitions[resourceName]\n let resource = _this.store[resourceName]\n let injected\n\n if (!definition) {\n throw new DSErrors.NER(resourceName)\n } else if (!DSUtils._o(attrs) && !DSUtils._a(attrs)) {\n throw new DSErrors.IA(`${resourceName}.inject: \"attrs\" must be an object or an array!`)\n }\n\n options = DSUtils._(definition, options)\n options.logFn('inject', attrs, options)\n\n // lifecycle\n options.beforeInject(options, attrs)\n if (options.notify) {\n definition.emit('DS.beforeInject', definition, attrs)\n }\n\n // start the recursive injection of data\n injected = _inject.call(_this, definition, resource, attrs, options)\n\n // collection was modified\n definition.handleChange(injected)\n\n // lifecycle\n options.afterInject(options, injected)\n if (options.notify) {\n definition.emit('DS.afterInject', definition, injected)\n }\n\n return injected\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/sync_methods/inject.js\n **/","export default {\n create: require('./create'),\n destroy: require('./destroy'),\n destroyAll: require('./destroyAll'),\n find: require('./find'),\n findAll: require('./findAll'),\n loadRelations: require('./loadRelations'),\n reap: require('./reap'),\n refresh (resourceName, id, options) {\n let _this = this\n let DSUtils = _this.utils\n\n return new DSUtils.Promise(function (resolve, reject) {\n let definition = _this.definitions[resourceName]\n id = DSUtils.resolveId(_this.definitions[resourceName], id)\n if (!definition) {\n reject(new _this.errors.NER(resourceName))\n } else if (!DSUtils._sn(id)) {\n reject(DSUtils._snErr('id'))\n } else {\n options = DSUtils._(definition, options)\n options.bypassCache = true\n options.logFn('refresh', id, options)\n resolve(_this.get(resourceName, id))\n }\n }).then(function (item) { return item ? _this.find(resourceName, id, options) : item })\n .catch(_this.errorFn('refresh', resourceName, id, options))\n },\n refreshAll (resourceName, params, options) {\n let _this = this\n let DSUtils = _this.utils\n let definition = _this.definitions[resourceName]\n params = params || {}\n\n return new DSUtils.Promise(function (resolve, reject) {\n if (!definition) {\n reject(new _this.errors.NER(resourceName))\n } else if (!DSUtils._o(params)) {\n reject(DSUtils._oErr('params'))\n } else {\n options = DSUtils._(definition, options)\n options.bypassCache = true\n options.logFn('refreshAll', params, options)\n resolve(_this.filter(resourceName, params, options))\n }\n }).then(function (existing) {\n options.bypassCache = true\n return _this.findAll(resourceName, params, options).then(function (found) {\n DSUtils.forEach(existing, function (item) {\n if (found.indexOf(item) === -1) {\n definition.eject(item)\n }\n })\n return found\n })\n }).catch(_this.errorFn('refreshAll', resourceName, params, options))\n },\n save: require('./save'),\n update: require('./update'),\n updateAll: require('./updateAll')\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/async_methods/index.js\n **/","/**\n * Using an adapter, create a new item.\n *\n * Generally a primary key will NOT be provided in the properties hash,\n * because the adapter's persistence layer should be generating one.\n *\n * @param resourceName The name of the type of resource of the new item.\n * @param attrs Hash of properties with which to create the new item.\n * @param options Optional configuration.\n * @param options.cacheResponse Whether the newly created item as returned by the adapter should be injected into the data store.\n * @param options.upsert If the properties hash contains a primary key, attempt to call DS#update instead.\n * @param options.notify Whether to emit the \"DS.beforeCreate\" and \"DS.afterCreate\" events.\n * @param options.beforeValidate Lifecycle hook.\n * @param options.validate Lifecycle hook.\n * @param options.afterValidate Lifecycle hook.\n * @param options.beforeCreate Lifecycle hook.\n * @param options.afterCreate Lifecycle hook.\n */\nmodule.exports = function create (resourceName, attrs, options) {\n let _this = this\n let DSUtils = _this.utils\n let definition = _this.definitions[resourceName]\n let resource = _this.store[resourceName]\n let adapter\n\n options = options || {}\n attrs = attrs || {}\n\n let rejectionError\n if (!definition) {\n rejectionError = new _this.errors.NER(resourceName)\n } else if (!DSUtils._o(attrs)) {\n rejectionError = DSUtils._oErr('attrs')\n } else {\n options = DSUtils._(definition, options)\n if (options.upsert && DSUtils._sn(attrs[definition.idAttribute]) && !resource.temporaryItems[attrs[definition.idAttribute]]) {\n return _this.update(resourceName, attrs[definition.idAttribute], attrs, options)\n }\n options.logFn('create', attrs, options)\n }\n\n return new DSUtils.Promise(function (resolve, reject) {\n if (rejectionError) {\n reject(rejectionError)\n } else {\n resolve(attrs)\n }\n })\n // start lifecycle\n .then(function (attrs) { return options.beforeValidate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.validate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.afterValidate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.beforeCreate.call(attrs, options, attrs) })\n .then(function (attrs) {\n if (options.notify) {\n definition.emit('DS.beforeCreate', definition, attrs)\n }\n adapter = _this.getAdapterName(options)\n return _this.adapters[adapter].create(definition, DSUtils.omit(attrs, options.omit), options)\n })\n .then(function (attrs) { return options.afterCreate.call(attrs, options, attrs) })\n .then(function (attrs) {\n if (options.notify) {\n definition.emit('DS.afterCreate', definition, attrs)\n }\n if (options.cacheResponse) {\n // injected created intem into the store\n let created = _this.inject(definition.name, attrs, options.orig())\n let id = created[definition.idAttribute]\n // mark item's `find` query as completed, so a subsequent `find` call for this item will resolve immediately\n let resource = _this.store[resourceName]\n resource.completedQueries[id] = new Date().getTime()\n resource.saved[id] = DSUtils.updateTimestamp(resource.saved[id])\n return created\n } else {\n // just return an un-injected instance\n return _this.createInstance(resourceName, attrs, options)\n }\n })\n .then(function (item) {\n return DSUtils.respond(item, {adapter}, options)\n })['catch'](_this.errorFn('create', resourceName, attrs, options))\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/async_methods/create.js\n **/","/**\n * Using an adapter, destroy an item.\n *\n * @param resourceName The name of the type of resource of the item to destroy.\n * @param id The primary key of the item to destroy.\n * @param options Optional configuration.\n * @param options.eagerEject Whether to eject the item from the store before the adapter operation completes, re-injecting if the adapter operation fails.\n * @param options.notify Whether to emit the \"DS.beforeDestroy\" and \"DS.afterDestroy\" events.\n * @param options.beforeDestroy Lifecycle hook.\n * @param options.afterDestroy Lifecycle hook.\n * @returns The primary key of the destroyed item.\n */\nmodule.exports = function destroy (resourceName, id, options) {\n let _this = this\n let DSUtils = _this.utils\n let definition = _this.definitions[resourceName]\n let item, adapter\n\n return new DSUtils.Promise(function (resolve, reject) {\n id = DSUtils.resolveId(definition, id)\n if (!definition) {\n reject(new _this.errors.NER(resourceName))\n } else if (!DSUtils._sn(id)) {\n reject(DSUtils._snErr('id'))\n } else {\n // check if the item is in the store\n item = definition.get(id) || { id: id }\n options = DSUtils._(definition, options)\n options.logFn('destroy', id, options)\n resolve(item)\n }\n })\n // start lifecycle\n .then(function (attrs) { return options.beforeDestroy.call(attrs, options, attrs) })\n .then(function (attrs) {\n if (options.notify) {\n definition.emit('DS.beforeDestroy', definition, attrs)\n }\n // don't wait for the adapter, remove the item from the store\n if (options.eagerEject) {\n definition.eject(id)\n }\n adapter = definition.getAdapter(options)\n return adapter.destroy(definition, id, options)\n })\n .then(function () { return options.afterDestroy.call(item, options, item) })\n .then(function (item) {\n if (options.notify) {\n definition.emit('DS.afterDestroy', definition, item)\n }\n // make sure the item is removed from the store\n definition.eject(id)\n return DSUtils.respond(id, {adapter}, options)\n })['catch'](function (err) {\n // rollback by re-injecting the item into the store\n if (options && options.eagerEject && item) {\n definition.inject(item, { notify: false })\n }\n return _this.errorFn('destroy', resourceName, id, options)(err)\n })\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/async_methods/destroy.js\n **/","/**\n * Using an adapter, destroy an item.\n *\n * @param resourceName The name of the type of resource of the item to destroy.\n * @param params The criteria by which to filter items to destroy. See http://www.js-data.io/docs/query-syntax\n * @param options Optional configuration.\n * @param options.eagerEject Whether to eject the items from the store before the adapter operation completes, re-injecting if the adapter operation fails.\n * @param options.notify Whether to emit the \"DS.beforeDestroy\" and \"DS.afterDestroy\" events.\n * @param options.beforeDestroy Lifecycle hook.\n * @param options.afterDestroy Lifecycle hook.\n * @returns The ejected items, if any.\n */\nmodule.exports = function destroyAll (resourceName, params, options) {\n let _this = this\n let DSUtils = _this.utils\n let definition = _this.definitions[resourceName]\n let ejected, toEject, adapter\n\n params = params || {}\n\n return new DSUtils.Promise(function (resolve, reject) {\n if (!definition) {\n reject(new _this.errors.NER(resourceName))\n } else if (!DSUtils._o(params)) {\n reject(DSUtils._oErr('attrs'))\n } else {\n options = DSUtils._(definition, options)\n options.logFn('destroyAll', params, options)\n DSUtils.applyScope(definition, params, options)\n resolve()\n }\n }).then(function () {\n // find items that are to be ejected from the store\n toEject = definition.defaultFilter.call(_this, resourceName, params)\n return options.beforeDestroy(options, toEject)\n }).then(function () {\n if (options.notify) {\n definition.emit('DS.beforeDestroy', definition, toEject)\n }\n // don't wait for the adapter, remove the items from the store\n if (options.eagerEject) {\n ejected = definition.ejectAll(params)\n }\n adapter = definition.getAdapterName(options)\n return _this.adapters[adapter].destroyAll(definition, params, options)\n }).then(function () {\n return options.afterDestroy(options, toEject)\n }).then(function () {\n if (options.notify) {\n definition.emit('DS.afterDestroy', definition, toEject)\n }\n // make sure items are removed from the store\n return ejected || definition.ejectAll(params)\n }).then(function (items) {\n return DSUtils.respond(items, {adapter}, options)\n })['catch'](function (err) {\n // rollback by re-injecting the items into the store\n if (options && options.eagerEject && ejected) {\n definition.inject(ejected, {notify: false})\n }\n return _this.errorFn('destroyAll', resourceName, params, options)(err)\n })\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/async_methods/destroyAll.js\n **/","/* jshint -W082 */\n\n/**\n * Using an adapter, retrieve a single item.\n *\n * @param resourceName The of the type of resource of the item to retrieve.\n * @param id The primary key of the item to retrieve.\n * @param options Optional configuration.\n * @param options.bypassCache Whether to ignore any cached item and force the retrieval through the adapter.\n * @param options.cacheResponse Whether to inject the found item into the data store.\n * @param options.strictCache Whether to only consider items to be \"cached\" if they were injected into the store as the result of `find` or `findAll`.\n * @param options.strategy The retrieval strategy to use.\n * @param options.findStrategy The retrieval strategy to use. Overrides \"strategy\".\n * @param options.fallbackAdapters Array of names of adapters to use if using \"fallback\" strategy.\n * @param options.findFallbackAdapters Array of names of adapters to use if using \"fallback\" strategy. Overrides \"fallbackAdapters\".\n * @returns The item.\n */\nmodule.exports = function find (resourceName, id, options) {\n let _this = this\n let DSUtils = _this.utils\n let definition = _this.definitions[resourceName]\n let resource = _this.store[resourceName]\n let adapter\n\n return new DSUtils.Promise(function (resolve, reject) {\n if (!definition) {\n reject(new _this.errors.NER(resourceName))\n } else if (!DSUtils._sn(id)) {\n reject(DSUtils._snErr('id'))\n } else {\n options = DSUtils._(definition, options)\n options.logFn('find', id, options)\n\n if (options.params) {\n options.params = DSUtils.copy(options.params)\n }\n\n if (options.bypassCache || !options.cacheResponse) {\n delete resource.completedQueries[id]\n }\n\n let expired = options.maxAge && id in resource.completedQueries &&\n resource.completedQueries[id] + options.maxAge < new Date().getTime()\n\n if ((!options.findStrictCache || id in resource.completedQueries) && definition.get(id) &&\n !options.bypassCache && !expired) {\n // resolve immediately with the cached item\n resolve(definition.get(id))\n } else {\n // we're going to delegate to the adapter next\n delete resource.completedQueries[id]\n resolve()\n }\n }\n }).then(function (item) {\n if (!item) {\n let query\n const usePendingFind = DSUtils.isFunction(options.usePendingFind) ? options.usePendingFind.call(this, resourceName, id, options) : options.usePendingFind\n if (!(id in resource.pendingQueries) || !usePendingFind) {\n let promise\n let strategy = options.findStrategy || options.strategy\n\n // try subsequent adapters if the preceeding one fails\n if (strategy === 'fallback') {\n var makeFallbackCall = function (index) {\n adapter = definition.getAdapterName((options.findFallbackAdapters || options.fallbackAdapters)[index])\n return _this.adapters[adapter].find(definition, id, options)['catch'](err => {\n index++\n if (index < options.fallbackAdapters.length) {\n return makeFallbackCall(index)\n } else {\n return DSUtils.Promise.reject(err)\n }\n })\n }\n\n promise = makeFallbackCall(0)\n } else {\n adapter = definition.getAdapterName(options)\n // just make a single attempt\n promise = _this.adapters[adapter].find(definition, id, options)\n }\n\n query = promise\n .then(function (data) { return options.afterFind.call(data, options, data) })\n .then(function (data) {\n // Query is no longer pending\n delete resource.pendingQueries[id]\n if (options.cacheResponse) {\n // inject the item into the data store\n let injected = definition.inject(data, options.orig())\n // mark the item as \"cached\"\n resource.completedQueries[id] = new Date().getTime()\n resource.saved[id] = DSUtils.updateTimestamp(resource.saved[id])\n return injected\n } else {\n // just return an un-injected instance\n return definition.createInstance(data, options.orig())\n }\n })\n\n if (usePendingFind) {\n resource.pendingQueries[id] = query\n }\n } else {\n query = resource.pendingQueries[id]\n }\n return query\n } else {\n // resolve immediately with the item\n return item\n }\n }).then(function (item) {\n return DSUtils.respond(item, {adapter}, options)\n })['catch'](function (err) {\n if (resource) {\n delete resource.pendingQueries[id]\n }\n return _this.errorFn('find', resourceName, id, options)(err)\n })\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/async_methods/find.js\n **/","/* jshint -W082 */\nfunction processResults (data, resourceName, queryHash, options) {\n let _this = this\n let DSUtils = _this.utils\n let definition = _this.definitions[resourceName]\n let resource = _this.store[resourceName]\n let idAttribute = definition.idAttribute\n let date = new Date().getTime()\n\n data = data || []\n\n // Query is no longer pending\n delete resource.pendingQueries[queryHash]\n resource.completedQueries[queryHash] = date\n\n // Merge the new values into the cache\n let injected = definition.inject(data, options.orig())\n\n // Make sure each object is added to completedQueries\n if (DSUtils._a(injected)) {\n DSUtils.forEach(injected, function (item) {\n if (item) {\n let id = item[idAttribute]\n if (id) {\n resource.completedQueries[id] = date\n resource.saved[id] = DSUtils.updateTimestamp(resource.saved[id])\n }\n }\n })\n } else {\n options.errorFn('response is expected to be an array!')\n resource.completedQueries[injected[idAttribute]] = date\n }\n\n return injected\n}\n\n/**\n * Using an adapter, retrieve a collection of items.\n *\n * @param resourceName The name of the type of resource of the items to retrieve.\n * @param params The criteria by which to filter items to retrieve. See http://www.js-data.io/docs/query-syntax\n * @param options Optional configuration.\n * @param options.bypassCache Whether to ignore any cached query for these items and force the retrieval through the adapter.\n * @param options.cacheResponse Whether to inject the found items into the data store.\n * @returns The items.\n */\nmodule.exports = function findAll (resourceName, params, options) {\n let _this = this\n let DSUtils = _this.utils\n let definition = _this.definitions[resourceName]\n let resource = _this.store[resourceName]\n let queryHash, adapter\n\n return new DSUtils.Promise(function (resolve, reject) {\n params = params || {}\n\n if (!_this.definitions[resourceName]) {\n reject(new _this.errors.NER(resourceName))\n } else if (!DSUtils._o(params)) {\n reject(DSUtils._oErr('params'))\n } else {\n options = DSUtils._(definition, options)\n queryHash = DSUtils.toJson(params)\n options.logFn('findAll', params, options)\n\n if (options.params) {\n options.params = DSUtils.copy(options.params)\n }\n\n DSUtils.applyScope(definition, params, options)\n\n // force a new request\n if (options.bypassCache || !options.cacheResponse) {\n delete resource.completedQueries[queryHash]\n delete resource.queryData[queryHash]\n }\n\n let expired = options.maxAge && queryHash in resource.completedQueries &&\n resource.completedQueries[queryHash] + options.maxAge < new Date().getTime()\n\n if (queryHash in resource.completedQueries && !expired) {\n if (options.useFilter) {\n if (options.localKeys) {\n resolve(definition.getAll(options.localKeys, options.orig()))\n } else {\n // resolve immediately by filtering data from the data store\n resolve(definition.filter(params, options.orig()))\n }\n } else {\n // resolve immediately by returning the cached array from the previously made query\n resolve(resource.queryData[queryHash])\n }\n } else {\n resolve()\n }\n }\n }).then(function (items) {\n if (!items) {\n let query\n const usePendingFindAll = DSUtils.isFunction(options.usePendingFindAll) ? options.usePendingFindAll.call(this, resourceName, params, options) : options.usePendingFindAll\n if (!(queryHash in resource.pendingQueries) || !usePendingFindAll) {\n let promise\n let strategy = options.findAllStrategy || options.strategy\n\n // try subsequent adapters if the preceeding one fails\n if (strategy === 'fallback') {\n var makeFallbackCall = function (index) {\n adapter = definition.getAdapterName((options.findAllFallbackAdapters || options.fallbackAdapters)[index])\n return _this.adapters[adapter].findAll(definition, params, options)['catch'](function (err) {\n index++\n if (index < options.fallbackAdapters.length) {\n return makeFallbackCall(index)\n } else {\n return DSUtils.Promise.reject(err)\n }\n })\n }\n\n promise = makeFallbackCall(0)\n } else {\n adapter = definition.getAdapterName(options)\n // just make a single attempt\n promise = _this.adapters[adapter].findAll(definition, params, options)\n }\n\n query = promise\n .then(function (data) { return options.afterFindAll.call(data, options, data) })\n .then(function (data) {\n // Query is no longer pending\n delete resource.pendingQueries[queryHash]\n if (options.cacheResponse) {\n // inject the items into the data store\n resource.queryData[queryHash] = processResults.call(_this, data, resourceName, queryHash, options)\n resource.queryData[queryHash].$$injected = true\n return resource.queryData[queryHash]\n } else {\n DSUtils.forEach(data, function (item, i) {\n data[i] = definition.createInstance(item, options.orig())\n })\n return data\n }\n })\n\n if (usePendingFindAll) {\n resource.pendingQueries[queryHash] = query\n }\n } else {\n query = resource.pendingQueries[queryHash]\n }\n\n return query\n } else {\n // resolve immediately with the items\n return items\n }\n }).then(function (items) {\n return DSUtils.respond(items, {adapter}, options)\n })['catch'](function (err) {\n if (resource) {\n delete resource.pendingQueries[queryHash]\n }\n return _this.errorFn('findAll', resourceName, params, options)(err)\n })\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/async_methods/findAll.js\n **/","/**\n * Load the specified relations for the given instance.\n *\n * @param resourceName The name of the type of resource of the instance for which to load relations.\n * @param instance The instance or the primary key of the instance.\n * @param relations An array of the relations to load.\n * @param options Optional configuration.\n * @returns The instance, now with its relations loaded.\n */\nmodule.exports = function loadRelations (resourceName, instance, relations, options) {\n let _this = this\n let {utils: DSUtils, errors: DSErrors} = _this\n let definition = _this.definitions[resourceName]\n let _options\n\n return new DSUtils.Promise(function (resolve, reject) {\n if (DSUtils._sn(instance)) {\n instance = definition.get(instance)\n }\n\n if (DSUtils._s(relations)) {\n relations = [relations]\n }\n\n relations = relations || []\n\n if (!definition) {\n reject(new DSErrors.NER(resourceName))\n } else if (!DSUtils._o(instance)) {\n reject(new DSErrors.IA('\"instance(id)\" must be a string, number or object!'))\n } else if (!DSUtils._a(relations)) {\n reject(new DSErrors.IA('\"relations\" must be a string or an array!'))\n } else {\n _options = DSUtils._(definition, options)\n _options.logFn('loadRelations', instance, relations, _options)\n\n let tasks = []\n\n DSUtils.forEach(definition.relationList, function (def) {\n let relationName = def.relation\n let relationDef = definition.getResource(relationName)\n let __options = DSUtils._(relationDef, options)\n\n // relations can be loaded based on resource name or field name\n if (!relations.length || DSUtils.contains(relations, relationName) || DSUtils.contains(relations, def.localField)) {\n let task\n let params = {}\n if (__options.allowSimpleWhere) {\n params[def.foreignKey] = instance[definition.idAttribute]\n } else {\n params.where = {}\n params.where[def.foreignKey] = {\n '==': instance[definition.idAttribute]\n }\n }\n\n let orig = __options.orig()\n let defKey = def.localKey ? DSUtils.get(instance, def.localKey) : null\n let hasDefKey = !!(defKey || defKey === 0)\n\n if (typeof def.load === 'function') {\n task = def.load(definition, def, instance, orig)\n } else {\n if (def.type === 'hasMany') {\n if (def.localKeys) {\n delete params[def.foreignKey]\n let keys = DSUtils.get(instance, def.localKeys) || []\n keys = DSUtils._a(keys) ? keys : DSUtils.keys(keys)\n params.where = {\n [relationDef.idAttribute]: {\n 'in': keys\n }\n }\n orig.localKeys = keys\n } else if (def.foreignKeys) {\n delete params[def.foreignKey]\n params.where = {\n [def.foreignKeys]: {\n contains: instance[definition.idAttribute]\n }\n }\n }\n task = relationDef.findAll(params, orig)\n } else if (def.type === 'hasOne') {\n if (def.localKey && hasDefKey) {\n task = relationDef.find(defKey, orig)\n } else if (def.foreignKey) {\n task = relationDef.findAll(params, orig).then(function (hasOnes) { return hasOnes.length ? hasOnes[0] : null })\n }\n } else if (hasDefKey) {\n task = relationDef.find(defKey, orig)\n }\n }\n\n if (task) {\n if (!_options.linkRelations) {\n task = task.then(function (data) {\n instance[def.localField] = data\n })\n }\n tasks.push(task)\n }\n }\n })\n\n resolve(tasks)\n }\n }).then(function (tasks) { return DSUtils.Promise.all(tasks) })\n .then(function () { return _options.afterLoadRelations.call(instance, _options, instance) })\n .catch(_this.errorFn('loadRelations', resourceName, instance, relations, options))\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/async_methods/loadRelations.js\n **/","/**\n * Find expired items of the specified resource type and perform the configured action.\n *\n * @param resourceName The name of the type of resource of the items to reap.\n * @param options Optional configuration.\n * @returns The reaped items.\n */\nmodule.exports = function reap (resourceName, options) {\n let _this = this\n var DSUtils = _this.utils\n let definition = _this.definitions[resourceName]\n let resource = _this.store[resourceName]\n\n return new DSUtils.Promise(function (resolve, reject) {\n if (!definition) {\n reject(new _this.errors.NER(resourceName))\n } else {\n options = DSUtils._(definition, options)\n if (!options.hasOwnProperty('notify')) {\n options.notify = false\n }\n options.logFn('reap', options)\n let items = []\n let now = new Date().getTime()\n let expiredItem\n\n // find the expired items\n while ((expiredItem = resource.expiresHeap.peek()) && expiredItem.expires < now) {\n items.push(expiredItem.item)\n delete expiredItem.item\n resource.expiresHeap.pop()\n }\n resolve(items)\n }\n }).then(function (items) {\n // only hit lifecycle if there are items\n if (items.length) {\n definition.beforeReap(options, items)\n if (options.notify) {\n definition.emit('DS.beforeReap', definition, items)\n }\n }\n\n if (options.reapAction === 'inject') {\n let timestamp = new Date().getTime()\n DSUtils.forEach(items, function (item) {\n resource.expiresHeap.push({\n item: item,\n timestamp: timestamp,\n expires: definition.maxAge ? timestamp + definition.maxAge : Number.MAX_VALUE\n })\n })\n } else if (options.reapAction === 'eject') {\n DSUtils.forEach(items, function (item) {\n definition.eject(item[definition.idAttribute])\n })\n } else if (options.reapAction === 'refresh') {\n let tasks = []\n DSUtils.forEach(items, function (item) {\n tasks.push(definition.refresh(item[definition.idAttribute]))\n })\n return DSUtils.Promise.all(tasks)\n }\n return items\n }).then(function (items) {\n // only hit lifecycle if there are items\n if (items.length) {\n definition.afterReap(options, items)\n if (options.notify) {\n definition.emit('DS.afterReap', definition, items)\n }\n }\n return items\n }).catch(_this.errorFn('reap', resourceName, options))\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/async_methods/reap.js\n **/","/**\n * Save a single item in its present state.\n *\n * @param resourceName The name of the type of resource of the item.\n * @param id The primary key of the item.\n * @param options Optional congifuration.\n * @returns The item, now saved.\n */\nmodule.exports = function save (resourceName, id, options) {\n let _this = this\n let {utils: DSUtils, errors: DSErrors} = _this\n let definition = _this.definitions[resourceName]\n let resource = _this.store[resourceName]\n let item, noChanges, adapter\n\n return new DSUtils.Promise(function (resolve, reject) {\n id = DSUtils.resolveId(definition, id)\n if (!definition) {\n reject(new DSErrors.NER(resourceName))\n } else if (!DSUtils._sn(id)) {\n reject(DSUtils._snErr('id'))\n } else if (!definition.get(id)) {\n reject(new DSErrors.R(`id \"${id}\" not found in cache!`))\n } else {\n item = definition.get(id)\n options = DSUtils._(definition, options)\n options.logFn('save', id, options)\n resolve(item)\n }\n })\n // start lifecycle\n .then(function (attrs) { return options.beforeValidate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.validate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.afterValidate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.beforeUpdate.call(attrs, options, attrs) })\n .then(function (attrs) {\n if (options.notify) {\n definition.emit('DS.beforeUpdate', definition, attrs)\n }\n // only send changed properties to the adapter\n if (options.changesOnly) {\n if (resource.observers[id] && typeof resource.observers[id] === 'function') {\n resource.observers[id].deliver()\n }\n let toKeep = []\n let changes = definition.changes(id)\n\n for (var key in changes.added) {\n toKeep.push(key)\n }\n for (key in changes.changed) {\n toKeep.push(key)\n }\n DSUtils.forEach(options.always, property => {\n toKeep.push(property)\n })\n changes = DSUtils.pick(attrs, toKeep)\n // no changes? no save\n if (DSUtils.isEmpty(changes)) {\n // no changes, return\n options.logFn('save - no changes', id, options)\n noChanges = true\n return attrs\n } else {\n attrs = changes\n }\n }\n adapter = definition.getAdapterName(options)\n return _this.adapters[adapter].update(definition, id, DSUtils.omit(attrs, options.omit), options)\n })\n .then(function (data) { return options.afterUpdate.call(data, options, data) })\n .then(function (attrs) {\n if (options.notify) {\n definition.emit('DS.afterUpdate', definition, attrs)\n }\n if (noChanges) {\n // no changes, just return\n return attrs\n } else if (options.cacheResponse) {\n // inject the reponse into the store, updating the item\n let injected = definition.inject(attrs, options.orig())\n // mark the item as \"saved\"\n resource.saved[id] = DSUtils.updateTimestamp(resource.saved[id])\n if (!definition.resetHistoryOnInject) {\n resource.previousAttributes[id] = DSUtils.copy(injected, null, null, null, definition.relationFields)\n }\n return injected\n } else {\n // just return an instance\n return definition.createInstance(attrs, options.orig())\n }\n })\n .then(function (item) {\n return DSUtils.respond(item, {adapter}, options)\n })\n .catch(_this.errorFn('save', resourceName, id, options))\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/async_methods/save.js\n **/","/**\n * Update a single item using the supplied properties hash.\n *\n * @param resourceName The name of the type of resource of the item to update.\n * @param id The primary key of the item to update.\n * @param attrs The attributes with which to update the item.\n * @param options Optional configuration.\n * @returns The item, now updated.\n */\nmodule.exports = function update (resourceName, id, attrs, options) {\n let _this = this\n let {utils: DSUtils, errors: DSErrors} = _this\n let definition = _this.definitions[resourceName]\n let adapter\n\n return new DSUtils.Promise(function (resolve, reject) {\n id = DSUtils.resolveId(definition, id)\n if (!definition) {\n reject(new DSErrors.NER(resourceName))\n } else if (!DSUtils._sn(id)) {\n reject(DSUtils._snErr('id'))\n } else {\n options = DSUtils._(definition, options)\n options.logFn('update', id, attrs, options)\n resolve(attrs)\n }\n })\n // start lifecycle\n .then(function (attrs) { return options.beforeValidate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.validate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.afterValidate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.beforeUpdate.call(attrs, options, attrs) })\n .then(function (attrs) {\n if (options.notify) {\n definition.emit('DS.beforeUpdate', definition, attrs)\n }\n adapter = definition.getAdapterName(options)\n return _this.adapters[adapter].update(definition, id, DSUtils.omit(attrs, options.omit), options)\n })\n .then(function (data) { return options.afterUpdate.call(data, options, data) })\n .then(function (attrs) {\n if (options.notify) {\n definition.emit('DS.afterUpdate', definition, attrs)\n }\n if (options.cacheResponse) {\n // inject the updated item into the store\n let injected = definition.inject(attrs, options.orig())\n let resource = _this.store[resourceName]\n let id = injected[definition.idAttribute]\n // mark the item as \"saved\"\n resource.saved[id] = DSUtils.updateTimestamp(resource.saved[id])\n if (!definition.resetHistoryOnInject) {\n resource.previousAttributes[id] = DSUtils.copy(injected, null, null, null, definition.relationFields)\n }\n return injected\n } else {\n // just return an instance\n return definition.createInstance(attrs, options.orig())\n }\n })\n .then(function (item) {\n return DSUtils.respond(item, {adapter}, options)\n })\n .catch(_this.errorFn('update', resourceName, id, attrs, options))\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/async_methods/update.js\n **/","/**\n * Update a collection of items using the supplied properties hash.\n *\n * @param resourceName The name of the type of resource of the items to update.\n * @param attrs The attributes with which to update the item.\n * @param params The criteria by which to select items to update. See http://www.js-data.io/docs/query-syntax\n * @param options Optional configuration.\n * @returns The updated items.\n */\nmodule.exports = function updateAll (resourceName, attrs, params, options) {\n let _this = this\n let {utils: DSUtils, errors: DSErrors} = _this\n let definition = _this.definitions[resourceName]\n let adapter\n\n return new DSUtils.Promise(function (resolve, reject) {\n if (!definition) {\n reject(new DSErrors.NER(resourceName))\n } else {\n options = DSUtils._(definition, options)\n options.logFn('updateAll', attrs, params, options)\n DSUtils.applyScope(definition, params, options)\n resolve(attrs)\n }\n })\n // start lifecycle\n .then(function (attrs) { return options.beforeValidate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.validate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.afterValidate.call(attrs, options, attrs) })\n .then(function (attrs) { return options.beforeUpdate.call(attrs, options, attrs) })\n .then(function (attrs) {\n if (options.notify) {\n definition.emit('DS.beforeUpdate', definition, attrs)\n }\n adapter = definition.getAdapterName(options)\n return _this.adapters[adapter].updateAll(definition, DSUtils.omit(attrs, options.omit), params, options)\n })\n .then(function (data) { return options.afterUpdate.call(data, options, data) })\n .then(function (data) {\n if (options.notify) {\n definition.emit('DS.afterUpdate', definition, attrs)\n }\n let origOptions = options.orig()\n if (options.cacheResponse) {\n // inject the updated items into the store\n let injected = definition.inject(data, origOptions)\n let resource = _this.store[resourceName]\n // mark the items as \"saved\"\n DSUtils.forEach(injected, i => {\n let id = i[definition.idAttribute]\n resource.saved[id] = DSUtils.updateTimestamp(resource.saved[id])\n if (!definition.resetHistoryOnInject) {\n resource.previousAttributes[id] = DSUtils.copy(i, null, null, null, definition.relationFields)\n }\n })\n return injected\n } else {\n // just return instances\n let instances = []\n DSUtils.forEach(data, item => {\n instances.push(definition.createInstance(item, origOptions))\n })\n return instances\n }\n })\n .then(function (items) {\n return DSUtils.respond(items, {adapter}, options)\n })\n .catch(_this.errorFn('updateAll', resourceName, attrs, params, options))\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/datastore/async_methods/updateAll.js\n **/"],"sourceRoot":""}