@panneau/data 1.0.0-alpha.22 → 1.0.0-alpha.232

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/es/index.js +74 -17
  2. package/lib/index.js +143 -86
  3. package/package.json +7 -7
package/es/index.js CHANGED
@@ -3,13 +3,13 @@ import React, { useState, useCallback, useEffect, useRef, useMemo, useContext }
3
3
  import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
4
4
  import _objectSpread from '@babel/runtime/helpers/objectSpread2';
5
5
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
6
- import PropTypes from 'prop-types';
7
6
  import { useUrlGenerator } from '@panneau/core/contexts';
7
+ import PropTypes from 'prop-types';
8
+ import _createClass from '@babel/runtime/helpers/createClass';
8
9
  import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
9
10
  import _assertThisInitialized from '@babel/runtime/helpers/assertThisInitialized';
10
11
  import _inherits from '@babel/runtime/helpers/inherits';
11
12
  import _createSuper from '@babel/runtime/helpers/createSuper';
12
- import _createClass from '@babel/runtime/helpers/createClass';
13
13
  import { getJSON, getCSRFHeaders, postJSON } from '@folklore/fetch';
14
14
  import { generatePath } from 'react-router';
15
15
  import { stringify } from 'query-string';
@@ -95,14 +95,16 @@ var useItems = function useItems(_ref) {
95
95
  _ref$getPageFromRespo = _ref.getPageFromResponse,
96
96
  getPageFromResponse = _ref$getPageFromRespo === void 0 ? function (_ref2) {
97
97
  var _ref2$pagination = _ref2.pagination,
98
- currentPage = _ref2$pagination.current_page,
98
+ currentPage = _ref2$pagination.page,
99
99
  lastPage = _ref2$pagination.last_page,
100
100
  total = _ref2$pagination.total,
101
+ perPage = _ref2$pagination.per_page,
101
102
  items = _ref2.data;
102
103
  return {
103
104
  page: parseInt(currentPage, 10),
104
105
  lastPage: parseInt(lastPage, 10),
105
106
  total: parseInt(total, 10),
107
+ count: parseInt(perPage, 10),
106
108
  items: items
107
109
  };
108
110
  } : _ref$getPageFromRespo,
@@ -326,13 +328,16 @@ var Base = /*#__PURE__*/function () {
326
328
  routes: {},
327
329
  generateUrl: null
328
330
  }, opts), {}, {
329
- baseUrl: opts.baseUrl
331
+ baseUrl: opts.baseUrl,
332
+ onUnauthorized: opts.onUnauthorized || null
330
333
  });
331
334
  }
332
335
 
333
336
  _createClass(Base, [{
334
337
  key: "requestGet",
335
338
  value: function requestGet(path) {
339
+ var _this = this;
340
+
336
341
  var query = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
337
342
  var queryString = query !== null ? stringify(query, {
338
343
  arrayFormat: 'bracket'
@@ -340,41 +345,59 @@ var Base = /*#__PURE__*/function () {
340
345
  return getJSON("".concat(this.getFullUrl(path)).concat(queryString !== null && queryString.length > 0 ? "?".concat(queryString) : ''), {
341
346
  credentials: 'include',
342
347
  headers: getCSRFHeaders()
348
+ })["catch"](function (error) {
349
+ return _this.onError(error);
343
350
  });
344
351
  }
345
352
  }, {
346
353
  key: "requestPost",
347
354
  value: function requestPost(path, data) {
355
+ var _this2 = this;
356
+
348
357
  return postJSON(this.getFullUrl(path), data, {
349
358
  credentials: 'include',
350
359
  headers: getCSRFHeaders()
360
+ })["catch"](function (error) {
361
+ return _this2.onError(error);
351
362
  });
352
363
  }
353
364
  }, {
354
365
  key: "requestPut",
355
366
  value: function requestPut(path, data) {
367
+ var _this3 = this;
368
+
356
369
  return postJSON(this.getFullUrl(path), _objectSpread({
357
370
  _method: 'PUT'
358
371
  }, data), {
359
372
  credentials: 'include',
360
373
  headers: getCSRFHeaders()
374
+ })["catch"](function (error) {
375
+ return _this3.onError(error);
361
376
  });
362
377
  }
363
378
  }, {
364
379
  key: "requestPatch",
365
380
  value: function requestPatch(path, data) {
381
+ var _this4 = this;
382
+
366
383
  return postJSON(this.getFullUrl(path), _objectSpread({
367
384
  _method: 'PATCH'
368
385
  }, data), {
369
386
  credentials: 'include',
370
387
  headers: getCSRFHeaders()
388
+ })["catch"](function (error) {
389
+ return _this4.onError(error);
371
390
  });
372
391
  }
373
392
  }, {
374
393
  key: "requestDelete",
375
394
  value: function requestDelete(path) {
395
+ var _this5 = this;
396
+
376
397
  return this.requestPost(path, {
377
398
  _method: 'DELETE'
399
+ })["catch"](function (error) {
400
+ return _this5.onError(error);
378
401
  });
379
402
  }
380
403
  }, {
@@ -398,6 +421,23 @@ var Base = /*#__PURE__*/function () {
398
421
  baseUrl = _this$options$baseUrl === void 0 ? null : _this$options$baseUrl;
399
422
  return baseUrl !== null ? "".concat(baseUrl.replace(/\/$/, ''), "/").concat(path.replace(/^\//, '')) : path;
400
423
  }
424
+ }, {
425
+ key: "onError",
426
+ value: function onError(err) {
427
+ var onUnauthorized = this.options.onUnauthorized;
428
+
429
+ var _ref = err || {},
430
+ _ref$status = _ref.status,
431
+ status = _ref$status === void 0 ? null : _ref$status;
432
+
433
+ var statusCode = parseInt(status, 10); // If status is refused and callback exists
434
+
435
+ if ((statusCode === 401 || statusCode === 419) && onUnauthorized !== null) {
436
+ return onUnauthorized();
437
+ }
438
+
439
+ throw err;
440
+ }
401
441
  }]);
402
442
 
403
443
  return Base;
@@ -446,10 +486,13 @@ var AuthApi = /*#__PURE__*/function () {
446
486
  }, {
447
487
  key: "logout",
448
488
  value: function logout() {
449
- var withCredentials = this.options.withCredentials;
450
- return this.api.fetchPost(this.api.route('auth.logout'), null, {
451
- withSession: !withCredentials,
452
- withCredentials: withCredentials
489
+ var url = this.api.getFullUrl(this.api.route('auth.logout'));
490
+ return fetch(url, {
491
+ method: 'POST',
492
+ headers: _objectSpread({}, getCSRFHeaders()),
493
+ credentials: 'include'
494
+ })["catch"](function (err) {
495
+ console.log('logout err', err); // eslint-disable-line
453
496
  });
454
497
  }
455
498
  }, {
@@ -716,7 +759,7 @@ var Api = /*#__PURE__*/function (_Base) {
716
759
  return _this;
717
760
  }
718
761
 
719
- return Api;
762
+ return _createClass(Api);
720
763
  }(Base);
721
764
 
722
765
  /* eslint-disable react/jsx-props-no-spreading */
@@ -727,22 +770,26 @@ var useApi = function useApi() {
727
770
  var propTypes$1 = {
728
771
  api: PropTypes.instanceOf(Api),
729
772
  baseUrl: PropTypes.string,
773
+ onUnauthorized: PropTypes.func,
730
774
  children: PropTypes.node.isRequired
731
775
  };
732
776
  var defaultProps$1 = {
733
777
  api: null,
778
+ onUnauthorized: null,
734
779
  baseUrl: undefined
735
780
  };
736
781
  var ApiProvider = function ApiProvider(_ref) {
737
782
  var initialApi = _ref.api,
738
783
  baseUrl = _ref.baseUrl,
784
+ onUnauthorized = _ref.onUnauthorized,
739
785
  children = _ref.children;
740
786
  var generateUrl = useUrlGenerator();
741
787
  var previousApi = useApi();
742
788
  var api = useMemo(function () {
743
789
  return initialApi || previousApi || new Api({
744
790
  baseUrl: baseUrl,
745
- generateUrl: generateUrl
791
+ generateUrl: generateUrl,
792
+ onUnauthorized: onUnauthorized
746
793
  });
747
794
  }, [previousApi, initialApi, baseUrl]);
748
795
  return /*#__PURE__*/React.createElement(ApiContext.Provider, {
@@ -752,6 +799,8 @@ var ApiProvider = function ApiProvider(_ref) {
752
799
  ApiProvider.propTypes = propTypes$1;
753
800
  ApiProvider.defaultProps = defaultProps$1;
754
801
 
802
+ var _excluded$4 = ["items", "pageItems"];
803
+
755
804
  var useMedias = function useMedias() {
756
805
  var query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
757
806
  var page = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
@@ -770,7 +819,7 @@ var useMedias = function useMedias() {
770
819
  }, opts)),
771
820
  items = _useItems.items,
772
821
  pageItems = _useItems.pageItems,
773
- request = _objectWithoutProperties(_useItems, ["items", "pageItems"]); // console.log('medias', items);
822
+ request = _objectWithoutProperties(_useItems, _excluded$4); // console.log('medias', items);
774
823
 
775
824
 
776
825
  return _objectSpread({
@@ -809,6 +858,8 @@ var useMediasRecent = function useMediasRecent(opts) {
809
858
  };
810
859
  };
811
860
 
861
+ var _excluded$3 = ["data"];
862
+
812
863
  var useMedia = function useMedia(id, opts) {
813
864
  var api = useApi();
814
865
  var loader = useCallback(function () {
@@ -817,7 +868,7 @@ var useMedia = function useMedia(id, opts) {
817
868
 
818
869
  var _useData = useData(loader, opts),
819
870
  data = _useData.data,
820
- request = _objectWithoutProperties(_useData, ["data"]);
871
+ request = _objectWithoutProperties(_useData, _excluded$3);
821
872
 
822
873
  return _objectSpread({
823
874
  story: data
@@ -844,6 +895,8 @@ var useMediaCreate = function useMediaCreate() {
844
895
  };
845
896
  };
846
897
 
898
+ var _excluded$2 = ["items", "pageItems"];
899
+
847
900
  var useMediaTags = function useMediaTags() {
848
901
  var query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
849
902
  var count = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5;
@@ -858,7 +911,7 @@ var useMediaTags = function useMediaTags() {
858
911
  }, opts)),
859
912
  items = _useItems.items;
860
913
  _useItems.pageItems;
861
- var request = _objectWithoutProperties(_useItems, ["items", "pageItems"]);
914
+ var request = _objectWithoutProperties(_useItems, _excluded$2);
862
915
 
863
916
  return _objectSpread({
864
917
  tags: items
@@ -885,7 +938,7 @@ var useMediaUpdate = function useMediaUpdate() {
885
938
  };
886
939
  };
887
940
 
888
- var useResourceUpdate$1 = function useResourceUpdate(resource) {
941
+ var useResourceDestroy = function useResourceDestroy(resource) {
889
942
  var id = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
890
943
 
891
944
  var _useState = useState(false),
@@ -910,6 +963,8 @@ var useResourceUpdate$1 = function useResourceUpdate(resource) {
910
963
  };
911
964
  };
912
965
 
966
+ var _excluded$1 = ["data"];
967
+
913
968
  var useResourceItem = function useResourceItem(resource, id, opts) {
914
969
  var api = useApi();
915
970
  var loader = useCallback(function () {
@@ -918,13 +973,15 @@ var useResourceItem = function useResourceItem(resource, id, opts) {
918
973
 
919
974
  var _useData = useData(loader, opts),
920
975
  data = _useData.data,
921
- request = _objectWithoutProperties(_useData, ["data"]);
976
+ request = _objectWithoutProperties(_useData, _excluded$1);
922
977
 
923
978
  return _objectSpread({
924
979
  item: data
925
980
  }, request);
926
981
  };
927
982
 
983
+ var _excluded = ["items", "pageItems"];
984
+
928
985
  var useResourceItems = function useResourceItems(resource) {
929
986
  var query = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
930
987
  var page = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
@@ -943,7 +1000,7 @@ var useResourceItems = function useResourceItems(resource) {
943
1000
  }, opts)),
944
1001
  items = _useItems.items,
945
1002
  pageItems = _useItems.pageItems,
946
- request = _objectWithoutProperties(_useItems, ["items", "pageItems"]);
1003
+ request = _objectWithoutProperties(_useItems, _excluded);
947
1004
 
948
1005
  return _objectSpread({
949
1006
  items: page !== null ? pageItems : items,
@@ -1022,4 +1079,4 @@ var DataProvider = function DataProvider(_ref) {
1022
1079
  DataProvider.propTypes = propTypes;
1023
1080
  DataProvider.defaultProps = defaultProps;
1024
1081
 
1025
- export { Api, ApiProvider, Base as BaseApi, DataProvider, useApi, useData, useItems, useMedia, useMediaCreate, useMediaTags, useMediaUpdate, useMedias, useMediasRecent as useMediasRecentSearches, useResourceUpdate$1 as useResourceDestroy, useResourceItem, useResourceItems, useResourceCreate as useResourceStore, useResourceUpdate };
1082
+ export { Api, ApiProvider, Base as BaseApi, DataProvider, useApi, useData, useItems, useMedia, useMediaCreate, useMediaTags, useMediaUpdate, useMedias, useMediasRecent as useMediasRecentSearches, useResourceDestroy, useResourceItem, useResourceItems, useResourceCreate as useResourceStore, useResourceUpdate };
package/lib/index.js CHANGED
@@ -7,14 +7,14 @@ var React = require('react');
7
7
  var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
8
8
  var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
9
9
  var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
10
- var PropTypes = require('prop-types');
11
10
  var contexts = require('@panneau/core/contexts');
11
+ var PropTypes = require('prop-types');
12
+ var _createClass = require('@babel/runtime/helpers/createClass');
12
13
  var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
13
14
  var _assertThisInitialized = require('@babel/runtime/helpers/assertThisInitialized');
14
15
  var _inherits = require('@babel/runtime/helpers/inherits');
15
16
  var _createSuper = require('@babel/runtime/helpers/createSuper');
16
- var _createClass = require('@babel/runtime/helpers/createClass');
17
- var fetch = require('@folklore/fetch');
17
+ var fetch$1 = require('@folklore/fetch');
18
18
  var reactRouter = require('react-router');
19
19
  var queryString = require('query-string');
20
20
 
@@ -26,11 +26,11 @@ var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumab
26
26
  var _objectSpread__default = /*#__PURE__*/_interopDefaultLegacy(_objectSpread);
27
27
  var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
28
28
  var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
29
+ var _createClass__default = /*#__PURE__*/_interopDefaultLegacy(_createClass);
29
30
  var _classCallCheck__default = /*#__PURE__*/_interopDefaultLegacy(_classCallCheck);
30
31
  var _assertThisInitialized__default = /*#__PURE__*/_interopDefaultLegacy(_assertThisInitialized);
31
32
  var _inherits__default = /*#__PURE__*/_interopDefaultLegacy(_inherits);
32
33
  var _createSuper__default = /*#__PURE__*/_interopDefaultLegacy(_createSuper);
33
- var _createClass__default = /*#__PURE__*/_interopDefaultLegacy(_createClass);
34
34
 
35
35
  var useData = function useData(loadData) {
36
36
  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
@@ -40,17 +40,17 @@ var useData = function useData(loadData) {
40
40
  autoload = _ref$autoload === void 0 ? true : _ref$autoload;
41
41
 
42
42
  var _useState = React.useState(false),
43
- _useState2 = _slicedToArray__default['default'](_useState, 2),
43
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
44
44
  loading = _useState2[0],
45
45
  setLoading = _useState2[1];
46
46
 
47
47
  var _useState3 = React.useState(false),
48
- _useState4 = _slicedToArray__default['default'](_useState3, 2),
48
+ _useState4 = _slicedToArray__default["default"](_useState3, 2),
49
49
  error = _useState4[0],
50
50
  setError = _useState4[1];
51
51
 
52
52
  var _useState5 = React.useState(initialData),
53
- _useState6 = _slicedToArray__default['default'](_useState5, 2),
53
+ _useState6 = _slicedToArray__default["default"](_useState5, 2),
54
54
  data = _useState6[0],
55
55
  setData = _useState6[1];
56
56
 
@@ -113,14 +113,16 @@ var useItems = function useItems(_ref) {
113
113
  _ref$getPageFromRespo = _ref.getPageFromResponse,
114
114
  getPageFromResponse = _ref$getPageFromRespo === void 0 ? function (_ref2) {
115
115
  var _ref2$pagination = _ref2.pagination,
116
- currentPage = _ref2$pagination.current_page,
116
+ currentPage = _ref2$pagination.page,
117
117
  lastPage = _ref2$pagination.last_page,
118
118
  total = _ref2$pagination.total,
119
+ perPage = _ref2$pagination.per_page,
119
120
  items = _ref2.data;
120
121
  return {
121
122
  page: parseInt(currentPage, 10),
122
123
  lastPage: parseInt(lastPage, 10),
123
124
  total: parseInt(total, 10),
125
+ count: parseInt(perPage, 10),
124
126
  items: items
125
127
  };
126
128
  } : _ref$getPageFromRespo,
@@ -156,7 +158,7 @@ var useItems = function useItems(_ref) {
156
158
  }, [initialPages, providedItems]);
157
159
 
158
160
  var _useState = React.useState(initialState),
159
- _useState2 = _slicedToArray__default['default'](_useState, 2),
161
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
160
162
  state = _useState2[0],
161
163
  setState = _useState2[1];
162
164
 
@@ -172,7 +174,7 @@ var useItems = function useItems(_ref) {
172
174
  }, []) : stateItems) || null;
173
175
 
174
176
  var updateState = function updateState(update) {
175
- return setState(_objectSpread__default['default'](_objectSpread__default['default']({}, state), update));
177
+ return setState(_objectSpread__default["default"](_objectSpread__default["default"]({}, state), update));
176
178
  };
177
179
 
178
180
  var updateFromResponse = function updateFromResponse(response) {
@@ -189,7 +191,7 @@ var useItems = function useItems(_ref) {
189
191
 
190
192
  if (isPaginated) {
191
193
  var newPage = getPageFromResponse(response);
192
- var newPages = (reset ? [newPage] : [].concat(_toConsumableArray__default['default']((pages || []).filter(function (it) {
194
+ var newPages = (reset ? [newPage] : [].concat(_toConsumableArray__default["default"]((pages || []).filter(function (it) {
193
195
  return it.page !== newPage.page;
194
196
  })), [newPage])).sort(function (a, b) {
195
197
  if (a === b) {
@@ -208,7 +210,7 @@ var useItems = function useItems(_ref) {
208
210
  return newPage;
209
211
  }
210
212
 
211
- var newItems = _toConsumableArray__default['default'](getItemsFromResponse(response));
213
+ var newItems = _toConsumableArray__default["default"](getItemsFromResponse(response));
212
214
 
213
215
  updateState({
214
216
  loaded: true,
@@ -220,7 +222,7 @@ var useItems = function useItems(_ref) {
220
222
  };
221
223
 
222
224
  var getNextPage = function getNextPage() {
223
- var allPages = lastPage !== -1 ? Array.call.apply(Array, [null].concat(_toConsumableArray__default['default'](Array(lastPage)))).map(function (it, index) {
225
+ var allPages = lastPage !== -1 ? Array.call.apply(Array, [null].concat(_toConsumableArray__default["default"](Array(lastPage)))).map(function (it, index) {
224
226
  return index + 1;
225
227
  }) : [];
226
228
  var remainingPages = allPages.filter(function (pageNumber) {
@@ -338,61 +340,82 @@ var Base = /*#__PURE__*/function () {
338
340
  function Base() {
339
341
  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
340
342
 
341
- _classCallCheck__default['default'](this, Base);
343
+ _classCallCheck__default["default"](this, Base);
342
344
 
343
- this.options = _objectSpread__default['default'](_objectSpread__default['default']({
345
+ this.options = _objectSpread__default["default"](_objectSpread__default["default"]({
344
346
  routes: {},
345
347
  generateUrl: null
346
348
  }, opts), {}, {
347
- baseUrl: opts.baseUrl
349
+ baseUrl: opts.baseUrl,
350
+ onUnauthorized: opts.onUnauthorized || null
348
351
  });
349
352
  }
350
353
 
351
- _createClass__default['default'](Base, [{
354
+ _createClass__default["default"](Base, [{
352
355
  key: "requestGet",
353
356
  value: function requestGet(path) {
357
+ var _this = this;
358
+
354
359
  var query = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
355
360
  var queryString$1 = query !== null ? queryString.stringify(query, {
356
361
  arrayFormat: 'bracket'
357
362
  }) : null;
358
- return fetch.getJSON("".concat(this.getFullUrl(path)).concat(queryString$1 !== null && queryString$1.length > 0 ? "?".concat(queryString$1) : ''), {
363
+ return fetch$1.getJSON("".concat(this.getFullUrl(path)).concat(queryString$1 !== null && queryString$1.length > 0 ? "?".concat(queryString$1) : ''), {
359
364
  credentials: 'include',
360
- headers: fetch.getCSRFHeaders()
365
+ headers: fetch$1.getCSRFHeaders()
366
+ })["catch"](function (error) {
367
+ return _this.onError(error);
361
368
  });
362
369
  }
363
370
  }, {
364
371
  key: "requestPost",
365
372
  value: function requestPost(path, data) {
366
- return fetch.postJSON(this.getFullUrl(path), data, {
373
+ var _this2 = this;
374
+
375
+ return fetch$1.postJSON(this.getFullUrl(path), data, {
367
376
  credentials: 'include',
368
- headers: fetch.getCSRFHeaders()
377
+ headers: fetch$1.getCSRFHeaders()
378
+ })["catch"](function (error) {
379
+ return _this2.onError(error);
369
380
  });
370
381
  }
371
382
  }, {
372
383
  key: "requestPut",
373
384
  value: function requestPut(path, data) {
374
- return fetch.postJSON(this.getFullUrl(path), _objectSpread__default['default']({
385
+ var _this3 = this;
386
+
387
+ return fetch$1.postJSON(this.getFullUrl(path), _objectSpread__default["default"]({
375
388
  _method: 'PUT'
376
389
  }, data), {
377
390
  credentials: 'include',
378
- headers: fetch.getCSRFHeaders()
391
+ headers: fetch$1.getCSRFHeaders()
392
+ })["catch"](function (error) {
393
+ return _this3.onError(error);
379
394
  });
380
395
  }
381
396
  }, {
382
397
  key: "requestPatch",
383
398
  value: function requestPatch(path, data) {
384
- return fetch.postJSON(this.getFullUrl(path), _objectSpread__default['default']({
399
+ var _this4 = this;
400
+
401
+ return fetch$1.postJSON(this.getFullUrl(path), _objectSpread__default["default"]({
385
402
  _method: 'PATCH'
386
403
  }, data), {
387
404
  credentials: 'include',
388
- headers: fetch.getCSRFHeaders()
405
+ headers: fetch$1.getCSRFHeaders()
406
+ })["catch"](function (error) {
407
+ return _this4.onError(error);
389
408
  });
390
409
  }
391
410
  }, {
392
411
  key: "requestDelete",
393
412
  value: function requestDelete(path) {
413
+ var _this5 = this;
414
+
394
415
  return this.requestPost(path, {
395
416
  _method: 'DELETE'
417
+ })["catch"](function (error) {
418
+ return _this5.onError(error);
396
419
  });
397
420
  }
398
421
  }, {
@@ -416,6 +439,23 @@ var Base = /*#__PURE__*/function () {
416
439
  baseUrl = _this$options$baseUrl === void 0 ? null : _this$options$baseUrl;
417
440
  return baseUrl !== null ? "".concat(baseUrl.replace(/\/$/, ''), "/").concat(path.replace(/^\//, '')) : path;
418
441
  }
442
+ }, {
443
+ key: "onError",
444
+ value: function onError(err) {
445
+ var onUnauthorized = this.options.onUnauthorized;
446
+
447
+ var _ref = err || {},
448
+ _ref$status = _ref.status,
449
+ status = _ref$status === void 0 ? null : _ref$status;
450
+
451
+ var statusCode = parseInt(status, 10); // If status is refused and callback exists
452
+
453
+ if ((statusCode === 401 || statusCode === 419) && onUnauthorized !== null) {
454
+ return onUnauthorized();
455
+ }
456
+
457
+ throw err;
458
+ }
419
459
  }]);
420
460
 
421
461
  return Base;
@@ -423,15 +463,15 @@ var Base = /*#__PURE__*/function () {
423
463
 
424
464
  var AuthApi = /*#__PURE__*/function () {
425
465
  function AuthApi(api, opts) {
426
- _classCallCheck__default['default'](this, AuthApi);
466
+ _classCallCheck__default["default"](this, AuthApi);
427
467
 
428
468
  this.api = api;
429
- this.options = _objectSpread__default['default']({
469
+ this.options = _objectSpread__default["default"]({
430
470
  withCredentials: true
431
471
  }, opts);
432
472
  }
433
473
 
434
- _createClass__default['default'](AuthApi, [{
474
+ _createClass__default["default"](AuthApi, [{
435
475
  key: "check",
436
476
  value: function check() {
437
477
  var withCredentials = this.options.withCredentials;
@@ -464,10 +504,13 @@ var AuthApi = /*#__PURE__*/function () {
464
504
  }, {
465
505
  key: "logout",
466
506
  value: function logout() {
467
- var withCredentials = this.options.withCredentials;
468
- return this.api.fetchPost(this.api.route('auth.logout'), null, {
469
- withSession: !withCredentials,
470
- withCredentials: withCredentials
507
+ var url = this.api.getFullUrl(this.api.route('auth.logout'));
508
+ return fetch(url, {
509
+ method: 'POST',
510
+ headers: _objectSpread__default["default"]({}, fetch$1.getCSRFHeaders()),
511
+ credentials: 'include'
512
+ })["catch"](function (err) {
513
+ console.log('logout err', err); // eslint-disable-line
471
514
  });
472
515
  }
473
516
  }, {
@@ -497,15 +540,15 @@ var AuthApi = /*#__PURE__*/function () {
497
540
 
498
541
  var AccountApi = /*#__PURE__*/function () {
499
542
  function AccountApi(api, opts) {
500
- _classCallCheck__default['default'](this, AccountApi);
543
+ _classCallCheck__default["default"](this, AccountApi);
501
544
 
502
545
  this.api = api;
503
- this.options = _objectSpread__default['default']({
546
+ this.options = _objectSpread__default["default"]({
504
547
  withCredentials: false
505
548
  }, opts);
506
549
  }
507
550
 
508
- _createClass__default['default'](AccountApi, [{
551
+ _createClass__default["default"](AccountApi, [{
509
552
  key: "update",
510
553
  value: function update(data) {
511
554
  var withCredentials = this.options.withCredentials;
@@ -547,17 +590,17 @@ var AccountApi = /*#__PURE__*/function () {
547
590
  }();
548
591
 
549
592
  var MediasApi = /*#__PURE__*/function (_Base) {
550
- _inherits__default['default'](MediasApi, _Base);
593
+ _inherits__default["default"](MediasApi, _Base);
551
594
 
552
- var _super = _createSuper__default['default'](MediasApi);
595
+ var _super = _createSuper__default["default"](MediasApi);
553
596
 
554
597
  function MediasApi() {
555
598
  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
556
599
 
557
- _classCallCheck__default['default'](this, MediasApi);
600
+ _classCallCheck__default["default"](this, MediasApi);
558
601
 
559
- return _super.call(this, _objectSpread__default['default'](_objectSpread__default['default']({}, opts), {}, {
560
- routes: _objectSpread__default['default']({
602
+ return _super.call(this, _objectSpread__default["default"](_objectSpread__default["default"]({}, opts), {}, {
603
+ routes: _objectSpread__default["default"]({
561
604
  index: 'medias',
562
605
  tags: 'medias/tags',
563
606
  show: 'medias/:media',
@@ -568,7 +611,7 @@ var MediasApi = /*#__PURE__*/function (_Base) {
568
611
  }));
569
612
  }
570
613
 
571
- _createClass__default['default'](MediasApi, [{
614
+ _createClass__default["default"](MediasApi, [{
572
615
  key: "find",
573
616
  value: function find(id) {
574
617
  return this.requestGet(this.route('show', {
@@ -582,7 +625,7 @@ var MediasApi = /*#__PURE__*/function (_Base) {
582
625
  var page = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
583
626
  var count = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10;
584
627
 
585
- var finalQuery = _objectSpread__default['default']({}, query);
628
+ var finalQuery = _objectSpread__default["default"]({}, query);
586
629
 
587
630
  if (page !== null) {
588
631
  finalQuery.page = page;
@@ -600,7 +643,7 @@ var MediasApi = /*#__PURE__*/function (_Base) {
600
643
  var query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
601
644
  var count = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10;
602
645
 
603
- var finalQuery = _objectSpread__default['default']({}, query);
646
+ var finalQuery = _objectSpread__default["default"]({}, query);
604
647
 
605
648
  if (count !== null) {
606
649
  finalQuery.count = count;
@@ -634,19 +677,19 @@ var MediasApi = /*#__PURE__*/function (_Base) {
634
677
 
635
678
  var ResourcesApi = /*#__PURE__*/function () {
636
679
  function ResourcesApi(api) {
637
- _classCallCheck__default['default'](this, ResourcesApi);
680
+ _classCallCheck__default["default"](this, ResourcesApi);
638
681
 
639
682
  this.api = api;
640
683
  }
641
684
 
642
- _createClass__default['default'](ResourcesApi, [{
685
+ _createClass__default["default"](ResourcesApi, [{
643
686
  key: "resourceRoute",
644
687
  value: function resourceRoute(_ref, route, params) {
645
688
  var id = _ref.id,
646
689
  _ref$has_routes = _ref.has_routes,
647
690
  hasRoutes = _ref$has_routes === void 0 ? false : _ref$has_routes;
648
691
  var routePrefix = hasRoutes ? "resources.".concat(id) : 'resources';
649
- return this.api.route("".concat(routePrefix, ".").concat(route), hasRoutes ? params : _objectSpread__default['default']({
692
+ return this.api.route("".concat(routePrefix, ".").concat(route), hasRoutes ? params : _objectSpread__default["default"]({
650
693
  resource: id
651
694
  }, params));
652
695
  }
@@ -666,7 +709,7 @@ var ResourcesApi = /*#__PURE__*/function () {
666
709
  var page = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
667
710
  var count = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 10;
668
711
 
669
- var finalQuery = _objectSpread__default['default']({}, query);
712
+ var finalQuery = _objectSpread__default["default"]({}, query);
670
713
 
671
714
  if (page !== null) {
672
715
  finalQuery.page = page;
@@ -711,65 +754,71 @@ var ResourcesApi = /*#__PURE__*/function () {
711
754
  }();
712
755
 
713
756
  var Api = /*#__PURE__*/function (_Base) {
714
- _inherits__default['default'](Api, _Base);
757
+ _inherits__default["default"](Api, _Base);
715
758
 
716
- var _super = _createSuper__default['default'](Api);
759
+ var _super = _createSuper__default["default"](Api);
717
760
 
718
761
  function Api() {
719
762
  var _this;
720
763
 
721
764
  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
722
765
 
723
- _classCallCheck__default['default'](this, Api);
766
+ _classCallCheck__default["default"](this, Api);
724
767
 
725
768
  _this = _super.call(this, opts);
726
- _this.auth = new AuthApi(_assertThisInitialized__default['default'](_this), {
769
+ _this.auth = new AuthApi(_assertThisInitialized__default["default"](_this), {
727
770
  withCredentials: true
728
771
  });
729
- _this.account = new AccountApi(_assertThisInitialized__default['default'](_this), {
772
+ _this.account = new AccountApi(_assertThisInitialized__default["default"](_this), {
730
773
  withCredentials: true
731
774
  });
732
- _this.medias = new MediasApi(_assertThisInitialized__default['default'](_this));
733
- _this.resources = new ResourcesApi(_assertThisInitialized__default['default'](_this));
775
+ _this.medias = new MediasApi(_assertThisInitialized__default["default"](_this));
776
+ _this.resources = new ResourcesApi(_assertThisInitialized__default["default"](_this));
734
777
  return _this;
735
778
  }
736
779
 
737
- return Api;
780
+ return _createClass__default["default"](Api);
738
781
  }(Base);
739
782
 
740
783
  /* eslint-disable react/jsx-props-no-spreading */
741
- var ApiContext = /*#__PURE__*/React__default['default'].createContext(null);
784
+ var ApiContext = /*#__PURE__*/React__default["default"].createContext(null);
742
785
  var useApi = function useApi() {
743
786
  return React.useContext(ApiContext);
744
787
  };
745
788
  var propTypes$1 = {
746
- api: PropTypes__default['default'].instanceOf(Api),
747
- baseUrl: PropTypes__default['default'].string,
748
- children: PropTypes__default['default'].node.isRequired
789
+ api: PropTypes__default["default"].instanceOf(Api),
790
+ baseUrl: PropTypes__default["default"].string,
791
+ onUnauthorized: PropTypes__default["default"].func,
792
+ children: PropTypes__default["default"].node.isRequired
749
793
  };
750
794
  var defaultProps$1 = {
751
795
  api: null,
796
+ onUnauthorized: null,
752
797
  baseUrl: undefined
753
798
  };
754
799
  var ApiProvider = function ApiProvider(_ref) {
755
800
  var initialApi = _ref.api,
756
801
  baseUrl = _ref.baseUrl,
802
+ onUnauthorized = _ref.onUnauthorized,
757
803
  children = _ref.children;
758
804
  var generateUrl = contexts.useUrlGenerator();
759
805
  var previousApi = useApi();
760
806
  var api = React.useMemo(function () {
761
807
  return initialApi || previousApi || new Api({
762
808
  baseUrl: baseUrl,
763
- generateUrl: generateUrl
809
+ generateUrl: generateUrl,
810
+ onUnauthorized: onUnauthorized
764
811
  });
765
812
  }, [previousApi, initialApi, baseUrl]);
766
- return /*#__PURE__*/React__default['default'].createElement(ApiContext.Provider, {
813
+ return /*#__PURE__*/React__default["default"].createElement(ApiContext.Provider, {
767
814
  value: api
768
815
  }, children);
769
816
  };
770
817
  ApiProvider.propTypes = propTypes$1;
771
818
  ApiProvider.defaultProps = defaultProps$1;
772
819
 
820
+ var _excluded$4 = ["items", "pageItems"];
821
+
773
822
  var useMedias = function useMedias() {
774
823
  var query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
775
824
  var page = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
@@ -781,17 +830,17 @@ var useMedias = function useMedias() {
781
830
  return api.medias.get(query, requestedPage, count);
782
831
  }, [api, query, count]);
783
832
 
784
- var _useItems = useItems(_objectSpread__default['default']({
833
+ var _useItems = useItems(_objectSpread__default["default"]({
785
834
  getPage: page !== null ? getItems : null,
786
835
  getItems: page === null ? getItems : null,
787
836
  page: page
788
837
  }, opts)),
789
838
  items = _useItems.items,
790
839
  pageItems = _useItems.pageItems,
791
- request = _objectWithoutProperties__default['default'](_useItems, ["items", "pageItems"]); // console.log('medias', items);
840
+ request = _objectWithoutProperties__default["default"](_useItems, _excluded$4); // console.log('medias', items);
792
841
 
793
842
 
794
- return _objectSpread__default['default']({
843
+ return _objectSpread__default["default"]({
795
844
  medias: page !== null ? pageItems : items,
796
845
  allMedias: items
797
846
  }, request);
@@ -803,7 +852,7 @@ var useMediasRecent = function useMediasRecent(opts) {
803
852
  if (window !== undefined && value) {
804
853
  var recent = window.localStorage.getItem(key) || null;
805
854
  var current = recent !== null ? JSON.parse(recent || '[]') : [];
806
- var encoded = JSON.stringify([value].concat(_toConsumableArray__default['default'](current)));
855
+ var encoded = JSON.stringify([value].concat(_toConsumableArray__default["default"](current)));
807
856
  window.localStorage.setItem(key, encoded);
808
857
  return true;
809
858
  }
@@ -827,6 +876,8 @@ var useMediasRecent = function useMediasRecent(opts) {
827
876
  };
828
877
  };
829
878
 
879
+ var _excluded$3 = ["data"];
880
+
830
881
  var useMedia = function useMedia(id, opts) {
831
882
  var api = useApi();
832
883
  var loader = React.useCallback(function () {
@@ -835,16 +886,16 @@ var useMedia = function useMedia(id, opts) {
835
886
 
836
887
  var _useData = useData(loader, opts),
837
888
  data = _useData.data,
838
- request = _objectWithoutProperties__default['default'](_useData, ["data"]);
889
+ request = _objectWithoutProperties__default["default"](_useData, _excluded$3);
839
890
 
840
- return _objectSpread__default['default']({
891
+ return _objectSpread__default["default"]({
841
892
  story: data
842
893
  }, request);
843
894
  };
844
895
 
845
896
  var useMediaCreate = function useMediaCreate() {
846
897
  var _useState = React.useState(false),
847
- _useState2 = _slicedToArray__default['default'](_useState, 2),
898
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
848
899
  creating = _useState2[0],
849
900
  setCreating = _useState2[1];
850
901
 
@@ -862,6 +913,8 @@ var useMediaCreate = function useMediaCreate() {
862
913
  };
863
914
  };
864
915
 
916
+ var _excluded$2 = ["items", "pageItems"];
917
+
865
918
  var useMediaTags = function useMediaTags() {
866
919
  var query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
867
920
  var count = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5;
@@ -871,21 +924,21 @@ var useMediaTags = function useMediaTags() {
871
924
  return api.medias.getTags(query, count);
872
925
  }, [api, query, count]);
873
926
 
874
- var _useItems = useItems(_objectSpread__default['default']({
927
+ var _useItems = useItems(_objectSpread__default["default"]({
875
928
  getItems: getItems
876
929
  }, opts)),
877
930
  items = _useItems.items;
878
931
  _useItems.pageItems;
879
- var request = _objectWithoutProperties__default['default'](_useItems, ["items", "pageItems"]);
932
+ var request = _objectWithoutProperties__default["default"](_useItems, _excluded$2);
880
933
 
881
- return _objectSpread__default['default']({
934
+ return _objectSpread__default["default"]({
882
935
  tags: items
883
936
  }, request);
884
937
  };
885
938
 
886
939
  var useMediaUpdate = function useMediaUpdate() {
887
940
  var _useState = React.useState(false),
888
- _useState2 = _slicedToArray__default['default'](_useState, 2),
941
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
889
942
  updating = _useState2[0],
890
943
  setUpdating = _useState2[1];
891
944
 
@@ -903,11 +956,11 @@ var useMediaUpdate = function useMediaUpdate() {
903
956
  };
904
957
  };
905
958
 
906
- var useResourceUpdate$1 = function useResourceUpdate(resource) {
959
+ var useResourceDestroy = function useResourceDestroy(resource) {
907
960
  var id = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
908
961
 
909
962
  var _useState = React.useState(false),
910
- _useState2 = _slicedToArray__default['default'](_useState, 2),
963
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
911
964
  loading = _useState2[0],
912
965
  setLoading = _useState2[1];
913
966
 
@@ -928,6 +981,8 @@ var useResourceUpdate$1 = function useResourceUpdate(resource) {
928
981
  };
929
982
  };
930
983
 
984
+ var _excluded$1 = ["data"];
985
+
931
986
  var useResourceItem = function useResourceItem(resource, id, opts) {
932
987
  var api = useApi();
933
988
  var loader = React.useCallback(function () {
@@ -936,13 +991,15 @@ var useResourceItem = function useResourceItem(resource, id, opts) {
936
991
 
937
992
  var _useData = useData(loader, opts),
938
993
  data = _useData.data,
939
- request = _objectWithoutProperties__default['default'](_useData, ["data"]);
994
+ request = _objectWithoutProperties__default["default"](_useData, _excluded$1);
940
995
 
941
- return _objectSpread__default['default']({
996
+ return _objectSpread__default["default"]({
942
997
  item: data
943
998
  }, request);
944
999
  };
945
1000
 
1001
+ var _excluded = ["items", "pageItems"];
1002
+
946
1003
  var useResourceItems = function useResourceItems(resource) {
947
1004
  var query = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
948
1005
  var page = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
@@ -954,16 +1011,16 @@ var useResourceItems = function useResourceItems(resource) {
954
1011
  return api.resources.get(resource, query, requestedPage, count);
955
1012
  }, [api, resource, query, count]);
956
1013
 
957
- var _useItems = useItems(_objectSpread__default['default']({
1014
+ var _useItems = useItems(_objectSpread__default["default"]({
958
1015
  getPage: page !== null ? getItems : null,
959
1016
  getItems: page === null ? getItems : null,
960
1017
  page: page
961
1018
  }, opts)),
962
1019
  items = _useItems.items,
963
1020
  pageItems = _useItems.pageItems,
964
- request = _objectWithoutProperties__default['default'](_useItems, ["items", "pageItems"]);
1021
+ request = _objectWithoutProperties__default["default"](_useItems, _excluded);
965
1022
 
966
- return _objectSpread__default['default']({
1023
+ return _objectSpread__default["default"]({
967
1024
  items: page !== null ? pageItems : items,
968
1025
  allItems: items
969
1026
  }, request);
@@ -971,7 +1028,7 @@ var useResourceItems = function useResourceItems(resource) {
971
1028
 
972
1029
  var useResourceCreate = function useResourceCreate(resource) {
973
1030
  var _useState = React.useState(false),
974
- _useState2 = _slicedToArray__default['default'](_useState, 2),
1031
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
975
1032
  loading = _useState2[0],
976
1033
  setLoading = _useState2[1];
977
1034
 
@@ -994,7 +1051,7 @@ var useResourceCreate = function useResourceCreate(resource) {
994
1051
 
995
1052
  var useResourceUpdate = function useResourceUpdate(resource, id) {
996
1053
  var _useState = React.useState(false),
997
- _useState2 = _slicedToArray__default['default'](_useState, 2),
1054
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
998
1055
  loading = _useState2[0],
999
1056
  setLoading = _useState2[1];
1000
1057
 
@@ -1017,9 +1074,9 @@ var useResourceUpdate = function useResourceUpdate(resource, id) {
1017
1074
 
1018
1075
  /* eslint-disable react/jsx-props-no-spreading */
1019
1076
  var propTypes = {
1020
- api: PropTypes__default['default'].instanceOf(Api),
1021
- apiBaseUrl: PropTypes__default['default'].string,
1022
- children: PropTypes__default['default'].node
1077
+ api: PropTypes__default["default"].instanceOf(Api),
1078
+ apiBaseUrl: PropTypes__default["default"].string,
1079
+ children: PropTypes__default["default"].node
1023
1080
  };
1024
1081
  var defaultProps = {
1025
1082
  api: null,
@@ -1031,7 +1088,7 @@ var DataProvider = function DataProvider(_ref) {
1031
1088
  var api = _ref.api,
1032
1089
  apiBaseUrl = _ref.apiBaseUrl,
1033
1090
  children = _ref.children;
1034
- return /*#__PURE__*/React__default['default'].createElement(ApiProvider, {
1091
+ return /*#__PURE__*/React__default["default"].createElement(ApiProvider, {
1035
1092
  api: api,
1036
1093
  baseUrl: apiBaseUrl
1037
1094
  }, children);
@@ -1053,7 +1110,7 @@ exports.useMediaTags = useMediaTags;
1053
1110
  exports.useMediaUpdate = useMediaUpdate;
1054
1111
  exports.useMedias = useMedias;
1055
1112
  exports.useMediasRecentSearches = useMediasRecent;
1056
- exports.useResourceDestroy = useResourceUpdate$1;
1113
+ exports.useResourceDestroy = useResourceDestroy;
1057
1114
  exports.useResourceItem = useResourceItem;
1058
1115
  exports.useResourceItems = useResourceItems;
1059
1116
  exports.useResourceStore = useResourceCreate;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@panneau/data",
3
- "version": "1.0.0-alpha.22",
3
+ "version": "1.0.0-alpha.232",
4
4
  "description": "",
5
5
  "keywords": [
6
6
  "javascript"
@@ -44,17 +44,17 @@
44
44
  "prepare": "../../scripts/prepare-package.sh"
45
45
  },
46
46
  "devDependencies": {
47
- "react": "^16.8.0",
48
- "react-dom": "^16.8.0"
47
+ "react": "^16.8.0 || ^17.0.0",
48
+ "react-dom": "^16.8.0 || ^17.0.0"
49
49
  },
50
50
  "peerDependencies": {
51
- "react": "^16.8.0",
52
- "react-dom": "^16.8.0"
51
+ "react": "^16.8.0 || ^17.0.0",
52
+ "react-dom": "^16.8.0 || ^17.0.0"
53
53
  },
54
54
  "dependencies": {
55
55
  "@babel/runtime": "^7.12.5",
56
56
  "@folklore/fetch": "^0.1.10",
57
- "@panneau/core": "^1.0.0-alpha.21",
57
+ "@panneau/core": "^1.0.0-alpha.232",
58
58
  "prop-types": "^15.7.2",
59
59
  "query-string": "^7.0.0",
60
60
  "react-router": "^5.2.0"
@@ -62,5 +62,5 @@
62
62
  "publishConfig": {
63
63
  "access": "public"
64
64
  },
65
- "gitHead": "ea24e77dd4220eab9293ee082797d1ab625c9373"
65
+ "gitHead": "996f9cc4f0f02707225cf0899cf3da7e47fa3f6d"
66
66
  }