diff --git a/dist/cozy-client.js b/dist/cozy-client.js index f38917aa..191fe98f 100644 --- a/dist/cozy-client.js +++ b/dist/cozy-client.js @@ -2,11 +2,11 @@ if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(require("pouchdb"), require("pouchdb-find")); else if(typeof define === 'function' && define.amd) - define("cozy-client-js", ["pouchdb", "pouchdb-find"], factory); + define("client", ["pouchdb", "pouchdb-find"], factory); else if(typeof exports === 'object') - exports["cozy-client-js"] = factory(require("pouchdb"), require("pouchdb-find")); + exports["client"] = factory(require("pouchdb"), require("pouchdb-find")); else - root["cozy-client-js"] = factory(root["pouchdb"], root["pouchdb-find"]); + root["cozy"] = root["cozy"] || {}, root["cozy"]["client"] = factory(root["pouchdb"], root["pouchdb-find"]); })(this, function(__WEBPACK_EXTERNAL_MODULE_15__, __WEBPACK_EXTERNAL_MODULE_16__) { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache @@ -540,14 +540,8 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.MemoryStorage = exports.LocalStorage = exports.Cozy = undefined; - var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* global fetch */ - var _utils = __webpack_require__(4); var _auth_storage = __webpack_require__(5); @@ -558,9 +552,9 @@ return /******/ (function(modules) { // webpackBootstrap var auth = _interopRequireWildcard(_auth_v2); - var _crud = __webpack_require__(10); + var _data = __webpack_require__(10); - var crud = _interopRequireWildcard(_crud); + var data = _interopRequireWildcard(_data); var _mango = __webpack_require__(12); @@ -600,19 +594,20 @@ return /******/ (function(modules) { // webpackBootstrap softwareID: 'github.com/cozy/cozy-client-js' }; - var mainProto = { - create: crud.create, - find: crud.find, - update: crud.update, - delete: crud._delete, - updateAttributes: crud.updateAttributes, + var dataProto = { + create: data.create, + find: data.find, + update: data.update, + delete: data._delete, + updateAttributes: data.updateAttributes, + changesFeed: data.changesFeed, defineIndex: mango.defineIndex, query: mango.query, addReferencedFiles: relations.addReferencedFiles, listReferencedFiles: relations.listReferencedFiles, destroy: function destroy() { - (0, _utils.warn)('destroy is deprecated, use cozy.delete instead.'); - return crud._delete.apply(crud, arguments); + (0, _utils.warn)('destroy is deprecated, use cozy.data.delete instead.'); + return data._delete.apply(data, arguments); } }; @@ -666,10 +661,11 @@ return /******/ (function(modules) { // webpackBootstrap diskUsage: settings.diskUsage }; - var Cozy = function () { - function Cozy(options) { - _classCallCheck(this, Cozy); + var Client = function () { + function Client(options) { + _classCallCheck(this, Client); + this.data = {}; this.files = {}; this.offline = {}; this.settings = {}; @@ -687,7 +683,7 @@ return /******/ (function(modules) { // webpackBootstrap } } - _createClass(Cozy, [{ + _createClass(Client, [{ key: 'init', value: function init() { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; @@ -724,7 +720,7 @@ return /******/ (function(modules) { // webpackBootstrap this._url = url; var disablePromises = !!options.disablePromises; - addToProto(this, this, mainProto, disablePromises); + addToProto(this, this.data, dataProto, disablePromises); addToProto(this, this.auth, authProto, disablePromises); addToProto(this, this.files, filesProto, disablePromises); addToProto(this, this.offline, offlineProto, disablePromises); @@ -814,7 +810,7 @@ return /******/ (function(modules) { // webpackBootstrap } }]); - return Cozy; + return Client; }(); function nopOnRegistered() { @@ -841,18 +837,8 @@ return /******/ (function(modules) { // webpackBootstrap } } - var cozy = new Cozy(); - - exports.default = cozy; - exports.Cozy = Cozy; - exports.LocalStorage = _auth_storage.LocalStorage; - exports.MemoryStorage = _auth_storage.MemoryStorage; - - - if (typeof window !== 'undefined') { - window.cozy = cozy; - window.Cozy = Cozy; - } + module.exports = new Client(); + Object.assign(module.exports, { Client: Client, LocalStorage: _auth_storage.LocalStorage, MemoryStorage: _auth_storage.MemoryStorage }); /***/ }, /* 4 */ @@ -1264,14 +1250,16 @@ return /******/ (function(modules) { // webpackBootstrap this.logoURI = opts.logoURI || opts.logo_uri || ''; this.policyURI = opts.policyURI || opts.policy_uri || ''; - if (this.redirectURI === '') { - throw new Error('Missing redirectURI field'); - } - if (this.softwareID === '') { - throw new Error('Missing softwareID field'); - } - if (this.clientName === '') { - throw new Error('Missing clientName field'); + if (!this.registrationAccessToken) { + if (this.redirectURI === '') { + throw new Error('Missing redirectURI field'); + } + if (this.softwareID === '') { + throw new Error('Missing softwareID field'); + } + if (this.clientName === '') { + throw new Error('Missing clientName field'); + } } } @@ -1319,6 +1307,11 @@ return /******/ (function(modules) { // webpackBootstrap value: function toAuthHeader() { return 'Bearer ' + this.accessToken; } + }, { + key: 'toBasicAuth', + value: function toBasicAuth() { + return 'user:' + this.accessToken + '@'; + } }]); return AccessToken; @@ -1336,6 +1329,11 @@ return /******/ (function(modules) { // webpackBootstrap value: function toAuthHeader() { return 'Bearer ' + this.token; } + }, { + key: 'toBasicAuth', + value: function toBasicAuth() { + return 'user:' + this.token + '@'; + } }]); return AppToken; @@ -1874,6 +1872,7 @@ return /******/ (function(modules) { // webpackBootstrap }); exports.create = create; exports.find = find; + exports.changesFeed = changesFeed; exports.update = update; exports.updateAttributes = updateAttributes; exports._delete = _delete; @@ -1922,6 +1921,14 @@ return /******/ (function(modules) { // webpackBootstrap }); } + function changesFeed(cozy, doctype, options) { + return cozy.isV2().then(function (isV2) { + doctype = (0, _doctypes.normalizeDoctype)(cozy, isV2, doctype); + var path = (0, _utils.createPath)(cozy, isV2, doctype, '_changes', options); + return (0, _fetch.cozyFetchJSON)(cozy, 'GET', path); + }); + } + function update(cozy, doctype, doc, changes) { return cozy.isV2().then(function (isV2) { doctype = (0, _doctypes.normalizeDoctype)(cozy, isV2, doctype); @@ -2633,6 +2640,7 @@ return /******/ (function(modules) { // webpackBootstrap exports.hasSync = hasSync; exports.stopSync = stopSync; exports.replicateFromCozy = replicateFromCozy; + exports.replicateFromCozyWithAuth = replicateFromCozyWithAuth; var _pouchdb = __webpack_require__(15); @@ -2771,8 +2779,11 @@ return /******/ (function(modules) { // webpackBootstrap offline.timer = timer; offline.autoSync = setInterval(function () { if (offline.replicate === undefined) { - offline.replicate = replicateFromCozy(cozy, doctype).on('complete', function (info) { - delete offline.replicate; + offline.replicate = replicateFromCozy(cozy, doctype); + offline.replicate.then(function (db) { + db.on('complete', function (info) { + delete offline.replicate; + }); }); // TODO: add replicationToCozy } @@ -2806,41 +2817,52 @@ return /******/ (function(modules) { // webpackBootstrap if (options.live === true) { throw new Error('You can\'t use `live` option with Cozy couchdb.'); } - var url = cozy._url + '/data/' + doctype; - var db = getDatabase(cozy, doctype); - var replication = db.replicate.from(url, options); - var eventNames = ['change', 'paused', 'active', 'denied', 'complete', 'error']; - var _iteratorNormalCompletion2 = true; - var _didIteratorError2 = false; - var _iteratorError2 = undefined; + if (options.manualAuthCredentials) { + return replicateFromCozyWithAuth(cozy, doctype, options, events, options.manualAuthCredentials); + } else { + return cozy.authorize().then(function (credentials) { + return replicateFromCozyWithAuth(cozy, doctype, options, events, credentials); + }); + } + } else { + throw new Error('You should add this doctype: ' + doctype + ' to offline.'); + } + } - try { - for (var _iterator2 = eventNames[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - var eventName = _step2.value; + function replicateFromCozyWithAuth(cozy, doctype, options, events, credentials) { + var basic = credentials.token.toBasicAuth(); + var url = (cozy._url + '/data/' + doctype).replace('//', '//' + basic); + var db = getDatabase(cozy, doctype); + var replication = db.replicate.from(url, options); + var eventNames = ['change', 'paused', 'active', 'denied', 'complete', 'error']; + var _iteratorNormalCompletion2 = true; + var _didIteratorError2 = false; + var _iteratorError2 = undefined; - if (typeof events[eventName] === 'function') { - replication.on(eventName, events[eventName]); - } + try { + for (var _iterator2 = eventNames[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var eventName = _step2.value; + + if (typeof events[eventName] === 'function') { + replication.on(eventName, events[eventName]); + } + } + } catch (err) { + _didIteratorError2 = true; + _iteratorError2 = err; + } finally { + try { + if (!_iteratorNormalCompletion2 && _iterator2.return) { + _iterator2.return(); } - } catch (err) { - _didIteratorError2 = true; - _iteratorError2 = err; } finally { - try { - if (!_iteratorNormalCompletion2 && _iterator2.return) { - _iterator2.return(); - } - } finally { - if (_didIteratorError2) { - throw _iteratorError2; - } + if (_didIteratorError2) { + throw _iteratorError2; } } - - return replication; - } else { - throw new Error('You should add this doctype: ' + doctype + ' to offline.'); } + + return replication; } function createIndexes(cozy, db, doctype) { diff --git a/dist/cozy-client.js.map b/dist/cozy-client.js.map index f2478c78..4485ea67 100644 --- a/dist/cozy-client.js.map +++ b/dist/cozy-client.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 5c954d932cc85d81012b","webpack:///./~/isomorphic-fetch/fetch-npm-browserify.js","webpack:///./~/whatwg-fetch/fetch.js","webpack:///./src/index.js","webpack:///./src/utils.js","webpack:///./src/auth_storage.js","webpack:///./src/auth_v2.js","webpack:///./src/auth_v3.js","webpack:///./src/fetch.js","webpack:///./src/jsonapi.js","webpack:///./src/crud.js","webpack:///./src/doctypes.js","webpack:///./src/mango.js","webpack:///./src/files.js","webpack:///./src/offline.js","webpack:///external \"pouchdb\"","webpack:///external \"pouchdb-find\"","webpack:///./src/settings.js","webpack:///./src/relations.js"],"names":["auth","crud","mango","files","offline","settings","relations","AppTokenV3","AppToken","AccessTokenV3","AccessToken","ClientV3","Client","AuthNone","AuthRunning","AuthError","AuthOK","defaultClientParams","softwareID","mainProto","create","find","update","delete","_delete","updateAttributes","defineIndex","query","addReferencedFiles","listReferencedFiles","destroy","authProto","registerClient","updateClient","unregisterClient","getClient","getAuthCodeURL","getAccessToken","refreshToken","filesProto","createDirectory","updateById","updateAttributesById","updateAttributesByPath","trashById","statById","statByPath","downloadById","downloadByPath","getDowloadLink","getArchiveLink","listTrash","clearTrash","restoreById","destroyById","offlineProto","init","getDoctypes","createDatabase","hasDatabase","getDatabase","destroyDatabase","replicateFromCozy","hasSync","startAllSync","startSync","stopAllSync","stopSync","settingsProto","diskUsage","Cozy","options","AppTokenV2","LocalStorage","MemoryStorage","_inited","_oauth","_token","_authstate","_authcreds","_storage","_version","_offline","token","oauth","Error","storage","_clientParams","Object","assign","clientParams","_onRegistered","onRegistered","nopOnRegistered","url","cozyURL","length","slice","_url","disablePromises","addToProto","state","isV2","then","oauthFlow","Promise","resolve","client","creds","save","CredsKey","path","pathprefix","fetch","res","ok","json","status","datasystem","undefined","protoify","context","fn","prototyped","args","ctx","obj","proto","attr","cozy","window","unpromiser","isPromise","sleep","retry","getFuzzedDelay","getBackedoffDelay","createPath","encodeQuery","decodeQuery","warn","FuzzFactor","value","apply","l","cb","err","time","setTimeout","count","delay","doTry","catch","retryDelay","fuzzingFactor","Math","random","retryCount","pow","doctype","id","route","encodeURIComponent","q","qname","queryIndex","indexOf","queries","fragIndex","queryStr","parts","split","i","pair","decodeURIComponent","hasOwnProperty","warned","text","push","console","prefix","localStorage","key","setItem","JSON","stringify","item","getItem","parse","removeItem","hash","deleted","getAppToken","V2TOKEN_ABORT_TIMEOUT","reject","parent","postMessage","origin","location","intent","action","timeout","receiver","event","appName","data","e","removeEventListener","clearTimeout","addEventListener","opts","btoa","StateSize","StateKey","clientID","client_id","clientSecret","client_secret","registrationAccessToken","registration_access_token","redirect_uris","redirectURI","software_id","softwareVersion","software_version","clientName","client_name","clientKind","client_kind","clientURI","client_uri","logoURI","logo_uri","policyURI","policy_uri","tokenType","token_type","accessToken","access_token","refresh_token","scope","isRegistered","toRegisterJSON","disableAuth","resetSecret","createClient","manualAuthCredentials","oldClient","newClient","shouldPassRegistration","scopes","generateRandomState","join","pageURL","grantQueries","getGrantCodeFromPageURL","retrieveToken","code","tryCount","clearAndRetry","clear","registerNewClient","all","load","credentials","storedState","isUnauthorized","statePromise","t","body","headers","href","buffer","crypto","getRandomValues","Uint8Array","require","randomBytes","Array","floor","String","fromCharCode","replace","cozyFetch","cozyFetchJSON","fullpath","resp","cozyFetchWithAuth","authorize","handleResponse","toAuthHeader","newToken","saveCredentials","method","handleJSONResponse","contentType","get","FetchError","reason","response","indexKey","doc","type","findByRef","resources","ref","handleResource","rawResource","links","resource","_id","_type","_rev","meta","rev","attributes","name","rels","relationships","isArray","map","handleTopLevel","included","forEach","r","NOREV","docType","changes","tries","normalizeDoctype","DOCTYPE_FILES","KNOWN_DOCTYPES","REVERSE_KNOWN","keys","k","isQualified","known","parseSelector","normalizeSelector","makeMapReduceQuery","fields","defineIndexV2","defineIndexV3","indexRef","queryV2","queryV3","VALUEOPERATORS","LOGICOPERATORS","MAP_TEMPLATE","toLowerCase","emit","FIELDSPLACEHOLDER","toString","COUCHDB_INFINITY","COUCHDB_LOWEST","indexName","capitalize","indexDefinition","makeMapFunction","reduce","use_index","selector","limit","since","descending","sort","f","docs","charAt","toUpperCase","operator","acc","concat","filters","filter","op","field","applySelector","lower","upper","inclusiveEnd","startkey","endkey","inclusive_end","mrquery","firstFreeValueField","normalizedSelector","used","isFreeValue","contentTypeOctetStream","doUpload","ArrayBuffer","isBuffer","isFile","File","isBlob","Blob","isStream","readable","pipe","isString","lastModifiedDate","Date","toGMTString","dirID","attrs","db","children","addIsDir","toJsonApi","extractResponseLinkRelated","related","paths","archive","isDir","contents","clone","pluginLoaded","doctypes","timer","plugin","database","autoSync","createIndexes","setInterval","replicate","on","info","replication","cancel","clearInterval","events","live","from","eventNames","eventName","createIndex","index","ids","refs","makeReferencesPath","file"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACLA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP,MAAK;AACL;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yCAAwC,mBAAmB;AAC3D;AACA;;AAEA;AACA;AACA,mCAAkC,oBAAoB;AACtD;AACA;;AAEA;AACA;AACA,yCAAwC,4BAA4B;AACpE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA,wDAAuD;AACvD,UAAS;AACT;AACA,UAAS;AACT,+EAA8E;AAC9E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA8B,uBAAuB;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA,wCAAuC,0BAA0B;AACjE;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,gCAA+B,0BAA0B,eAAe;AACxE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA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","file":"cozy-client.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"pouchdb\"), require(\"pouchdb-find\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"cozy-client-js\", [\"pouchdb\", \"pouchdb-find\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"cozy-client-js\"] = factory(require(\"pouchdb\"), require(\"pouchdb-find\"));\n\telse\n\t\troot[\"cozy-client-js\"] = factory(root[\"pouchdb\"], root[\"pouchdb-find\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_15__, __WEBPACK_EXTERNAL_MODULE_16__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \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 5c954d932cc85d81012b","// the whatwg-fetch polyfill installs the fetch() function\n// on the global object (window or self)\n//\n// Return that as the export for use in Webpack, Browserify etc.\nrequire('whatwg-fetch');\nmodule.exports = self.fetch.bind(self);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/isomorphic-fetch/fetch-npm-browserify.js\n// module id = 1\n// module chunks = 0","(function(self) {\n 'use strict';\n\n if (self.fetch) {\n return\n }\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob: 'FileReader' in self && 'Blob' in self && (function() {\n try {\n new Blob()\n return true\n } catch(e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isDataView = function(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n var isArrayBufferView = ArrayBuffer.isView || function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue+','+value : value\n }\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n }\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n }\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n }\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n }\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n }\n\n Headers.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) { items.push(name) })\n return iteratorFor(items)\n }\n\n Headers.prototype.values = function() {\n var items = []\n this.forEach(function(value) { items.push(value) })\n return iteratorFor(items)\n }\n\n Headers.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) { items.push([name, value]) })\n return iteratorFor(items)\n }\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n throw new Error('unsupported BodyInit type')\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return (methods.indexOf(upcased) > -1) ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {}\n var body = options.body\n\n if (typeof input === 'string') {\n this.url = input\n } else {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n }\n\n this.credentials = options.credentials || this.credentials || 'omit'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n }\n\n Request.prototype.clone = function() {\n return new Request(this, { body: this._bodyInit })\n }\n\n function decode(body) {\n var form = new FormData()\n body.trim().split('&').forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers()\n rawHeaders.split('\\r\\n').forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n }\n\n Body.call(Request.prototype)\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = 'status' in options ? options.status : 200\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : 'OK'\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n }\n\n Body.call(Response.prototype)\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n }\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n }\n\n var redirectStatuses = [301, 302, 303, 307, 308]\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n }\n\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n\n self.fetch = function(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n var xhr = new XMLHttpRequest()\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n }\n self.fetch.polyfill = true\n})(typeof self !== 'undefined' ? self : this);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/whatwg-fetch/fetch.js\n// module id = 2\n// module chunks = 0","/* global fetch */\nimport {unpromiser, retry, warn} from './utils'\nimport {LocalStorage, MemoryStorage} from './auth_storage'\nimport {AppToken as AppTokenV2, getAppToken as getAppTokenV2} from './auth_v2'\nimport * as auth from './auth_v3'\nimport * as crud from './crud'\nimport * as mango from './mango'\nimport * as files from './files'\nimport * as offline from './offline'\nimport * as settings from './settings'\nimport * as relations from './relations'\n\nconst {\n AppToken: AppTokenV3,\n AccessToken: AccessTokenV3,\n Client: ClientV3\n} = auth\n\nconst AuthNone = 0\nconst AuthRunning = 1\nconst AuthError = 2\nconst AuthOK = 3\n\nconst defaultClientParams = {\n softwareID: 'github.com/cozy/cozy-client-js'\n}\n\nconst mainProto = {\n create: crud.create,\n find: crud.find,\n update: crud.update,\n delete: crud._delete,\n updateAttributes: crud.updateAttributes,\n defineIndex: mango.defineIndex,\n query: mango.query,\n addReferencedFiles: relations.addReferencedFiles,\n listReferencedFiles: relations.listReferencedFiles,\n destroy: function (...args) {\n warn('destroy is deprecated, use cozy.delete instead.')\n return crud._delete(...args)\n }\n}\n\nconst authProto = {\n registerClient: auth.registerClient,\n updateClient: auth.updateClient,\n unregisterClient: auth.unregisterClient,\n getClient: auth.getClient,\n getAuthCodeURL: auth.getAuthCodeURL,\n getAccessToken: auth.getAccessToken,\n refreshToken: auth.refreshToken\n}\n\nconst filesProto = {\n create: files.create,\n createDirectory: files.createDirectory,\n updateById: files.updateById,\n updateAttributesById: files.updateAttributesById,\n updateAttributesByPath: files.updateAttributesByPath,\n trashById: files.trashById,\n statById: files.statById,\n statByPath: files.statByPath,\n downloadById: files.downloadById,\n downloadByPath: files.downloadByPath,\n getDowloadLink: files.getDowloadLink,\n getArchiveLink: files.getArchiveLink,\n listTrash: files.listTrash,\n clearTrash: files.clearTrash,\n restoreById: files.restoreById,\n destroyById: files.destroyById\n}\n\nconst offlineProto = {\n init: offline.init,\n getDoctypes: offline.getDoctypes,\n // database\n createDatabase: offline.createDatabase,\n hasDatabase: offline.hasDatabase,\n getDatabase: offline.getDatabase,\n destroyDatabase: offline.destroyDatabase,\n // replication\n replicateFromCozy: offline.replicateFromCozy,\n hasSync: offline.hasSync,\n startAllSync: offline.startAllSync,\n startSync: offline.startSync,\n stopAllSync: offline.stopAllSync,\n stopSync: offline.stopSync\n}\n\nconst settingsProto = {\n diskUsage: settings.diskUsage\n}\n\nclass Cozy {\n constructor (options) {\n this.files = {}\n this.offline = {}\n this.settings = {}\n this.auth = {\n Client: ClientV3,\n AccessToken: AccessTokenV3,\n AppToken: AppTokenV3,\n AppTokenV2: AppTokenV2,\n LocalStorage: LocalStorage,\n MemoryStorage: MemoryStorage\n }\n this._inited = false\n if (options) {\n this.init(options)\n }\n }\n\n init (options = {}) {\n this._inited = true\n this._oauth = false // is oauth activated or not\n this._token = null // application token\n this._authstate = AuthNone\n this._authcreds = null\n this._storage = null\n this._version = null\n this._offline = null\n\n const token = options.token\n const oauth = options.oauth\n if (token && oauth) {\n throw new Error('Cannot specify an application token with a oauth activated')\n }\n\n if (token) {\n this._token = new AppTokenV3({ token })\n } else if (oauth) {\n this._oauth = true\n this._storage = oauth.storage\n this._clientParams = Object.assign({}, defaultClientParams, oauth.clientParams)\n this._onRegistered = oauth.onRegistered || nopOnRegistered\n }\n\n let url = options.cozyURL || ''\n while (url[url.length - 1] === '/') {\n url = url.slice(0, -1)\n }\n\n this._url = url\n\n const disablePromises = !!options.disablePromises\n addToProto(this, this, mainProto, disablePromises)\n addToProto(this, this.auth, authProto, disablePromises)\n addToProto(this, this.files, filesProto, disablePromises)\n addToProto(this, this.offline, offlineProto, disablePromises)\n addToProto(this, this.settings, settingsProto, disablePromises)\n\n if (options.offline) {\n this.offline.init(options.offline)\n }\n }\n\n authorize () {\n const state = this._authstate\n if (state === AuthOK || state === AuthRunning) {\n return this._authcreds\n }\n\n this._authstate = AuthRunning\n this._authcreds = this.isV2().then((isV2) => {\n if (isV2 && this._oauth) {\n throw new Error('OAuth is not supported on the V2 stack')\n }\n if (this._oauth) {\n return auth.oauthFlow(\n this,\n this._storage,\n this._clientParams,\n this._onRegistered\n )\n }\n // we expect to be on a client side application running in a browser\n // with cookie-based authentication.\n if (isV2) {\n return getAppTokenV2()\n } else if (this._token) {\n return Promise.resolve({client: null, token: this._token})\n } else {\n throw new Error('Missing application token')\n }\n })\n\n this._authcreds.then(\n () => { this._authstate = AuthOK },\n () => { this._authstate = AuthError })\n\n return this._authcreds\n }\n\n saveCredentials (client, token) {\n const creds = {client, token}\n if (!this._storage || this._authstate === AuthRunning) {\n return Promise.resolve(creds)\n }\n this._storage.save(auth.CredsKey, creds)\n this._authcreds = Promise.resolve(creds)\n return this._authcreds\n }\n\n fullpath (path) {\n return this.isV2().then((isV2) => {\n const pathprefix = isV2 ? '/ds-api' : ''\n return this._url + pathprefix + path\n })\n }\n\n isV2 () {\n if (!this._version) {\n this._version = retry(() => fetch(`${this._url}/status/`), 3)()\n .then((res) => {\n if (!res.ok) {\n throw new Error('Could not fetch cozy status')\n } else {\n return res.json()\n }\n })\n .then((status) => status.datasystem !== undefined)\n }\n return this._version\n }\n}\n\nfunction nopOnRegistered () {\n throw new Error('Missing onRegistered callback')\n}\n\nfunction protoify (context, fn) {\n return function prototyped (...args) {\n return fn(context, ...args)\n }\n}\n\nfunction addToProto (ctx, obj, proto, disablePromises) {\n for (const attr in proto) {\n let fn = protoify(ctx, proto[attr])\n if (disablePromises) {\n fn = unpromiser(fn)\n }\n obj[attr] = fn\n }\n}\n\nconst cozy = new Cozy()\n\nexport default cozy\nexport { Cozy, LocalStorage, MemoryStorage }\n\nif ((typeof window) !== 'undefined') {\n window.cozy = cozy\n window.Cozy = Cozy\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","const FuzzFactor = 0.3\n\nexport function unpromiser (fn) {\n return function (...args) {\n const value = fn.apply(this, args)\n if (!isPromise(value)) {\n return value\n }\n const l = args.length\n if (l === 0 || typeof args[l - 1] !== 'function') {\n return\n }\n const cb = args[l - 1]\n value.then(\n (res) => cb(null, res),\n (err) => cb(err, null)\n )\n return\n }\n}\n\nexport function isPromise (value) {\n return !!value && typeof value.then === 'function'\n}\n\nexport function sleep (time, args) {\n return new Promise((resolve) => {\n setTimeout(resolve, time, args)\n })\n}\n\nexport function retry (fn, count, delay = 300) {\n return function doTry (...args) {\n return fn(...args).catch((err) => {\n if (--count < 0) {\n throw err\n }\n return sleep(getBackedoffDelay(delay, count))\n .then(() => doTry(...args))\n })\n }\n}\n\nexport function getFuzzedDelay (retryDelay) {\n const fuzzingFactor = ((Math.random() * 2) - 1) * FuzzFactor\n return retryDelay * (1.0 + fuzzingFactor)\n}\n\nexport function getBackedoffDelay (retryDelay, retryCount = 1) {\n return getFuzzedDelay(retryDelay * Math.pow(2, retryCount - 1))\n}\n\nexport function createPath (cozy, isV2, doctype, id = '', query = null) {\n let route = '/data/'\n if (!isV2) {\n route += `${encodeURIComponent(doctype)}/`\n }\n if (id !== '') {\n route += encodeURIComponent(id)\n }\n const q = encodeQuery(query)\n if (q !== '') {\n route += '?' + q\n }\n return route\n}\n\nexport function encodeQuery (query) {\n if (!query) {\n return ''\n }\n let q = ''\n for (const qname in query) {\n if (q !== '') {\n q += '&'\n }\n q += `${encodeURIComponent(qname)}=${encodeURIComponent(query[qname])}`\n }\n return q\n}\n\nexport function decodeQuery (url) {\n let queryIndex = url.indexOf('?')\n if (queryIndex < 0) {\n queryIndex = url.length\n }\n const queries = {}\n let fragIndex = url.indexOf('#')\n if (fragIndex < 0) {\n fragIndex = url.length\n }\n if (fragIndex < queryIndex) {\n return queries\n }\n const queryStr = url.slice(queryIndex + 1, fragIndex)\n if (queryStr === '') {\n return queries\n }\n const parts = queryStr.split('&')\n for (let i = 0; i < parts.length; i++) {\n let pair = parts[i].split('=')\n if (pair.length === 0 || pair[0] === '') {\n continue\n }\n const qname = decodeURIComponent(pair[0])\n if (queries.hasOwnProperty(qname)) {\n continue\n }\n if (pair.length === 1) {\n queries[qname] = true\n } else if (pair.length === 2) {\n queries[qname] = decodeURIComponent(pair[1])\n } else {\n throw new Error('Malformed URL')\n }\n }\n return queries\n}\n\nconst warned = []\nexport function warn (text) {\n if (warned.indexOf(text) === -1) {\n warned.push(text)\n console.warn('cozy-client-js', text)\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils.js","export class LocalStorage {\n constructor (storage, prefix) {\n if (!storage && typeof window !== 'undefined') {\n storage = window.localStorage\n }\n this.storage = storage\n this.prefix = prefix || 'cozy:oauth:'\n }\n\n save (key, value) {\n return new Promise(resolve => {\n this.storage.setItem(this.prefix + key, JSON.stringify(value))\n resolve(value)\n })\n }\n\n load (key) {\n return new Promise(resolve => {\n const item = this.storage.getItem(this.prefix + key)\n if (!item) {\n resolve()\n } else {\n resolve(JSON.parse(item))\n }\n })\n }\n\n delete (key) {\n return new Promise(resolve => resolve(\n this.storage.removeItem(this.prefix + key)))\n }\n\n clear () {\n return new Promise(resolve => {\n const storage = this.storage\n for (let i = 0; i < storage.length; i++) {\n const key = storage.key(i)\n if (key.indexOf(this.prefix) === 0) {\n storage.removeItem(key)\n }\n }\n resolve()\n })\n }\n}\n\nexport class MemoryStorage {\n constructor () {\n this.hash = Object.create(null)\n }\n\n save (key, value) {\n this.hash[key] = value\n return Promise.resolve(value)\n }\n\n load (key) {\n return Promise.resolve(this.hash[key])\n }\n\n delete (key) {\n const deleted = delete this.hash[key]\n return Promise.resolve(deleted)\n }\n\n clear () {\n this.hash = Object.create(null)\n return Promise.resolve()\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/auth_storage.js","/* global btoa */\nconst V2TOKEN_ABORT_TIMEOUT = 3000\n\nexport function getAppToken () {\n return new Promise(function (resolve, reject) {\n if (typeof window === 'undefined') {\n return reject(new Error('getV2Token should be used in browser'))\n } else if (!window.parent) {\n return reject(new Error('getV2Token should be used in iframe'))\n } else if (!window.parent.postMessage) {\n return reject(new Error('getV2Token should be used in modern browser'))\n }\n const origin = window.location.origin\n const intent = {action: 'getToken'}\n let timeout = null\n const receiver = function (event) {\n let token\n try {\n token = new AppToken({\n appName: event.data.appName,\n token: event.data.token\n })\n } catch (e) {\n reject(e)\n return\n }\n window.removeEventListener('message', receiver)\n clearTimeout(timeout)\n resolve({ client: null, token })\n }\n window.addEventListener('message', receiver, false)\n window.parent.postMessage(intent, origin)\n timeout = setTimeout(() => {\n reject(new Error('No response from parent iframe after 3s'))\n }, V2TOKEN_ABORT_TIMEOUT)\n })\n}\n\nexport class AppToken {\n constructor (opts) {\n this.appName = opts.appName || ''\n this.token = opts.token || ''\n }\n\n toAuthHeader () {\n return 'Basic ' + btoa(`${this.appName}:${this.token}`)\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/auth_v2.js","/* global btoa */\nimport {encodeQuery, decodeQuery} from './utils'\nimport {cozyFetchJSON, FetchError} from './fetch'\n\nconst StateSize = 16\n\nexport const CredsKey = 'creds'\nexport const StateKey = 'state'\n\nexport class Client {\n constructor (opts) {\n this.clientID = opts.clientID || opts.client_id || ''\n this.clientSecret = opts.clientSecret || opts.client_secret || ''\n this.registrationAccessToken = opts.registrationAccessToken || opts.registration_access_token || ''\n\n if (opts.redirect_uris) {\n this.redirectURI = opts.redirect_uris[0] || ''\n } else {\n this.redirectURI = opts.redirectURI || ''\n }\n\n this.softwareID = opts.softwareID || opts.software_id || ''\n this.softwareVersion = opts.softwareVersion || opts.software_version || ''\n this.clientName = opts.clientName || opts.client_name || ''\n this.clientKind = opts.clientKind || opts.client_kind || ''\n this.clientURI = opts.clientURI || opts.client_uri || ''\n\n this.logoURI = opts.logoURI || opts.logo_uri || ''\n this.policyURI = opts.policyURI || opts.policy_uri || ''\n\n if (this.redirectURI === '') {\n throw new Error('Missing redirectURI field')\n }\n if (this.softwareID === '') {\n throw new Error('Missing softwareID field')\n }\n if (this.clientName === '') {\n throw new Error('Missing clientName field')\n }\n }\n\n isRegistered () {\n return this.clientID !== ''\n }\n\n toRegisterJSON () {\n return {\n redirect_uris: [this.redirectURI],\n software_id: this.softwareID,\n software_version: this.softwareVersion,\n client_name: this.clientName,\n client_kind: this.clientKind,\n client_uri: this.clientURI,\n logo_uri: this.logoURI,\n policy_uri: this.policyURI\n }\n }\n\n toAuthHeader () {\n return 'Bearer ' + this.registrationAccessToken\n }\n}\n\nexport class AccessToken {\n constructor (opts) {\n this.tokenType = opts.tokenType || opts.token_type\n this.accessToken = opts.accessToken || opts.access_token\n this.refreshToken = opts.refreshToken || opts.refresh_token\n this.scope = opts.scope\n }\n\n toAuthHeader () {\n return 'Bearer ' + this.accessToken\n }\n}\n\nexport class AppToken {\n constructor (opts) {\n this.token = opts.token || ''\n }\n\n toAuthHeader () {\n return 'Bearer ' + this.token\n }\n}\n\nexport function registerClient (cozy, client) {\n if (!(client instanceof Client)) {\n client = new Client(client)\n }\n if (client.isRegistered()) {\n return Promise.reject(new Error('Client already registered'))\n }\n return cozyFetchJSON(cozy, 'POST', '/auth/register', client.toRegisterJSON(), {\n disableAuth: true\n })\n .then((data) => new Client(data))\n}\n\nexport function updateClient (cozy, client, resetSecret = false) {\n if (!(client instanceof Client)) {\n client = new Client(client)\n }\n if (!client.isRegistered()) {\n return Promise.reject(new Error('Client not registered'))\n }\n let data = client.toRegisterJSON()\n data.client_id = client.clientID\n if (resetSecret) data.client_secret = client.clientSecret\n\n return cozyFetchJSON(cozy, 'PUT', `/auth/register/${client.clientID}`, data)\n .then((data) => createClient(data, client))\n}\n\nexport function unregisterClient (cozy, client) {\n return cozyFetchJSON(cozy, 'DELETE', `/auth/register/${client.clientID}`)\n}\n\n// getClient will retrive the registered client informations from the server.\nexport function getClient (cozy, client) {\n if (!(client instanceof Client)) {\n client = new Client(client)\n }\n if (!client.isRegistered()) {\n return Promise.reject(new Error('Client not registered'))\n }\n return cozyFetchJSON(cozy, 'GET', `/auth/register/${client.clientID}`, null, {\n manualAuthCredentials: {\n client: client,\n token: client\n }\n })\n .then((data) => createClient(data, client))\n}\n\n// createClient returns a new Client instance given on object containing the\n// data of the client, from the API, and an old instance of the client.\nfunction createClient (data, oldClient) {\n const newClient = new Client(data)\n // we need to keep track of the registrationAccessToken since it is send\n // only on registration. The GET /auth/register/:client-id endpoint does\n // not return this token.\n const shouldPassRegistration = (\n !!oldClient &&\n oldClient.registrationAccessToken !== '' &&\n newClient.registrationAccessToken === ''\n )\n if (shouldPassRegistration) {\n newClient.registrationAccessToken = oldClient.registrationAccessToken\n }\n return newClient\n}\n\n// getAuthCodeURL returns a pair {authURL,state} given a registered client. The\n// state should be stored in order to be checked against on the user validation\n// phase.\nexport function getAuthCodeURL (cozy, client, scopes = []) {\n if (!(client instanceof Client)) {\n client = new Client(client)\n }\n if (!client.isRegistered()) {\n throw new Error('Client not registered')\n }\n const state = generateRandomState()\n const query = {\n 'client_id': client.clientID,\n 'redirect_uri': client.redirectURI,\n 'state': state,\n 'response_type': 'code',\n 'scope': scopes.join(' ')\n }\n return {\n url: cozy._url + `/auth/authorize?${encodeQuery(query)}`,\n state: state\n }\n}\n\n// getAccessToken perform a request on the access_token entrypoint with the\n// authorization_code grant type in order to generate a new access token for a\n// newly registered client.\n//\n// This method extracts the access code and state from the given URL. By\n// default it uses window.location.href. Also, it checks the given state with\n// the one specified in the URL query parameter to prevent CSRF attacks.\nexport function getAccessToken (cozy, client, state, pageURL = '') {\n if (!state) {\n return Promise.reject(new Error('Missing state value'))\n }\n const grantQueries = getGrantCodeFromPageURL(pageURL)\n if (grantQueries === null) {\n return Promise.reject(new Error('Missing states from current URL'))\n }\n if (state !== grantQueries.state) {\n return Promise.reject(new Error('Given state does not match url query state'))\n }\n return retrieveToken(cozy, client, null, {\n 'grant_type': 'authorization_code',\n 'code': grantQueries.code\n })\n}\n\n// refreshToken perform a request on the access_token entrypoint with the\n// refresh_token grant type in order to refresh the given token.\nexport function refreshToken (cozy, client, token) {\n return retrieveToken(cozy, client, token, {\n 'grant_type': 'refresh_token',\n 'code': token.refreshToken\n })\n}\n\n// oauthFlow performs the stateful registration and access granting of an OAuth\n// client.\nexport function oauthFlow (cozy, storage, clientParams, onRegistered) {\n let tryCount = 0\n\n function clearAndRetry (err) {\n if (tryCount++ > 0) {\n throw err\n }\n return storage.clear().then(() =>\n oauthFlow(cozy, storage, clientParams, onRegistered))\n }\n\n function registerNewClient () {\n return storage.clear()\n .then(() => registerClient(cozy, clientParams))\n .then((client) => {\n const {url, state} = getAuthCodeURL(cozy, client, clientParams.scopes)\n return storage.save(StateKey, {client, url, state})\n })\n }\n\n return Promise.all([\n storage.load(CredsKey),\n storage.load(StateKey)\n ])\n .then(([credentials, storedState]) => {\n // If credentials are cached we re-fetch the registered client with the\n // said token. Fetching the client, if the token is outdated we should try\n // the token is refreshed.\n if (credentials) {\n let oldClient, token\n try {\n oldClient = new Client(credentials.client)\n token = new AccessToken(credentials.token)\n } catch (err) {\n // bad cache, we should clear and retry the process\n return clearAndRetry(err)\n }\n return getClient(cozy, oldClient)\n .then((client) => ({client, token}))\n .catch((err) => {\n // If we fall into an error while fetching the client (because of a\n // bad connectivity for instance), we do not bail the whole process\n // since the client should be able to continue with the persisted\n // client and token.\n //\n // If it is an explicit Unauthorized error though, we bail, clear th\n // cache and retry.\n if (FetchError.isUnauthorized(err)) {\n throw err\n }\n return { client: oldClient, token }\n })\n }\n\n // Otherwise register a new client if necessary (ie. no client is stored)\n // and call the onRegistered callback to wait for the user to grant the\n // access. Finally fetches to access token on success.\n let statePromise\n if (!storedState) {\n statePromise = registerNewClient()\n } else {\n statePromise = Promise.resolve(storedState)\n }\n\n let client, state, token\n return statePromise\n .then((data) => {\n client = data.client\n state = data.state\n return Promise.resolve(onRegistered(client, data.url))\n })\n .then((pageURL) => getAccessToken(cozy, client, state, pageURL))\n .then((t) => { token = t })\n .then(() => storage.delete(StateKey))\n .then(() => ({client, token}))\n })\n .then(\n (creds) => storage.save(CredsKey, creds),\n (err) => {\n if (FetchError.isUnauthorized(err)) {\n return clearAndRetry(err)\n } else {\n throw err\n }\n })\n}\n\n// retrieveToken perform a request on the access_token entrypoint in order to\n// fetch a token.\nfunction retrieveToken (cozy, client, token, query) {\n if (!(client instanceof Client)) {\n client = new Client(client)\n }\n if (!client.isRegistered()) {\n return Promise.reject(new Error('Client not registered'))\n }\n const body = encodeQuery(Object.assign({}, query, {\n 'client_id': client.clientID,\n 'client_secret': client.clientSecret\n }))\n return cozyFetchJSON(cozy, 'POST', '/auth/access_token', body, {\n disableAuth: (token === null),\n manualAuthCredentials: { client, token },\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' }\n })\n .then((data) => new AccessToken(data))\n}\n\n// getGrantCodeFromPageURL extract the state and access_code query parameters\n// from the given url\nfunction getGrantCodeFromPageURL (pageURL = '') {\n if (pageURL === '' && typeof window !== 'undefined') {\n pageURL = window.location.href\n }\n const queries = decodeQuery(pageURL)\n if (!queries.hasOwnProperty('state')) {\n return null\n }\n return {\n state: queries['state'],\n code: queries['access_code']\n }\n}\n\n// generateRandomState will try to generate a 128bits random value from a secure\n// pseudo random generator. It will fallback on Math.random if it cannot find\n// such generator.\nfunction generateRandomState () {\n let buffer\n if (typeof window !== 'undefined' &&\n typeof window.crypto !== 'undefined' &&\n typeof window.crypto.getRandomValues === 'function') {\n buffer = new Uint8Array(StateSize)\n window.crypto.getRandomValues(buffer)\n } else {\n try {\n buffer = require('crypto').randomBytes(StateSize)\n } catch (e) {}\n }\n if (!buffer) {\n buffer = new Array(StateSize)\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] = Math.floor((Math.random() * 255))\n }\n }\n return btoa(String.fromCharCode.apply(null, buffer))\n .replace(/=+$/, '')\n .replace(/\\//g, '_')\n .replace(/\\+/g, '-')\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/auth_v3.js","/* global fetch */\nimport {refreshToken, AccessToken} from './auth_v3'\nimport {retry} from './utils'\nimport jsonapi from './jsonapi'\n\nexport function cozyFetch (cozy, path, options = {}) {\n return cozy.fullpath(path).then((fullpath) => {\n let resp\n if (options.disableAuth) {\n resp = fetch(fullpath, options)\n } else if (options.manualAuthCredentials) {\n resp = cozyFetchWithAuth(cozy, fullpath, options, options.manualAuthCredentials)\n } else {\n resp = cozy.authorize().then((credentials) =>\n cozyFetchWithAuth(cozy, fullpath, options, credentials))\n }\n return resp.then(handleResponse)\n })\n}\n\nfunction cozyFetchWithAuth (cozy, fullpath, options, credentials) {\n if (credentials) {\n options.headers = options.headers || {}\n options.headers['Authorization'] = credentials.token.toAuthHeader()\n }\n\n // the option credentials:include tells fetch to include the cookies in the\n // request even for cross-origin requests\n options.credentials = 'include'\n\n return Promise.all([\n cozy.isV2(),\n fetch(fullpath, options)\n ]).then(([isV2, res]) => {\n if (res.status !== 401 || isV2 || !credentials) {\n return res\n }\n // we try to refresh the token only for OAuth, ie, the client defined\n // and the token is an instance of AccessToken.\n const { client, token } = credentials\n if (!client || !(token instanceof AccessToken)) {\n return res\n }\n return retry(() => refreshToken(cozy, client, token), 3)()\n .then((newToken) => cozy.saveCredentials(client, newToken))\n .then((credentials) => cozyFetchWithAuth(cozy, fullpath, options, credentials))\n })\n}\n\nexport function cozyFetchJSON (cozy, method, path, body, options = {}) {\n options.method = method\n\n const headers = options.headers = options.headers || {}\n\n headers['Accept'] = 'application/json'\n\n if (method !== 'GET' && method !== 'HEAD' && body !== undefined) {\n if (headers['Content-Type']) {\n options.body = body\n } else {\n headers['Content-Type'] = 'application/json'\n options.body = JSON.stringify(body)\n }\n }\n\n return cozyFetch(cozy, path, options)\n .then(handleJSONResponse)\n}\n\nfunction handleResponse (res) {\n if (res.ok) {\n return res\n }\n let data\n const contentType = res.headers.get('content-type')\n if (contentType && contentType.indexOf('json') >= 0) {\n data = res.json()\n } else {\n data = res.text()\n }\n return data.then(err => {\n throw new FetchError(res, err)\n })\n}\n\nfunction handleJSONResponse (res) {\n const contentType = res.headers.get('content-type')\n if (!contentType || contentType.indexOf('json') < 0) {\n return res.text((data) => {\n throw new FetchError(res, new Error('Response is not JSON: ' + data))\n })\n }\n\n const json = res.json()\n if (contentType.indexOf('application/vnd.api+json') === 0) {\n return json.then(jsonapi)\n } else {\n return json\n }\n}\n\nexport class FetchError {\n constructor (res, reason) {\n this.response = res\n this.url = res.url\n this.status = res.status\n this.reason = reason\n }\n\n isUnauthorized () {\n return this.status === 401\n }\n}\n\nFetchError.isUnauthorized = function (err) {\n return (err instanceof FetchError && err.isUnauthorized())\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/fetch.js","function indexKey (doc) {\n return doc.type + '/' + doc.id\n}\n\nfunction findByRef (resources, ref) {\n return resources[indexKey(ref)]\n}\n\nfunction handleResource (rawResource, resources, links) {\n let resource = {\n _id: rawResource.id,\n _type: rawResource.type,\n _rev: (rawResource.meta && rawResource.meta.rev),\n links: Object.assign({}, rawResource.links, links),\n attributes: rawResource.attributes,\n relations: (name) => {\n let rels = rawResource.relationships[name]\n if (rels === undefined || rels.data === undefined) return undefined\n if (rels.data === null) return null\n if (!Array.isArray(rels.data)) return findByRef(resources, rels.data)\n return rels.data.map(ref => findByRef(resources, ref))\n }\n }\n\n resources[indexKey(rawResource)] = resource\n\n return resource\n}\n\nfunction handleTopLevel (doc, resources = {}) {\n // build an index of included resource by Type & ID\n const included = doc.included\n\n if (Array.isArray(included)) {\n included.forEach((r) => handleResource(r, resources, doc.links))\n }\n\n if (Array.isArray(doc.data)) {\n return doc.data.map((r) => handleResource(r, resources, doc.links))\n } else {\n return handleResource(doc.data, resources, doc.links)\n }\n}\n\nexport default handleTopLevel\n\n\n\n// WEBPACK FOOTER //\n// ./src/jsonapi.js","import {createPath} from './utils'\nimport {normalizeDoctype} from './doctypes'\nimport {cozyFetchJSON} from './fetch'\n\nconst NOREV = 'stack-v2-no-rev'\n\nexport function create (cozy, doctype, attributes) {\n return cozy.isV2().then((isV2) => {\n doctype = normalizeDoctype(cozy, isV2, doctype)\n if (isV2) {\n attributes.docType = doctype\n }\n const path = createPath(cozy, isV2, doctype)\n return cozyFetchJSON(cozy, 'POST', path, attributes).then((resp) => {\n if (isV2) {\n return find(cozy, doctype, resp._id)\n } else {\n return resp.data\n }\n })\n })\n}\n\nexport function find (cozy, doctype, id) {\n return cozy.isV2().then((isV2) => {\n doctype = normalizeDoctype(cozy, isV2, doctype)\n\n if (!id) {\n return Promise.reject(new Error('Missing id parameter'))\n }\n\n const path = createPath(cozy, isV2, doctype, id)\n return cozyFetchJSON(cozy, 'GET', path).then((resp) => {\n if (isV2) {\n return Object.assign(resp, {_rev: NOREV})\n } else {\n return resp\n }\n })\n })\n}\n\nexport function update (cozy, doctype, doc, changes) {\n return cozy.isV2().then((isV2) => {\n doctype = normalizeDoctype(cozy, isV2, doctype)\n const {_id, _rev} = doc\n\n if (!_id) {\n return Promise.reject(new Error('Missing _id field in passed document'))\n }\n\n if (!isV2 && !_rev) {\n return Promise.reject(new Error('Missing _rev field in passed document'))\n }\n\n if (isV2) {\n changes = Object.assign({ _id }, changes)\n } else {\n changes = Object.assign({ _id, _rev }, changes)\n }\n\n const path = createPath(cozy, isV2, doctype, _id)\n return cozyFetchJSON(cozy, 'PUT', path, changes).then((resp) => {\n if (isV2) {\n return find(cozy, doctype, _id)\n } else {\n return resp.data\n }\n })\n })\n}\n\nexport function updateAttributes (cozy, doctype, _id, changes, tries = 3) {\n return cozy.isV2().then((isV2) => {\n doctype = normalizeDoctype(cozy, isV2, doctype)\n return find(cozy, doctype, _id)\n .then((doc) => {\n return update(cozy, doctype, doc, Object.assign({ _id }, doc, changes))\n })\n .catch((err) => {\n if (tries > 0) {\n return updateAttributes(cozy, doctype, _id, changes, tries - 1)\n } else {\n throw err\n }\n })\n })\n}\n\nexport function _delete (cozy, doctype, doc) {\n return cozy.isV2().then((isV2) => {\n doctype = normalizeDoctype(cozy, isV2, doctype)\n const {_id, _rev} = doc\n\n if (!_id) {\n return Promise.reject(new Error('Missing _id field in passed document'))\n }\n\n if (!isV2 && !_rev) {\n return Promise.reject(new Error('Missing _rev field in passed document'))\n }\n\n const query = isV2 ? null : { rev: _rev }\n const path = createPath(cozy, isV2, doctype, _id, query)\n return cozyFetchJSON(cozy, 'DELETE', path).then((resp) => {\n if (isV2) {\n return {id: _id, rev: NOREV}\n } else {\n return resp\n }\n })\n })\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/crud.js","import {warn} from './utils'\n\nexport const DOCTYPE_FILES = 'io.cozy.files'\n\nconst KNOWN_DOCTYPES = {\n 'files': DOCTYPE_FILES,\n 'folder': DOCTYPE_FILES,\n 'contact': 'io.cozy.contacts',\n 'event': 'io.cozy.events',\n 'track': 'io.cozy.labs.music.track',\n 'playlist': 'io.cozy.labs.music.playlist'\n}\n\nconst REVERSE_KNOWN = {}\nObject.keys(KNOWN_DOCTYPES).forEach(k => {\n REVERSE_KNOWN[KNOWN_DOCTYPES[k]] = k\n})\n\nexport function normalizeDoctype (cozy, isV2, doctype) {\n let isQualified = doctype.indexOf('.') !== -1\n if (isV2 && isQualified) {\n let known = REVERSE_KNOWN[doctype]\n if (known) return known\n return doctype.replace(/\\./g, '-')\n }\n if (!isV2 && !isQualified) {\n let known = KNOWN_DOCTYPES[doctype]\n if (known) {\n warn('you are using a non-qualified doctype ' + doctype + ' assumed to be ' + known)\n return known\n }\n throw new Error('Doctype ' + doctype + ' should be qualified.')\n }\n return doctype\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/doctypes.js","import {warn, createPath} from './utils'\nimport {normalizeDoctype} from './doctypes'\nimport {cozyFetchJSON} from './fetch'\n\nexport function defineIndex (cozy, doctype, fields) {\n return cozy.isV2().then((isV2) => {\n doctype = normalizeDoctype(cozy, isV2, doctype)\n if (!Array.isArray(fields) || fields.length === 0) {\n throw new Error('defineIndex fields should be a non-empty array')\n }\n if (isV2) {\n return defineIndexV2(cozy, doctype, fields)\n } else {\n return defineIndexV3(cozy, doctype, fields)\n }\n })\n}\n\nexport function query (cozy, indexRef, options) {\n return cozy.isV2().then((isV2) => {\n if (!indexRef) {\n throw new Error('query should be passed the indexRef')\n }\n if (isV2) {\n return queryV2(cozy, indexRef, options)\n } else {\n return queryV3(cozy, indexRef, options)\n }\n })\n}\n\n// Internals\n\nconst VALUEOPERATORS = ['$eq', '$gt', '$gte', '$lt', '$lte']\nconst LOGICOPERATORS = ['$or', '$and', '$not']\n\n/* eslint-disable */\nconst MAP_TEMPLATE = (function (doc) {\n if (doc.docType.toLowerCase() === 'DOCTYPEPLACEHOLDER'){\n emit(FIELDSPLACEHOLDER, doc)\n }\n}).toString().replace(/ /g, '').replace(/\\n/g, '')\nconst COUCHDB_INFINITY = {\"\\uFFFF\": \"\\uFFFF\"}\nconst COUCHDB_LOWEST = null\n/* eslint-enable */\n\n// defineIndexV2 is equivalent to defineIndex but only works for V2.\n// It transforms the index fields into a map reduce view.\nfunction defineIndexV2 (cozy, doctype, fields) {\n let indexName = 'by' + fields.map(capitalize).join('')\n let indexDefinition = { map: makeMapFunction(doctype, fields), reduce: '_count' }\n let path = `/request/${doctype}/${indexName}/`\n return cozyFetchJSON(cozy, 'PUT', path, indexDefinition)\n .then(() => ({ doctype: doctype, type: 'mapreduce', name: indexName, fields: fields }))\n}\n\n// defineIndexV2 is equivalent to defineIndex but only works for V2.\n// It transforms the index fields into a map reduce view.\nfunction defineIndexV3 (cozy, doctype, fields) {\n let path = createPath(cozy, false, doctype, '_index')\n let indexDefinition = {'index': {fields}}\n return cozyFetchJSON(cozy, 'POST', path, indexDefinition)\n .then((response) => ({ doctype: doctype, type: 'mango', name: response.id, fields: fields }))\n}\n\n// queryV2 is equivalent to query but only works for V2.\n// It transforms the query into a _views call using makeMapReduceQuery\nfunction queryV2 (cozy, indexRef, options) {\n if (indexRef.type !== 'mapreduce') {\n throw new Error('query indexRef should be the return value of defineIndexV2')\n }\n if (options.fields) {\n warn('query fields will be ignored on v2')\n }\n\n let path = `/request/${indexRef.doctype}/${indexRef.name}/`\n let opts = makeMapReduceQuery(indexRef, options)\n return cozyFetchJSON(cozy, 'POST', path, opts)\n .then((response) => response.map(r => r.value))\n}\n\n// queryV3 is equivalent to query but only works for V3\nfunction queryV3 (cozy, indexRef, options) {\n if (indexRef.type !== 'mango') {\n throw new Error('indexRef should be the return value of defineIndexV3')\n }\n\n let opts = {\n use_index: indexRef.name,\n fields: options.fields,\n selector: options.selector,\n limit: options.limit,\n since: options.since\n }\n\n if (options.descending) {\n opts.sort = indexRef.fields.map(f => ({ [f]: 'desc' }))\n }\n\n let path = createPath(cozy, false, indexRef.doctype, '_find')\n return cozyFetchJSON(cozy, 'POST', path, opts)\n .then((response) => response.docs)\n}\n\n// misc\nfunction capitalize (name) {\n return name.charAt(0).toUpperCase() + name.slice(1)\n}\n\nfunction makeMapFunction (doctype, fields) {\n fields = '[' + fields.map(name => 'doc.' + name).join(',') + ']'\n\n return MAP_TEMPLATE.replace('DOCTYPEPLACEHOLDER', doctype.toLowerCase())\n .replace('FIELDSPLACEHOLDER', fields)\n}\n\n// parseSelector takes a mango selector and returns it as an array of filter\n// a filter is [path, operator, value] array\n// a path is an array of field names\n// This function is only exported so it can be unit tested.\n// Example :\n// parseSelector({\"test\":{\"deep\": {\"$gt\": 3}}})\n// [[['test', 'deep'], '$gt', 3 ]]\nexport function parseSelector (selector, path = [], operator = '$eq') {\n if ((typeof selector) !== 'object') {\n return [[path, operator, selector]]\n }\n\n let keys = Object.keys(selector)\n if (keys.length === 0) {\n throw new Error('empty selector')\n } else {\n return keys.reduce(function (acc, k) {\n if (LOGICOPERATORS.indexOf(k) !== -1) {\n throw new Error('cozy-client-js does not support mango logic ops')\n } else if (VALUEOPERATORS.indexOf(k) !== -1) {\n return acc.concat(parseSelector(selector[k], path, k))\n } else {\n return acc.concat(parseSelector(selector[k], path.concat(k), '$eq'))\n }\n }, [])\n }\n}\n\n// normalizeSelector takes a mango selector and returns it as an object\n// normalized.\n// This function is only exported so it can be unit tested.\n// Example :\n// parseSelector({\"test\":{\"deep\": {\"$gt\": 3}}})\n// {\"test.deep\": {\"$gt\": 3}}\nexport function normalizeSelector (selector) {\n var filters = parseSelector(selector)\n return filters.reduce(function (acc, filter) {\n let [path, op, value] = filter\n let field = path.join('.')\n acc[field] = acc[field] || {}\n acc[field][op] = value\n return acc\n }, {})\n}\n\n// applySelector takes the normalized selector for the current field\n// and append the proper values to opts.startkey, opts.endkey\nfunction applySelector (selector, opts) {\n let value = selector['$eq']\n let lower = COUCHDB_LOWEST\n let upper = COUCHDB_INFINITY\n let inclusiveEnd\n\n if (value) {\n opts.startkey.push(value)\n opts.endkey.push(value)\n return false\n }\n\n value = selector['$gt']\n if (value) {\n throw new Error('operator $gt (strict greater than) not supported')\n }\n\n value = selector['$gte']\n if (value) {\n lower = value\n }\n\n value = selector['$lte']\n if (value) {\n upper = value\n inclusiveEnd = true\n }\n\n value = selector['$lt']\n if (value) {\n upper = value\n inclusiveEnd = false\n }\n\n opts.startkey.push(lower)\n opts.endkey.push(upper)\n if (inclusiveEnd !== undefined) opts.inclusive_end = inclusiveEnd\n return true\n}\n\n// makeMapReduceQuery takes a mango query and generate _views call parameters\n// to obtain same results depending on fields in the passed indexRef.\nexport function makeMapReduceQuery (indexRef, query) {\n let mrquery = {\n startkey: [],\n endkey: [],\n reduce: false\n }\n let firstFreeValueField = null\n let normalizedSelector = normalizeSelector(query.selector)\n\n indexRef.fields.forEach(function (field) {\n let selector = normalizedSelector[field]\n\n if (selector && firstFreeValueField != null) {\n throw new Error('Selector on field ' + field + ', but not on ' + firstFreeValueField + ' which is higher in index fields.')\n } else if (selector) {\n selector.used = true\n let isFreeValue = applySelector(selector, mrquery)\n if (isFreeValue) firstFreeValueField = field\n } else if (firstFreeValueField == null) {\n firstFreeValueField = field\n mrquery.endkey.push(COUCHDB_INFINITY)\n }\n })\n\n Object.keys(normalizedSelector).forEach(function (field) {\n if (!normalizedSelector[field].used) {\n throw new Error('Cant apply selector on ' + field + ', it is not in index')\n }\n })\n\n if (query.descending) {\n mrquery = {\n descending: true,\n reduce: false,\n startkey: mrquery.endkey,\n endkey: mrquery.startkey,\n inclusive_end: mrquery.inclusive_end\n }\n }\n\n return mrquery\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/mango.js","/* global Blob, File */\nimport {cozyFetch, cozyFetchJSON} from './fetch'\nimport jsonapi from './jsonapi'\nimport { DOCTYPE_FILES } from './doctypes'\n\nconst contentTypeOctetStream = 'application/octet-stream'\n\nfunction doUpload (cozy, data, method, path, options) {\n if (!data) {\n throw new Error('missing data argument')\n }\n\n // transform any ArrayBufferView to ArrayBuffer\n if (data.buffer && data.buffer instanceof ArrayBuffer) {\n data = data.buffer\n }\n\n const isBuffer = (typeof ArrayBuffer !== 'undefined' && data instanceof ArrayBuffer)\n const isFile = (typeof File !== 'undefined' && data instanceof File)\n const isBlob = (typeof Blob !== 'undefined' && data instanceof Blob)\n const isStream = (data.readable === true && typeof data.pipe === 'function')\n const isString = (typeof data === 'string')\n\n if (!isBuffer && !isFile && !isBlob && !isStream && !isString) {\n throw new Error('invalid data type')\n }\n\n let {contentType, lastModifiedDate} = options || {}\n if (!contentType) {\n if (isBuffer) {\n contentType = contentTypeOctetStream\n } else if (isFile) {\n contentType = data.type || contentTypeOctetStream\n if (!lastModifiedDate) {\n lastModifiedDate = data.lastModifiedDate\n }\n } else if (isBlob) {\n contentType = contentTypeOctetStream\n } else if (isStream) {\n contentType = contentTypeOctetStream\n } else if (typeof data === 'string') {\n contentType = 'text/plain'\n }\n }\n\n if (lastModifiedDate && typeof lastModifiedDate === 'string') {\n lastModifiedDate = new Date(lastModifiedDate)\n }\n\n return cozyFetch(cozy, path, {\n method: method,\n headers: {\n 'Content-Type': contentType,\n 'Date': lastModifiedDate ? lastModifiedDate.toGMTString() : ''\n },\n body: data\n })\n .then((res) => {\n const json = res.json()\n if (!res.ok) {\n return json.then(err => { throw err })\n } else {\n return json.then(jsonapi)\n }\n })\n}\n\nexport function create (cozy, data, options) {\n let {name, dirID} = options || {}\n\n // handle case where data is a file and contains the name\n if (!name && typeof data.name === 'string') {\n name = data.name\n }\n\n if (typeof name !== 'string' || name === '') {\n throw new Error('missing name argument')\n }\n\n const path = `/files/${encodeURIComponent(dirID || '')}`\n const query = `?Name=${encodeURIComponent(name)}&Type=file`\n return doUpload(cozy, data, 'POST', `${path}${query}`, options)\n}\n\nexport function createDirectory (cozy, options) {\n let {name, dirID, lastModifiedDate} = options || {}\n\n if (typeof name !== 'string' || name === '') {\n throw new Error('missing name argument')\n }\n\n if (lastModifiedDate && typeof lastModifiedDate === 'string') {\n lastModifiedDate = new Date(lastModifiedDate)\n }\n\n const path = `/files/${encodeURIComponent(dirID || '')}`\n const query = `?Name=${encodeURIComponent(name)}&Type=directory`\n return cozyFetchJSON(cozy, 'POST', `${path}${query}`, undefined, {\n headers: {\n 'Date': lastModifiedDate ? lastModifiedDate.toGMTString() : ''\n }\n })\n}\n\nexport function updateById (cozy, id, data, options) {\n return doUpload(cozy, data, 'PUT', `/files/${encodeURIComponent(id)}`, options)\n}\n\nexport function updateAttributesById (cozy, id, attrs) {\n if (!attrs || typeof attrs !== 'object') {\n throw new Error('missing attrs argument')\n }\n\n const body = { data: { attributes: attrs } }\n return cozyFetchJSON(cozy, 'PATCH',\n `/files/${encodeURIComponent(id)}`, body)\n}\n\nexport function updateAttributesByPath (cozy, path, attrs) {\n if (!attrs || typeof attrs !== 'object') {\n throw new Error('missing attrs argument')\n }\n\n const body = { data: { attributes: attrs } }\n return cozyFetchJSON(cozy, 'PATCH',\n `/files/metadata?Path=${encodeURIComponent(path)}`, body)\n}\n\nexport function trashById (cozy, id) {\n if (typeof id !== 'string' || id === '') {\n throw new Error('missing id argument')\n }\n return cozyFetchJSON(cozy, 'DELETE', `/files/${encodeURIComponent(id)}`)\n}\n\nexport function statById (cozy, id, offline = true) {\n if (offline && cozy.offline.hasDatabase(DOCTYPE_FILES)) {\n let db = cozy.offline.getDatabase(DOCTYPE_FILES)\n return Promise.all([\n db.get(id),\n db.find({selector: {'dir_id': id}})\n ]).then(([doc, children]) => {\n children = children.docs.map(doc => {\n return addIsDir(toJsonApi(cozy, doc))\n })\n return addIsDir(toJsonApi(cozy, doc, children))\n })\n }\n return cozyFetchJSON(cozy, 'GET', `/files/${encodeURIComponent(id)}`)\n .then(addIsDir)\n}\n\nexport function statByPath (cozy, path) {\n return cozyFetchJSON(cozy, 'GET', `/files/metadata?Path=${encodeURIComponent(path)}`)\n .then(addIsDir)\n}\n\nexport function downloadById (cozy, id) {\n return cozyFetch(cozy, `/files/download/${encodeURIComponent(id)}`)\n}\n\nexport function downloadByPath (cozy, path) {\n return cozyFetch(cozy, `/files/download?Path=${encodeURIComponent(path)}`)\n}\n\nfunction extractResponseLinkRelated (res) {\n let href = res.links && res.links.related\n if (!href) throw new Error('No related link in server response')\n return href\n}\n\nexport function getDowloadLink (cozy, path) {\n return cozyFetchJSON(cozy, 'POST', `/files/downloads?Path=${encodeURIComponent(path)}`)\n .then(extractResponseLinkRelated)\n}\n\nexport function getArchiveLink (cozy, paths, name = 'files') {\n const archive = {\n type: 'io.cozy.archives',\n attributes: {\n name: name,\n files: paths\n }\n }\n return cozyFetchJSON(cozy, 'POST', `/files/archive`, {data: archive})\n .then(extractResponseLinkRelated)\n}\n\nexport function listTrash (cozy) {\n return cozyFetchJSON(cozy, 'GET', `/files/trash`)\n}\n\nexport function clearTrash (cozy) {\n return cozyFetchJSON(cozy, 'DELETE', `/files/trash`)\n}\n\nexport function restoreById (cozy, id) {\n return cozyFetchJSON(cozy, 'POST', `/files/trash/${encodeURIComponent(id)}`)\n}\n\nexport function destroyById (cozy, id) {\n return cozyFetchJSON(cozy, 'DELETE', `/files/trash/${encodeURIComponent(id)}`)\n}\n\nfunction addIsDir (obj) {\n obj.isDir = obj.attributes.type === 'directory'\n return obj\n}\n\nfunction toJsonApi (cozy, doc, contents = []) {\n let clone = JSON.parse(JSON.stringify(doc))\n delete clone._id\n delete clone._rev\n return {\n _id: doc._id,\n _rev: doc._rev,\n _type: DOCTYPE_FILES,\n attributes: clone,\n relations: (name) => {\n if (name === 'contents') {\n return contents\n }\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/files.js","import PouchDB from 'pouchdb'\nimport pouchdbFind from 'pouchdb-find'\nimport { DOCTYPE_FILES } from './doctypes'\n\nlet pluginLoaded = false\n\nexport function init (cozy, { options = {}, doctypes = [], timer = false }) {\n for (let doctype of doctypes) {\n createDatabase(cozy, doctype, options)\n }\n if (timer) { startAllSync(cozy, timer) }\n}\n\nexport function createDatabase (cozy, doctype, options = {}, timer = false) {\n if (!pluginLoaded) {\n PouchDB.plugin(pouchdbFind)\n pluginLoaded = true\n }\n cozy._offline = cozy._offline || []\n cozy._offline[doctype] = cozy._offline[doctype] || {}\n let offline = cozy._offline[doctype]\n if (offline && offline.database) { return offline.database }\n offline.database = new PouchDB(doctype, options)\n offline.timer = timer\n offline.autoSync = null\n if (timer) { startSync(cozy, doctype, timer) }\n createIndexes(cozy, offline.database, doctype)\n return offline.database\n}\n\nexport function hasDatabase (cozy, doctype) {\n return cozy._offline !== null &&\n doctype in cozy._offline &&\n cozy._offline[doctype].database !== undefined\n}\n\nexport function getDatabase (cozy, doctype) {\n if (hasDatabase(cozy, doctype)) {\n return cozy._offline[doctype].database\n }\n return\n}\n\nexport function destroyDatabase (cozy, doctype) {\n if (hasDatabase(cozy, doctype)) {\n stopSync(cozy, doctype)\n getDatabase(cozy, doctype).destroy()\n delete getDatabase(cozy, doctype)\n }\n}\n\nexport function getDoctypes (cozy) {\n if (cozy._offline === null) { return [] }\n return Object.keys(cozy._offline)\n}\n\n//\n// SYNC\n//\n\nexport function startAllSync (cozy, timer) {\n if (timer) {\n const doctypes = getDoctypes(cozy)\n doctypes.forEach((doctype) => {\n startSync(cozy, doctype, timer)\n })\n }\n}\n\nexport function stopAllSync (cozy) {\n const doctypes = getDoctypes(cozy)\n doctypes.forEach((doctype) => {\n stopSync(cozy, doctype)\n })\n}\n\nexport function startSync (cozy, doctype, timer) {\n // TODO: add timer limitation for not flooding Gozy\n if (hasDatabase(cozy, doctype)) {\n if (hasSync(cozy, doctype)) {\n if (timer === cozy._offline[doctype].timer) { return }\n stopSync(cozy, doctype)\n }\n let offline = cozy._offline[doctype]\n offline.timer = timer\n offline.autoSync = setInterval(() => {\n if (offline.replicate === undefined) {\n offline.replicate = replicateFromCozy(cozy, doctype)\n .on('complete', (info) => {\n delete offline.replicate\n })\n // TODO: add replicationToCozy\n }\n }, timer * 1000)\n }\n}\n\nexport function hasSync (cozy, doctype) {\n return cozy._offline !== null &&\n doctype in cozy._offline &&\n cozy._offline[doctype].autoSync !== null\n}\n\nexport function stopSync (cozy, doctype) {\n if (hasSync(cozy, doctype)) {\n let offline = cozy._offline[doctype]\n if (offline.replication) { offline.replication.cancel() }\n clearInterval(offline.autoSync)\n delete offline.autoSync\n }\n}\n\nexport function replicateFromCozy (cozy, doctype, options = {}, events = {}) {\n if (hasDatabase(cozy, doctype)) {\n if (options.live === true) {\n throw new Error('You can\\'t use `live` option with Cozy couchdb.')\n }\n const url = cozy._url + '/data/' + doctype\n let db = getDatabase(cozy, doctype)\n let replication = db.replicate.from(url, options)\n const eventNames = [\n 'change', 'paused', 'active', 'denied', 'complete', 'error'\n ]\n for (let eventName of eventNames) {\n if (typeof events[eventName] === 'function') {\n replication.on(eventName, events[eventName])\n }\n }\n return replication\n } else {\n throw new Error(`You should add this doctype: ${doctype} to offline.`)\n }\n}\n\nfunction createIndexes (cozy, db, doctype) {\n if (doctype === DOCTYPE_FILES) {\n db.createIndex({index: {fields: ['dir_id']}})\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/offline.js","module.exports = __WEBPACK_EXTERNAL_MODULE_15__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"pouchdb\"\n// module id = 15\n// module chunks = 0","module.exports = __WEBPACK_EXTERNAL_MODULE_16__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"pouchdb-find\"\n// module id = 16\n// module chunks = 0","import {cozyFetchJSON} from './fetch'\n\nexport function diskUsage (cozy) {\n return cozyFetchJSON(cozy, 'GET', `/settings/disk-usage`)\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/settings.js","import {cozyFetchJSON} from './fetch'\nimport { DOCTYPE_FILES } from './doctypes'\n\nexport function addReferencedFiles (cozy, doc, ids) {\n if (!doc) throw new Error('missing doc argument')\n if (!Array.isArray(ids)) ids = [ids]\n\n const refs = ids.map((id) => ({type: DOCTYPE_FILES, id: id}))\n\n return cozyFetchJSON(cozy, 'POST', makeReferencesPath(doc), {data: refs})\n}\n\nexport function listReferencedFiles (cozy, doc) {\n if (!doc) throw new Error('missing doc argument')\n return cozyFetchJSON(cozy, 'GET', makeReferencesPath(doc))\n .then((files) => files.map((file) => file._id))\n}\n\nfunction makeReferencesPath (doc) {\n const type = encodeURIComponent(doc._type)\n const id = encodeURIComponent(doc._id)\n return `/data/${type}/${id}/relationships/references`\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/relations.js"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap e09aa131c81d409f335c","webpack:///./~/isomorphic-fetch/fetch-npm-browserify.js","webpack:///./~/whatwg-fetch/fetch.js","webpack:///./src/index.js","webpack:///./src/utils.js","webpack:///./src/auth_storage.js","webpack:///./src/auth_v2.js","webpack:///./src/auth_v3.js","webpack:///./src/fetch.js","webpack:///./src/jsonapi.js","webpack:///./src/data.js","webpack:///./src/doctypes.js","webpack:///./src/mango.js","webpack:///./src/files.js","webpack:///./src/offline.js","webpack:///external \"pouchdb\"","webpack:///external \"pouchdb-find\"","webpack:///./src/settings.js","webpack:///./src/relations.js"],"names":["auth","data","mango","files","offline","settings","relations","AppTokenV3","AppToken","AccessTokenV3","AccessToken","ClientV3","Client","AuthNone","AuthRunning","AuthError","AuthOK","defaultClientParams","softwareID","dataProto","create","find","update","delete","_delete","updateAttributes","changesFeed","defineIndex","query","addReferencedFiles","listReferencedFiles","destroy","authProto","registerClient","updateClient","unregisterClient","getClient","getAuthCodeURL","getAccessToken","refreshToken","filesProto","createDirectory","updateById","updateAttributesById","updateAttributesByPath","trashById","statById","statByPath","downloadById","downloadByPath","getDowloadLink","getArchiveLink","listTrash","clearTrash","restoreById","destroyById","offlineProto","init","getDoctypes","createDatabase","hasDatabase","getDatabase","destroyDatabase","replicateFromCozy","hasSync","startAllSync","startSync","stopAllSync","stopSync","settingsProto","diskUsage","options","AppTokenV2","LocalStorage","MemoryStorage","_inited","_oauth","_token","_authstate","_authcreds","_storage","_version","_offline","token","oauth","Error","storage","_clientParams","Object","assign","clientParams","_onRegistered","onRegistered","nopOnRegistered","url","cozyURL","length","slice","_url","disablePromises","addToProto","state","isV2","then","oauthFlow","Promise","resolve","client","creds","save","CredsKey","path","pathprefix","fetch","res","ok","json","status","datasystem","undefined","protoify","context","fn","prototyped","args","ctx","obj","proto","attr","module","exports","unpromiser","isPromise","sleep","retry","getFuzzedDelay","getBackedoffDelay","createPath","encodeQuery","decodeQuery","warn","FuzzFactor","value","apply","l","cb","err","time","setTimeout","count","delay","doTry","catch","retryDelay","fuzzingFactor","Math","random","retryCount","pow","cozy","doctype","id","route","encodeURIComponent","q","qname","queryIndex","indexOf","queries","fragIndex","queryStr","parts","split","i","pair","decodeURIComponent","hasOwnProperty","warned","text","push","console","prefix","window","localStorage","key","setItem","JSON","stringify","item","getItem","parse","removeItem","hash","deleted","getAppToken","V2TOKEN_ABORT_TIMEOUT","reject","parent","postMessage","origin","location","intent","action","timeout","receiver","event","appName","e","removeEventListener","clearTimeout","addEventListener","opts","btoa","StateSize","StateKey","clientID","client_id","clientSecret","client_secret","registrationAccessToken","registration_access_token","redirect_uris","redirectURI","software_id","softwareVersion","software_version","clientName","client_name","clientKind","client_kind","clientURI","client_uri","logoURI","logo_uri","policyURI","policy_uri","tokenType","token_type","accessToken","access_token","refresh_token","scope","isRegistered","toRegisterJSON","disableAuth","resetSecret","createClient","manualAuthCredentials","oldClient","newClient","shouldPassRegistration","scopes","generateRandomState","join","pageURL","grantQueries","getGrantCodeFromPageURL","retrieveToken","code","tryCount","clearAndRetry","clear","registerNewClient","all","load","credentials","storedState","isUnauthorized","statePromise","t","body","headers","href","buffer","crypto","getRandomValues","Uint8Array","require","randomBytes","Array","floor","String","fromCharCode","replace","cozyFetch","cozyFetchJSON","fullpath","resp","cozyFetchWithAuth","authorize","handleResponse","toAuthHeader","newToken","saveCredentials","method","handleJSONResponse","contentType","get","FetchError","reason","response","indexKey","doc","type","findByRef","resources","ref","handleResource","rawResource","links","resource","_id","_type","_rev","meta","rev","attributes","name","rels","relationships","isArray","map","handleTopLevel","included","forEach","r","NOREV","docType","changes","tries","normalizeDoctype","DOCTYPE_FILES","KNOWN_DOCTYPES","REVERSE_KNOWN","keys","k","isQualified","known","parseSelector","normalizeSelector","makeMapReduceQuery","fields","defineIndexV2","defineIndexV3","indexRef","queryV2","queryV3","VALUEOPERATORS","LOGICOPERATORS","MAP_TEMPLATE","toLowerCase","emit","FIELDSPLACEHOLDER","toString","COUCHDB_INFINITY","COUCHDB_LOWEST","indexName","capitalize","indexDefinition","makeMapFunction","reduce","use_index","selector","limit","since","descending","sort","f","docs","charAt","toUpperCase","operator","acc","concat","filters","filter","op","field","applySelector","lower","upper","inclusiveEnd","startkey","endkey","inclusive_end","mrquery","firstFreeValueField","normalizedSelector","used","isFreeValue","contentTypeOctetStream","doUpload","ArrayBuffer","isBuffer","isFile","File","isBlob","Blob","isStream","readable","pipe","isString","lastModifiedDate","Date","toGMTString","dirID","attrs","db","children","addIsDir","toJsonApi","extractResponseLinkRelated","related","paths","archive","isDir","contents","clone","replicateFromCozyWithAuth","pluginLoaded","doctypes","timer","plugin","database","autoSync","createIndexes","setInterval","replicate","on","info","replication","cancel","clearInterval","events","live","basic","toBasicAuth","from","eventNames","eventName","createIndex","index","ids","refs","makeReferencesPath","file"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACLA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP,MAAK;AACL;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yCAAwC,mBAAmB;AAC3D;AACA;;AAEA;AACA;AACA,mCAAkC,oBAAoB;AACtD;AACA;;AAEA;AACA;AACA,yCAAwC,4BAA4B;AACpE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA,wDAAuD;AACvD,UAAS;AACT;AACA,UAAS;AACT,+EAA8E;AAC9E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA8B,uBAAuB;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA,wCAAuC,0BAA0B;AACjE;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,gCAA+B,0BAA0B,eAAe;AACxE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;A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","file":"cozy-client.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"pouchdb\"), require(\"pouchdb-find\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"client\", [\"pouchdb\", \"pouchdb-find\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"client\"] = factory(require(\"pouchdb\"), require(\"pouchdb-find\"));\n\telse\n\t\troot[\"cozy\"] = root[\"cozy\"] || {}, root[\"cozy\"][\"client\"] = factory(root[\"pouchdb\"], root[\"pouchdb-find\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_15__, __WEBPACK_EXTERNAL_MODULE_16__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \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 e09aa131c81d409f335c","// the whatwg-fetch polyfill installs the fetch() function\n// on the global object (window or self)\n//\n// Return that as the export for use in Webpack, Browserify etc.\nrequire('whatwg-fetch');\nmodule.exports = self.fetch.bind(self);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/isomorphic-fetch/fetch-npm-browserify.js\n// module id = 1\n// module chunks = 0","(function(self) {\n 'use strict';\n\n if (self.fetch) {\n return\n }\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob: 'FileReader' in self && 'Blob' in self && (function() {\n try {\n new Blob()\n return true\n } catch(e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isDataView = function(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n var isArrayBufferView = ArrayBuffer.isView || function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue+','+value : value\n }\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n }\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n }\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n }\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n }\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n }\n\n Headers.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) { items.push(name) })\n return iteratorFor(items)\n }\n\n Headers.prototype.values = function() {\n var items = []\n this.forEach(function(value) { items.push(value) })\n return iteratorFor(items)\n }\n\n Headers.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) { items.push([name, value]) })\n return iteratorFor(items)\n }\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n throw new Error('unsupported BodyInit type')\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return (methods.indexOf(upcased) > -1) ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {}\n var body = options.body\n\n if (typeof input === 'string') {\n this.url = input\n } else {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n }\n\n this.credentials = options.credentials || this.credentials || 'omit'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n }\n\n Request.prototype.clone = function() {\n return new Request(this, { body: this._bodyInit })\n }\n\n function decode(body) {\n var form = new FormData()\n body.trim().split('&').forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers()\n rawHeaders.split('\\r\\n').forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n }\n\n Body.call(Request.prototype)\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = 'status' in options ? options.status : 200\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : 'OK'\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n }\n\n Body.call(Response.prototype)\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n }\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n }\n\n var redirectStatuses = [301, 302, 303, 307, 308]\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n }\n\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n\n self.fetch = function(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n var xhr = new XMLHttpRequest()\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n }\n self.fetch.polyfill = true\n})(typeof self !== 'undefined' ? self : this);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/whatwg-fetch/fetch.js\n// module id = 2\n// module chunks = 0","/* global fetch */\n\nimport {unpromiser, retry, warn} from './utils'\nimport {LocalStorage, MemoryStorage} from './auth_storage'\nimport {AppToken as AppTokenV2, getAppToken as getAppTokenV2} from './auth_v2'\nimport * as auth from './auth_v3'\nimport * as data from './data'\nimport * as mango from './mango'\nimport * as files from './files'\nimport * as offline from './offline'\nimport * as settings from './settings'\nimport * as relations from './relations'\n\nconst {\n AppToken: AppTokenV3,\n AccessToken: AccessTokenV3,\n Client: ClientV3\n} = auth\n\nconst AuthNone = 0\nconst AuthRunning = 1\nconst AuthError = 2\nconst AuthOK = 3\n\nconst defaultClientParams = {\n softwareID: 'github.com/cozy/cozy-client-js'\n}\n\nconst dataProto = {\n create: data.create,\n find: data.find,\n update: data.update,\n delete: data._delete,\n updateAttributes: data.updateAttributes,\n changesFeed: data.changesFeed,\n defineIndex: mango.defineIndex,\n query: mango.query,\n addReferencedFiles: relations.addReferencedFiles,\n listReferencedFiles: relations.listReferencedFiles,\n destroy: function (...args) {\n warn('destroy is deprecated, use cozy.data.delete instead.')\n return data._delete(...args)\n }\n}\n\nconst authProto = {\n registerClient: auth.registerClient,\n updateClient: auth.updateClient,\n unregisterClient: auth.unregisterClient,\n getClient: auth.getClient,\n getAuthCodeURL: auth.getAuthCodeURL,\n getAccessToken: auth.getAccessToken,\n refreshToken: auth.refreshToken\n}\n\nconst filesProto = {\n create: files.create,\n createDirectory: files.createDirectory,\n updateById: files.updateById,\n updateAttributesById: files.updateAttributesById,\n updateAttributesByPath: files.updateAttributesByPath,\n trashById: files.trashById,\n statById: files.statById,\n statByPath: files.statByPath,\n downloadById: files.downloadById,\n downloadByPath: files.downloadByPath,\n getDowloadLink: files.getDowloadLink,\n getArchiveLink: files.getArchiveLink,\n listTrash: files.listTrash,\n clearTrash: files.clearTrash,\n restoreById: files.restoreById,\n destroyById: files.destroyById\n}\n\nconst offlineProto = {\n init: offline.init,\n getDoctypes: offline.getDoctypes,\n // database\n createDatabase: offline.createDatabase,\n hasDatabase: offline.hasDatabase,\n getDatabase: offline.getDatabase,\n destroyDatabase: offline.destroyDatabase,\n // replication\n replicateFromCozy: offline.replicateFromCozy,\n hasSync: offline.hasSync,\n startAllSync: offline.startAllSync,\n startSync: offline.startSync,\n stopAllSync: offline.stopAllSync,\n stopSync: offline.stopSync\n}\n\nconst settingsProto = {\n diskUsage: settings.diskUsage\n}\n\nclass Client {\n constructor (options) {\n this.data = {}\n this.files = {}\n this.offline = {}\n this.settings = {}\n this.auth = {\n Client: ClientV3,\n AccessToken: AccessTokenV3,\n AppToken: AppTokenV3,\n AppTokenV2: AppTokenV2,\n LocalStorage: LocalStorage,\n MemoryStorage: MemoryStorage\n }\n this._inited = false\n if (options) {\n this.init(options)\n }\n }\n\n init (options = {}) {\n this._inited = true\n this._oauth = false // is oauth activated or not\n this._token = null // application token\n this._authstate = AuthNone\n this._authcreds = null\n this._storage = null\n this._version = null\n this._offline = null\n\n const token = options.token\n const oauth = options.oauth\n if (token && oauth) {\n throw new Error('Cannot specify an application token with a oauth activated')\n }\n\n if (token) {\n this._token = new AppTokenV3({ token })\n } else if (oauth) {\n this._oauth = true\n this._storage = oauth.storage\n this._clientParams = Object.assign({}, defaultClientParams, oauth.clientParams)\n this._onRegistered = oauth.onRegistered || nopOnRegistered\n }\n\n let url = options.cozyURL || ''\n while (url[url.length - 1] === '/') {\n url = url.slice(0, -1)\n }\n\n this._url = url\n\n const disablePromises = !!options.disablePromises\n addToProto(this, this.data, dataProto, disablePromises)\n addToProto(this, this.auth, authProto, disablePromises)\n addToProto(this, this.files, filesProto, disablePromises)\n addToProto(this, this.offline, offlineProto, disablePromises)\n addToProto(this, this.settings, settingsProto, disablePromises)\n\n if (options.offline) {\n this.offline.init(options.offline)\n }\n }\n\n authorize () {\n const state = this._authstate\n if (state === AuthOK || state === AuthRunning) {\n return this._authcreds\n }\n\n this._authstate = AuthRunning\n this._authcreds = this.isV2().then((isV2) => {\n if (isV2 && this._oauth) {\n throw new Error('OAuth is not supported on the V2 stack')\n }\n if (this._oauth) {\n return auth.oauthFlow(\n this,\n this._storage,\n this._clientParams,\n this._onRegistered\n )\n }\n // we expect to be on a client side application running in a browser\n // with cookie-based authentication.\n if (isV2) {\n return getAppTokenV2()\n } else if (this._token) {\n return Promise.resolve({client: null, token: this._token})\n } else {\n throw new Error('Missing application token')\n }\n })\n\n this._authcreds.then(\n () => { this._authstate = AuthOK },\n () => { this._authstate = AuthError })\n\n return this._authcreds\n }\n\n saveCredentials (client, token) {\n const creds = {client, token}\n if (!this._storage || this._authstate === AuthRunning) {\n return Promise.resolve(creds)\n }\n this._storage.save(auth.CredsKey, creds)\n this._authcreds = Promise.resolve(creds)\n return this._authcreds\n }\n\n fullpath (path) {\n return this.isV2().then((isV2) => {\n const pathprefix = isV2 ? '/ds-api' : ''\n return this._url + pathprefix + path\n })\n }\n\n isV2 () {\n if (!this._version) {\n this._version = retry(() => fetch(`${this._url}/status/`), 3)()\n .then((res) => {\n if (!res.ok) {\n throw new Error('Could not fetch cozy status')\n } else {\n return res.json()\n }\n })\n .then((status) => status.datasystem !== undefined)\n }\n return this._version\n }\n}\n\nfunction nopOnRegistered () {\n throw new Error('Missing onRegistered callback')\n}\n\nfunction protoify (context, fn) {\n return function prototyped (...args) {\n return fn(context, ...args)\n }\n}\n\nfunction addToProto (ctx, obj, proto, disablePromises) {\n for (const attr in proto) {\n let fn = protoify(ctx, proto[attr])\n if (disablePromises) {\n fn = unpromiser(fn)\n }\n obj[attr] = fn\n }\n}\n\nmodule.exports = new Client()\nObject.assign(module.exports, {Client, LocalStorage, MemoryStorage})\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","const FuzzFactor = 0.3\n\nexport function unpromiser (fn) {\n return function (...args) {\n const value = fn.apply(this, args)\n if (!isPromise(value)) {\n return value\n }\n const l = args.length\n if (l === 0 || typeof args[l - 1] !== 'function') {\n return\n }\n const cb = args[l - 1]\n value.then(\n (res) => cb(null, res),\n (err) => cb(err, null)\n )\n return\n }\n}\n\nexport function isPromise (value) {\n return !!value && typeof value.then === 'function'\n}\n\nexport function sleep (time, args) {\n return new Promise((resolve) => {\n setTimeout(resolve, time, args)\n })\n}\n\nexport function retry (fn, count, delay = 300) {\n return function doTry (...args) {\n return fn(...args).catch((err) => {\n if (--count < 0) {\n throw err\n }\n return sleep(getBackedoffDelay(delay, count))\n .then(() => doTry(...args))\n })\n }\n}\n\nexport function getFuzzedDelay (retryDelay) {\n const fuzzingFactor = ((Math.random() * 2) - 1) * FuzzFactor\n return retryDelay * (1.0 + fuzzingFactor)\n}\n\nexport function getBackedoffDelay (retryDelay, retryCount = 1) {\n return getFuzzedDelay(retryDelay * Math.pow(2, retryCount - 1))\n}\n\nexport function createPath (cozy, isV2, doctype, id = '', query = null) {\n let route = '/data/'\n if (!isV2) {\n route += `${encodeURIComponent(doctype)}/`\n }\n if (id !== '') {\n route += encodeURIComponent(id)\n }\n const q = encodeQuery(query)\n if (q !== '') {\n route += '?' + q\n }\n return route\n}\n\nexport function encodeQuery (query) {\n if (!query) {\n return ''\n }\n let q = ''\n for (const qname in query) {\n if (q !== '') {\n q += '&'\n }\n q += `${encodeURIComponent(qname)}=${encodeURIComponent(query[qname])}`\n }\n return q\n}\n\nexport function decodeQuery (url) {\n let queryIndex = url.indexOf('?')\n if (queryIndex < 0) {\n queryIndex = url.length\n }\n const queries = {}\n let fragIndex = url.indexOf('#')\n if (fragIndex < 0) {\n fragIndex = url.length\n }\n if (fragIndex < queryIndex) {\n return queries\n }\n const queryStr = url.slice(queryIndex + 1, fragIndex)\n if (queryStr === '') {\n return queries\n }\n const parts = queryStr.split('&')\n for (let i = 0; i < parts.length; i++) {\n let pair = parts[i].split('=')\n if (pair.length === 0 || pair[0] === '') {\n continue\n }\n const qname = decodeURIComponent(pair[0])\n if (queries.hasOwnProperty(qname)) {\n continue\n }\n if (pair.length === 1) {\n queries[qname] = true\n } else if (pair.length === 2) {\n queries[qname] = decodeURIComponent(pair[1])\n } else {\n throw new Error('Malformed URL')\n }\n }\n return queries\n}\n\nconst warned = []\nexport function warn (text) {\n if (warned.indexOf(text) === -1) {\n warned.push(text)\n console.warn('cozy-client-js', text)\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils.js","export class LocalStorage {\n constructor (storage, prefix) {\n if (!storage && typeof window !== 'undefined') {\n storage = window.localStorage\n }\n this.storage = storage\n this.prefix = prefix || 'cozy:oauth:'\n }\n\n save (key, value) {\n return new Promise(resolve => {\n this.storage.setItem(this.prefix + key, JSON.stringify(value))\n resolve(value)\n })\n }\n\n load (key) {\n return new Promise(resolve => {\n const item = this.storage.getItem(this.prefix + key)\n if (!item) {\n resolve()\n } else {\n resolve(JSON.parse(item))\n }\n })\n }\n\n delete (key) {\n return new Promise(resolve => resolve(\n this.storage.removeItem(this.prefix + key)))\n }\n\n clear () {\n return new Promise(resolve => {\n const storage = this.storage\n for (let i = 0; i < storage.length; i++) {\n const key = storage.key(i)\n if (key.indexOf(this.prefix) === 0) {\n storage.removeItem(key)\n }\n }\n resolve()\n })\n }\n}\n\nexport class MemoryStorage {\n constructor () {\n this.hash = Object.create(null)\n }\n\n save (key, value) {\n this.hash[key] = value\n return Promise.resolve(value)\n }\n\n load (key) {\n return Promise.resolve(this.hash[key])\n }\n\n delete (key) {\n const deleted = delete this.hash[key]\n return Promise.resolve(deleted)\n }\n\n clear () {\n this.hash = Object.create(null)\n return Promise.resolve()\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/auth_storage.js","/* global btoa */\nconst V2TOKEN_ABORT_TIMEOUT = 3000\n\nexport function getAppToken () {\n return new Promise(function (resolve, reject) {\n if (typeof window === 'undefined') {\n return reject(new Error('getV2Token should be used in browser'))\n } else if (!window.parent) {\n return reject(new Error('getV2Token should be used in iframe'))\n } else if (!window.parent.postMessage) {\n return reject(new Error('getV2Token should be used in modern browser'))\n }\n const origin = window.location.origin\n const intent = {action: 'getToken'}\n let timeout = null\n const receiver = function (event) {\n let token\n try {\n token = new AppToken({\n appName: event.data.appName,\n token: event.data.token\n })\n } catch (e) {\n reject(e)\n return\n }\n window.removeEventListener('message', receiver)\n clearTimeout(timeout)\n resolve({ client: null, token })\n }\n window.addEventListener('message', receiver, false)\n window.parent.postMessage(intent, origin)\n timeout = setTimeout(() => {\n reject(new Error('No response from parent iframe after 3s'))\n }, V2TOKEN_ABORT_TIMEOUT)\n })\n}\n\nexport class AppToken {\n constructor (opts) {\n this.appName = opts.appName || ''\n this.token = opts.token || ''\n }\n\n toAuthHeader () {\n return 'Basic ' + btoa(`${this.appName}:${this.token}`)\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/auth_v2.js","/* global btoa */\nimport {encodeQuery, decodeQuery} from './utils'\nimport {cozyFetchJSON, FetchError} from './fetch'\n\nconst StateSize = 16\n\nexport const CredsKey = 'creds'\nexport const StateKey = 'state'\n\nexport class Client {\n constructor (opts) {\n this.clientID = opts.clientID || opts.client_id || ''\n this.clientSecret = opts.clientSecret || opts.client_secret || ''\n this.registrationAccessToken = opts.registrationAccessToken || opts.registration_access_token || ''\n\n if (opts.redirect_uris) {\n this.redirectURI = opts.redirect_uris[0] || ''\n } else {\n this.redirectURI = opts.redirectURI || ''\n }\n\n this.softwareID = opts.softwareID || opts.software_id || ''\n this.softwareVersion = opts.softwareVersion || opts.software_version || ''\n this.clientName = opts.clientName || opts.client_name || ''\n this.clientKind = opts.clientKind || opts.client_kind || ''\n this.clientURI = opts.clientURI || opts.client_uri || ''\n\n this.logoURI = opts.logoURI || opts.logo_uri || ''\n this.policyURI = opts.policyURI || opts.policy_uri || ''\n\n if (!this.registrationAccessToken) {\n if (this.redirectURI === '') {\n throw new Error('Missing redirectURI field')\n }\n if (this.softwareID === '') {\n throw new Error('Missing softwareID field')\n }\n if (this.clientName === '') {\n throw new Error('Missing clientName field')\n }\n }\n }\n\n isRegistered () {\n return this.clientID !== ''\n }\n\n toRegisterJSON () {\n return {\n redirect_uris: [this.redirectURI],\n software_id: this.softwareID,\n software_version: this.softwareVersion,\n client_name: this.clientName,\n client_kind: this.clientKind,\n client_uri: this.clientURI,\n logo_uri: this.logoURI,\n policy_uri: this.policyURI\n }\n }\n\n toAuthHeader () {\n return 'Bearer ' + this.registrationAccessToken\n }\n}\n\nexport class AccessToken {\n constructor (opts) {\n this.tokenType = opts.tokenType || opts.token_type\n this.accessToken = opts.accessToken || opts.access_token\n this.refreshToken = opts.refreshToken || opts.refresh_token\n this.scope = opts.scope\n }\n\n toAuthHeader () {\n return 'Bearer ' + this.accessToken\n }\n\n toBasicAuth () {\n return `user:${this.accessToken}@`\n }\n}\n\nexport class AppToken {\n constructor (opts) {\n this.token = opts.token || ''\n }\n\n toAuthHeader () {\n return 'Bearer ' + this.token\n }\n\n toBasicAuth () {\n return `user:${this.token}@`\n }\n}\n\nexport function registerClient (cozy, client) {\n if (!(client instanceof Client)) {\n client = new Client(client)\n }\n if (client.isRegistered()) {\n return Promise.reject(new Error('Client already registered'))\n }\n return cozyFetchJSON(cozy, 'POST', '/auth/register', client.toRegisterJSON(), {\n disableAuth: true\n })\n .then((data) => new Client(data))\n}\n\nexport function updateClient (cozy, client, resetSecret = false) {\n if (!(client instanceof Client)) {\n client = new Client(client)\n }\n if (!client.isRegistered()) {\n return Promise.reject(new Error('Client not registered'))\n }\n let data = client.toRegisterJSON()\n data.client_id = client.clientID\n if (resetSecret) data.client_secret = client.clientSecret\n\n return cozyFetchJSON(cozy, 'PUT', `/auth/register/${client.clientID}`, data)\n .then((data) => createClient(data, client))\n}\n\nexport function unregisterClient (cozy, client) {\n return cozyFetchJSON(cozy, 'DELETE', `/auth/register/${client.clientID}`)\n}\n\n// getClient will retrive the registered client informations from the server.\nexport function getClient (cozy, client) {\n if (!(client instanceof Client)) {\n client = new Client(client)\n }\n if (!client.isRegistered()) {\n return Promise.reject(new Error('Client not registered'))\n }\n return cozyFetchJSON(cozy, 'GET', `/auth/register/${client.clientID}`, null, {\n manualAuthCredentials: {\n client: client,\n token: client\n }\n })\n .then((data) => createClient(data, client))\n}\n\n// createClient returns a new Client instance given on object containing the\n// data of the client, from the API, and an old instance of the client.\nfunction createClient (data, oldClient) {\n const newClient = new Client(data)\n // we need to keep track of the registrationAccessToken since it is send\n // only on registration. The GET /auth/register/:client-id endpoint does\n // not return this token.\n const shouldPassRegistration = (\n !!oldClient &&\n oldClient.registrationAccessToken !== '' &&\n newClient.registrationAccessToken === ''\n )\n if (shouldPassRegistration) {\n newClient.registrationAccessToken = oldClient.registrationAccessToken\n }\n return newClient\n}\n\n// getAuthCodeURL returns a pair {authURL,state} given a registered client. The\n// state should be stored in order to be checked against on the user validation\n// phase.\nexport function getAuthCodeURL (cozy, client, scopes = []) {\n if (!(client instanceof Client)) {\n client = new Client(client)\n }\n if (!client.isRegistered()) {\n throw new Error('Client not registered')\n }\n const state = generateRandomState()\n const query = {\n 'client_id': client.clientID,\n 'redirect_uri': client.redirectURI,\n 'state': state,\n 'response_type': 'code',\n 'scope': scopes.join(' ')\n }\n return {\n url: cozy._url + `/auth/authorize?${encodeQuery(query)}`,\n state: state\n }\n}\n\n// getAccessToken perform a request on the access_token entrypoint with the\n// authorization_code grant type in order to generate a new access token for a\n// newly registered client.\n//\n// This method extracts the access code and state from the given URL. By\n// default it uses window.location.href. Also, it checks the given state with\n// the one specified in the URL query parameter to prevent CSRF attacks.\nexport function getAccessToken (cozy, client, state, pageURL = '') {\n if (!state) {\n return Promise.reject(new Error('Missing state value'))\n }\n const grantQueries = getGrantCodeFromPageURL(pageURL)\n if (grantQueries === null) {\n return Promise.reject(new Error('Missing states from current URL'))\n }\n if (state !== grantQueries.state) {\n return Promise.reject(new Error('Given state does not match url query state'))\n }\n return retrieveToken(cozy, client, null, {\n 'grant_type': 'authorization_code',\n 'code': grantQueries.code\n })\n}\n\n// refreshToken perform a request on the access_token entrypoint with the\n// refresh_token grant type in order to refresh the given token.\nexport function refreshToken (cozy, client, token) {\n return retrieveToken(cozy, client, token, {\n 'grant_type': 'refresh_token',\n 'code': token.refreshToken\n })\n}\n\n// oauthFlow performs the stateful registration and access granting of an OAuth\n// client.\nexport function oauthFlow (cozy, storage, clientParams, onRegistered) {\n let tryCount = 0\n\n function clearAndRetry (err) {\n if (tryCount++ > 0) {\n throw err\n }\n return storage.clear().then(() =>\n oauthFlow(cozy, storage, clientParams, onRegistered))\n }\n\n function registerNewClient () {\n return storage.clear()\n .then(() => registerClient(cozy, clientParams))\n .then((client) => {\n const {url, state} = getAuthCodeURL(cozy, client, clientParams.scopes)\n return storage.save(StateKey, {client, url, state})\n })\n }\n\n return Promise.all([\n storage.load(CredsKey),\n storage.load(StateKey)\n ])\n .then(([credentials, storedState]) => {\n // If credentials are cached we re-fetch the registered client with the\n // said token. Fetching the client, if the token is outdated we should try\n // the token is refreshed.\n if (credentials) {\n let oldClient, token\n try {\n oldClient = new Client(credentials.client)\n token = new AccessToken(credentials.token)\n } catch (err) {\n // bad cache, we should clear and retry the process\n return clearAndRetry(err)\n }\n return getClient(cozy, oldClient)\n .then((client) => ({client, token}))\n .catch((err) => {\n // If we fall into an error while fetching the client (because of a\n // bad connectivity for instance), we do not bail the whole process\n // since the client should be able to continue with the persisted\n // client and token.\n //\n // If it is an explicit Unauthorized error though, we bail, clear th\n // cache and retry.\n if (FetchError.isUnauthorized(err)) {\n throw err\n }\n return { client: oldClient, token }\n })\n }\n\n // Otherwise register a new client if necessary (ie. no client is stored)\n // and call the onRegistered callback to wait for the user to grant the\n // access. Finally fetches to access token on success.\n let statePromise\n if (!storedState) {\n statePromise = registerNewClient()\n } else {\n statePromise = Promise.resolve(storedState)\n }\n\n let client, state, token\n return statePromise\n .then((data) => {\n client = data.client\n state = data.state\n return Promise.resolve(onRegistered(client, data.url))\n })\n .then((pageURL) => getAccessToken(cozy, client, state, pageURL))\n .then((t) => { token = t })\n .then(() => storage.delete(StateKey))\n .then(() => ({client, token}))\n })\n .then(\n (creds) => storage.save(CredsKey, creds),\n (err) => {\n if (FetchError.isUnauthorized(err)) {\n return clearAndRetry(err)\n } else {\n throw err\n }\n })\n}\n\n// retrieveToken perform a request on the access_token entrypoint in order to\n// fetch a token.\nfunction retrieveToken (cozy, client, token, query) {\n if (!(client instanceof Client)) {\n client = new Client(client)\n }\n if (!client.isRegistered()) {\n return Promise.reject(new Error('Client not registered'))\n }\n const body = encodeQuery(Object.assign({}, query, {\n 'client_id': client.clientID,\n 'client_secret': client.clientSecret\n }))\n return cozyFetchJSON(cozy, 'POST', '/auth/access_token', body, {\n disableAuth: (token === null),\n manualAuthCredentials: { client, token },\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' }\n })\n .then((data) => new AccessToken(data))\n}\n\n// getGrantCodeFromPageURL extract the state and access_code query parameters\n// from the given url\nfunction getGrantCodeFromPageURL (pageURL = '') {\n if (pageURL === '' && typeof window !== 'undefined') {\n pageURL = window.location.href\n }\n const queries = decodeQuery(pageURL)\n if (!queries.hasOwnProperty('state')) {\n return null\n }\n return {\n state: queries['state'],\n code: queries['access_code']\n }\n}\n\n// generateRandomState will try to generate a 128bits random value from a secure\n// pseudo random generator. It will fallback on Math.random if it cannot find\n// such generator.\nfunction generateRandomState () {\n let buffer\n if (typeof window !== 'undefined' &&\n typeof window.crypto !== 'undefined' &&\n typeof window.crypto.getRandomValues === 'function') {\n buffer = new Uint8Array(StateSize)\n window.crypto.getRandomValues(buffer)\n } else {\n try {\n buffer = require('crypto').randomBytes(StateSize)\n } catch (e) {}\n }\n if (!buffer) {\n buffer = new Array(StateSize)\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] = Math.floor((Math.random() * 255))\n }\n }\n return btoa(String.fromCharCode.apply(null, buffer))\n .replace(/=+$/, '')\n .replace(/\\//g, '_')\n .replace(/\\+/g, '-')\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/auth_v3.js","/* global fetch */\nimport {refreshToken, AccessToken} from './auth_v3'\nimport {retry} from './utils'\nimport jsonapi from './jsonapi'\n\nexport function cozyFetch (cozy, path, options = {}) {\n return cozy.fullpath(path).then((fullpath) => {\n let resp\n if (options.disableAuth) {\n resp = fetch(fullpath, options)\n } else if (options.manualAuthCredentials) {\n resp = cozyFetchWithAuth(cozy, fullpath, options, options.manualAuthCredentials)\n } else {\n resp = cozy.authorize().then((credentials) =>\n cozyFetchWithAuth(cozy, fullpath, options, credentials))\n }\n return resp.then(handleResponse)\n })\n}\n\nfunction cozyFetchWithAuth (cozy, fullpath, options, credentials) {\n if (credentials) {\n options.headers = options.headers || {}\n options.headers['Authorization'] = credentials.token.toAuthHeader()\n }\n\n // the option credentials:include tells fetch to include the cookies in the\n // request even for cross-origin requests\n options.credentials = 'include'\n\n return Promise.all([\n cozy.isV2(),\n fetch(fullpath, options)\n ]).then(([isV2, res]) => {\n if (res.status !== 401 || isV2 || !credentials) {\n return res\n }\n // we try to refresh the token only for OAuth, ie, the client defined\n // and the token is an instance of AccessToken.\n const { client, token } = credentials\n if (!client || !(token instanceof AccessToken)) {\n return res\n }\n return retry(() => refreshToken(cozy, client, token), 3)()\n .then((newToken) => cozy.saveCredentials(client, newToken))\n .then((credentials) => cozyFetchWithAuth(cozy, fullpath, options, credentials))\n })\n}\n\nexport function cozyFetchJSON (cozy, method, path, body, options = {}) {\n options.method = method\n\n const headers = options.headers = options.headers || {}\n\n headers['Accept'] = 'application/json'\n\n if (method !== 'GET' && method !== 'HEAD' && body !== undefined) {\n if (headers['Content-Type']) {\n options.body = body\n } else {\n headers['Content-Type'] = 'application/json'\n options.body = JSON.stringify(body)\n }\n }\n\n return cozyFetch(cozy, path, options)\n .then(handleJSONResponse)\n}\n\nfunction handleResponse (res) {\n if (res.ok) {\n return res\n }\n let data\n const contentType = res.headers.get('content-type')\n if (contentType && contentType.indexOf('json') >= 0) {\n data = res.json()\n } else {\n data = res.text()\n }\n return data.then(err => {\n throw new FetchError(res, err)\n })\n}\n\nfunction handleJSONResponse (res) {\n const contentType = res.headers.get('content-type')\n if (!contentType || contentType.indexOf('json') < 0) {\n return res.text((data) => {\n throw new FetchError(res, new Error('Response is not JSON: ' + data))\n })\n }\n\n const json = res.json()\n if (contentType.indexOf('application/vnd.api+json') === 0) {\n return json.then(jsonapi)\n } else {\n return json\n }\n}\n\nexport class FetchError {\n constructor (res, reason) {\n this.response = res\n this.url = res.url\n this.status = res.status\n this.reason = reason\n }\n\n isUnauthorized () {\n return this.status === 401\n }\n}\n\nFetchError.isUnauthorized = function (err) {\n return (err instanceof FetchError && err.isUnauthorized())\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/fetch.js","function indexKey (doc) {\n return doc.type + '/' + doc.id\n}\n\nfunction findByRef (resources, ref) {\n return resources[indexKey(ref)]\n}\n\nfunction handleResource (rawResource, resources, links) {\n let resource = {\n _id: rawResource.id,\n _type: rawResource.type,\n _rev: (rawResource.meta && rawResource.meta.rev),\n links: Object.assign({}, rawResource.links, links),\n attributes: rawResource.attributes,\n relations: (name) => {\n let rels = rawResource.relationships[name]\n if (rels === undefined || rels.data === undefined) return undefined\n if (rels.data === null) return null\n if (!Array.isArray(rels.data)) return findByRef(resources, rels.data)\n return rels.data.map(ref => findByRef(resources, ref))\n }\n }\n\n resources[indexKey(rawResource)] = resource\n\n return resource\n}\n\nfunction handleTopLevel (doc, resources = {}) {\n // build an index of included resource by Type & ID\n const included = doc.included\n\n if (Array.isArray(included)) {\n included.forEach((r) => handleResource(r, resources, doc.links))\n }\n\n if (Array.isArray(doc.data)) {\n return doc.data.map((r) => handleResource(r, resources, doc.links))\n } else {\n return handleResource(doc.data, resources, doc.links)\n }\n}\n\nexport default handleTopLevel\n\n\n\n// WEBPACK FOOTER //\n// ./src/jsonapi.js","import {createPath} from './utils'\nimport {normalizeDoctype} from './doctypes'\nimport {cozyFetchJSON} from './fetch'\n\nconst NOREV = 'stack-v2-no-rev'\n\nexport function create (cozy, doctype, attributes) {\n return cozy.isV2().then((isV2) => {\n doctype = normalizeDoctype(cozy, isV2, doctype)\n if (isV2) {\n attributes.docType = doctype\n }\n const path = createPath(cozy, isV2, doctype)\n return cozyFetchJSON(cozy, 'POST', path, attributes).then((resp) => {\n if (isV2) {\n return find(cozy, doctype, resp._id)\n } else {\n return resp.data\n }\n })\n })\n}\n\nexport function find (cozy, doctype, id) {\n return cozy.isV2().then((isV2) => {\n doctype = normalizeDoctype(cozy, isV2, doctype)\n\n if (!id) {\n return Promise.reject(new Error('Missing id parameter'))\n }\n\n const path = createPath(cozy, isV2, doctype, id)\n return cozyFetchJSON(cozy, 'GET', path).then((resp) => {\n if (isV2) {\n return Object.assign(resp, {_rev: NOREV})\n } else {\n return resp\n }\n })\n })\n}\n\nexport function changesFeed (cozy, doctype, options) {\n return cozy.isV2().then((isV2) => {\n doctype = normalizeDoctype(cozy, isV2, doctype)\n const path = createPath(cozy, isV2, doctype, '_changes', options)\n return cozyFetchJSON(cozy, 'GET', path)\n })\n}\n\nexport function update (cozy, doctype, doc, changes) {\n return cozy.isV2().then((isV2) => {\n doctype = normalizeDoctype(cozy, isV2, doctype)\n const {_id, _rev} = doc\n\n if (!_id) {\n return Promise.reject(new Error('Missing _id field in passed document'))\n }\n\n if (!isV2 && !_rev) {\n return Promise.reject(new Error('Missing _rev field in passed document'))\n }\n\n if (isV2) {\n changes = Object.assign({ _id }, changes)\n } else {\n changes = Object.assign({ _id, _rev }, changes)\n }\n\n const path = createPath(cozy, isV2, doctype, _id)\n return cozyFetchJSON(cozy, 'PUT', path, changes).then((resp) => {\n if (isV2) {\n return find(cozy, doctype, _id)\n } else {\n return resp.data\n }\n })\n })\n}\n\nexport function updateAttributes (cozy, doctype, _id, changes, tries = 3) {\n return cozy.isV2().then((isV2) => {\n doctype = normalizeDoctype(cozy, isV2, doctype)\n return find(cozy, doctype, _id)\n .then((doc) => {\n return update(cozy, doctype, doc, Object.assign({ _id }, doc, changes))\n })\n .catch((err) => {\n if (tries > 0) {\n return updateAttributes(cozy, doctype, _id, changes, tries - 1)\n } else {\n throw err\n }\n })\n })\n}\n\nexport function _delete (cozy, doctype, doc) {\n return cozy.isV2().then((isV2) => {\n doctype = normalizeDoctype(cozy, isV2, doctype)\n const {_id, _rev} = doc\n\n if (!_id) {\n return Promise.reject(new Error('Missing _id field in passed document'))\n }\n\n if (!isV2 && !_rev) {\n return Promise.reject(new Error('Missing _rev field in passed document'))\n }\n\n const query = isV2 ? null : { rev: _rev }\n const path = createPath(cozy, isV2, doctype, _id, query)\n return cozyFetchJSON(cozy, 'DELETE', path).then((resp) => {\n if (isV2) {\n return {id: _id, rev: NOREV}\n } else {\n return resp\n }\n })\n })\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/data.js","import {warn} from './utils'\n\nexport const DOCTYPE_FILES = 'io.cozy.files'\n\nconst KNOWN_DOCTYPES = {\n 'files': DOCTYPE_FILES,\n 'folder': DOCTYPE_FILES,\n 'contact': 'io.cozy.contacts',\n 'event': 'io.cozy.events',\n 'track': 'io.cozy.labs.music.track',\n 'playlist': 'io.cozy.labs.music.playlist'\n}\n\nconst REVERSE_KNOWN = {}\nObject.keys(KNOWN_DOCTYPES).forEach(k => {\n REVERSE_KNOWN[KNOWN_DOCTYPES[k]] = k\n})\n\nexport function normalizeDoctype (cozy, isV2, doctype) {\n let isQualified = doctype.indexOf('.') !== -1\n if (isV2 && isQualified) {\n let known = REVERSE_KNOWN[doctype]\n if (known) return known\n return doctype.replace(/\\./g, '-')\n }\n if (!isV2 && !isQualified) {\n let known = KNOWN_DOCTYPES[doctype]\n if (known) {\n warn('you are using a non-qualified doctype ' + doctype + ' assumed to be ' + known)\n return known\n }\n throw new Error('Doctype ' + doctype + ' should be qualified.')\n }\n return doctype\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/doctypes.js","import {warn, createPath} from './utils'\nimport {normalizeDoctype} from './doctypes'\nimport {cozyFetchJSON} from './fetch'\n\nexport function defineIndex (cozy, doctype, fields) {\n return cozy.isV2().then((isV2) => {\n doctype = normalizeDoctype(cozy, isV2, doctype)\n if (!Array.isArray(fields) || fields.length === 0) {\n throw new Error('defineIndex fields should be a non-empty array')\n }\n if (isV2) {\n return defineIndexV2(cozy, doctype, fields)\n } else {\n return defineIndexV3(cozy, doctype, fields)\n }\n })\n}\n\nexport function query (cozy, indexRef, options) {\n return cozy.isV2().then((isV2) => {\n if (!indexRef) {\n throw new Error('query should be passed the indexRef')\n }\n if (isV2) {\n return queryV2(cozy, indexRef, options)\n } else {\n return queryV3(cozy, indexRef, options)\n }\n })\n}\n\n// Internals\n\nconst VALUEOPERATORS = ['$eq', '$gt', '$gte', '$lt', '$lte']\nconst LOGICOPERATORS = ['$or', '$and', '$not']\n\n/* eslint-disable */\nconst MAP_TEMPLATE = (function (doc) {\n if (doc.docType.toLowerCase() === 'DOCTYPEPLACEHOLDER'){\n emit(FIELDSPLACEHOLDER, doc)\n }\n}).toString().replace(/ /g, '').replace(/\\n/g, '')\nconst COUCHDB_INFINITY = {\"\\uFFFF\": \"\\uFFFF\"}\nconst COUCHDB_LOWEST = null\n/* eslint-enable */\n\n// defineIndexV2 is equivalent to defineIndex but only works for V2.\n// It transforms the index fields into a map reduce view.\nfunction defineIndexV2 (cozy, doctype, fields) {\n let indexName = 'by' + fields.map(capitalize).join('')\n let indexDefinition = { map: makeMapFunction(doctype, fields), reduce: '_count' }\n let path = `/request/${doctype}/${indexName}/`\n return cozyFetchJSON(cozy, 'PUT', path, indexDefinition)\n .then(() => ({ doctype: doctype, type: 'mapreduce', name: indexName, fields: fields }))\n}\n\n// defineIndexV2 is equivalent to defineIndex but only works for V2.\n// It transforms the index fields into a map reduce view.\nfunction defineIndexV3 (cozy, doctype, fields) {\n let path = createPath(cozy, false, doctype, '_index')\n let indexDefinition = {'index': {fields}}\n return cozyFetchJSON(cozy, 'POST', path, indexDefinition)\n .then((response) => ({ doctype: doctype, type: 'mango', name: response.id, fields: fields }))\n}\n\n// queryV2 is equivalent to query but only works for V2.\n// It transforms the query into a _views call using makeMapReduceQuery\nfunction queryV2 (cozy, indexRef, options) {\n if (indexRef.type !== 'mapreduce') {\n throw new Error('query indexRef should be the return value of defineIndexV2')\n }\n if (options.fields) {\n warn('query fields will be ignored on v2')\n }\n\n let path = `/request/${indexRef.doctype}/${indexRef.name}/`\n let opts = makeMapReduceQuery(indexRef, options)\n return cozyFetchJSON(cozy, 'POST', path, opts)\n .then((response) => response.map(r => r.value))\n}\n\n// queryV3 is equivalent to query but only works for V3\nfunction queryV3 (cozy, indexRef, options) {\n if (indexRef.type !== 'mango') {\n throw new Error('indexRef should be the return value of defineIndexV3')\n }\n\n let opts = {\n use_index: indexRef.name,\n fields: options.fields,\n selector: options.selector,\n limit: options.limit,\n since: options.since\n }\n\n if (options.descending) {\n opts.sort = indexRef.fields.map(f => ({ [f]: 'desc' }))\n }\n\n let path = createPath(cozy, false, indexRef.doctype, '_find')\n return cozyFetchJSON(cozy, 'POST', path, opts)\n .then((response) => response.docs)\n}\n\n// misc\nfunction capitalize (name) {\n return name.charAt(0).toUpperCase() + name.slice(1)\n}\n\nfunction makeMapFunction (doctype, fields) {\n fields = '[' + fields.map(name => 'doc.' + name).join(',') + ']'\n\n return MAP_TEMPLATE.replace('DOCTYPEPLACEHOLDER', doctype.toLowerCase())\n .replace('FIELDSPLACEHOLDER', fields)\n}\n\n// parseSelector takes a mango selector and returns it as an array of filter\n// a filter is [path, operator, value] array\n// a path is an array of field names\n// This function is only exported so it can be unit tested.\n// Example :\n// parseSelector({\"test\":{\"deep\": {\"$gt\": 3}}})\n// [[['test', 'deep'], '$gt', 3 ]]\nexport function parseSelector (selector, path = [], operator = '$eq') {\n if ((typeof selector) !== 'object') {\n return [[path, operator, selector]]\n }\n\n let keys = Object.keys(selector)\n if (keys.length === 0) {\n throw new Error('empty selector')\n } else {\n return keys.reduce(function (acc, k) {\n if (LOGICOPERATORS.indexOf(k) !== -1) {\n throw new Error('cozy-client-js does not support mango logic ops')\n } else if (VALUEOPERATORS.indexOf(k) !== -1) {\n return acc.concat(parseSelector(selector[k], path, k))\n } else {\n return acc.concat(parseSelector(selector[k], path.concat(k), '$eq'))\n }\n }, [])\n }\n}\n\n// normalizeSelector takes a mango selector and returns it as an object\n// normalized.\n// This function is only exported so it can be unit tested.\n// Example :\n// parseSelector({\"test\":{\"deep\": {\"$gt\": 3}}})\n// {\"test.deep\": {\"$gt\": 3}}\nexport function normalizeSelector (selector) {\n var filters = parseSelector(selector)\n return filters.reduce(function (acc, filter) {\n let [path, op, value] = filter\n let field = path.join('.')\n acc[field] = acc[field] || {}\n acc[field][op] = value\n return acc\n }, {})\n}\n\n// applySelector takes the normalized selector for the current field\n// and append the proper values to opts.startkey, opts.endkey\nfunction applySelector (selector, opts) {\n let value = selector['$eq']\n let lower = COUCHDB_LOWEST\n let upper = COUCHDB_INFINITY\n let inclusiveEnd\n\n if (value) {\n opts.startkey.push(value)\n opts.endkey.push(value)\n return false\n }\n\n value = selector['$gt']\n if (value) {\n throw new Error('operator $gt (strict greater than) not supported')\n }\n\n value = selector['$gte']\n if (value) {\n lower = value\n }\n\n value = selector['$lte']\n if (value) {\n upper = value\n inclusiveEnd = true\n }\n\n value = selector['$lt']\n if (value) {\n upper = value\n inclusiveEnd = false\n }\n\n opts.startkey.push(lower)\n opts.endkey.push(upper)\n if (inclusiveEnd !== undefined) opts.inclusive_end = inclusiveEnd\n return true\n}\n\n// makeMapReduceQuery takes a mango query and generate _views call parameters\n// to obtain same results depending on fields in the passed indexRef.\nexport function makeMapReduceQuery (indexRef, query) {\n let mrquery = {\n startkey: [],\n endkey: [],\n reduce: false\n }\n let firstFreeValueField = null\n let normalizedSelector = normalizeSelector(query.selector)\n\n indexRef.fields.forEach(function (field) {\n let selector = normalizedSelector[field]\n\n if (selector && firstFreeValueField != null) {\n throw new Error('Selector on field ' + field + ', but not on ' + firstFreeValueField + ' which is higher in index fields.')\n } else if (selector) {\n selector.used = true\n let isFreeValue = applySelector(selector, mrquery)\n if (isFreeValue) firstFreeValueField = field\n } else if (firstFreeValueField == null) {\n firstFreeValueField = field\n mrquery.endkey.push(COUCHDB_INFINITY)\n }\n })\n\n Object.keys(normalizedSelector).forEach(function (field) {\n if (!normalizedSelector[field].used) {\n throw new Error('Cant apply selector on ' + field + ', it is not in index')\n }\n })\n\n if (query.descending) {\n mrquery = {\n descending: true,\n reduce: false,\n startkey: mrquery.endkey,\n endkey: mrquery.startkey,\n inclusive_end: mrquery.inclusive_end\n }\n }\n\n return mrquery\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/mango.js","/* global Blob, File */\nimport {cozyFetch, cozyFetchJSON} from './fetch'\nimport jsonapi from './jsonapi'\nimport { DOCTYPE_FILES } from './doctypes'\n\nconst contentTypeOctetStream = 'application/octet-stream'\n\nfunction doUpload (cozy, data, method, path, options) {\n if (!data) {\n throw new Error('missing data argument')\n }\n\n // transform any ArrayBufferView to ArrayBuffer\n if (data.buffer && data.buffer instanceof ArrayBuffer) {\n data = data.buffer\n }\n\n const isBuffer = (typeof ArrayBuffer !== 'undefined' && data instanceof ArrayBuffer)\n const isFile = (typeof File !== 'undefined' && data instanceof File)\n const isBlob = (typeof Blob !== 'undefined' && data instanceof Blob)\n const isStream = (data.readable === true && typeof data.pipe === 'function')\n const isString = (typeof data === 'string')\n\n if (!isBuffer && !isFile && !isBlob && !isStream && !isString) {\n throw new Error('invalid data type')\n }\n\n let {contentType, lastModifiedDate} = options || {}\n if (!contentType) {\n if (isBuffer) {\n contentType = contentTypeOctetStream\n } else if (isFile) {\n contentType = data.type || contentTypeOctetStream\n if (!lastModifiedDate) {\n lastModifiedDate = data.lastModifiedDate\n }\n } else if (isBlob) {\n contentType = contentTypeOctetStream\n } else if (isStream) {\n contentType = contentTypeOctetStream\n } else if (typeof data === 'string') {\n contentType = 'text/plain'\n }\n }\n\n if (lastModifiedDate && typeof lastModifiedDate === 'string') {\n lastModifiedDate = new Date(lastModifiedDate)\n }\n\n return cozyFetch(cozy, path, {\n method: method,\n headers: {\n 'Content-Type': contentType,\n 'Date': lastModifiedDate ? lastModifiedDate.toGMTString() : ''\n },\n body: data\n })\n .then((res) => {\n const json = res.json()\n if (!res.ok) {\n return json.then(err => { throw err })\n } else {\n return json.then(jsonapi)\n }\n })\n}\n\nexport function create (cozy, data, options) {\n let {name, dirID} = options || {}\n\n // handle case where data is a file and contains the name\n if (!name && typeof data.name === 'string') {\n name = data.name\n }\n\n if (typeof name !== 'string' || name === '') {\n throw new Error('missing name argument')\n }\n\n const path = `/files/${encodeURIComponent(dirID || '')}`\n const query = `?Name=${encodeURIComponent(name)}&Type=file`\n return doUpload(cozy, data, 'POST', `${path}${query}`, options)\n}\n\nexport function createDirectory (cozy, options) {\n let {name, dirID, lastModifiedDate} = options || {}\n\n if (typeof name !== 'string' || name === '') {\n throw new Error('missing name argument')\n }\n\n if (lastModifiedDate && typeof lastModifiedDate === 'string') {\n lastModifiedDate = new Date(lastModifiedDate)\n }\n\n const path = `/files/${encodeURIComponent(dirID || '')}`\n const query = `?Name=${encodeURIComponent(name)}&Type=directory`\n return cozyFetchJSON(cozy, 'POST', `${path}${query}`, undefined, {\n headers: {\n 'Date': lastModifiedDate ? lastModifiedDate.toGMTString() : ''\n }\n })\n}\n\nexport function updateById (cozy, id, data, options) {\n return doUpload(cozy, data, 'PUT', `/files/${encodeURIComponent(id)}`, options)\n}\n\nexport function updateAttributesById (cozy, id, attrs) {\n if (!attrs || typeof attrs !== 'object') {\n throw new Error('missing attrs argument')\n }\n\n const body = { data: { attributes: attrs } }\n return cozyFetchJSON(cozy, 'PATCH',\n `/files/${encodeURIComponent(id)}`, body)\n}\n\nexport function updateAttributesByPath (cozy, path, attrs) {\n if (!attrs || typeof attrs !== 'object') {\n throw new Error('missing attrs argument')\n }\n\n const body = { data: { attributes: attrs } }\n return cozyFetchJSON(cozy, 'PATCH',\n `/files/metadata?Path=${encodeURIComponent(path)}`, body)\n}\n\nexport function trashById (cozy, id) {\n if (typeof id !== 'string' || id === '') {\n throw new Error('missing id argument')\n }\n return cozyFetchJSON(cozy, 'DELETE', `/files/${encodeURIComponent(id)}`)\n}\n\nexport function statById (cozy, id, offline = true) {\n if (offline && cozy.offline.hasDatabase(DOCTYPE_FILES)) {\n let db = cozy.offline.getDatabase(DOCTYPE_FILES)\n return Promise.all([\n db.get(id),\n db.find({selector: {'dir_id': id}})\n ]).then(([doc, children]) => {\n children = children.docs.map(doc => {\n return addIsDir(toJsonApi(cozy, doc))\n })\n return addIsDir(toJsonApi(cozy, doc, children))\n })\n }\n return cozyFetchJSON(cozy, 'GET', `/files/${encodeURIComponent(id)}`)\n .then(addIsDir)\n}\n\nexport function statByPath (cozy, path) {\n return cozyFetchJSON(cozy, 'GET', `/files/metadata?Path=${encodeURIComponent(path)}`)\n .then(addIsDir)\n}\n\nexport function downloadById (cozy, id) {\n return cozyFetch(cozy, `/files/download/${encodeURIComponent(id)}`)\n}\n\nexport function downloadByPath (cozy, path) {\n return cozyFetch(cozy, `/files/download?Path=${encodeURIComponent(path)}`)\n}\n\nfunction extractResponseLinkRelated (res) {\n let href = res.links && res.links.related\n if (!href) throw new Error('No related link in server response')\n return href\n}\n\nexport function getDowloadLink (cozy, path) {\n return cozyFetchJSON(cozy, 'POST', `/files/downloads?Path=${encodeURIComponent(path)}`)\n .then(extractResponseLinkRelated)\n}\n\nexport function getArchiveLink (cozy, paths, name = 'files') {\n const archive = {\n type: 'io.cozy.archives',\n attributes: {\n name: name,\n files: paths\n }\n }\n return cozyFetchJSON(cozy, 'POST', `/files/archive`, {data: archive})\n .then(extractResponseLinkRelated)\n}\n\nexport function listTrash (cozy) {\n return cozyFetchJSON(cozy, 'GET', `/files/trash`)\n}\n\nexport function clearTrash (cozy) {\n return cozyFetchJSON(cozy, 'DELETE', `/files/trash`)\n}\n\nexport function restoreById (cozy, id) {\n return cozyFetchJSON(cozy, 'POST', `/files/trash/${encodeURIComponent(id)}`)\n}\n\nexport function destroyById (cozy, id) {\n return cozyFetchJSON(cozy, 'DELETE', `/files/trash/${encodeURIComponent(id)}`)\n}\n\nfunction addIsDir (obj) {\n obj.isDir = obj.attributes.type === 'directory'\n return obj\n}\n\nfunction toJsonApi (cozy, doc, contents = []) {\n let clone = JSON.parse(JSON.stringify(doc))\n delete clone._id\n delete clone._rev\n return {\n _id: doc._id,\n _rev: doc._rev,\n _type: DOCTYPE_FILES,\n attributes: clone,\n relations: (name) => {\n if (name === 'contents') {\n return contents\n }\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/files.js","import PouchDB from 'pouchdb'\nimport pouchdbFind from 'pouchdb-find'\nimport { DOCTYPE_FILES } from './doctypes'\n\nlet pluginLoaded = false\n\nexport function init (cozy, { options = {}, doctypes = [], timer = false }) {\n for (let doctype of doctypes) {\n createDatabase(cozy, doctype, options)\n }\n if (timer) { startAllSync(cozy, timer) }\n}\n\nexport function createDatabase (cozy, doctype, options = {}, timer = false) {\n if (!pluginLoaded) {\n PouchDB.plugin(pouchdbFind)\n pluginLoaded = true\n }\n cozy._offline = cozy._offline || []\n cozy._offline[doctype] = cozy._offline[doctype] || {}\n let offline = cozy._offline[doctype]\n if (offline && offline.database) { return offline.database }\n offline.database = new PouchDB(doctype, options)\n offline.timer = timer\n offline.autoSync = null\n if (timer) { startSync(cozy, doctype, timer) }\n createIndexes(cozy, offline.database, doctype)\n return offline.database\n}\n\nexport function hasDatabase (cozy, doctype) {\n return cozy._offline !== null &&\n doctype in cozy._offline &&\n cozy._offline[doctype].database !== undefined\n}\n\nexport function getDatabase (cozy, doctype) {\n if (hasDatabase(cozy, doctype)) {\n return cozy._offline[doctype].database\n }\n return\n}\n\nexport function destroyDatabase (cozy, doctype) {\n if (hasDatabase(cozy, doctype)) {\n stopSync(cozy, doctype)\n getDatabase(cozy, doctype).destroy()\n delete getDatabase(cozy, doctype)\n }\n}\n\nexport function getDoctypes (cozy) {\n if (cozy._offline === null) { return [] }\n return Object.keys(cozy._offline)\n}\n\n//\n// SYNC\n//\n\nexport function startAllSync (cozy, timer) {\n if (timer) {\n const doctypes = getDoctypes(cozy)\n doctypes.forEach((doctype) => {\n startSync(cozy, doctype, timer)\n })\n }\n}\n\nexport function stopAllSync (cozy) {\n const doctypes = getDoctypes(cozy)\n doctypes.forEach((doctype) => {\n stopSync(cozy, doctype)\n })\n}\n\nexport function startSync (cozy, doctype, timer) {\n // TODO: add timer limitation for not flooding Gozy\n if (hasDatabase(cozy, doctype)) {\n if (hasSync(cozy, doctype)) {\n if (timer === cozy._offline[doctype].timer) { return }\n stopSync(cozy, doctype)\n }\n let offline = cozy._offline[doctype]\n offline.timer = timer\n offline.autoSync = setInterval(() => {\n if (offline.replicate === undefined) {\n offline.replicate = replicateFromCozy(cozy, doctype)\n offline.replicate.then((db) => {\n db.on('complete', (info) => {\n delete offline.replicate\n })\n })\n // TODO: add replicationToCozy\n }\n }, timer * 1000)\n }\n}\n\nexport function hasSync (cozy, doctype) {\n return cozy._offline !== null &&\n doctype in cozy._offline &&\n cozy._offline[doctype].autoSync !== null\n}\n\nexport function stopSync (cozy, doctype) {\n if (hasSync(cozy, doctype)) {\n let offline = cozy._offline[doctype]\n if (offline.replication) { offline.replication.cancel() }\n clearInterval(offline.autoSync)\n delete offline.autoSync\n }\n}\n\nexport function replicateFromCozy (cozy, doctype, options = {}, events = {}) {\n if (hasDatabase(cozy, doctype)) {\n if (options.live === true) {\n throw new Error('You can\\'t use `live` option with Cozy couchdb.')\n }\n if (options.manualAuthCredentials) {\n return replicateFromCozyWithAuth(cozy, doctype, options, events, options.manualAuthCredentials)\n } else {\n return cozy.authorize().then((credentials) => {\n return replicateFromCozyWithAuth(cozy, doctype, options, events, credentials)\n })\n }\n } else {\n throw new Error(`You should add this doctype: ${doctype} to offline.`)\n }\n}\n\nexport function replicateFromCozyWithAuth (cozy, doctype, options, events, credentials) {\n let basic = credentials.token.toBasicAuth()\n let url = (cozy._url + '/data/' + doctype).replace('//', `//${basic}`)\n let db = getDatabase(cozy, doctype)\n let replication = db.replicate.from(url, options)\n const eventNames = [\n 'change', 'paused', 'active', 'denied', 'complete', 'error'\n ]\n for (let eventName of eventNames) {\n if (typeof events[eventName] === 'function') {\n replication.on(eventName, events[eventName])\n }\n }\n return replication\n}\n\nfunction createIndexes (cozy, db, doctype) {\n if (doctype === DOCTYPE_FILES) {\n db.createIndex({index: {fields: ['dir_id']}})\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/offline.js","module.exports = __WEBPACK_EXTERNAL_MODULE_15__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"pouchdb\"\n// module id = 15\n// module chunks = 0","module.exports = __WEBPACK_EXTERNAL_MODULE_16__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"pouchdb-find\"\n// module id = 16\n// module chunks = 0","import {cozyFetchJSON} from './fetch'\n\nexport function diskUsage (cozy) {\n return cozyFetchJSON(cozy, 'GET', `/settings/disk-usage`)\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/settings.js","import {cozyFetchJSON} from './fetch'\nimport { DOCTYPE_FILES } from './doctypes'\n\nexport function addReferencedFiles (cozy, doc, ids) {\n if (!doc) throw new Error('missing doc argument')\n if (!Array.isArray(ids)) ids = [ids]\n\n const refs = ids.map((id) => ({type: DOCTYPE_FILES, id: id}))\n\n return cozyFetchJSON(cozy, 'POST', makeReferencesPath(doc), {data: refs})\n}\n\nexport function listReferencedFiles (cozy, doc) {\n if (!doc) throw new Error('missing doc argument')\n return cozyFetchJSON(cozy, 'GET', makeReferencesPath(doc))\n .then((files) => files.map((file) => file._id))\n}\n\nfunction makeReferencesPath (doc) {\n const type = encodeURIComponent(doc._type)\n const id = encodeURIComponent(doc._id)\n return `/data/${type}/${id}/relationships/references`\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/relations.js"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/cozy-client.node.js b/dist/cozy-client.node.js index f167dcfa..1b8e6123 100644 --- a/dist/cozy-client.node.js +++ b/dist/cozy-client.node.js @@ -60,14 +60,8 @@ 'use strict'; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.MemoryStorage = exports.LocalStorage = exports.Cozy = undefined; - var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* global fetch */ - var _utils = __webpack_require__(3); var _auth_storage = __webpack_require__(4); @@ -78,9 +72,9 @@ var auth = _interopRequireWildcard(_auth_v2); - var _crud = __webpack_require__(11); + var _data = __webpack_require__(11); - var crud = _interopRequireWildcard(_crud); + var data = _interopRequireWildcard(_data); var _mango = __webpack_require__(13); @@ -120,19 +114,20 @@ softwareID: 'github.com/cozy/cozy-client-js' }; - var mainProto = { - create: crud.create, - find: crud.find, - update: crud.update, - delete: crud._delete, - updateAttributes: crud.updateAttributes, + var dataProto = { + create: data.create, + find: data.find, + update: data.update, + delete: data._delete, + updateAttributes: data.updateAttributes, + changesFeed: data.changesFeed, defineIndex: mango.defineIndex, query: mango.query, addReferencedFiles: relations.addReferencedFiles, listReferencedFiles: relations.listReferencedFiles, destroy: function destroy() { - (0, _utils.warn)('destroy is deprecated, use cozy.delete instead.'); - return crud._delete.apply(crud, arguments); + (0, _utils.warn)('destroy is deprecated, use cozy.data.delete instead.'); + return data._delete.apply(data, arguments); } }; @@ -186,10 +181,11 @@ diskUsage: settings.diskUsage }; - var Cozy = function () { - function Cozy(options) { - _classCallCheck(this, Cozy); + var Client = function () { + function Client(options) { + _classCallCheck(this, Client); + this.data = {}; this.files = {}; this.offline = {}; this.settings = {}; @@ -207,7 +203,7 @@ } } - _createClass(Cozy, [{ + _createClass(Client, [{ key: 'init', value: function init() { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; @@ -244,7 +240,7 @@ this._url = url; var disablePromises = !!options.disablePromises; - addToProto(this, this, mainProto, disablePromises); + addToProto(this, this.data, dataProto, disablePromises); addToProto(this, this.auth, authProto, disablePromises); addToProto(this, this.files, filesProto, disablePromises); addToProto(this, this.offline, offlineProto, disablePromises); @@ -334,7 +330,7 @@ } }]); - return Cozy; + return Client; }(); function nopOnRegistered() { @@ -361,18 +357,8 @@ } } - var cozy = new Cozy(); - - exports.default = cozy; - exports.Cozy = Cozy; - exports.LocalStorage = _auth_storage.LocalStorage; - exports.MemoryStorage = _auth_storage.MemoryStorage; - - - if (typeof window !== 'undefined') { - window.cozy = cozy; - window.Cozy = Cozy; - } + module.exports = new Client(); + Object.assign(module.exports, { Client: Client, LocalStorage: _auth_storage.LocalStorage, MemoryStorage: _auth_storage.MemoryStorage }); /***/ }, /* 3 */ @@ -791,14 +777,16 @@ this.logoURI = opts.logoURI || opts.logo_uri || ''; this.policyURI = opts.policyURI || opts.policy_uri || ''; - if (this.redirectURI === '') { - throw new Error('Missing redirectURI field'); - } - if (this.softwareID === '') { - throw new Error('Missing softwareID field'); - } - if (this.clientName === '') { - throw new Error('Missing clientName field'); + if (!this.registrationAccessToken) { + if (this.redirectURI === '') { + throw new Error('Missing redirectURI field'); + } + if (this.softwareID === '') { + throw new Error('Missing softwareID field'); + } + if (this.clientName === '') { + throw new Error('Missing clientName field'); + } } } @@ -846,6 +834,11 @@ value: function toAuthHeader() { return 'Bearer ' + this.accessToken; } + }, { + key: 'toBasicAuth', + value: function toBasicAuth() { + return 'user:' + this.accessToken + '@'; + } }]); return AccessToken; @@ -863,6 +856,11 @@ value: function toAuthHeader() { return 'Bearer ' + this.token; } + }, { + key: 'toBasicAuth', + value: function toBasicAuth() { + return 'user:' + this.token + '@'; + } }]); return AppToken; @@ -1408,6 +1406,7 @@ }); exports.create = create; exports.find = find; + exports.changesFeed = changesFeed; exports.update = update; exports.updateAttributes = updateAttributes; exports._delete = _delete; @@ -1456,6 +1455,14 @@ }); } + function changesFeed(cozy, doctype, options) { + return cozy.isV2().then(function (isV2) { + doctype = (0, _doctypes.normalizeDoctype)(cozy, isV2, doctype); + var path = (0, _utils.createPath)(cozy, isV2, doctype, '_changes', options); + return (0, _fetch.cozyFetchJSON)(cozy, 'GET', path); + }); + } + function update(cozy, doctype, doc, changes) { return cozy.isV2().then(function (isV2) { doctype = (0, _doctypes.normalizeDoctype)(cozy, isV2, doctype); @@ -2167,6 +2174,7 @@ exports.hasSync = hasSync; exports.stopSync = stopSync; exports.replicateFromCozy = replicateFromCozy; + exports.replicateFromCozyWithAuth = replicateFromCozyWithAuth; var _pouchdb = __webpack_require__(16); @@ -2305,8 +2313,11 @@ offline.timer = timer; offline.autoSync = setInterval(function () { if (offline.replicate === undefined) { - offline.replicate = replicateFromCozy(cozy, doctype).on('complete', function (info) { - delete offline.replicate; + offline.replicate = replicateFromCozy(cozy, doctype); + offline.replicate.then(function (db) { + db.on('complete', function (info) { + delete offline.replicate; + }); }); // TODO: add replicationToCozy } @@ -2340,41 +2351,52 @@ if (options.live === true) { throw new Error('You can\'t use `live` option with Cozy couchdb.'); } - var url = cozy._url + '/data/' + doctype; - var db = getDatabase(cozy, doctype); - var replication = db.replicate.from(url, options); - var eventNames = ['change', 'paused', 'active', 'denied', 'complete', 'error']; - var _iteratorNormalCompletion2 = true; - var _didIteratorError2 = false; - var _iteratorError2 = undefined; + if (options.manualAuthCredentials) { + return replicateFromCozyWithAuth(cozy, doctype, options, events, options.manualAuthCredentials); + } else { + return cozy.authorize().then(function (credentials) { + return replicateFromCozyWithAuth(cozy, doctype, options, events, credentials); + }); + } + } else { + throw new Error('You should add this doctype: ' + doctype + ' to offline.'); + } + } - try { - for (var _iterator2 = eventNames[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - var eventName = _step2.value; + function replicateFromCozyWithAuth(cozy, doctype, options, events, credentials) { + var basic = credentials.token.toBasicAuth(); + var url = (cozy._url + '/data/' + doctype).replace('//', '//' + basic); + var db = getDatabase(cozy, doctype); + var replication = db.replicate.from(url, options); + var eventNames = ['change', 'paused', 'active', 'denied', 'complete', 'error']; + var _iteratorNormalCompletion2 = true; + var _didIteratorError2 = false; + var _iteratorError2 = undefined; - if (typeof events[eventName] === 'function') { - replication.on(eventName, events[eventName]); - } + try { + for (var _iterator2 = eventNames[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var eventName = _step2.value; + + if (typeof events[eventName] === 'function') { + replication.on(eventName, events[eventName]); + } + } + } catch (err) { + _didIteratorError2 = true; + _iteratorError2 = err; + } finally { + try { + if (!_iteratorNormalCompletion2 && _iterator2.return) { + _iterator2.return(); } - } catch (err) { - _didIteratorError2 = true; - _iteratorError2 = err; } finally { - try { - if (!_iteratorNormalCompletion2 && _iterator2.return) { - _iterator2.return(); - } - } finally { - if (_didIteratorError2) { - throw _iteratorError2; - } + if (_didIteratorError2) { + throw _iteratorError2; } } - - return replication; - } else { - throw new Error('You should add this doctype: ' + doctype + ' to offline.'); } + + return replication; } function createIndexes(cozy, db, doctype) { diff --git a/dist/cozy-client.node.js.map b/dist/cozy-client.node.js.map index d80e5b20..7d3cf8e9 100644 --- a/dist/cozy-client.node.js.map +++ b/dist/cozy-client.node.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap bb12d3f1c3e2a114c387","webpack:///external \"isomorphic-fetch\"","webpack:///./src/index.js","webpack:///./src/utils.js","webpack:///./src/auth_storage.js","webpack:///./src/auth_v2.js","webpack:///external \"btoa\"","webpack:///./src/auth_v3.js","webpack:///./src/fetch.js","webpack:///./src/jsonapi.js","webpack:///external \"crypto\"","webpack:///./src/crud.js","webpack:///./src/doctypes.js","webpack:///./src/mango.js","webpack:///./src/files.js","webpack:///./src/offline.js","webpack:///external \"pouchdb\"","webpack:///external \"pouchdb-find\"","webpack:///./src/settings.js","webpack:///./src/relations.js"],"names":["auth","crud","mango","files","offline","settings","relations","AppTokenV3","AppToken","AccessTokenV3","AccessToken","ClientV3","Client","AuthNone","AuthRunning","AuthError","AuthOK","defaultClientParams","softwareID","mainProto","create","find","update","delete","_delete","updateAttributes","defineIndex","query","addReferencedFiles","listReferencedFiles","destroy","authProto","registerClient","updateClient","unregisterClient","getClient","getAuthCodeURL","getAccessToken","refreshToken","filesProto","createDirectory","updateById","updateAttributesById","updateAttributesByPath","trashById","statById","statByPath","downloadById","downloadByPath","getDowloadLink","getArchiveLink","listTrash","clearTrash","restoreById","destroyById","offlineProto","init","getDoctypes","createDatabase","hasDatabase","getDatabase","destroyDatabase","replicateFromCozy","hasSync","startAllSync","startSync","stopAllSync","stopSync","settingsProto","diskUsage","Cozy","options","AppTokenV2","LocalStorage","MemoryStorage","_inited","_oauth","_token","_authstate","_authcreds","_storage","_version","_offline","token","oauth","Error","storage","_clientParams","Object","assign","clientParams","_onRegistered","onRegistered","nopOnRegistered","url","cozyURL","length","slice","_url","disablePromises","addToProto","state","isV2","then","oauthFlow","Promise","resolve","client","creds","save","CredsKey","path","pathprefix","fetch","res","ok","json","status","datasystem","undefined","protoify","context","fn","prototyped","args","ctx","obj","proto","attr","cozy","window","unpromiser","isPromise","sleep","retry","getFuzzedDelay","getBackedoffDelay","createPath","encodeQuery","decodeQuery","warn","FuzzFactor","value","apply","l","cb","err","time","setTimeout","count","delay","doTry","catch","retryDelay","fuzzingFactor","Math","random","retryCount","pow","doctype","id","route","encodeURIComponent","q","qname","queryIndex","indexOf","queries","fragIndex","queryStr","parts","split","i","pair","decodeURIComponent","hasOwnProperty","warned","text","push","console","prefix","localStorage","key","setItem","JSON","stringify","item","getItem","parse","removeItem","hash","deleted","getAppToken","V2TOKEN_ABORT_TIMEOUT","reject","parent","postMessage","origin","location","intent","action","timeout","receiver","event","appName","data","e","removeEventListener","clearTimeout","addEventListener","opts","btoa","StateSize","StateKey","clientID","client_id","clientSecret","client_secret","registrationAccessToken","registration_access_token","redirect_uris","redirectURI","software_id","softwareVersion","software_version","clientName","client_name","clientKind","client_kind","clientURI","client_uri","logoURI","logo_uri","policyURI","policy_uri","tokenType","token_type","accessToken","access_token","refresh_token","scope","isRegistered","toRegisterJSON","disableAuth","resetSecret","createClient","manualAuthCredentials","oldClient","newClient","shouldPassRegistration","scopes","generateRandomState","join","pageURL","grantQueries","getGrantCodeFromPageURL","retrieveToken","code","tryCount","clearAndRetry","clear","registerNewClient","all","load","credentials","storedState","isUnauthorized","statePromise","t","body","headers","href","buffer","crypto","getRandomValues","Uint8Array","require","randomBytes","Array","floor","String","fromCharCode","replace","cozyFetch","cozyFetchJSON","fullpath","resp","cozyFetchWithAuth","authorize","handleResponse","toAuthHeader","newToken","saveCredentials","method","handleJSONResponse","contentType","get","FetchError","reason","response","indexKey","doc","type","findByRef","resources","ref","handleResource","rawResource","links","resource","_id","_type","_rev","meta","rev","attributes","name","rels","relationships","isArray","map","handleTopLevel","included","forEach","r","NOREV","docType","changes","tries","normalizeDoctype","DOCTYPE_FILES","KNOWN_DOCTYPES","REVERSE_KNOWN","keys","k","isQualified","known","parseSelector","normalizeSelector","makeMapReduceQuery","fields","defineIndexV2","defineIndexV3","indexRef","queryV2","queryV3","VALUEOPERATORS","LOGICOPERATORS","MAP_TEMPLATE","toLowerCase","emit","FIELDSPLACEHOLDER","toString","COUCHDB_INFINITY","COUCHDB_LOWEST","indexName","capitalize","indexDefinition","makeMapFunction","reduce","use_index","selector","limit","since","descending","sort","f","docs","charAt","toUpperCase","operator","acc","concat","filters","filter","op","field","applySelector","lower","upper","inclusiveEnd","startkey","endkey","inclusive_end","mrquery","firstFreeValueField","normalizedSelector","used","isFreeValue","contentTypeOctetStream","doUpload","ArrayBuffer","isBuffer","isFile","File","isBlob","Blob","isStream","readable","pipe","isString","lastModifiedDate","Date","toGMTString","dirID","attrs","db","children","addIsDir","toJsonApi","extractResponseLinkRelated","related","paths","archive","isDir","contents","clone","pluginLoaded","doctypes","timer","plugin","database","autoSync","createIndexes","setInterval","replicate","on","info","replication","cancel","clearInterval","events","live","from","eventNames","eventName","createIndex","index","ids","refs","makeReferencesPath","file"],"mappings":"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","file":"cozy-client.node.js","sourcesContent":[" \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 bb12d3f1c3e2a114c387","module.exports = require(\"isomorphic-fetch\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"isomorphic-fetch\"\n// module id = 1\n// module chunks = 0","/* global fetch */\nimport {unpromiser, retry, warn} from './utils'\nimport {LocalStorage, MemoryStorage} from './auth_storage'\nimport {AppToken as AppTokenV2, getAppToken as getAppTokenV2} from './auth_v2'\nimport * as auth from './auth_v3'\nimport * as crud from './crud'\nimport * as mango from './mango'\nimport * as files from './files'\nimport * as offline from './offline'\nimport * as settings from './settings'\nimport * as relations from './relations'\n\nconst {\n AppToken: AppTokenV3,\n AccessToken: AccessTokenV3,\n Client: ClientV3\n} = auth\n\nconst AuthNone = 0\nconst AuthRunning = 1\nconst AuthError = 2\nconst AuthOK = 3\n\nconst defaultClientParams = {\n softwareID: 'github.com/cozy/cozy-client-js'\n}\n\nconst mainProto = {\n create: crud.create,\n find: crud.find,\n update: crud.update,\n delete: crud._delete,\n updateAttributes: crud.updateAttributes,\n defineIndex: mango.defineIndex,\n query: mango.query,\n addReferencedFiles: relations.addReferencedFiles,\n listReferencedFiles: relations.listReferencedFiles,\n destroy: function (...args) {\n warn('destroy is deprecated, use cozy.delete instead.')\n return crud._delete(...args)\n }\n}\n\nconst authProto = {\n registerClient: auth.registerClient,\n updateClient: auth.updateClient,\n unregisterClient: auth.unregisterClient,\n getClient: auth.getClient,\n getAuthCodeURL: auth.getAuthCodeURL,\n getAccessToken: auth.getAccessToken,\n refreshToken: auth.refreshToken\n}\n\nconst filesProto = {\n create: files.create,\n createDirectory: files.createDirectory,\n updateById: files.updateById,\n updateAttributesById: files.updateAttributesById,\n updateAttributesByPath: files.updateAttributesByPath,\n trashById: files.trashById,\n statById: files.statById,\n statByPath: files.statByPath,\n downloadById: files.downloadById,\n downloadByPath: files.downloadByPath,\n getDowloadLink: files.getDowloadLink,\n getArchiveLink: files.getArchiveLink,\n listTrash: files.listTrash,\n clearTrash: files.clearTrash,\n restoreById: files.restoreById,\n destroyById: files.destroyById\n}\n\nconst offlineProto = {\n init: offline.init,\n getDoctypes: offline.getDoctypes,\n // database\n createDatabase: offline.createDatabase,\n hasDatabase: offline.hasDatabase,\n getDatabase: offline.getDatabase,\n destroyDatabase: offline.destroyDatabase,\n // replication\n replicateFromCozy: offline.replicateFromCozy,\n hasSync: offline.hasSync,\n startAllSync: offline.startAllSync,\n startSync: offline.startSync,\n stopAllSync: offline.stopAllSync,\n stopSync: offline.stopSync\n}\n\nconst settingsProto = {\n diskUsage: settings.diskUsage\n}\n\nclass Cozy {\n constructor (options) {\n this.files = {}\n this.offline = {}\n this.settings = {}\n this.auth = {\n Client: ClientV3,\n AccessToken: AccessTokenV3,\n AppToken: AppTokenV3,\n AppTokenV2: AppTokenV2,\n LocalStorage: LocalStorage,\n MemoryStorage: MemoryStorage\n }\n this._inited = false\n if (options) {\n this.init(options)\n }\n }\n\n init (options = {}) {\n this._inited = true\n this._oauth = false // is oauth activated or not\n this._token = null // application token\n this._authstate = AuthNone\n this._authcreds = null\n this._storage = null\n this._version = null\n this._offline = null\n\n const token = options.token\n const oauth = options.oauth\n if (token && oauth) {\n throw new Error('Cannot specify an application token with a oauth activated')\n }\n\n if (token) {\n this._token = new AppTokenV3({ token })\n } else if (oauth) {\n this._oauth = true\n this._storage = oauth.storage\n this._clientParams = Object.assign({}, defaultClientParams, oauth.clientParams)\n this._onRegistered = oauth.onRegistered || nopOnRegistered\n }\n\n let url = options.cozyURL || ''\n while (url[url.length - 1] === '/') {\n url = url.slice(0, -1)\n }\n\n this._url = url\n\n const disablePromises = !!options.disablePromises\n addToProto(this, this, mainProto, disablePromises)\n addToProto(this, this.auth, authProto, disablePromises)\n addToProto(this, this.files, filesProto, disablePromises)\n addToProto(this, this.offline, offlineProto, disablePromises)\n addToProto(this, this.settings, settingsProto, disablePromises)\n\n if (options.offline) {\n this.offline.init(options.offline)\n }\n }\n\n authorize () {\n const state = this._authstate\n if (state === AuthOK || state === AuthRunning) {\n return this._authcreds\n }\n\n this._authstate = AuthRunning\n this._authcreds = this.isV2().then((isV2) => {\n if (isV2 && this._oauth) {\n throw new Error('OAuth is not supported on the V2 stack')\n }\n if (this._oauth) {\n return auth.oauthFlow(\n this,\n this._storage,\n this._clientParams,\n this._onRegistered\n )\n }\n // we expect to be on a client side application running in a browser\n // with cookie-based authentication.\n if (isV2) {\n return getAppTokenV2()\n } else if (this._token) {\n return Promise.resolve({client: null, token: this._token})\n } else {\n throw new Error('Missing application token')\n }\n })\n\n this._authcreds.then(\n () => { this._authstate = AuthOK },\n () => { this._authstate = AuthError })\n\n return this._authcreds\n }\n\n saveCredentials (client, token) {\n const creds = {client, token}\n if (!this._storage || this._authstate === AuthRunning) {\n return Promise.resolve(creds)\n }\n this._storage.save(auth.CredsKey, creds)\n this._authcreds = Promise.resolve(creds)\n return this._authcreds\n }\n\n fullpath (path) {\n return this.isV2().then((isV2) => {\n const pathprefix = isV2 ? '/ds-api' : ''\n return this._url + pathprefix + path\n })\n }\n\n isV2 () {\n if (!this._version) {\n this._version = retry(() => fetch(`${this._url}/status/`), 3)()\n .then((res) => {\n if (!res.ok) {\n throw new Error('Could not fetch cozy status')\n } else {\n return res.json()\n }\n })\n .then((status) => status.datasystem !== undefined)\n }\n return this._version\n }\n}\n\nfunction nopOnRegistered () {\n throw new Error('Missing onRegistered callback')\n}\n\nfunction protoify (context, fn) {\n return function prototyped (...args) {\n return fn(context, ...args)\n }\n}\n\nfunction addToProto (ctx, obj, proto, disablePromises) {\n for (const attr in proto) {\n let fn = protoify(ctx, proto[attr])\n if (disablePromises) {\n fn = unpromiser(fn)\n }\n obj[attr] = fn\n }\n}\n\nconst cozy = new Cozy()\n\nexport default cozy\nexport { Cozy, LocalStorage, MemoryStorage }\n\nif ((typeof window) !== 'undefined') {\n window.cozy = cozy\n window.Cozy = Cozy\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","const FuzzFactor = 0.3\n\nexport function unpromiser (fn) {\n return function (...args) {\n const value = fn.apply(this, args)\n if (!isPromise(value)) {\n return value\n }\n const l = args.length\n if (l === 0 || typeof args[l - 1] !== 'function') {\n return\n }\n const cb = args[l - 1]\n value.then(\n (res) => cb(null, res),\n (err) => cb(err, null)\n )\n return\n }\n}\n\nexport function isPromise (value) {\n return !!value && typeof value.then === 'function'\n}\n\nexport function sleep (time, args) {\n return new Promise((resolve) => {\n setTimeout(resolve, time, args)\n })\n}\n\nexport function retry (fn, count, delay = 300) {\n return function doTry (...args) {\n return fn(...args).catch((err) => {\n if (--count < 0) {\n throw err\n }\n return sleep(getBackedoffDelay(delay, count))\n .then(() => doTry(...args))\n })\n }\n}\n\nexport function getFuzzedDelay (retryDelay) {\n const fuzzingFactor = ((Math.random() * 2) - 1) * FuzzFactor\n return retryDelay * (1.0 + fuzzingFactor)\n}\n\nexport function getBackedoffDelay (retryDelay, retryCount = 1) {\n return getFuzzedDelay(retryDelay * Math.pow(2, retryCount - 1))\n}\n\nexport function createPath (cozy, isV2, doctype, id = '', query = null) {\n let route = '/data/'\n if (!isV2) {\n route += `${encodeURIComponent(doctype)}/`\n }\n if (id !== '') {\n route += encodeURIComponent(id)\n }\n const q = encodeQuery(query)\n if (q !== '') {\n route += '?' + q\n }\n return route\n}\n\nexport function encodeQuery (query) {\n if (!query) {\n return ''\n }\n let q = ''\n for (const qname in query) {\n if (q !== '') {\n q += '&'\n }\n q += `${encodeURIComponent(qname)}=${encodeURIComponent(query[qname])}`\n }\n return q\n}\n\nexport function decodeQuery (url) {\n let queryIndex = url.indexOf('?')\n if (queryIndex < 0) {\n queryIndex = url.length\n }\n const queries = {}\n let fragIndex = url.indexOf('#')\n if (fragIndex < 0) {\n fragIndex = url.length\n }\n if (fragIndex < queryIndex) {\n return queries\n }\n const queryStr = url.slice(queryIndex + 1, fragIndex)\n if (queryStr === '') {\n return queries\n }\n const parts = queryStr.split('&')\n for (let i = 0; i < parts.length; i++) {\n let pair = parts[i].split('=')\n if (pair.length === 0 || pair[0] === '') {\n continue\n }\n const qname = decodeURIComponent(pair[0])\n if (queries.hasOwnProperty(qname)) {\n continue\n }\n if (pair.length === 1) {\n queries[qname] = true\n } else if (pair.length === 2) {\n queries[qname] = decodeURIComponent(pair[1])\n } else {\n throw new Error('Malformed URL')\n }\n }\n return queries\n}\n\nconst warned = []\nexport function warn (text) {\n if (warned.indexOf(text) === -1) {\n warned.push(text)\n console.warn('cozy-client-js', text)\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils.js","export class LocalStorage {\n constructor (storage, prefix) {\n if (!storage && typeof window !== 'undefined') {\n storage = window.localStorage\n }\n this.storage = storage\n this.prefix = prefix || 'cozy:oauth:'\n }\n\n save (key, value) {\n return new Promise(resolve => {\n this.storage.setItem(this.prefix + key, JSON.stringify(value))\n resolve(value)\n })\n }\n\n load (key) {\n return new Promise(resolve => {\n const item = this.storage.getItem(this.prefix + key)\n if (!item) {\n resolve()\n } else {\n resolve(JSON.parse(item))\n }\n })\n }\n\n delete (key) {\n return new Promise(resolve => resolve(\n this.storage.removeItem(this.prefix + key)))\n }\n\n clear () {\n return new Promise(resolve => {\n const storage = this.storage\n for (let i = 0; i < storage.length; i++) {\n const key = storage.key(i)\n if (key.indexOf(this.prefix) === 0) {\n storage.removeItem(key)\n }\n }\n resolve()\n })\n }\n}\n\nexport class MemoryStorage {\n constructor () {\n this.hash = Object.create(null)\n }\n\n save (key, value) {\n this.hash[key] = value\n return Promise.resolve(value)\n }\n\n load (key) {\n return Promise.resolve(this.hash[key])\n }\n\n delete (key) {\n const deleted = delete this.hash[key]\n return Promise.resolve(deleted)\n }\n\n clear () {\n this.hash = Object.create(null)\n return Promise.resolve()\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/auth_storage.js","/* global btoa */\nconst V2TOKEN_ABORT_TIMEOUT = 3000\n\nexport function getAppToken () {\n return new Promise(function (resolve, reject) {\n if (typeof window === 'undefined') {\n return reject(new Error('getV2Token should be used in browser'))\n } else if (!window.parent) {\n return reject(new Error('getV2Token should be used in iframe'))\n } else if (!window.parent.postMessage) {\n return reject(new Error('getV2Token should be used in modern browser'))\n }\n const origin = window.location.origin\n const intent = {action: 'getToken'}\n let timeout = null\n const receiver = function (event) {\n let token\n try {\n token = new AppToken({\n appName: event.data.appName,\n token: event.data.token\n })\n } catch (e) {\n reject(e)\n return\n }\n window.removeEventListener('message', receiver)\n clearTimeout(timeout)\n resolve({ client: null, token })\n }\n window.addEventListener('message', receiver, false)\n window.parent.postMessage(intent, origin)\n timeout = setTimeout(() => {\n reject(new Error('No response from parent iframe after 3s'))\n }, V2TOKEN_ABORT_TIMEOUT)\n })\n}\n\nexport class AppToken {\n constructor (opts) {\n this.appName = opts.appName || ''\n this.token = opts.token || ''\n }\n\n toAuthHeader () {\n return 'Basic ' + btoa(`${this.appName}:${this.token}`)\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/auth_v2.js","module.exports = require(\"btoa\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"btoa\"\n// module id = 6\n// module chunks = 0","/* global btoa */\nimport {encodeQuery, decodeQuery} from './utils'\nimport {cozyFetchJSON, FetchError} from './fetch'\n\nconst StateSize = 16\n\nexport const CredsKey = 'creds'\nexport const StateKey = 'state'\n\nexport class Client {\n constructor (opts) {\n this.clientID = opts.clientID || opts.client_id || ''\n this.clientSecret = opts.clientSecret || opts.client_secret || ''\n this.registrationAccessToken = opts.registrationAccessToken || opts.registration_access_token || ''\n\n if (opts.redirect_uris) {\n this.redirectURI = opts.redirect_uris[0] || ''\n } else {\n this.redirectURI = opts.redirectURI || ''\n }\n\n this.softwareID = opts.softwareID || opts.software_id || ''\n this.softwareVersion = opts.softwareVersion || opts.software_version || ''\n this.clientName = opts.clientName || opts.client_name || ''\n this.clientKind = opts.clientKind || opts.client_kind || ''\n this.clientURI = opts.clientURI || opts.client_uri || ''\n\n this.logoURI = opts.logoURI || opts.logo_uri || ''\n this.policyURI = opts.policyURI || opts.policy_uri || ''\n\n if (this.redirectURI === '') {\n throw new Error('Missing redirectURI field')\n }\n if (this.softwareID === '') {\n throw new Error('Missing softwareID field')\n }\n if (this.clientName === '') {\n throw new Error('Missing clientName field')\n }\n }\n\n isRegistered () {\n return this.clientID !== ''\n }\n\n toRegisterJSON () {\n return {\n redirect_uris: [this.redirectURI],\n software_id: this.softwareID,\n software_version: this.softwareVersion,\n client_name: this.clientName,\n client_kind: this.clientKind,\n client_uri: this.clientURI,\n logo_uri: this.logoURI,\n policy_uri: this.policyURI\n }\n }\n\n toAuthHeader () {\n return 'Bearer ' + this.registrationAccessToken\n }\n}\n\nexport class AccessToken {\n constructor (opts) {\n this.tokenType = opts.tokenType || opts.token_type\n this.accessToken = opts.accessToken || opts.access_token\n this.refreshToken = opts.refreshToken || opts.refresh_token\n this.scope = opts.scope\n }\n\n toAuthHeader () {\n return 'Bearer ' + this.accessToken\n }\n}\n\nexport class AppToken {\n constructor (opts) {\n this.token = opts.token || ''\n }\n\n toAuthHeader () {\n return 'Bearer ' + this.token\n }\n}\n\nexport function registerClient (cozy, client) {\n if (!(client instanceof Client)) {\n client = new Client(client)\n }\n if (client.isRegistered()) {\n return Promise.reject(new Error('Client already registered'))\n }\n return cozyFetchJSON(cozy, 'POST', '/auth/register', client.toRegisterJSON(), {\n disableAuth: true\n })\n .then((data) => new Client(data))\n}\n\nexport function updateClient (cozy, client, resetSecret = false) {\n if (!(client instanceof Client)) {\n client = new Client(client)\n }\n if (!client.isRegistered()) {\n return Promise.reject(new Error('Client not registered'))\n }\n let data = client.toRegisterJSON()\n data.client_id = client.clientID\n if (resetSecret) data.client_secret = client.clientSecret\n\n return cozyFetchJSON(cozy, 'PUT', `/auth/register/${client.clientID}`, data)\n .then((data) => createClient(data, client))\n}\n\nexport function unregisterClient (cozy, client) {\n return cozyFetchJSON(cozy, 'DELETE', `/auth/register/${client.clientID}`)\n}\n\n// getClient will retrive the registered client informations from the server.\nexport function getClient (cozy, client) {\n if (!(client instanceof Client)) {\n client = new Client(client)\n }\n if (!client.isRegistered()) {\n return Promise.reject(new Error('Client not registered'))\n }\n return cozyFetchJSON(cozy, 'GET', `/auth/register/${client.clientID}`, null, {\n manualAuthCredentials: {\n client: client,\n token: client\n }\n })\n .then((data) => createClient(data, client))\n}\n\n// createClient returns a new Client instance given on object containing the\n// data of the client, from the API, and an old instance of the client.\nfunction createClient (data, oldClient) {\n const newClient = new Client(data)\n // we need to keep track of the registrationAccessToken since it is send\n // only on registration. The GET /auth/register/:client-id endpoint does\n // not return this token.\n const shouldPassRegistration = (\n !!oldClient &&\n oldClient.registrationAccessToken !== '' &&\n newClient.registrationAccessToken === ''\n )\n if (shouldPassRegistration) {\n newClient.registrationAccessToken = oldClient.registrationAccessToken\n }\n return newClient\n}\n\n// getAuthCodeURL returns a pair {authURL,state} given a registered client. The\n// state should be stored in order to be checked against on the user validation\n// phase.\nexport function getAuthCodeURL (cozy, client, scopes = []) {\n if (!(client instanceof Client)) {\n client = new Client(client)\n }\n if (!client.isRegistered()) {\n throw new Error('Client not registered')\n }\n const state = generateRandomState()\n const query = {\n 'client_id': client.clientID,\n 'redirect_uri': client.redirectURI,\n 'state': state,\n 'response_type': 'code',\n 'scope': scopes.join(' ')\n }\n return {\n url: cozy._url + `/auth/authorize?${encodeQuery(query)}`,\n state: state\n }\n}\n\n// getAccessToken perform a request on the access_token entrypoint with the\n// authorization_code grant type in order to generate a new access token for a\n// newly registered client.\n//\n// This method extracts the access code and state from the given URL. By\n// default it uses window.location.href. Also, it checks the given state with\n// the one specified in the URL query parameter to prevent CSRF attacks.\nexport function getAccessToken (cozy, client, state, pageURL = '') {\n if (!state) {\n return Promise.reject(new Error('Missing state value'))\n }\n const grantQueries = getGrantCodeFromPageURL(pageURL)\n if (grantQueries === null) {\n return Promise.reject(new Error('Missing states from current URL'))\n }\n if (state !== grantQueries.state) {\n return Promise.reject(new Error('Given state does not match url query state'))\n }\n return retrieveToken(cozy, client, null, {\n 'grant_type': 'authorization_code',\n 'code': grantQueries.code\n })\n}\n\n// refreshToken perform a request on the access_token entrypoint with the\n// refresh_token grant type in order to refresh the given token.\nexport function refreshToken (cozy, client, token) {\n return retrieveToken(cozy, client, token, {\n 'grant_type': 'refresh_token',\n 'code': token.refreshToken\n })\n}\n\n// oauthFlow performs the stateful registration and access granting of an OAuth\n// client.\nexport function oauthFlow (cozy, storage, clientParams, onRegistered) {\n let tryCount = 0\n\n function clearAndRetry (err) {\n if (tryCount++ > 0) {\n throw err\n }\n return storage.clear().then(() =>\n oauthFlow(cozy, storage, clientParams, onRegistered))\n }\n\n function registerNewClient () {\n return storage.clear()\n .then(() => registerClient(cozy, clientParams))\n .then((client) => {\n const {url, state} = getAuthCodeURL(cozy, client, clientParams.scopes)\n return storage.save(StateKey, {client, url, state})\n })\n }\n\n return Promise.all([\n storage.load(CredsKey),\n storage.load(StateKey)\n ])\n .then(([credentials, storedState]) => {\n // If credentials are cached we re-fetch the registered client with the\n // said token. Fetching the client, if the token is outdated we should try\n // the token is refreshed.\n if (credentials) {\n let oldClient, token\n try {\n oldClient = new Client(credentials.client)\n token = new AccessToken(credentials.token)\n } catch (err) {\n // bad cache, we should clear and retry the process\n return clearAndRetry(err)\n }\n return getClient(cozy, oldClient)\n .then((client) => ({client, token}))\n .catch((err) => {\n // If we fall into an error while fetching the client (because of a\n // bad connectivity for instance), we do not bail the whole process\n // since the client should be able to continue with the persisted\n // client and token.\n //\n // If it is an explicit Unauthorized error though, we bail, clear th\n // cache and retry.\n if (FetchError.isUnauthorized(err)) {\n throw err\n }\n return { client: oldClient, token }\n })\n }\n\n // Otherwise register a new client if necessary (ie. no client is stored)\n // and call the onRegistered callback to wait for the user to grant the\n // access. Finally fetches to access token on success.\n let statePromise\n if (!storedState) {\n statePromise = registerNewClient()\n } else {\n statePromise = Promise.resolve(storedState)\n }\n\n let client, state, token\n return statePromise\n .then((data) => {\n client = data.client\n state = data.state\n return Promise.resolve(onRegistered(client, data.url))\n })\n .then((pageURL) => getAccessToken(cozy, client, state, pageURL))\n .then((t) => { token = t })\n .then(() => storage.delete(StateKey))\n .then(() => ({client, token}))\n })\n .then(\n (creds) => storage.save(CredsKey, creds),\n (err) => {\n if (FetchError.isUnauthorized(err)) {\n return clearAndRetry(err)\n } else {\n throw err\n }\n })\n}\n\n// retrieveToken perform a request on the access_token entrypoint in order to\n// fetch a token.\nfunction retrieveToken (cozy, client, token, query) {\n if (!(client instanceof Client)) {\n client = new Client(client)\n }\n if (!client.isRegistered()) {\n return Promise.reject(new Error('Client not registered'))\n }\n const body = encodeQuery(Object.assign({}, query, {\n 'client_id': client.clientID,\n 'client_secret': client.clientSecret\n }))\n return cozyFetchJSON(cozy, 'POST', '/auth/access_token', body, {\n disableAuth: (token === null),\n manualAuthCredentials: { client, token },\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' }\n })\n .then((data) => new AccessToken(data))\n}\n\n// getGrantCodeFromPageURL extract the state and access_code query parameters\n// from the given url\nfunction getGrantCodeFromPageURL (pageURL = '') {\n if (pageURL === '' && typeof window !== 'undefined') {\n pageURL = window.location.href\n }\n const queries = decodeQuery(pageURL)\n if (!queries.hasOwnProperty('state')) {\n return null\n }\n return {\n state: queries['state'],\n code: queries['access_code']\n }\n}\n\n// generateRandomState will try to generate a 128bits random value from a secure\n// pseudo random generator. It will fallback on Math.random if it cannot find\n// such generator.\nfunction generateRandomState () {\n let buffer\n if (typeof window !== 'undefined' &&\n typeof window.crypto !== 'undefined' &&\n typeof window.crypto.getRandomValues === 'function') {\n buffer = new Uint8Array(StateSize)\n window.crypto.getRandomValues(buffer)\n } else {\n try {\n buffer = require('crypto').randomBytes(StateSize)\n } catch (e) {}\n }\n if (!buffer) {\n buffer = new Array(StateSize)\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] = Math.floor((Math.random() * 255))\n }\n }\n return btoa(String.fromCharCode.apply(null, buffer))\n .replace(/=+$/, '')\n .replace(/\\//g, '_')\n .replace(/\\+/g, '-')\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/auth_v3.js","/* global fetch */\nimport {refreshToken, AccessToken} from './auth_v3'\nimport {retry} from './utils'\nimport jsonapi from './jsonapi'\n\nexport function cozyFetch (cozy, path, options = {}) {\n return cozy.fullpath(path).then((fullpath) => {\n let resp\n if (options.disableAuth) {\n resp = fetch(fullpath, options)\n } else if (options.manualAuthCredentials) {\n resp = cozyFetchWithAuth(cozy, fullpath, options, options.manualAuthCredentials)\n } else {\n resp = cozy.authorize().then((credentials) =>\n cozyFetchWithAuth(cozy, fullpath, options, credentials))\n }\n return resp.then(handleResponse)\n })\n}\n\nfunction cozyFetchWithAuth (cozy, fullpath, options, credentials) {\n if (credentials) {\n options.headers = options.headers || {}\n options.headers['Authorization'] = credentials.token.toAuthHeader()\n }\n\n // the option credentials:include tells fetch to include the cookies in the\n // request even for cross-origin requests\n options.credentials = 'include'\n\n return Promise.all([\n cozy.isV2(),\n fetch(fullpath, options)\n ]).then(([isV2, res]) => {\n if (res.status !== 401 || isV2 || !credentials) {\n return res\n }\n // we try to refresh the token only for OAuth, ie, the client defined\n // and the token is an instance of AccessToken.\n const { client, token } = credentials\n if (!client || !(token instanceof AccessToken)) {\n return res\n }\n return retry(() => refreshToken(cozy, client, token), 3)()\n .then((newToken) => cozy.saveCredentials(client, newToken))\n .then((credentials) => cozyFetchWithAuth(cozy, fullpath, options, credentials))\n })\n}\n\nexport function cozyFetchJSON (cozy, method, path, body, options = {}) {\n options.method = method\n\n const headers = options.headers = options.headers || {}\n\n headers['Accept'] = 'application/json'\n\n if (method !== 'GET' && method !== 'HEAD' && body !== undefined) {\n if (headers['Content-Type']) {\n options.body = body\n } else {\n headers['Content-Type'] = 'application/json'\n options.body = JSON.stringify(body)\n }\n }\n\n return cozyFetch(cozy, path, options)\n .then(handleJSONResponse)\n}\n\nfunction handleResponse (res) {\n if (res.ok) {\n return res\n }\n let data\n const contentType = res.headers.get('content-type')\n if (contentType && contentType.indexOf('json') >= 0) {\n data = res.json()\n } else {\n data = res.text()\n }\n return data.then(err => {\n throw new FetchError(res, err)\n })\n}\n\nfunction handleJSONResponse (res) {\n const contentType = res.headers.get('content-type')\n if (!contentType || contentType.indexOf('json') < 0) {\n return res.text((data) => {\n throw new FetchError(res, new Error('Response is not JSON: ' + data))\n })\n }\n\n const json = res.json()\n if (contentType.indexOf('application/vnd.api+json') === 0) {\n return json.then(jsonapi)\n } else {\n return json\n }\n}\n\nexport class FetchError {\n constructor (res, reason) {\n this.response = res\n this.url = res.url\n this.status = res.status\n this.reason = reason\n }\n\n isUnauthorized () {\n return this.status === 401\n }\n}\n\nFetchError.isUnauthorized = function (err) {\n return (err instanceof FetchError && err.isUnauthorized())\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/fetch.js","function indexKey (doc) {\n return doc.type + '/' + doc.id\n}\n\nfunction findByRef (resources, ref) {\n return resources[indexKey(ref)]\n}\n\nfunction handleResource (rawResource, resources, links) {\n let resource = {\n _id: rawResource.id,\n _type: rawResource.type,\n _rev: (rawResource.meta && rawResource.meta.rev),\n links: Object.assign({}, rawResource.links, links),\n attributes: rawResource.attributes,\n relations: (name) => {\n let rels = rawResource.relationships[name]\n if (rels === undefined || rels.data === undefined) return undefined\n if (rels.data === null) return null\n if (!Array.isArray(rels.data)) return findByRef(resources, rels.data)\n return rels.data.map(ref => findByRef(resources, ref))\n }\n }\n\n resources[indexKey(rawResource)] = resource\n\n return resource\n}\n\nfunction handleTopLevel (doc, resources = {}) {\n // build an index of included resource by Type & ID\n const included = doc.included\n\n if (Array.isArray(included)) {\n included.forEach((r) => handleResource(r, resources, doc.links))\n }\n\n if (Array.isArray(doc.data)) {\n return doc.data.map((r) => handleResource(r, resources, doc.links))\n } else {\n return handleResource(doc.data, resources, doc.links)\n }\n}\n\nexport default handleTopLevel\n\n\n\n// WEBPACK FOOTER //\n// ./src/jsonapi.js","module.exports = require(\"crypto\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"crypto\"\n// module id = 10\n// module chunks = 0","import {createPath} from './utils'\nimport {normalizeDoctype} from './doctypes'\nimport {cozyFetchJSON} from './fetch'\n\nconst NOREV = 'stack-v2-no-rev'\n\nexport function create (cozy, doctype, attributes) {\n return cozy.isV2().then((isV2) => {\n doctype = normalizeDoctype(cozy, isV2, doctype)\n if (isV2) {\n attributes.docType = doctype\n }\n const path = createPath(cozy, isV2, doctype)\n return cozyFetchJSON(cozy, 'POST', path, attributes).then((resp) => {\n if (isV2) {\n return find(cozy, doctype, resp._id)\n } else {\n return resp.data\n }\n })\n })\n}\n\nexport function find (cozy, doctype, id) {\n return cozy.isV2().then((isV2) => {\n doctype = normalizeDoctype(cozy, isV2, doctype)\n\n if (!id) {\n return Promise.reject(new Error('Missing id parameter'))\n }\n\n const path = createPath(cozy, isV2, doctype, id)\n return cozyFetchJSON(cozy, 'GET', path).then((resp) => {\n if (isV2) {\n return Object.assign(resp, {_rev: NOREV})\n } else {\n return resp\n }\n })\n })\n}\n\nexport function update (cozy, doctype, doc, changes) {\n return cozy.isV2().then((isV2) => {\n doctype = normalizeDoctype(cozy, isV2, doctype)\n const {_id, _rev} = doc\n\n if (!_id) {\n return Promise.reject(new Error('Missing _id field in passed document'))\n }\n\n if (!isV2 && !_rev) {\n return Promise.reject(new Error('Missing _rev field in passed document'))\n }\n\n if (isV2) {\n changes = Object.assign({ _id }, changes)\n } else {\n changes = Object.assign({ _id, _rev }, changes)\n }\n\n const path = createPath(cozy, isV2, doctype, _id)\n return cozyFetchJSON(cozy, 'PUT', path, changes).then((resp) => {\n if (isV2) {\n return find(cozy, doctype, _id)\n } else {\n return resp.data\n }\n })\n })\n}\n\nexport function updateAttributes (cozy, doctype, _id, changes, tries = 3) {\n return cozy.isV2().then((isV2) => {\n doctype = normalizeDoctype(cozy, isV2, doctype)\n return find(cozy, doctype, _id)\n .then((doc) => {\n return update(cozy, doctype, doc, Object.assign({ _id }, doc, changes))\n })\n .catch((err) => {\n if (tries > 0) {\n return updateAttributes(cozy, doctype, _id, changes, tries - 1)\n } else {\n throw err\n }\n })\n })\n}\n\nexport function _delete (cozy, doctype, doc) {\n return cozy.isV2().then((isV2) => {\n doctype = normalizeDoctype(cozy, isV2, doctype)\n const {_id, _rev} = doc\n\n if (!_id) {\n return Promise.reject(new Error('Missing _id field in passed document'))\n }\n\n if (!isV2 && !_rev) {\n return Promise.reject(new Error('Missing _rev field in passed document'))\n }\n\n const query = isV2 ? null : { rev: _rev }\n const path = createPath(cozy, isV2, doctype, _id, query)\n return cozyFetchJSON(cozy, 'DELETE', path).then((resp) => {\n if (isV2) {\n return {id: _id, rev: NOREV}\n } else {\n return resp\n }\n })\n })\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/crud.js","import {warn} from './utils'\n\nexport const DOCTYPE_FILES = 'io.cozy.files'\n\nconst KNOWN_DOCTYPES = {\n 'files': DOCTYPE_FILES,\n 'folder': DOCTYPE_FILES,\n 'contact': 'io.cozy.contacts',\n 'event': 'io.cozy.events',\n 'track': 'io.cozy.labs.music.track',\n 'playlist': 'io.cozy.labs.music.playlist'\n}\n\nconst REVERSE_KNOWN = {}\nObject.keys(KNOWN_DOCTYPES).forEach(k => {\n REVERSE_KNOWN[KNOWN_DOCTYPES[k]] = k\n})\n\nexport function normalizeDoctype (cozy, isV2, doctype) {\n let isQualified = doctype.indexOf('.') !== -1\n if (isV2 && isQualified) {\n let known = REVERSE_KNOWN[doctype]\n if (known) return known\n return doctype.replace(/\\./g, '-')\n }\n if (!isV2 && !isQualified) {\n let known = KNOWN_DOCTYPES[doctype]\n if (known) {\n warn('you are using a non-qualified doctype ' + doctype + ' assumed to be ' + known)\n return known\n }\n throw new Error('Doctype ' + doctype + ' should be qualified.')\n }\n return doctype\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/doctypes.js","import {warn, createPath} from './utils'\nimport {normalizeDoctype} from './doctypes'\nimport {cozyFetchJSON} from './fetch'\n\nexport function defineIndex (cozy, doctype, fields) {\n return cozy.isV2().then((isV2) => {\n doctype = normalizeDoctype(cozy, isV2, doctype)\n if (!Array.isArray(fields) || fields.length === 0) {\n throw new Error('defineIndex fields should be a non-empty array')\n }\n if (isV2) {\n return defineIndexV2(cozy, doctype, fields)\n } else {\n return defineIndexV3(cozy, doctype, fields)\n }\n })\n}\n\nexport function query (cozy, indexRef, options) {\n return cozy.isV2().then((isV2) => {\n if (!indexRef) {\n throw new Error('query should be passed the indexRef')\n }\n if (isV2) {\n return queryV2(cozy, indexRef, options)\n } else {\n return queryV3(cozy, indexRef, options)\n }\n })\n}\n\n// Internals\n\nconst VALUEOPERATORS = ['$eq', '$gt', '$gte', '$lt', '$lte']\nconst LOGICOPERATORS = ['$or', '$and', '$not']\n\n/* eslint-disable */\nconst MAP_TEMPLATE = (function (doc) {\n if (doc.docType.toLowerCase() === 'DOCTYPEPLACEHOLDER'){\n emit(FIELDSPLACEHOLDER, doc)\n }\n}).toString().replace(/ /g, '').replace(/\\n/g, '')\nconst COUCHDB_INFINITY = {\"\\uFFFF\": \"\\uFFFF\"}\nconst COUCHDB_LOWEST = null\n/* eslint-enable */\n\n// defineIndexV2 is equivalent to defineIndex but only works for V2.\n// It transforms the index fields into a map reduce view.\nfunction defineIndexV2 (cozy, doctype, fields) {\n let indexName = 'by' + fields.map(capitalize).join('')\n let indexDefinition = { map: makeMapFunction(doctype, fields), reduce: '_count' }\n let path = `/request/${doctype}/${indexName}/`\n return cozyFetchJSON(cozy, 'PUT', path, indexDefinition)\n .then(() => ({ doctype: doctype, type: 'mapreduce', name: indexName, fields: fields }))\n}\n\n// defineIndexV2 is equivalent to defineIndex but only works for V2.\n// It transforms the index fields into a map reduce view.\nfunction defineIndexV3 (cozy, doctype, fields) {\n let path = createPath(cozy, false, doctype, '_index')\n let indexDefinition = {'index': {fields}}\n return cozyFetchJSON(cozy, 'POST', path, indexDefinition)\n .then((response) => ({ doctype: doctype, type: 'mango', name: response.id, fields: fields }))\n}\n\n// queryV2 is equivalent to query but only works for V2.\n// It transforms the query into a _views call using makeMapReduceQuery\nfunction queryV2 (cozy, indexRef, options) {\n if (indexRef.type !== 'mapreduce') {\n throw new Error('query indexRef should be the return value of defineIndexV2')\n }\n if (options.fields) {\n warn('query fields will be ignored on v2')\n }\n\n let path = `/request/${indexRef.doctype}/${indexRef.name}/`\n let opts = makeMapReduceQuery(indexRef, options)\n return cozyFetchJSON(cozy, 'POST', path, opts)\n .then((response) => response.map(r => r.value))\n}\n\n// queryV3 is equivalent to query but only works for V3\nfunction queryV3 (cozy, indexRef, options) {\n if (indexRef.type !== 'mango') {\n throw new Error('indexRef should be the return value of defineIndexV3')\n }\n\n let opts = {\n use_index: indexRef.name,\n fields: options.fields,\n selector: options.selector,\n limit: options.limit,\n since: options.since\n }\n\n if (options.descending) {\n opts.sort = indexRef.fields.map(f => ({ [f]: 'desc' }))\n }\n\n let path = createPath(cozy, false, indexRef.doctype, '_find')\n return cozyFetchJSON(cozy, 'POST', path, opts)\n .then((response) => response.docs)\n}\n\n// misc\nfunction capitalize (name) {\n return name.charAt(0).toUpperCase() + name.slice(1)\n}\n\nfunction makeMapFunction (doctype, fields) {\n fields = '[' + fields.map(name => 'doc.' + name).join(',') + ']'\n\n return MAP_TEMPLATE.replace('DOCTYPEPLACEHOLDER', doctype.toLowerCase())\n .replace('FIELDSPLACEHOLDER', fields)\n}\n\n// parseSelector takes a mango selector and returns it as an array of filter\n// a filter is [path, operator, value] array\n// a path is an array of field names\n// This function is only exported so it can be unit tested.\n// Example :\n// parseSelector({\"test\":{\"deep\": {\"$gt\": 3}}})\n// [[['test', 'deep'], '$gt', 3 ]]\nexport function parseSelector (selector, path = [], operator = '$eq') {\n if ((typeof selector) !== 'object') {\n return [[path, operator, selector]]\n }\n\n let keys = Object.keys(selector)\n if (keys.length === 0) {\n throw new Error('empty selector')\n } else {\n return keys.reduce(function (acc, k) {\n if (LOGICOPERATORS.indexOf(k) !== -1) {\n throw new Error('cozy-client-js does not support mango logic ops')\n } else if (VALUEOPERATORS.indexOf(k) !== -1) {\n return acc.concat(parseSelector(selector[k], path, k))\n } else {\n return acc.concat(parseSelector(selector[k], path.concat(k), '$eq'))\n }\n }, [])\n }\n}\n\n// normalizeSelector takes a mango selector and returns it as an object\n// normalized.\n// This function is only exported so it can be unit tested.\n// Example :\n// parseSelector({\"test\":{\"deep\": {\"$gt\": 3}}})\n// {\"test.deep\": {\"$gt\": 3}}\nexport function normalizeSelector (selector) {\n var filters = parseSelector(selector)\n return filters.reduce(function (acc, filter) {\n let [path, op, value] = filter\n let field = path.join('.')\n acc[field] = acc[field] || {}\n acc[field][op] = value\n return acc\n }, {})\n}\n\n// applySelector takes the normalized selector for the current field\n// and append the proper values to opts.startkey, opts.endkey\nfunction applySelector (selector, opts) {\n let value = selector['$eq']\n let lower = COUCHDB_LOWEST\n let upper = COUCHDB_INFINITY\n let inclusiveEnd\n\n if (value) {\n opts.startkey.push(value)\n opts.endkey.push(value)\n return false\n }\n\n value = selector['$gt']\n if (value) {\n throw new Error('operator $gt (strict greater than) not supported')\n }\n\n value = selector['$gte']\n if (value) {\n lower = value\n }\n\n value = selector['$lte']\n if (value) {\n upper = value\n inclusiveEnd = true\n }\n\n value = selector['$lt']\n if (value) {\n upper = value\n inclusiveEnd = false\n }\n\n opts.startkey.push(lower)\n opts.endkey.push(upper)\n if (inclusiveEnd !== undefined) opts.inclusive_end = inclusiveEnd\n return true\n}\n\n// makeMapReduceQuery takes a mango query and generate _views call parameters\n// to obtain same results depending on fields in the passed indexRef.\nexport function makeMapReduceQuery (indexRef, query) {\n let mrquery = {\n startkey: [],\n endkey: [],\n reduce: false\n }\n let firstFreeValueField = null\n let normalizedSelector = normalizeSelector(query.selector)\n\n indexRef.fields.forEach(function (field) {\n let selector = normalizedSelector[field]\n\n if (selector && firstFreeValueField != null) {\n throw new Error('Selector on field ' + field + ', but not on ' + firstFreeValueField + ' which is higher in index fields.')\n } else if (selector) {\n selector.used = true\n let isFreeValue = applySelector(selector, mrquery)\n if (isFreeValue) firstFreeValueField = field\n } else if (firstFreeValueField == null) {\n firstFreeValueField = field\n mrquery.endkey.push(COUCHDB_INFINITY)\n }\n })\n\n Object.keys(normalizedSelector).forEach(function (field) {\n if (!normalizedSelector[field].used) {\n throw new Error('Cant apply selector on ' + field + ', it is not in index')\n }\n })\n\n if (query.descending) {\n mrquery = {\n descending: true,\n reduce: false,\n startkey: mrquery.endkey,\n endkey: mrquery.startkey,\n inclusive_end: mrquery.inclusive_end\n }\n }\n\n return mrquery\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/mango.js","/* global Blob, File */\nimport {cozyFetch, cozyFetchJSON} from './fetch'\nimport jsonapi from './jsonapi'\nimport { DOCTYPE_FILES } from './doctypes'\n\nconst contentTypeOctetStream = 'application/octet-stream'\n\nfunction doUpload (cozy, data, method, path, options) {\n if (!data) {\n throw new Error('missing data argument')\n }\n\n // transform any ArrayBufferView to ArrayBuffer\n if (data.buffer && data.buffer instanceof ArrayBuffer) {\n data = data.buffer\n }\n\n const isBuffer = (typeof ArrayBuffer !== 'undefined' && data instanceof ArrayBuffer)\n const isFile = (typeof File !== 'undefined' && data instanceof File)\n const isBlob = (typeof Blob !== 'undefined' && data instanceof Blob)\n const isStream = (data.readable === true && typeof data.pipe === 'function')\n const isString = (typeof data === 'string')\n\n if (!isBuffer && !isFile && !isBlob && !isStream && !isString) {\n throw new Error('invalid data type')\n }\n\n let {contentType, lastModifiedDate} = options || {}\n if (!contentType) {\n if (isBuffer) {\n contentType = contentTypeOctetStream\n } else if (isFile) {\n contentType = data.type || contentTypeOctetStream\n if (!lastModifiedDate) {\n lastModifiedDate = data.lastModifiedDate\n }\n } else if (isBlob) {\n contentType = contentTypeOctetStream\n } else if (isStream) {\n contentType = contentTypeOctetStream\n } else if (typeof data === 'string') {\n contentType = 'text/plain'\n }\n }\n\n if (lastModifiedDate && typeof lastModifiedDate === 'string') {\n lastModifiedDate = new Date(lastModifiedDate)\n }\n\n return cozyFetch(cozy, path, {\n method: method,\n headers: {\n 'Content-Type': contentType,\n 'Date': lastModifiedDate ? lastModifiedDate.toGMTString() : ''\n },\n body: data\n })\n .then((res) => {\n const json = res.json()\n if (!res.ok) {\n return json.then(err => { throw err })\n } else {\n return json.then(jsonapi)\n }\n })\n}\n\nexport function create (cozy, data, options) {\n let {name, dirID} = options || {}\n\n // handle case where data is a file and contains the name\n if (!name && typeof data.name === 'string') {\n name = data.name\n }\n\n if (typeof name !== 'string' || name === '') {\n throw new Error('missing name argument')\n }\n\n const path = `/files/${encodeURIComponent(dirID || '')}`\n const query = `?Name=${encodeURIComponent(name)}&Type=file`\n return doUpload(cozy, data, 'POST', `${path}${query}`, options)\n}\n\nexport function createDirectory (cozy, options) {\n let {name, dirID, lastModifiedDate} = options || {}\n\n if (typeof name !== 'string' || name === '') {\n throw new Error('missing name argument')\n }\n\n if (lastModifiedDate && typeof lastModifiedDate === 'string') {\n lastModifiedDate = new Date(lastModifiedDate)\n }\n\n const path = `/files/${encodeURIComponent(dirID || '')}`\n const query = `?Name=${encodeURIComponent(name)}&Type=directory`\n return cozyFetchJSON(cozy, 'POST', `${path}${query}`, undefined, {\n headers: {\n 'Date': lastModifiedDate ? lastModifiedDate.toGMTString() : ''\n }\n })\n}\n\nexport function updateById (cozy, id, data, options) {\n return doUpload(cozy, data, 'PUT', `/files/${encodeURIComponent(id)}`, options)\n}\n\nexport function updateAttributesById (cozy, id, attrs) {\n if (!attrs || typeof attrs !== 'object') {\n throw new Error('missing attrs argument')\n }\n\n const body = { data: { attributes: attrs } }\n return cozyFetchJSON(cozy, 'PATCH',\n `/files/${encodeURIComponent(id)}`, body)\n}\n\nexport function updateAttributesByPath (cozy, path, attrs) {\n if (!attrs || typeof attrs !== 'object') {\n throw new Error('missing attrs argument')\n }\n\n const body = { data: { attributes: attrs } }\n return cozyFetchJSON(cozy, 'PATCH',\n `/files/metadata?Path=${encodeURIComponent(path)}`, body)\n}\n\nexport function trashById (cozy, id) {\n if (typeof id !== 'string' || id === '') {\n throw new Error('missing id argument')\n }\n return cozyFetchJSON(cozy, 'DELETE', `/files/${encodeURIComponent(id)}`)\n}\n\nexport function statById (cozy, id, offline = true) {\n if (offline && cozy.offline.hasDatabase(DOCTYPE_FILES)) {\n let db = cozy.offline.getDatabase(DOCTYPE_FILES)\n return Promise.all([\n db.get(id),\n db.find({selector: {'dir_id': id}})\n ]).then(([doc, children]) => {\n children = children.docs.map(doc => {\n return addIsDir(toJsonApi(cozy, doc))\n })\n return addIsDir(toJsonApi(cozy, doc, children))\n })\n }\n return cozyFetchJSON(cozy, 'GET', `/files/${encodeURIComponent(id)}`)\n .then(addIsDir)\n}\n\nexport function statByPath (cozy, path) {\n return cozyFetchJSON(cozy, 'GET', `/files/metadata?Path=${encodeURIComponent(path)}`)\n .then(addIsDir)\n}\n\nexport function downloadById (cozy, id) {\n return cozyFetch(cozy, `/files/download/${encodeURIComponent(id)}`)\n}\n\nexport function downloadByPath (cozy, path) {\n return cozyFetch(cozy, `/files/download?Path=${encodeURIComponent(path)}`)\n}\n\nfunction extractResponseLinkRelated (res) {\n let href = res.links && res.links.related\n if (!href) throw new Error('No related link in server response')\n return href\n}\n\nexport function getDowloadLink (cozy, path) {\n return cozyFetchJSON(cozy, 'POST', `/files/downloads?Path=${encodeURIComponent(path)}`)\n .then(extractResponseLinkRelated)\n}\n\nexport function getArchiveLink (cozy, paths, name = 'files') {\n const archive = {\n type: 'io.cozy.archives',\n attributes: {\n name: name,\n files: paths\n }\n }\n return cozyFetchJSON(cozy, 'POST', `/files/archive`, {data: archive})\n .then(extractResponseLinkRelated)\n}\n\nexport function listTrash (cozy) {\n return cozyFetchJSON(cozy, 'GET', `/files/trash`)\n}\n\nexport function clearTrash (cozy) {\n return cozyFetchJSON(cozy, 'DELETE', `/files/trash`)\n}\n\nexport function restoreById (cozy, id) {\n return cozyFetchJSON(cozy, 'POST', `/files/trash/${encodeURIComponent(id)}`)\n}\n\nexport function destroyById (cozy, id) {\n return cozyFetchJSON(cozy, 'DELETE', `/files/trash/${encodeURIComponent(id)}`)\n}\n\nfunction addIsDir (obj) {\n obj.isDir = obj.attributes.type === 'directory'\n return obj\n}\n\nfunction toJsonApi (cozy, doc, contents = []) {\n let clone = JSON.parse(JSON.stringify(doc))\n delete clone._id\n delete clone._rev\n return {\n _id: doc._id,\n _rev: doc._rev,\n _type: DOCTYPE_FILES,\n attributes: clone,\n relations: (name) => {\n if (name === 'contents') {\n return contents\n }\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/files.js","import PouchDB from 'pouchdb'\nimport pouchdbFind from 'pouchdb-find'\nimport { DOCTYPE_FILES } from './doctypes'\n\nlet pluginLoaded = false\n\nexport function init (cozy, { options = {}, doctypes = [], timer = false }) {\n for (let doctype of doctypes) {\n createDatabase(cozy, doctype, options)\n }\n if (timer) { startAllSync(cozy, timer) }\n}\n\nexport function createDatabase (cozy, doctype, options = {}, timer = false) {\n if (!pluginLoaded) {\n PouchDB.plugin(pouchdbFind)\n pluginLoaded = true\n }\n cozy._offline = cozy._offline || []\n cozy._offline[doctype] = cozy._offline[doctype] || {}\n let offline = cozy._offline[doctype]\n if (offline && offline.database) { return offline.database }\n offline.database = new PouchDB(doctype, options)\n offline.timer = timer\n offline.autoSync = null\n if (timer) { startSync(cozy, doctype, timer) }\n createIndexes(cozy, offline.database, doctype)\n return offline.database\n}\n\nexport function hasDatabase (cozy, doctype) {\n return cozy._offline !== null &&\n doctype in cozy._offline &&\n cozy._offline[doctype].database !== undefined\n}\n\nexport function getDatabase (cozy, doctype) {\n if (hasDatabase(cozy, doctype)) {\n return cozy._offline[doctype].database\n }\n return\n}\n\nexport function destroyDatabase (cozy, doctype) {\n if (hasDatabase(cozy, doctype)) {\n stopSync(cozy, doctype)\n getDatabase(cozy, doctype).destroy()\n delete getDatabase(cozy, doctype)\n }\n}\n\nexport function getDoctypes (cozy) {\n if (cozy._offline === null) { return [] }\n return Object.keys(cozy._offline)\n}\n\n//\n// SYNC\n//\n\nexport function startAllSync (cozy, timer) {\n if (timer) {\n const doctypes = getDoctypes(cozy)\n doctypes.forEach((doctype) => {\n startSync(cozy, doctype, timer)\n })\n }\n}\n\nexport function stopAllSync (cozy) {\n const doctypes = getDoctypes(cozy)\n doctypes.forEach((doctype) => {\n stopSync(cozy, doctype)\n })\n}\n\nexport function startSync (cozy, doctype, timer) {\n // TODO: add timer limitation for not flooding Gozy\n if (hasDatabase(cozy, doctype)) {\n if (hasSync(cozy, doctype)) {\n if (timer === cozy._offline[doctype].timer) { return }\n stopSync(cozy, doctype)\n }\n let offline = cozy._offline[doctype]\n offline.timer = timer\n offline.autoSync = setInterval(() => {\n if (offline.replicate === undefined) {\n offline.replicate = replicateFromCozy(cozy, doctype)\n .on('complete', (info) => {\n delete offline.replicate\n })\n // TODO: add replicationToCozy\n }\n }, timer * 1000)\n }\n}\n\nexport function hasSync (cozy, doctype) {\n return cozy._offline !== null &&\n doctype in cozy._offline &&\n cozy._offline[doctype].autoSync !== null\n}\n\nexport function stopSync (cozy, doctype) {\n if (hasSync(cozy, doctype)) {\n let offline = cozy._offline[doctype]\n if (offline.replication) { offline.replication.cancel() }\n clearInterval(offline.autoSync)\n delete offline.autoSync\n }\n}\n\nexport function replicateFromCozy (cozy, doctype, options = {}, events = {}) {\n if (hasDatabase(cozy, doctype)) {\n if (options.live === true) {\n throw new Error('You can\\'t use `live` option with Cozy couchdb.')\n }\n const url = cozy._url + '/data/' + doctype\n let db = getDatabase(cozy, doctype)\n let replication = db.replicate.from(url, options)\n const eventNames = [\n 'change', 'paused', 'active', 'denied', 'complete', 'error'\n ]\n for (let eventName of eventNames) {\n if (typeof events[eventName] === 'function') {\n replication.on(eventName, events[eventName])\n }\n }\n return replication\n } else {\n throw new Error(`You should add this doctype: ${doctype} to offline.`)\n }\n}\n\nfunction createIndexes (cozy, db, doctype) {\n if (doctype === DOCTYPE_FILES) {\n db.createIndex({index: {fields: ['dir_id']}})\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/offline.js","module.exports = require(\"pouchdb\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"pouchdb\"\n// module id = 16\n// module chunks = 0","module.exports = require(\"pouchdb-find\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"pouchdb-find\"\n// module id = 17\n// module chunks = 0","import {cozyFetchJSON} from './fetch'\n\nexport function diskUsage (cozy) {\n return cozyFetchJSON(cozy, 'GET', `/settings/disk-usage`)\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/settings.js","import {cozyFetchJSON} from './fetch'\nimport { DOCTYPE_FILES } from './doctypes'\n\nexport function addReferencedFiles (cozy, doc, ids) {\n if (!doc) throw new Error('missing doc argument')\n if (!Array.isArray(ids)) ids = [ids]\n\n const refs = ids.map((id) => ({type: DOCTYPE_FILES, id: id}))\n\n return cozyFetchJSON(cozy, 'POST', makeReferencesPath(doc), {data: refs})\n}\n\nexport function listReferencedFiles (cozy, doc) {\n if (!doc) throw new Error('missing doc argument')\n return cozyFetchJSON(cozy, 'GET', makeReferencesPath(doc))\n .then((files) => files.map((file) => file._id))\n}\n\nfunction makeReferencesPath (doc) {\n const type = encodeURIComponent(doc._type)\n const id = encodeURIComponent(doc._id)\n return `/data/${type}/${id}/relationships/references`\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/relations.js"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap d3eadd99fef6f8ead0e6","webpack:///external \"isomorphic-fetch\"","webpack:///./src/index.js","webpack:///./src/utils.js","webpack:///./src/auth_storage.js","webpack:///./src/auth_v2.js","webpack:///external \"btoa\"","webpack:///./src/auth_v3.js","webpack:///./src/fetch.js","webpack:///./src/jsonapi.js","webpack:///external \"crypto\"","webpack:///./src/data.js","webpack:///./src/doctypes.js","webpack:///./src/mango.js","webpack:///./src/files.js","webpack:///./src/offline.js","webpack:///external \"pouchdb\"","webpack:///external \"pouchdb-find\"","webpack:///./src/settings.js","webpack:///./src/relations.js"],"names":["auth","data","mango","files","offline","settings","relations","AppTokenV3","AppToken","AccessTokenV3","AccessToken","ClientV3","Client","AuthNone","AuthRunning","AuthError","AuthOK","defaultClientParams","softwareID","dataProto","create","find","update","delete","_delete","updateAttributes","changesFeed","defineIndex","query","addReferencedFiles","listReferencedFiles","destroy","authProto","registerClient","updateClient","unregisterClient","getClient","getAuthCodeURL","getAccessToken","refreshToken","filesProto","createDirectory","updateById","updateAttributesById","updateAttributesByPath","trashById","statById","statByPath","downloadById","downloadByPath","getDowloadLink","getArchiveLink","listTrash","clearTrash","restoreById","destroyById","offlineProto","init","getDoctypes","createDatabase","hasDatabase","getDatabase","destroyDatabase","replicateFromCozy","hasSync","startAllSync","startSync","stopAllSync","stopSync","settingsProto","diskUsage","options","AppTokenV2","LocalStorage","MemoryStorage","_inited","_oauth","_token","_authstate","_authcreds","_storage","_version","_offline","token","oauth","Error","storage","_clientParams","Object","assign","clientParams","_onRegistered","onRegistered","nopOnRegistered","url","cozyURL","length","slice","_url","disablePromises","addToProto","state","isV2","then","oauthFlow","Promise","resolve","client","creds","save","CredsKey","path","pathprefix","fetch","res","ok","json","status","datasystem","undefined","protoify","context","fn","prototyped","args","ctx","obj","proto","attr","module","exports","unpromiser","isPromise","sleep","retry","getFuzzedDelay","getBackedoffDelay","createPath","encodeQuery","decodeQuery","warn","FuzzFactor","value","apply","l","cb","err","time","setTimeout","count","delay","doTry","catch","retryDelay","fuzzingFactor","Math","random","retryCount","pow","cozy","doctype","id","route","encodeURIComponent","q","qname","queryIndex","indexOf","queries","fragIndex","queryStr","parts","split","i","pair","decodeURIComponent","hasOwnProperty","warned","text","push","console","prefix","window","localStorage","key","setItem","JSON","stringify","item","getItem","parse","removeItem","hash","deleted","getAppToken","V2TOKEN_ABORT_TIMEOUT","reject","parent","postMessage","origin","location","intent","action","timeout","receiver","event","appName","e","removeEventListener","clearTimeout","addEventListener","opts","btoa","StateSize","StateKey","clientID","client_id","clientSecret","client_secret","registrationAccessToken","registration_access_token","redirect_uris","redirectURI","software_id","softwareVersion","software_version","clientName","client_name","clientKind","client_kind","clientURI","client_uri","logoURI","logo_uri","policyURI","policy_uri","tokenType","token_type","accessToken","access_token","refresh_token","scope","isRegistered","toRegisterJSON","disableAuth","resetSecret","createClient","manualAuthCredentials","oldClient","newClient","shouldPassRegistration","scopes","generateRandomState","join","pageURL","grantQueries","getGrantCodeFromPageURL","retrieveToken","code","tryCount","clearAndRetry","clear","registerNewClient","all","load","credentials","storedState","isUnauthorized","statePromise","t","body","headers","href","buffer","crypto","getRandomValues","Uint8Array","require","randomBytes","Array","floor","String","fromCharCode","replace","cozyFetch","cozyFetchJSON","fullpath","resp","cozyFetchWithAuth","authorize","handleResponse","toAuthHeader","newToken","saveCredentials","method","handleJSONResponse","contentType","get","FetchError","reason","response","indexKey","doc","type","findByRef","resources","ref","handleResource","rawResource","links","resource","_id","_type","_rev","meta","rev","attributes","name","rels","relationships","isArray","map","handleTopLevel","included","forEach","r","NOREV","docType","changes","tries","normalizeDoctype","DOCTYPE_FILES","KNOWN_DOCTYPES","REVERSE_KNOWN","keys","k","isQualified","known","parseSelector","normalizeSelector","makeMapReduceQuery","fields","defineIndexV2","defineIndexV3","indexRef","queryV2","queryV3","VALUEOPERATORS","LOGICOPERATORS","MAP_TEMPLATE","toLowerCase","emit","FIELDSPLACEHOLDER","toString","COUCHDB_INFINITY","COUCHDB_LOWEST","indexName","capitalize","indexDefinition","makeMapFunction","reduce","use_index","selector","limit","since","descending","sort","f","docs","charAt","toUpperCase","operator","acc","concat","filters","filter","op","field","applySelector","lower","upper","inclusiveEnd","startkey","endkey","inclusive_end","mrquery","firstFreeValueField","normalizedSelector","used","isFreeValue","contentTypeOctetStream","doUpload","ArrayBuffer","isBuffer","isFile","File","isBlob","Blob","isStream","readable","pipe","isString","lastModifiedDate","Date","toGMTString","dirID","attrs","db","children","addIsDir","toJsonApi","extractResponseLinkRelated","related","paths","archive","isDir","contents","clone","replicateFromCozyWithAuth","pluginLoaded","doctypes","timer","plugin","database","autoSync","createIndexes","setInterval","replicate","on","info","replication","cancel","clearInterval","events","live","basic","toBasicAuth","from","eventNames","eventName","createIndex","index","ids","refs","makeReferencesPath","file"],"mappings":"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","file":"cozy-client.node.js","sourcesContent":[" \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 d3eadd99fef6f8ead0e6","module.exports = require(\"isomorphic-fetch\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"isomorphic-fetch\"\n// module id = 1\n// module chunks = 0","/* global fetch */\n\nimport {unpromiser, retry, warn} from './utils'\nimport {LocalStorage, MemoryStorage} from './auth_storage'\nimport {AppToken as AppTokenV2, getAppToken as getAppTokenV2} from './auth_v2'\nimport * as auth from './auth_v3'\nimport * as data from './data'\nimport * as mango from './mango'\nimport * as files from './files'\nimport * as offline from './offline'\nimport * as settings from './settings'\nimport * as relations from './relations'\n\nconst {\n AppToken: AppTokenV3,\n AccessToken: AccessTokenV3,\n Client: ClientV3\n} = auth\n\nconst AuthNone = 0\nconst AuthRunning = 1\nconst AuthError = 2\nconst AuthOK = 3\n\nconst defaultClientParams = {\n softwareID: 'github.com/cozy/cozy-client-js'\n}\n\nconst dataProto = {\n create: data.create,\n find: data.find,\n update: data.update,\n delete: data._delete,\n updateAttributes: data.updateAttributes,\n changesFeed: data.changesFeed,\n defineIndex: mango.defineIndex,\n query: mango.query,\n addReferencedFiles: relations.addReferencedFiles,\n listReferencedFiles: relations.listReferencedFiles,\n destroy: function (...args) {\n warn('destroy is deprecated, use cozy.data.delete instead.')\n return data._delete(...args)\n }\n}\n\nconst authProto = {\n registerClient: auth.registerClient,\n updateClient: auth.updateClient,\n unregisterClient: auth.unregisterClient,\n getClient: auth.getClient,\n getAuthCodeURL: auth.getAuthCodeURL,\n getAccessToken: auth.getAccessToken,\n refreshToken: auth.refreshToken\n}\n\nconst filesProto = {\n create: files.create,\n createDirectory: files.createDirectory,\n updateById: files.updateById,\n updateAttributesById: files.updateAttributesById,\n updateAttributesByPath: files.updateAttributesByPath,\n trashById: files.trashById,\n statById: files.statById,\n statByPath: files.statByPath,\n downloadById: files.downloadById,\n downloadByPath: files.downloadByPath,\n getDowloadLink: files.getDowloadLink,\n getArchiveLink: files.getArchiveLink,\n listTrash: files.listTrash,\n clearTrash: files.clearTrash,\n restoreById: files.restoreById,\n destroyById: files.destroyById\n}\n\nconst offlineProto = {\n init: offline.init,\n getDoctypes: offline.getDoctypes,\n // database\n createDatabase: offline.createDatabase,\n hasDatabase: offline.hasDatabase,\n getDatabase: offline.getDatabase,\n destroyDatabase: offline.destroyDatabase,\n // replication\n replicateFromCozy: offline.replicateFromCozy,\n hasSync: offline.hasSync,\n startAllSync: offline.startAllSync,\n startSync: offline.startSync,\n stopAllSync: offline.stopAllSync,\n stopSync: offline.stopSync\n}\n\nconst settingsProto = {\n diskUsage: settings.diskUsage\n}\n\nclass Client {\n constructor (options) {\n this.data = {}\n this.files = {}\n this.offline = {}\n this.settings = {}\n this.auth = {\n Client: ClientV3,\n AccessToken: AccessTokenV3,\n AppToken: AppTokenV3,\n AppTokenV2: AppTokenV2,\n LocalStorage: LocalStorage,\n MemoryStorage: MemoryStorage\n }\n this._inited = false\n if (options) {\n this.init(options)\n }\n }\n\n init (options = {}) {\n this._inited = true\n this._oauth = false // is oauth activated or not\n this._token = null // application token\n this._authstate = AuthNone\n this._authcreds = null\n this._storage = null\n this._version = null\n this._offline = null\n\n const token = options.token\n const oauth = options.oauth\n if (token && oauth) {\n throw new Error('Cannot specify an application token with a oauth activated')\n }\n\n if (token) {\n this._token = new AppTokenV3({ token })\n } else if (oauth) {\n this._oauth = true\n this._storage = oauth.storage\n this._clientParams = Object.assign({}, defaultClientParams, oauth.clientParams)\n this._onRegistered = oauth.onRegistered || nopOnRegistered\n }\n\n let url = options.cozyURL || ''\n while (url[url.length - 1] === '/') {\n url = url.slice(0, -1)\n }\n\n this._url = url\n\n const disablePromises = !!options.disablePromises\n addToProto(this, this.data, dataProto, disablePromises)\n addToProto(this, this.auth, authProto, disablePromises)\n addToProto(this, this.files, filesProto, disablePromises)\n addToProto(this, this.offline, offlineProto, disablePromises)\n addToProto(this, this.settings, settingsProto, disablePromises)\n\n if (options.offline) {\n this.offline.init(options.offline)\n }\n }\n\n authorize () {\n const state = this._authstate\n if (state === AuthOK || state === AuthRunning) {\n return this._authcreds\n }\n\n this._authstate = AuthRunning\n this._authcreds = this.isV2().then((isV2) => {\n if (isV2 && this._oauth) {\n throw new Error('OAuth is not supported on the V2 stack')\n }\n if (this._oauth) {\n return auth.oauthFlow(\n this,\n this._storage,\n this._clientParams,\n this._onRegistered\n )\n }\n // we expect to be on a client side application running in a browser\n // with cookie-based authentication.\n if (isV2) {\n return getAppTokenV2()\n } else if (this._token) {\n return Promise.resolve({client: null, token: this._token})\n } else {\n throw new Error('Missing application token')\n }\n })\n\n this._authcreds.then(\n () => { this._authstate = AuthOK },\n () => { this._authstate = AuthError })\n\n return this._authcreds\n }\n\n saveCredentials (client, token) {\n const creds = {client, token}\n if (!this._storage || this._authstate === AuthRunning) {\n return Promise.resolve(creds)\n }\n this._storage.save(auth.CredsKey, creds)\n this._authcreds = Promise.resolve(creds)\n return this._authcreds\n }\n\n fullpath (path) {\n return this.isV2().then((isV2) => {\n const pathprefix = isV2 ? '/ds-api' : ''\n return this._url + pathprefix + path\n })\n }\n\n isV2 () {\n if (!this._version) {\n this._version = retry(() => fetch(`${this._url}/status/`), 3)()\n .then((res) => {\n if (!res.ok) {\n throw new Error('Could not fetch cozy status')\n } else {\n return res.json()\n }\n })\n .then((status) => status.datasystem !== undefined)\n }\n return this._version\n }\n}\n\nfunction nopOnRegistered () {\n throw new Error('Missing onRegistered callback')\n}\n\nfunction protoify (context, fn) {\n return function prototyped (...args) {\n return fn(context, ...args)\n }\n}\n\nfunction addToProto (ctx, obj, proto, disablePromises) {\n for (const attr in proto) {\n let fn = protoify(ctx, proto[attr])\n if (disablePromises) {\n fn = unpromiser(fn)\n }\n obj[attr] = fn\n }\n}\n\nmodule.exports = new Client()\nObject.assign(module.exports, {Client, LocalStorage, MemoryStorage})\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","const FuzzFactor = 0.3\n\nexport function unpromiser (fn) {\n return function (...args) {\n const value = fn.apply(this, args)\n if (!isPromise(value)) {\n return value\n }\n const l = args.length\n if (l === 0 || typeof args[l - 1] !== 'function') {\n return\n }\n const cb = args[l - 1]\n value.then(\n (res) => cb(null, res),\n (err) => cb(err, null)\n )\n return\n }\n}\n\nexport function isPromise (value) {\n return !!value && typeof value.then === 'function'\n}\n\nexport function sleep (time, args) {\n return new Promise((resolve) => {\n setTimeout(resolve, time, args)\n })\n}\n\nexport function retry (fn, count, delay = 300) {\n return function doTry (...args) {\n return fn(...args).catch((err) => {\n if (--count < 0) {\n throw err\n }\n return sleep(getBackedoffDelay(delay, count))\n .then(() => doTry(...args))\n })\n }\n}\n\nexport function getFuzzedDelay (retryDelay) {\n const fuzzingFactor = ((Math.random() * 2) - 1) * FuzzFactor\n return retryDelay * (1.0 + fuzzingFactor)\n}\n\nexport function getBackedoffDelay (retryDelay, retryCount = 1) {\n return getFuzzedDelay(retryDelay * Math.pow(2, retryCount - 1))\n}\n\nexport function createPath (cozy, isV2, doctype, id = '', query = null) {\n let route = '/data/'\n if (!isV2) {\n route += `${encodeURIComponent(doctype)}/`\n }\n if (id !== '') {\n route += encodeURIComponent(id)\n }\n const q = encodeQuery(query)\n if (q !== '') {\n route += '?' + q\n }\n return route\n}\n\nexport function encodeQuery (query) {\n if (!query) {\n return ''\n }\n let q = ''\n for (const qname in query) {\n if (q !== '') {\n q += '&'\n }\n q += `${encodeURIComponent(qname)}=${encodeURIComponent(query[qname])}`\n }\n return q\n}\n\nexport function decodeQuery (url) {\n let queryIndex = url.indexOf('?')\n if (queryIndex < 0) {\n queryIndex = url.length\n }\n const queries = {}\n let fragIndex = url.indexOf('#')\n if (fragIndex < 0) {\n fragIndex = url.length\n }\n if (fragIndex < queryIndex) {\n return queries\n }\n const queryStr = url.slice(queryIndex + 1, fragIndex)\n if (queryStr === '') {\n return queries\n }\n const parts = queryStr.split('&')\n for (let i = 0; i < parts.length; i++) {\n let pair = parts[i].split('=')\n if (pair.length === 0 || pair[0] === '') {\n continue\n }\n const qname = decodeURIComponent(pair[0])\n if (queries.hasOwnProperty(qname)) {\n continue\n }\n if (pair.length === 1) {\n queries[qname] = true\n } else if (pair.length === 2) {\n queries[qname] = decodeURIComponent(pair[1])\n } else {\n throw new Error('Malformed URL')\n }\n }\n return queries\n}\n\nconst warned = []\nexport function warn (text) {\n if (warned.indexOf(text) === -1) {\n warned.push(text)\n console.warn('cozy-client-js', text)\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils.js","export class LocalStorage {\n constructor (storage, prefix) {\n if (!storage && typeof window !== 'undefined') {\n storage = window.localStorage\n }\n this.storage = storage\n this.prefix = prefix || 'cozy:oauth:'\n }\n\n save (key, value) {\n return new Promise(resolve => {\n this.storage.setItem(this.prefix + key, JSON.stringify(value))\n resolve(value)\n })\n }\n\n load (key) {\n return new Promise(resolve => {\n const item = this.storage.getItem(this.prefix + key)\n if (!item) {\n resolve()\n } else {\n resolve(JSON.parse(item))\n }\n })\n }\n\n delete (key) {\n return new Promise(resolve => resolve(\n this.storage.removeItem(this.prefix + key)))\n }\n\n clear () {\n return new Promise(resolve => {\n const storage = this.storage\n for (let i = 0; i < storage.length; i++) {\n const key = storage.key(i)\n if (key.indexOf(this.prefix) === 0) {\n storage.removeItem(key)\n }\n }\n resolve()\n })\n }\n}\n\nexport class MemoryStorage {\n constructor () {\n this.hash = Object.create(null)\n }\n\n save (key, value) {\n this.hash[key] = value\n return Promise.resolve(value)\n }\n\n load (key) {\n return Promise.resolve(this.hash[key])\n }\n\n delete (key) {\n const deleted = delete this.hash[key]\n return Promise.resolve(deleted)\n }\n\n clear () {\n this.hash = Object.create(null)\n return Promise.resolve()\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/auth_storage.js","/* global btoa */\nconst V2TOKEN_ABORT_TIMEOUT = 3000\n\nexport function getAppToken () {\n return new Promise(function (resolve, reject) {\n if (typeof window === 'undefined') {\n return reject(new Error('getV2Token should be used in browser'))\n } else if (!window.parent) {\n return reject(new Error('getV2Token should be used in iframe'))\n } else if (!window.parent.postMessage) {\n return reject(new Error('getV2Token should be used in modern browser'))\n }\n const origin = window.location.origin\n const intent = {action: 'getToken'}\n let timeout = null\n const receiver = function (event) {\n let token\n try {\n token = new AppToken({\n appName: event.data.appName,\n token: event.data.token\n })\n } catch (e) {\n reject(e)\n return\n }\n window.removeEventListener('message', receiver)\n clearTimeout(timeout)\n resolve({ client: null, token })\n }\n window.addEventListener('message', receiver, false)\n window.parent.postMessage(intent, origin)\n timeout = setTimeout(() => {\n reject(new Error('No response from parent iframe after 3s'))\n }, V2TOKEN_ABORT_TIMEOUT)\n })\n}\n\nexport class AppToken {\n constructor (opts) {\n this.appName = opts.appName || ''\n this.token = opts.token || ''\n }\n\n toAuthHeader () {\n return 'Basic ' + btoa(`${this.appName}:${this.token}`)\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/auth_v2.js","module.exports = require(\"btoa\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"btoa\"\n// module id = 6\n// module chunks = 0","/* global btoa */\nimport {encodeQuery, decodeQuery} from './utils'\nimport {cozyFetchJSON, FetchError} from './fetch'\n\nconst StateSize = 16\n\nexport const CredsKey = 'creds'\nexport const StateKey = 'state'\n\nexport class Client {\n constructor (opts) {\n this.clientID = opts.clientID || opts.client_id || ''\n this.clientSecret = opts.clientSecret || opts.client_secret || ''\n this.registrationAccessToken = opts.registrationAccessToken || opts.registration_access_token || ''\n\n if (opts.redirect_uris) {\n this.redirectURI = opts.redirect_uris[0] || ''\n } else {\n this.redirectURI = opts.redirectURI || ''\n }\n\n this.softwareID = opts.softwareID || opts.software_id || ''\n this.softwareVersion = opts.softwareVersion || opts.software_version || ''\n this.clientName = opts.clientName || opts.client_name || ''\n this.clientKind = opts.clientKind || opts.client_kind || ''\n this.clientURI = opts.clientURI || opts.client_uri || ''\n\n this.logoURI = opts.logoURI || opts.logo_uri || ''\n this.policyURI = opts.policyURI || opts.policy_uri || ''\n\n if (!this.registrationAccessToken) {\n if (this.redirectURI === '') {\n throw new Error('Missing redirectURI field')\n }\n if (this.softwareID === '') {\n throw new Error('Missing softwareID field')\n }\n if (this.clientName === '') {\n throw new Error('Missing clientName field')\n }\n }\n }\n\n isRegistered () {\n return this.clientID !== ''\n }\n\n toRegisterJSON () {\n return {\n redirect_uris: [this.redirectURI],\n software_id: this.softwareID,\n software_version: this.softwareVersion,\n client_name: this.clientName,\n client_kind: this.clientKind,\n client_uri: this.clientURI,\n logo_uri: this.logoURI,\n policy_uri: this.policyURI\n }\n }\n\n toAuthHeader () {\n return 'Bearer ' + this.registrationAccessToken\n }\n}\n\nexport class AccessToken {\n constructor (opts) {\n this.tokenType = opts.tokenType || opts.token_type\n this.accessToken = opts.accessToken || opts.access_token\n this.refreshToken = opts.refreshToken || opts.refresh_token\n this.scope = opts.scope\n }\n\n toAuthHeader () {\n return 'Bearer ' + this.accessToken\n }\n\n toBasicAuth () {\n return `user:${this.accessToken}@`\n }\n}\n\nexport class AppToken {\n constructor (opts) {\n this.token = opts.token || ''\n }\n\n toAuthHeader () {\n return 'Bearer ' + this.token\n }\n\n toBasicAuth () {\n return `user:${this.token}@`\n }\n}\n\nexport function registerClient (cozy, client) {\n if (!(client instanceof Client)) {\n client = new Client(client)\n }\n if (client.isRegistered()) {\n return Promise.reject(new Error('Client already registered'))\n }\n return cozyFetchJSON(cozy, 'POST', '/auth/register', client.toRegisterJSON(), {\n disableAuth: true\n })\n .then((data) => new Client(data))\n}\n\nexport function updateClient (cozy, client, resetSecret = false) {\n if (!(client instanceof Client)) {\n client = new Client(client)\n }\n if (!client.isRegistered()) {\n return Promise.reject(new Error('Client not registered'))\n }\n let data = client.toRegisterJSON()\n data.client_id = client.clientID\n if (resetSecret) data.client_secret = client.clientSecret\n\n return cozyFetchJSON(cozy, 'PUT', `/auth/register/${client.clientID}`, data)\n .then((data) => createClient(data, client))\n}\n\nexport function unregisterClient (cozy, client) {\n return cozyFetchJSON(cozy, 'DELETE', `/auth/register/${client.clientID}`)\n}\n\n// getClient will retrive the registered client informations from the server.\nexport function getClient (cozy, client) {\n if (!(client instanceof Client)) {\n client = new Client(client)\n }\n if (!client.isRegistered()) {\n return Promise.reject(new Error('Client not registered'))\n }\n return cozyFetchJSON(cozy, 'GET', `/auth/register/${client.clientID}`, null, {\n manualAuthCredentials: {\n client: client,\n token: client\n }\n })\n .then((data) => createClient(data, client))\n}\n\n// createClient returns a new Client instance given on object containing the\n// data of the client, from the API, and an old instance of the client.\nfunction createClient (data, oldClient) {\n const newClient = new Client(data)\n // we need to keep track of the registrationAccessToken since it is send\n // only on registration. The GET /auth/register/:client-id endpoint does\n // not return this token.\n const shouldPassRegistration = (\n !!oldClient &&\n oldClient.registrationAccessToken !== '' &&\n newClient.registrationAccessToken === ''\n )\n if (shouldPassRegistration) {\n newClient.registrationAccessToken = oldClient.registrationAccessToken\n }\n return newClient\n}\n\n// getAuthCodeURL returns a pair {authURL,state} given a registered client. The\n// state should be stored in order to be checked against on the user validation\n// phase.\nexport function getAuthCodeURL (cozy, client, scopes = []) {\n if (!(client instanceof Client)) {\n client = new Client(client)\n }\n if (!client.isRegistered()) {\n throw new Error('Client not registered')\n }\n const state = generateRandomState()\n const query = {\n 'client_id': client.clientID,\n 'redirect_uri': client.redirectURI,\n 'state': state,\n 'response_type': 'code',\n 'scope': scopes.join(' ')\n }\n return {\n url: cozy._url + `/auth/authorize?${encodeQuery(query)}`,\n state: state\n }\n}\n\n// getAccessToken perform a request on the access_token entrypoint with the\n// authorization_code grant type in order to generate a new access token for a\n// newly registered client.\n//\n// This method extracts the access code and state from the given URL. By\n// default it uses window.location.href. Also, it checks the given state with\n// the one specified in the URL query parameter to prevent CSRF attacks.\nexport function getAccessToken (cozy, client, state, pageURL = '') {\n if (!state) {\n return Promise.reject(new Error('Missing state value'))\n }\n const grantQueries = getGrantCodeFromPageURL(pageURL)\n if (grantQueries === null) {\n return Promise.reject(new Error('Missing states from current URL'))\n }\n if (state !== grantQueries.state) {\n return Promise.reject(new Error('Given state does not match url query state'))\n }\n return retrieveToken(cozy, client, null, {\n 'grant_type': 'authorization_code',\n 'code': grantQueries.code\n })\n}\n\n// refreshToken perform a request on the access_token entrypoint with the\n// refresh_token grant type in order to refresh the given token.\nexport function refreshToken (cozy, client, token) {\n return retrieveToken(cozy, client, token, {\n 'grant_type': 'refresh_token',\n 'code': token.refreshToken\n })\n}\n\n// oauthFlow performs the stateful registration and access granting of an OAuth\n// client.\nexport function oauthFlow (cozy, storage, clientParams, onRegistered) {\n let tryCount = 0\n\n function clearAndRetry (err) {\n if (tryCount++ > 0) {\n throw err\n }\n return storage.clear().then(() =>\n oauthFlow(cozy, storage, clientParams, onRegistered))\n }\n\n function registerNewClient () {\n return storage.clear()\n .then(() => registerClient(cozy, clientParams))\n .then((client) => {\n const {url, state} = getAuthCodeURL(cozy, client, clientParams.scopes)\n return storage.save(StateKey, {client, url, state})\n })\n }\n\n return Promise.all([\n storage.load(CredsKey),\n storage.load(StateKey)\n ])\n .then(([credentials, storedState]) => {\n // If credentials are cached we re-fetch the registered client with the\n // said token. Fetching the client, if the token is outdated we should try\n // the token is refreshed.\n if (credentials) {\n let oldClient, token\n try {\n oldClient = new Client(credentials.client)\n token = new AccessToken(credentials.token)\n } catch (err) {\n // bad cache, we should clear and retry the process\n return clearAndRetry(err)\n }\n return getClient(cozy, oldClient)\n .then((client) => ({client, token}))\n .catch((err) => {\n // If we fall into an error while fetching the client (because of a\n // bad connectivity for instance), we do not bail the whole process\n // since the client should be able to continue with the persisted\n // client and token.\n //\n // If it is an explicit Unauthorized error though, we bail, clear th\n // cache and retry.\n if (FetchError.isUnauthorized(err)) {\n throw err\n }\n return { client: oldClient, token }\n })\n }\n\n // Otherwise register a new client if necessary (ie. no client is stored)\n // and call the onRegistered callback to wait for the user to grant the\n // access. Finally fetches to access token on success.\n let statePromise\n if (!storedState) {\n statePromise = registerNewClient()\n } else {\n statePromise = Promise.resolve(storedState)\n }\n\n let client, state, token\n return statePromise\n .then((data) => {\n client = data.client\n state = data.state\n return Promise.resolve(onRegistered(client, data.url))\n })\n .then((pageURL) => getAccessToken(cozy, client, state, pageURL))\n .then((t) => { token = t })\n .then(() => storage.delete(StateKey))\n .then(() => ({client, token}))\n })\n .then(\n (creds) => storage.save(CredsKey, creds),\n (err) => {\n if (FetchError.isUnauthorized(err)) {\n return clearAndRetry(err)\n } else {\n throw err\n }\n })\n}\n\n// retrieveToken perform a request on the access_token entrypoint in order to\n// fetch a token.\nfunction retrieveToken (cozy, client, token, query) {\n if (!(client instanceof Client)) {\n client = new Client(client)\n }\n if (!client.isRegistered()) {\n return Promise.reject(new Error('Client not registered'))\n }\n const body = encodeQuery(Object.assign({}, query, {\n 'client_id': client.clientID,\n 'client_secret': client.clientSecret\n }))\n return cozyFetchJSON(cozy, 'POST', '/auth/access_token', body, {\n disableAuth: (token === null),\n manualAuthCredentials: { client, token },\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' }\n })\n .then((data) => new AccessToken(data))\n}\n\n// getGrantCodeFromPageURL extract the state and access_code query parameters\n// from the given url\nfunction getGrantCodeFromPageURL (pageURL = '') {\n if (pageURL === '' && typeof window !== 'undefined') {\n pageURL = window.location.href\n }\n const queries = decodeQuery(pageURL)\n if (!queries.hasOwnProperty('state')) {\n return null\n }\n return {\n state: queries['state'],\n code: queries['access_code']\n }\n}\n\n// generateRandomState will try to generate a 128bits random value from a secure\n// pseudo random generator. It will fallback on Math.random if it cannot find\n// such generator.\nfunction generateRandomState () {\n let buffer\n if (typeof window !== 'undefined' &&\n typeof window.crypto !== 'undefined' &&\n typeof window.crypto.getRandomValues === 'function') {\n buffer = new Uint8Array(StateSize)\n window.crypto.getRandomValues(buffer)\n } else {\n try {\n buffer = require('crypto').randomBytes(StateSize)\n } catch (e) {}\n }\n if (!buffer) {\n buffer = new Array(StateSize)\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] = Math.floor((Math.random() * 255))\n }\n }\n return btoa(String.fromCharCode.apply(null, buffer))\n .replace(/=+$/, '')\n .replace(/\\//g, '_')\n .replace(/\\+/g, '-')\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/auth_v3.js","/* global fetch */\nimport {refreshToken, AccessToken} from './auth_v3'\nimport {retry} from './utils'\nimport jsonapi from './jsonapi'\n\nexport function cozyFetch (cozy, path, options = {}) {\n return cozy.fullpath(path).then((fullpath) => {\n let resp\n if (options.disableAuth) {\n resp = fetch(fullpath, options)\n } else if (options.manualAuthCredentials) {\n resp = cozyFetchWithAuth(cozy, fullpath, options, options.manualAuthCredentials)\n } else {\n resp = cozy.authorize().then((credentials) =>\n cozyFetchWithAuth(cozy, fullpath, options, credentials))\n }\n return resp.then(handleResponse)\n })\n}\n\nfunction cozyFetchWithAuth (cozy, fullpath, options, credentials) {\n if (credentials) {\n options.headers = options.headers || {}\n options.headers['Authorization'] = credentials.token.toAuthHeader()\n }\n\n // the option credentials:include tells fetch to include the cookies in the\n // request even for cross-origin requests\n options.credentials = 'include'\n\n return Promise.all([\n cozy.isV2(),\n fetch(fullpath, options)\n ]).then(([isV2, res]) => {\n if (res.status !== 401 || isV2 || !credentials) {\n return res\n }\n // we try to refresh the token only for OAuth, ie, the client defined\n // and the token is an instance of AccessToken.\n const { client, token } = credentials\n if (!client || !(token instanceof AccessToken)) {\n return res\n }\n return retry(() => refreshToken(cozy, client, token), 3)()\n .then((newToken) => cozy.saveCredentials(client, newToken))\n .then((credentials) => cozyFetchWithAuth(cozy, fullpath, options, credentials))\n })\n}\n\nexport function cozyFetchJSON (cozy, method, path, body, options = {}) {\n options.method = method\n\n const headers = options.headers = options.headers || {}\n\n headers['Accept'] = 'application/json'\n\n if (method !== 'GET' && method !== 'HEAD' && body !== undefined) {\n if (headers['Content-Type']) {\n options.body = body\n } else {\n headers['Content-Type'] = 'application/json'\n options.body = JSON.stringify(body)\n }\n }\n\n return cozyFetch(cozy, path, options)\n .then(handleJSONResponse)\n}\n\nfunction handleResponse (res) {\n if (res.ok) {\n return res\n }\n let data\n const contentType = res.headers.get('content-type')\n if (contentType && contentType.indexOf('json') >= 0) {\n data = res.json()\n } else {\n data = res.text()\n }\n return data.then(err => {\n throw new FetchError(res, err)\n })\n}\n\nfunction handleJSONResponse (res) {\n const contentType = res.headers.get('content-type')\n if (!contentType || contentType.indexOf('json') < 0) {\n return res.text((data) => {\n throw new FetchError(res, new Error('Response is not JSON: ' + data))\n })\n }\n\n const json = res.json()\n if (contentType.indexOf('application/vnd.api+json') === 0) {\n return json.then(jsonapi)\n } else {\n return json\n }\n}\n\nexport class FetchError {\n constructor (res, reason) {\n this.response = res\n this.url = res.url\n this.status = res.status\n this.reason = reason\n }\n\n isUnauthorized () {\n return this.status === 401\n }\n}\n\nFetchError.isUnauthorized = function (err) {\n return (err instanceof FetchError && err.isUnauthorized())\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/fetch.js","function indexKey (doc) {\n return doc.type + '/' + doc.id\n}\n\nfunction findByRef (resources, ref) {\n return resources[indexKey(ref)]\n}\n\nfunction handleResource (rawResource, resources, links) {\n let resource = {\n _id: rawResource.id,\n _type: rawResource.type,\n _rev: (rawResource.meta && rawResource.meta.rev),\n links: Object.assign({}, rawResource.links, links),\n attributes: rawResource.attributes,\n relations: (name) => {\n let rels = rawResource.relationships[name]\n if (rels === undefined || rels.data === undefined) return undefined\n if (rels.data === null) return null\n if (!Array.isArray(rels.data)) return findByRef(resources, rels.data)\n return rels.data.map(ref => findByRef(resources, ref))\n }\n }\n\n resources[indexKey(rawResource)] = resource\n\n return resource\n}\n\nfunction handleTopLevel (doc, resources = {}) {\n // build an index of included resource by Type & ID\n const included = doc.included\n\n if (Array.isArray(included)) {\n included.forEach((r) => handleResource(r, resources, doc.links))\n }\n\n if (Array.isArray(doc.data)) {\n return doc.data.map((r) => handleResource(r, resources, doc.links))\n } else {\n return handleResource(doc.data, resources, doc.links)\n }\n}\n\nexport default handleTopLevel\n\n\n\n// WEBPACK FOOTER //\n// ./src/jsonapi.js","module.exports = require(\"crypto\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"crypto\"\n// module id = 10\n// module chunks = 0","import {createPath} from './utils'\nimport {normalizeDoctype} from './doctypes'\nimport {cozyFetchJSON} from './fetch'\n\nconst NOREV = 'stack-v2-no-rev'\n\nexport function create (cozy, doctype, attributes) {\n return cozy.isV2().then((isV2) => {\n doctype = normalizeDoctype(cozy, isV2, doctype)\n if (isV2) {\n attributes.docType = doctype\n }\n const path = createPath(cozy, isV2, doctype)\n return cozyFetchJSON(cozy, 'POST', path, attributes).then((resp) => {\n if (isV2) {\n return find(cozy, doctype, resp._id)\n } else {\n return resp.data\n }\n })\n })\n}\n\nexport function find (cozy, doctype, id) {\n return cozy.isV2().then((isV2) => {\n doctype = normalizeDoctype(cozy, isV2, doctype)\n\n if (!id) {\n return Promise.reject(new Error('Missing id parameter'))\n }\n\n const path = createPath(cozy, isV2, doctype, id)\n return cozyFetchJSON(cozy, 'GET', path).then((resp) => {\n if (isV2) {\n return Object.assign(resp, {_rev: NOREV})\n } else {\n return resp\n }\n })\n })\n}\n\nexport function changesFeed (cozy, doctype, options) {\n return cozy.isV2().then((isV2) => {\n doctype = normalizeDoctype(cozy, isV2, doctype)\n const path = createPath(cozy, isV2, doctype, '_changes', options)\n return cozyFetchJSON(cozy, 'GET', path)\n })\n}\n\nexport function update (cozy, doctype, doc, changes) {\n return cozy.isV2().then((isV2) => {\n doctype = normalizeDoctype(cozy, isV2, doctype)\n const {_id, _rev} = doc\n\n if (!_id) {\n return Promise.reject(new Error('Missing _id field in passed document'))\n }\n\n if (!isV2 && !_rev) {\n return Promise.reject(new Error('Missing _rev field in passed document'))\n }\n\n if (isV2) {\n changes = Object.assign({ _id }, changes)\n } else {\n changes = Object.assign({ _id, _rev }, changes)\n }\n\n const path = createPath(cozy, isV2, doctype, _id)\n return cozyFetchJSON(cozy, 'PUT', path, changes).then((resp) => {\n if (isV2) {\n return find(cozy, doctype, _id)\n } else {\n return resp.data\n }\n })\n })\n}\n\nexport function updateAttributes (cozy, doctype, _id, changes, tries = 3) {\n return cozy.isV2().then((isV2) => {\n doctype = normalizeDoctype(cozy, isV2, doctype)\n return find(cozy, doctype, _id)\n .then((doc) => {\n return update(cozy, doctype, doc, Object.assign({ _id }, doc, changes))\n })\n .catch((err) => {\n if (tries > 0) {\n return updateAttributes(cozy, doctype, _id, changes, tries - 1)\n } else {\n throw err\n }\n })\n })\n}\n\nexport function _delete (cozy, doctype, doc) {\n return cozy.isV2().then((isV2) => {\n doctype = normalizeDoctype(cozy, isV2, doctype)\n const {_id, _rev} = doc\n\n if (!_id) {\n return Promise.reject(new Error('Missing _id field in passed document'))\n }\n\n if (!isV2 && !_rev) {\n return Promise.reject(new Error('Missing _rev field in passed document'))\n }\n\n const query = isV2 ? null : { rev: _rev }\n const path = createPath(cozy, isV2, doctype, _id, query)\n return cozyFetchJSON(cozy, 'DELETE', path).then((resp) => {\n if (isV2) {\n return {id: _id, rev: NOREV}\n } else {\n return resp\n }\n })\n })\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/data.js","import {warn} from './utils'\n\nexport const DOCTYPE_FILES = 'io.cozy.files'\n\nconst KNOWN_DOCTYPES = {\n 'files': DOCTYPE_FILES,\n 'folder': DOCTYPE_FILES,\n 'contact': 'io.cozy.contacts',\n 'event': 'io.cozy.events',\n 'track': 'io.cozy.labs.music.track',\n 'playlist': 'io.cozy.labs.music.playlist'\n}\n\nconst REVERSE_KNOWN = {}\nObject.keys(KNOWN_DOCTYPES).forEach(k => {\n REVERSE_KNOWN[KNOWN_DOCTYPES[k]] = k\n})\n\nexport function normalizeDoctype (cozy, isV2, doctype) {\n let isQualified = doctype.indexOf('.') !== -1\n if (isV2 && isQualified) {\n let known = REVERSE_KNOWN[doctype]\n if (known) return known\n return doctype.replace(/\\./g, '-')\n }\n if (!isV2 && !isQualified) {\n let known = KNOWN_DOCTYPES[doctype]\n if (known) {\n warn('you are using a non-qualified doctype ' + doctype + ' assumed to be ' + known)\n return known\n }\n throw new Error('Doctype ' + doctype + ' should be qualified.')\n }\n return doctype\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/doctypes.js","import {warn, createPath} from './utils'\nimport {normalizeDoctype} from './doctypes'\nimport {cozyFetchJSON} from './fetch'\n\nexport function defineIndex (cozy, doctype, fields) {\n return cozy.isV2().then((isV2) => {\n doctype = normalizeDoctype(cozy, isV2, doctype)\n if (!Array.isArray(fields) || fields.length === 0) {\n throw new Error('defineIndex fields should be a non-empty array')\n }\n if (isV2) {\n return defineIndexV2(cozy, doctype, fields)\n } else {\n return defineIndexV3(cozy, doctype, fields)\n }\n })\n}\n\nexport function query (cozy, indexRef, options) {\n return cozy.isV2().then((isV2) => {\n if (!indexRef) {\n throw new Error('query should be passed the indexRef')\n }\n if (isV2) {\n return queryV2(cozy, indexRef, options)\n } else {\n return queryV3(cozy, indexRef, options)\n }\n })\n}\n\n// Internals\n\nconst VALUEOPERATORS = ['$eq', '$gt', '$gte', '$lt', '$lte']\nconst LOGICOPERATORS = ['$or', '$and', '$not']\n\n/* eslint-disable */\nconst MAP_TEMPLATE = (function (doc) {\n if (doc.docType.toLowerCase() === 'DOCTYPEPLACEHOLDER'){\n emit(FIELDSPLACEHOLDER, doc)\n }\n}).toString().replace(/ /g, '').replace(/\\n/g, '')\nconst COUCHDB_INFINITY = {\"\\uFFFF\": \"\\uFFFF\"}\nconst COUCHDB_LOWEST = null\n/* eslint-enable */\n\n// defineIndexV2 is equivalent to defineIndex but only works for V2.\n// It transforms the index fields into a map reduce view.\nfunction defineIndexV2 (cozy, doctype, fields) {\n let indexName = 'by' + fields.map(capitalize).join('')\n let indexDefinition = { map: makeMapFunction(doctype, fields), reduce: '_count' }\n let path = `/request/${doctype}/${indexName}/`\n return cozyFetchJSON(cozy, 'PUT', path, indexDefinition)\n .then(() => ({ doctype: doctype, type: 'mapreduce', name: indexName, fields: fields }))\n}\n\n// defineIndexV2 is equivalent to defineIndex but only works for V2.\n// It transforms the index fields into a map reduce view.\nfunction defineIndexV3 (cozy, doctype, fields) {\n let path = createPath(cozy, false, doctype, '_index')\n let indexDefinition = {'index': {fields}}\n return cozyFetchJSON(cozy, 'POST', path, indexDefinition)\n .then((response) => ({ doctype: doctype, type: 'mango', name: response.id, fields: fields }))\n}\n\n// queryV2 is equivalent to query but only works for V2.\n// It transforms the query into a _views call using makeMapReduceQuery\nfunction queryV2 (cozy, indexRef, options) {\n if (indexRef.type !== 'mapreduce') {\n throw new Error('query indexRef should be the return value of defineIndexV2')\n }\n if (options.fields) {\n warn('query fields will be ignored on v2')\n }\n\n let path = `/request/${indexRef.doctype}/${indexRef.name}/`\n let opts = makeMapReduceQuery(indexRef, options)\n return cozyFetchJSON(cozy, 'POST', path, opts)\n .then((response) => response.map(r => r.value))\n}\n\n// queryV3 is equivalent to query but only works for V3\nfunction queryV3 (cozy, indexRef, options) {\n if (indexRef.type !== 'mango') {\n throw new Error('indexRef should be the return value of defineIndexV3')\n }\n\n let opts = {\n use_index: indexRef.name,\n fields: options.fields,\n selector: options.selector,\n limit: options.limit,\n since: options.since\n }\n\n if (options.descending) {\n opts.sort = indexRef.fields.map(f => ({ [f]: 'desc' }))\n }\n\n let path = createPath(cozy, false, indexRef.doctype, '_find')\n return cozyFetchJSON(cozy, 'POST', path, opts)\n .then((response) => response.docs)\n}\n\n// misc\nfunction capitalize (name) {\n return name.charAt(0).toUpperCase() + name.slice(1)\n}\n\nfunction makeMapFunction (doctype, fields) {\n fields = '[' + fields.map(name => 'doc.' + name).join(',') + ']'\n\n return MAP_TEMPLATE.replace('DOCTYPEPLACEHOLDER', doctype.toLowerCase())\n .replace('FIELDSPLACEHOLDER', fields)\n}\n\n// parseSelector takes a mango selector and returns it as an array of filter\n// a filter is [path, operator, value] array\n// a path is an array of field names\n// This function is only exported so it can be unit tested.\n// Example :\n// parseSelector({\"test\":{\"deep\": {\"$gt\": 3}}})\n// [[['test', 'deep'], '$gt', 3 ]]\nexport function parseSelector (selector, path = [], operator = '$eq') {\n if ((typeof selector) !== 'object') {\n return [[path, operator, selector]]\n }\n\n let keys = Object.keys(selector)\n if (keys.length === 0) {\n throw new Error('empty selector')\n } else {\n return keys.reduce(function (acc, k) {\n if (LOGICOPERATORS.indexOf(k) !== -1) {\n throw new Error('cozy-client-js does not support mango logic ops')\n } else if (VALUEOPERATORS.indexOf(k) !== -1) {\n return acc.concat(parseSelector(selector[k], path, k))\n } else {\n return acc.concat(parseSelector(selector[k], path.concat(k), '$eq'))\n }\n }, [])\n }\n}\n\n// normalizeSelector takes a mango selector and returns it as an object\n// normalized.\n// This function is only exported so it can be unit tested.\n// Example :\n// parseSelector({\"test\":{\"deep\": {\"$gt\": 3}}})\n// {\"test.deep\": {\"$gt\": 3}}\nexport function normalizeSelector (selector) {\n var filters = parseSelector(selector)\n return filters.reduce(function (acc, filter) {\n let [path, op, value] = filter\n let field = path.join('.')\n acc[field] = acc[field] || {}\n acc[field][op] = value\n return acc\n }, {})\n}\n\n// applySelector takes the normalized selector for the current field\n// and append the proper values to opts.startkey, opts.endkey\nfunction applySelector (selector, opts) {\n let value = selector['$eq']\n let lower = COUCHDB_LOWEST\n let upper = COUCHDB_INFINITY\n let inclusiveEnd\n\n if (value) {\n opts.startkey.push(value)\n opts.endkey.push(value)\n return false\n }\n\n value = selector['$gt']\n if (value) {\n throw new Error('operator $gt (strict greater than) not supported')\n }\n\n value = selector['$gte']\n if (value) {\n lower = value\n }\n\n value = selector['$lte']\n if (value) {\n upper = value\n inclusiveEnd = true\n }\n\n value = selector['$lt']\n if (value) {\n upper = value\n inclusiveEnd = false\n }\n\n opts.startkey.push(lower)\n opts.endkey.push(upper)\n if (inclusiveEnd !== undefined) opts.inclusive_end = inclusiveEnd\n return true\n}\n\n// makeMapReduceQuery takes a mango query and generate _views call parameters\n// to obtain same results depending on fields in the passed indexRef.\nexport function makeMapReduceQuery (indexRef, query) {\n let mrquery = {\n startkey: [],\n endkey: [],\n reduce: false\n }\n let firstFreeValueField = null\n let normalizedSelector = normalizeSelector(query.selector)\n\n indexRef.fields.forEach(function (field) {\n let selector = normalizedSelector[field]\n\n if (selector && firstFreeValueField != null) {\n throw new Error('Selector on field ' + field + ', but not on ' + firstFreeValueField + ' which is higher in index fields.')\n } else if (selector) {\n selector.used = true\n let isFreeValue = applySelector(selector, mrquery)\n if (isFreeValue) firstFreeValueField = field\n } else if (firstFreeValueField == null) {\n firstFreeValueField = field\n mrquery.endkey.push(COUCHDB_INFINITY)\n }\n })\n\n Object.keys(normalizedSelector).forEach(function (field) {\n if (!normalizedSelector[field].used) {\n throw new Error('Cant apply selector on ' + field + ', it is not in index')\n }\n })\n\n if (query.descending) {\n mrquery = {\n descending: true,\n reduce: false,\n startkey: mrquery.endkey,\n endkey: mrquery.startkey,\n inclusive_end: mrquery.inclusive_end\n }\n }\n\n return mrquery\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/mango.js","/* global Blob, File */\nimport {cozyFetch, cozyFetchJSON} from './fetch'\nimport jsonapi from './jsonapi'\nimport { DOCTYPE_FILES } from './doctypes'\n\nconst contentTypeOctetStream = 'application/octet-stream'\n\nfunction doUpload (cozy, data, method, path, options) {\n if (!data) {\n throw new Error('missing data argument')\n }\n\n // transform any ArrayBufferView to ArrayBuffer\n if (data.buffer && data.buffer instanceof ArrayBuffer) {\n data = data.buffer\n }\n\n const isBuffer = (typeof ArrayBuffer !== 'undefined' && data instanceof ArrayBuffer)\n const isFile = (typeof File !== 'undefined' && data instanceof File)\n const isBlob = (typeof Blob !== 'undefined' && data instanceof Blob)\n const isStream = (data.readable === true && typeof data.pipe === 'function')\n const isString = (typeof data === 'string')\n\n if (!isBuffer && !isFile && !isBlob && !isStream && !isString) {\n throw new Error('invalid data type')\n }\n\n let {contentType, lastModifiedDate} = options || {}\n if (!contentType) {\n if (isBuffer) {\n contentType = contentTypeOctetStream\n } else if (isFile) {\n contentType = data.type || contentTypeOctetStream\n if (!lastModifiedDate) {\n lastModifiedDate = data.lastModifiedDate\n }\n } else if (isBlob) {\n contentType = contentTypeOctetStream\n } else if (isStream) {\n contentType = contentTypeOctetStream\n } else if (typeof data === 'string') {\n contentType = 'text/plain'\n }\n }\n\n if (lastModifiedDate && typeof lastModifiedDate === 'string') {\n lastModifiedDate = new Date(lastModifiedDate)\n }\n\n return cozyFetch(cozy, path, {\n method: method,\n headers: {\n 'Content-Type': contentType,\n 'Date': lastModifiedDate ? lastModifiedDate.toGMTString() : ''\n },\n body: data\n })\n .then((res) => {\n const json = res.json()\n if (!res.ok) {\n return json.then(err => { throw err })\n } else {\n return json.then(jsonapi)\n }\n })\n}\n\nexport function create (cozy, data, options) {\n let {name, dirID} = options || {}\n\n // handle case where data is a file and contains the name\n if (!name && typeof data.name === 'string') {\n name = data.name\n }\n\n if (typeof name !== 'string' || name === '') {\n throw new Error('missing name argument')\n }\n\n const path = `/files/${encodeURIComponent(dirID || '')}`\n const query = `?Name=${encodeURIComponent(name)}&Type=file`\n return doUpload(cozy, data, 'POST', `${path}${query}`, options)\n}\n\nexport function createDirectory (cozy, options) {\n let {name, dirID, lastModifiedDate} = options || {}\n\n if (typeof name !== 'string' || name === '') {\n throw new Error('missing name argument')\n }\n\n if (lastModifiedDate && typeof lastModifiedDate === 'string') {\n lastModifiedDate = new Date(lastModifiedDate)\n }\n\n const path = `/files/${encodeURIComponent(dirID || '')}`\n const query = `?Name=${encodeURIComponent(name)}&Type=directory`\n return cozyFetchJSON(cozy, 'POST', `${path}${query}`, undefined, {\n headers: {\n 'Date': lastModifiedDate ? lastModifiedDate.toGMTString() : ''\n }\n })\n}\n\nexport function updateById (cozy, id, data, options) {\n return doUpload(cozy, data, 'PUT', `/files/${encodeURIComponent(id)}`, options)\n}\n\nexport function updateAttributesById (cozy, id, attrs) {\n if (!attrs || typeof attrs !== 'object') {\n throw new Error('missing attrs argument')\n }\n\n const body = { data: { attributes: attrs } }\n return cozyFetchJSON(cozy, 'PATCH',\n `/files/${encodeURIComponent(id)}`, body)\n}\n\nexport function updateAttributesByPath (cozy, path, attrs) {\n if (!attrs || typeof attrs !== 'object') {\n throw new Error('missing attrs argument')\n }\n\n const body = { data: { attributes: attrs } }\n return cozyFetchJSON(cozy, 'PATCH',\n `/files/metadata?Path=${encodeURIComponent(path)}`, body)\n}\n\nexport function trashById (cozy, id) {\n if (typeof id !== 'string' || id === '') {\n throw new Error('missing id argument')\n }\n return cozyFetchJSON(cozy, 'DELETE', `/files/${encodeURIComponent(id)}`)\n}\n\nexport function statById (cozy, id, offline = true) {\n if (offline && cozy.offline.hasDatabase(DOCTYPE_FILES)) {\n let db = cozy.offline.getDatabase(DOCTYPE_FILES)\n return Promise.all([\n db.get(id),\n db.find({selector: {'dir_id': id}})\n ]).then(([doc, children]) => {\n children = children.docs.map(doc => {\n return addIsDir(toJsonApi(cozy, doc))\n })\n return addIsDir(toJsonApi(cozy, doc, children))\n })\n }\n return cozyFetchJSON(cozy, 'GET', `/files/${encodeURIComponent(id)}`)\n .then(addIsDir)\n}\n\nexport function statByPath (cozy, path) {\n return cozyFetchJSON(cozy, 'GET', `/files/metadata?Path=${encodeURIComponent(path)}`)\n .then(addIsDir)\n}\n\nexport function downloadById (cozy, id) {\n return cozyFetch(cozy, `/files/download/${encodeURIComponent(id)}`)\n}\n\nexport function downloadByPath (cozy, path) {\n return cozyFetch(cozy, `/files/download?Path=${encodeURIComponent(path)}`)\n}\n\nfunction extractResponseLinkRelated (res) {\n let href = res.links && res.links.related\n if (!href) throw new Error('No related link in server response')\n return href\n}\n\nexport function getDowloadLink (cozy, path) {\n return cozyFetchJSON(cozy, 'POST', `/files/downloads?Path=${encodeURIComponent(path)}`)\n .then(extractResponseLinkRelated)\n}\n\nexport function getArchiveLink (cozy, paths, name = 'files') {\n const archive = {\n type: 'io.cozy.archives',\n attributes: {\n name: name,\n files: paths\n }\n }\n return cozyFetchJSON(cozy, 'POST', `/files/archive`, {data: archive})\n .then(extractResponseLinkRelated)\n}\n\nexport function listTrash (cozy) {\n return cozyFetchJSON(cozy, 'GET', `/files/trash`)\n}\n\nexport function clearTrash (cozy) {\n return cozyFetchJSON(cozy, 'DELETE', `/files/trash`)\n}\n\nexport function restoreById (cozy, id) {\n return cozyFetchJSON(cozy, 'POST', `/files/trash/${encodeURIComponent(id)}`)\n}\n\nexport function destroyById (cozy, id) {\n return cozyFetchJSON(cozy, 'DELETE', `/files/trash/${encodeURIComponent(id)}`)\n}\n\nfunction addIsDir (obj) {\n obj.isDir = obj.attributes.type === 'directory'\n return obj\n}\n\nfunction toJsonApi (cozy, doc, contents = []) {\n let clone = JSON.parse(JSON.stringify(doc))\n delete clone._id\n delete clone._rev\n return {\n _id: doc._id,\n _rev: doc._rev,\n _type: DOCTYPE_FILES,\n attributes: clone,\n relations: (name) => {\n if (name === 'contents') {\n return contents\n }\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/files.js","import PouchDB from 'pouchdb'\nimport pouchdbFind from 'pouchdb-find'\nimport { DOCTYPE_FILES } from './doctypes'\n\nlet pluginLoaded = false\n\nexport function init (cozy, { options = {}, doctypes = [], timer = false }) {\n for (let doctype of doctypes) {\n createDatabase(cozy, doctype, options)\n }\n if (timer) { startAllSync(cozy, timer) }\n}\n\nexport function createDatabase (cozy, doctype, options = {}, timer = false) {\n if (!pluginLoaded) {\n PouchDB.plugin(pouchdbFind)\n pluginLoaded = true\n }\n cozy._offline = cozy._offline || []\n cozy._offline[doctype] = cozy._offline[doctype] || {}\n let offline = cozy._offline[doctype]\n if (offline && offline.database) { return offline.database }\n offline.database = new PouchDB(doctype, options)\n offline.timer = timer\n offline.autoSync = null\n if (timer) { startSync(cozy, doctype, timer) }\n createIndexes(cozy, offline.database, doctype)\n return offline.database\n}\n\nexport function hasDatabase (cozy, doctype) {\n return cozy._offline !== null &&\n doctype in cozy._offline &&\n cozy._offline[doctype].database !== undefined\n}\n\nexport function getDatabase (cozy, doctype) {\n if (hasDatabase(cozy, doctype)) {\n return cozy._offline[doctype].database\n }\n return\n}\n\nexport function destroyDatabase (cozy, doctype) {\n if (hasDatabase(cozy, doctype)) {\n stopSync(cozy, doctype)\n getDatabase(cozy, doctype).destroy()\n delete getDatabase(cozy, doctype)\n }\n}\n\nexport function getDoctypes (cozy) {\n if (cozy._offline === null) { return [] }\n return Object.keys(cozy._offline)\n}\n\n//\n// SYNC\n//\n\nexport function startAllSync (cozy, timer) {\n if (timer) {\n const doctypes = getDoctypes(cozy)\n doctypes.forEach((doctype) => {\n startSync(cozy, doctype, timer)\n })\n }\n}\n\nexport function stopAllSync (cozy) {\n const doctypes = getDoctypes(cozy)\n doctypes.forEach((doctype) => {\n stopSync(cozy, doctype)\n })\n}\n\nexport function startSync (cozy, doctype, timer) {\n // TODO: add timer limitation for not flooding Gozy\n if (hasDatabase(cozy, doctype)) {\n if (hasSync(cozy, doctype)) {\n if (timer === cozy._offline[doctype].timer) { return }\n stopSync(cozy, doctype)\n }\n let offline = cozy._offline[doctype]\n offline.timer = timer\n offline.autoSync = setInterval(() => {\n if (offline.replicate === undefined) {\n offline.replicate = replicateFromCozy(cozy, doctype)\n offline.replicate.then((db) => {\n db.on('complete', (info) => {\n delete offline.replicate\n })\n })\n // TODO: add replicationToCozy\n }\n }, timer * 1000)\n }\n}\n\nexport function hasSync (cozy, doctype) {\n return cozy._offline !== null &&\n doctype in cozy._offline &&\n cozy._offline[doctype].autoSync !== null\n}\n\nexport function stopSync (cozy, doctype) {\n if (hasSync(cozy, doctype)) {\n let offline = cozy._offline[doctype]\n if (offline.replication) { offline.replication.cancel() }\n clearInterval(offline.autoSync)\n delete offline.autoSync\n }\n}\n\nexport function replicateFromCozy (cozy, doctype, options = {}, events = {}) {\n if (hasDatabase(cozy, doctype)) {\n if (options.live === true) {\n throw new Error('You can\\'t use `live` option with Cozy couchdb.')\n }\n if (options.manualAuthCredentials) {\n return replicateFromCozyWithAuth(cozy, doctype, options, events, options.manualAuthCredentials)\n } else {\n return cozy.authorize().then((credentials) => {\n return replicateFromCozyWithAuth(cozy, doctype, options, events, credentials)\n })\n }\n } else {\n throw new Error(`You should add this doctype: ${doctype} to offline.`)\n }\n}\n\nexport function replicateFromCozyWithAuth (cozy, doctype, options, events, credentials) {\n let basic = credentials.token.toBasicAuth()\n let url = (cozy._url + '/data/' + doctype).replace('//', `//${basic}`)\n let db = getDatabase(cozy, doctype)\n let replication = db.replicate.from(url, options)\n const eventNames = [\n 'change', 'paused', 'active', 'denied', 'complete', 'error'\n ]\n for (let eventName of eventNames) {\n if (typeof events[eventName] === 'function') {\n replication.on(eventName, events[eventName])\n }\n }\n return replication\n}\n\nfunction createIndexes (cozy, db, doctype) {\n if (doctype === DOCTYPE_FILES) {\n db.createIndex({index: {fields: ['dir_id']}})\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/offline.js","module.exports = require(\"pouchdb\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"pouchdb\"\n// module id = 16\n// module chunks = 0","module.exports = require(\"pouchdb-find\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"pouchdb-find\"\n// module id = 17\n// module chunks = 0","import {cozyFetchJSON} from './fetch'\n\nexport function diskUsage (cozy) {\n return cozyFetchJSON(cozy, 'GET', `/settings/disk-usage`)\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/settings.js","import {cozyFetchJSON} from './fetch'\nimport { DOCTYPE_FILES } from './doctypes'\n\nexport function addReferencedFiles (cozy, doc, ids) {\n if (!doc) throw new Error('missing doc argument')\n if (!Array.isArray(ids)) ids = [ids]\n\n const refs = ids.map((id) => ({type: DOCTYPE_FILES, id: id}))\n\n return cozyFetchJSON(cozy, 'POST', makeReferencesPath(doc), {data: refs})\n}\n\nexport function listReferencedFiles (cozy, doc) {\n if (!doc) throw new Error('missing doc argument')\n return cozyFetchJSON(cozy, 'GET', makeReferencesPath(doc))\n .then((files) => files.map((file) => file._id))\n}\n\nfunction makeReferencesPath (doc) {\n const type = encodeURIComponent(doc._type)\n const id = encodeURIComponent(doc._id)\n return `/data/${type}/${id}/relationships/references`\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/relations.js"],"sourceRoot":""} \ No newline at end of file