@civet/core 1.2.4 → 1.2.5

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.
@@ -7,81 +7,71 @@ exports["default"] = void 0;
7
7
  var _Notifier = _interopRequireDefault(require("./Notifier"));
8
8
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
9
9
  function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
10
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
11
10
  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, _toPropertyKey(descriptor.key), descriptor); } }
12
11
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
12
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
13
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
13
14
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
14
15
  function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
15
- var AbortSignal = /*#__PURE__*/function () {
16
- function AbortSignal() {
17
- _classCallCheck(this, AbortSignal);
18
- this.notifier = new _Notifier["default"]();
19
- Object.defineProperties(this, {
20
- locked: {
21
- value: false,
22
- enumerable: true,
23
- writable: false,
24
- configurable: true
16
+ var AbortSignal = /*#__PURE__*/_createClass(function AbortSignal() {
17
+ var _this = this;
18
+ _classCallCheck(this, AbortSignal);
19
+ _defineProperty(this, "listen", function (cb) {
20
+ if (_this.locked) return function () {};
21
+ var alreadySubscribed = _this.notifier.isSubscribed(cb);
22
+ var unsubscribe = _this.notifier.subscribe(cb);
23
+ if (_this.aborted && !alreadySubscribed) cb();
24
+ return unsubscribe;
25
+ });
26
+ _defineProperty(this, "abort", function () {
27
+ if (_this.locked) return;
28
+ _this.lock();
29
+ Object.defineProperty(_this, 'aborted', {
30
+ value: true,
31
+ enumerable: true,
32
+ writable: false,
33
+ configurable: false
34
+ });
35
+ _this.notifier.trigger();
36
+ });
37
+ _defineProperty(this, "lock", function () {
38
+ if (_this.locked) return;
39
+ Object.defineProperty(_this, 'locked', {
40
+ value: true,
41
+ enumerable: true,
42
+ writable: false,
43
+ configurable: false
44
+ });
45
+ });
46
+ _defineProperty(this, "proxy", function () {
47
+ var s = _this;
48
+ return {
49
+ listen: function listen(cb) {
50
+ return s.listen(cb);
51
+ },
52
+ get locked() {
53
+ return s.locked;
25
54
  },
26
- aborted: {
27
- value: false,
28
- enumerable: true,
29
- writable: false,
30
- configurable: true
55
+ get aborted() {
56
+ return s.locked;
31
57
  }
32
- });
33
- }
34
- _createClass(AbortSignal, [{
35
- key: "listen",
36
- value: function listen(cb) {
37
- if (this.locked) return function () {};
38
- var alreadySubscribed = this.notifier.isSubscribed(cb);
39
- var unsubscribe = this.notifier.subscribe(cb);
40
- if (this.aborted && !alreadySubscribed) cb();
41
- return unsubscribe;
42
- }
43
- }, {
44
- key: "abort",
45
- value: function abort() {
46
- if (this.locked) return;
47
- this.lock();
48
- Object.defineProperty(this, 'aborted', {
49
- value: true,
50
- enumerable: true,
51
- writable: false,
52
- configurable: false
53
- });
54
- this.notifier.trigger();
55
- }
56
- }, {
57
- key: "lock",
58
- value: function lock() {
59
- if (this.locked) return;
60
- Object.defineProperty(this, 'locked', {
61
- value: true,
62
- enumerable: true,
63
- writable: false,
64
- configurable: false
65
- });
58
+ };
59
+ });
60
+ this.notifier = new _Notifier["default"]();
61
+ Object.defineProperties(this, {
62
+ locked: {
63
+ value: false,
64
+ enumerable: true,
65
+ writable: false,
66
+ configurable: true
67
+ },
68
+ aborted: {
69
+ value: false,
70
+ enumerable: true,
71
+ writable: false,
72
+ configurable: true
66
73
  }
67
- }, {
68
- key: "proxy",
69
- value: function proxy() {
70
- var s = this;
71
- return {
72
- listen: function listen(cb) {
73
- return s.listen(cb);
74
- },
75
- get locked() {
76
- return s.locked;
77
- },
78
- get aborted() {
79
- return s.locked;
80
- }
81
- };
82
- }
83
- }]);
84
- return AbortSignal;
85
- }();
74
+ });
75
+ });
86
76
  var _default = AbortSignal;
87
77
  exports["default"] = _default;
@@ -7,51 +7,42 @@ exports["default"] = void 0;
7
7
  var _Notifier = _interopRequireDefault(require("./Notifier"));
8
8
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
9
9
  function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
10
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
11
10
  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, _toPropertyKey(descriptor.key), descriptor); } }
12
11
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
12
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
13
13
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
14
14
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
15
15
  function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
16
- var ChannelNotifier = /*#__PURE__*/function () {
17
- function ChannelNotifier() {
18
- _classCallCheck(this, ChannelNotifier);
19
- _defineProperty(this, "channels", {});
20
- }
21
- _createClass(ChannelNotifier, [{
22
- key: "subscribe",
23
- value: function subscribe(channel, handler) {
24
- if (channel == null || !"".concat(channel)) {
25
- throw new Error('Channel is required');
26
- }
27
- if (this.channels[channel] == null) this.channels[channel] = new _Notifier["default"]();
28
- return this.channels[channel].subscribe(handler);
16
+ var ChannelNotifier = /*#__PURE__*/_createClass(function ChannelNotifier() {
17
+ var _this = this;
18
+ _classCallCheck(this, ChannelNotifier);
19
+ _defineProperty(this, "channels", {});
20
+ _defineProperty(this, "subscribe", function (channel, handler) {
21
+ if (channel == null || !"".concat(channel)) {
22
+ throw new Error('Channel is required');
29
23
  }
30
- }, {
31
- key: "isSubscribed",
32
- value: function isSubscribed(channel, handler) {
33
- if (channel == null || !"".concat(channel)) {
34
- throw new Error('Channel is required');
35
- }
36
- return this.channels[channel] != null && this.channels[channel].isSubscribed(handler);
24
+ if (_this.channels[channel] == null) _this.channels[channel] = new _Notifier["default"]();
25
+ return _this.channels[channel].subscribe(handler);
26
+ });
27
+ _defineProperty(this, "isSubscribed", function (channel, handler) {
28
+ if (channel == null || !"".concat(channel)) {
29
+ throw new Error('Channel is required');
37
30
  }
38
- }, {
39
- key: "trigger",
40
- value: function trigger(channel) {
41
- for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
42
- args[_key - 1] = arguments[_key];
43
- }
44
- if (channel == null) {
45
- Object.values(this.channels).forEach(function (notifier) {
46
- return notifier.trigger.apply(notifier, args);
47
- });
48
- } else if (this.channels[channel] != null) {
49
- var _this$channels$channe;
50
- (_this$channels$channe = this.channels[channel]).trigger.apply(_this$channels$channe, args);
51
- }
31
+ return _this.channels[channel] != null && _this.channels[channel].isSubscribed(handler);
32
+ });
33
+ _defineProperty(this, "trigger", function (channel) {
34
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
35
+ args[_key - 1] = arguments[_key];
52
36
  }
53
- }]);
54
- return ChannelNotifier;
55
- }();
37
+ if (channel == null) {
38
+ Object.values(_this.channels).forEach(function (notifier) {
39
+ return notifier.trigger.apply(notifier, args);
40
+ });
41
+ } else if (_this.channels[channel] != null) {
42
+ var _this$channels$channe;
43
+ (_this$channels$channe = _this.channels[channel]).trigger.apply(_this$channels$channe, args);
44
+ }
45
+ });
46
+ });
56
47
  var _default = ChannelNotifier;
57
48
  exports["default"] = _default;
package/lib/Meta.js CHANGED
@@ -7,80 +7,58 @@ exports["default"] = void 0;
7
7
  function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
8
8
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
9
9
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
10
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
11
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
12
10
  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, _toPropertyKey(descriptor.key), descriptor); } }
13
11
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
12
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
13
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
14
14
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
15
15
  function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
16
- var Meta = /*#__PURE__*/function () {
17
- function Meta(base, instance) {
18
- _classCallCheck(this, Meta);
19
- this.data = base == null ? {} : base;
20
- this.instance = instance;
21
- }
22
- _createClass(Meta, [{
23
- key: "clear",
24
- value: function clear() {
25
- var _this = this;
26
- Object.keys(this.data).forEach(function (key) {
27
- delete _this.data[key];
28
- });
29
- }
30
- }, {
31
- key: "delete",
32
- value: function _delete(key) {
33
- var value = this.data[key];
34
- delete this.data[key];
35
- return value;
36
- }
37
- }, {
38
- key: "entries",
39
- value: function entries() {
40
- return Object.entries(this.data);
41
- }
42
- }, {
43
- key: "get",
44
- value: function get(key) {
45
- return this.data[key];
16
+ var Meta = /*#__PURE__*/_createClass(function Meta(base, instance) {
17
+ var _this = this;
18
+ _classCallCheck(this, Meta);
19
+ _defineProperty(this, "clear", function () {
20
+ Object.keys(_this.data).forEach(function (key) {
21
+ delete _this.data[key];
22
+ });
23
+ });
24
+ _defineProperty(this, "delete", function (key) {
25
+ var value = _this.data[key];
26
+ delete _this.data[key];
27
+ return value;
28
+ });
29
+ _defineProperty(this, "entries", function () {
30
+ return Object.entries(_this.data);
31
+ });
32
+ _defineProperty(this, "get", function (key) {
33
+ return _this.data[key];
34
+ });
35
+ _defineProperty(this, "has", function (key) {
36
+ return Object.prototype.hasOwnProperty.call(_this.data, key);
37
+ });
38
+ _defineProperty(this, "keys", function () {
39
+ return Object.keys(_this.data);
40
+ });
41
+ _defineProperty(this, "set", function (key, value) {
42
+ _this.data[key] = value;
43
+ });
44
+ _defineProperty(this, "values", function () {
45
+ return Object.values(_this.data);
46
+ });
47
+ _defineProperty(this, "commit", function (prev, ignore) {
48
+ var next = _objectSpread({}, _this.data);
49
+ (ignore || []).forEach(function (item) {
50
+ delete next[item];
51
+ });
52
+ var keys = Object.keys(next);
53
+ if (prev != null && Object.keys(prev).length === keys.length && keys.reduce(function (sum, key) {
54
+ return sum && Object.is(next[key], prev[key]);
55
+ }, true)) {
56
+ return prev;
46
57
  }
47
- }, {
48
- key: "has",
49
- value: function has(key) {
50
- return Object.prototype.hasOwnProperty.call(this.data, key);
51
- }
52
- }, {
53
- key: "keys",
54
- value: function keys() {
55
- return Object.keys(this.data);
56
- }
57
- }, {
58
- key: "set",
59
- value: function set(key, value) {
60
- this.data[key] = value;
61
- }
62
- }, {
63
- key: "values",
64
- value: function values() {
65
- return Object.values(this.data);
66
- }
67
- }, {
68
- key: "commit",
69
- value: function commit(prev, ignore) {
70
- var next = _objectSpread({}, this.data);
71
- (ignore || []).forEach(function (item) {
72
- delete next[item];
73
- });
74
- var keys = Object.keys(next);
75
- if (prev != null && Object.keys(prev).length === keys.length && keys.reduce(function (sum, key) {
76
- return sum && Object.is(next[key], prev[key]);
77
- }, true)) {
78
- return prev;
79
- }
80
- return next;
81
- }
82
- }]);
83
- return Meta;
84
- }();
58
+ return next;
59
+ });
60
+ this.data = base == null ? {} : base;
61
+ this.instance = instance;
62
+ });
85
63
  var _default = Meta;
86
64
  exports["default"] = _default;
package/lib/Notifier.js CHANGED
@@ -5,48 +5,38 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports["default"] = void 0;
7
7
  function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
8
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
9
8
  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, _toPropertyKey(descriptor.key), descriptor); } }
10
9
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
10
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
11
11
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
12
12
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
13
13
  function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
14
- var Notifier = /*#__PURE__*/function () {
15
- function Notifier() {
16
- _classCallCheck(this, Notifier);
17
- _defineProperty(this, "subscriptions", []);
18
- }
19
- _createClass(Notifier, [{
20
- key: "subscribe",
21
- value: function subscribe(handler) {
22
- var _this = this;
23
- if (typeof handler !== 'function') throw new Error('Handler must be a function');
24
- if (!this.isSubscribed(handler)) {
25
- this.subscriptions.push(handler);
26
- }
27
- return function () {
28
- _this.subscriptions = _this.subscriptions.filter(function (item) {
29
- return item !== handler;
30
- });
31
- };
14
+ var Notifier = /*#__PURE__*/_createClass(function Notifier() {
15
+ var _this = this;
16
+ _classCallCheck(this, Notifier);
17
+ _defineProperty(this, "subscriptions", []);
18
+ _defineProperty(this, "subscribe", function (handler) {
19
+ if (typeof handler !== 'function') throw new Error('Handler must be a function');
20
+ if (!_this.isSubscribed(handler)) {
21
+ _this.subscriptions.push(handler);
32
22
  }
33
- }, {
34
- key: "isSubscribed",
35
- value: function isSubscribed(handler) {
36
- return this.subscriptions.includes(handler);
37
- }
38
- }, {
39
- key: "trigger",
40
- value: function trigger() {
41
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
42
- args[_key] = arguments[_key];
43
- }
44
- this.subscriptions.forEach(function (handler) {
45
- return handler.apply(void 0, args);
23
+ return function () {
24
+ _this.subscriptions = _this.subscriptions.filter(function (item) {
25
+ return item !== handler;
46
26
  });
27
+ };
28
+ });
29
+ _defineProperty(this, "isSubscribed", function (handler) {
30
+ return _this.subscriptions.includes(handler);
31
+ });
32
+ _defineProperty(this, "trigger", function () {
33
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
34
+ args[_key] = arguments[_key];
47
35
  }
48
- }]);
49
- return Notifier;
50
- }();
36
+ _this.subscriptions.forEach(function (handler) {
37
+ return handler.apply(void 0, args);
38
+ });
39
+ });
40
+ });
51
41
  var _default = Notifier;
52
42
  exports["default"] = _default;
package/lib/Resource.js CHANGED
@@ -14,6 +14,22 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
14
14
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
15
15
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
16
16
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
17
+ var propTypes = {
18
+ /** DataProvider to be used for requests */
19
+ dataProvider: _DataProvider.dataProviderPropType,
20
+ /** Resource name */
21
+ name: _propTypes["default"].string.isRequired,
22
+ /** Query */
23
+ query: _propTypes["default"].any,
24
+ /** Whether to prevent fetching data */
25
+ empty: _propTypes["default"].bool,
26
+ /** DataProvider options for requests */
27
+ options: _propTypes["default"].object,
28
+ /** Whether stale data should be retained during the next request - this only applies if neither dataProvider nor name have changed, unless set to "very" */
29
+ persistent: _propTypes["default"].oneOfType([_propTypes["default"].bool, _propTypes["default"].oneOf(['very'])]),
30
+ children: _propTypes["default"].node
31
+ };
32
+
17
33
  /**
18
34
  * Makes data from an DataProvider available to its descendants using React's context API.
19
35
  * If not explicitly specified, necessary configuration is taken from the nearest <ConfigProvider>.
@@ -52,32 +68,6 @@ function Resource(_ref) {
52
68
  }, children);
53
69
  })(context);
54
70
  }
55
- Resource.propTypes = {
56
- /**
57
- * DataProvider to be used for requests
58
- */
59
- dataProvider: _DataProvider.dataProviderPropType,
60
- /**
61
- * Resource name
62
- */
63
- name: _propTypes["default"].string.isRequired,
64
- /**
65
- * Query
66
- */
67
- query: _propTypes["default"].any,
68
- /**
69
- * Whether to prevent fetching data
70
- */
71
- empty: _propTypes["default"].bool,
72
- /**
73
- * DataProvider options for requests
74
- */
75
- options: _propTypes["default"].object,
76
- /**
77
- * Whether stale data should be retained during the next request - this only applies if neither dataProvider nor name have changed, unless set to "very"
78
- */
79
- persistent: _propTypes["default"].oneOfType([_propTypes["default"].bool, _propTypes["default"].oneOf(['very'])]),
80
- children: _propTypes["default"].node
81
- };
71
+ Resource.propTypes = propTypes;
82
72
  var _default = Resource;
83
73
  exports["default"] = _default;
@@ -7,8 +7,8 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports["default"] = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  var _AbortSignal = _interopRequireDefault(require("./AbortSignal"));
10
- var _context3 = require("./context");
11
10
  var _Meta = _interopRequireDefault(require("./Meta"));
11
+ var _context3 = require("./context");
12
12
  var _uniqueIdentifier = _interopRequireDefault(require("./uniqueIdentifier"));
13
13
  var _excluded = ["dataProvider", "name", "query", "empty", "options", "persistent"];
14
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
@@ -52,14 +52,15 @@ function useResource(_ref) {
52
52
  if (dataProvider !== currentDataProvider) {
53
53
  throw new Error('Constant violation: The DataProvider provided to the useResource hook must not be replaced - Check your ConfigContext provider and the dataProvider property');
54
54
  }
55
- var _React$useState3 = _react["default"].useState(function () {
56
- return dataProvider.createInstance();
57
- }),
58
- _React$useState4 = _slicedToArray(_React$useState3, 1),
59
- instance = _React$useState4[0];
55
+ var _React$useState3 = _react["default"].useState(),
56
+ _React$useState4 = _slicedToArray(_React$useState3, 2),
57
+ instance = _React$useState4[0],
58
+ setInstance = _React$useState4[1];
60
59
  _react["default"].useEffect(function () {
60
+ var i = dataProvider.createInstance();
61
+ setInstance(i);
61
62
  return function () {
62
- dataProvider.releaseInstance(instance);
63
+ dataProvider.releaseInstance(i);
63
64
  };
64
65
  }, []);
65
66
  var nextRequestDetails = _react["default"].useMemo(function () {
@@ -148,7 +149,6 @@ function useResource(_ref) {
148
149
  case 0:
149
150
  return _context.abrupt("return", new Promise(function (resolve) {
150
151
  setState(function (currentState) {
151
- if (currentState.empty) return currentState;
152
152
  var nextRevision = (0, _uniqueIdentifier["default"])(currentState.revision);
153
153
  resolve({
154
154
  request: currentState.request,
@@ -174,7 +174,7 @@ function useResource(_ref) {
174
174
  return unsubscribe;
175
175
  }, [requestDetails.empty, dataProvider, requestDetails.name, notify]);
176
176
  _react["default"].useEffect(function () {
177
- if (requestDetails.empty) return undefined;
177
+ if (requestDetails.empty || instance == null) return undefined;
178
178
  var abortSignal = new _AbortSignal["default"]();
179
179
  var meta = new _Meta["default"](_objectSpread({}, value.meta), instance);
180
180
  var promise = Promise.resolve(state);
@@ -227,7 +227,7 @@ function useResource(_ref) {
227
227
  return function () {
228
228
  abortSignal.abort();
229
229
  };
230
- }, [request, revision]);
230
+ }, [instance, request, revision]);
231
231
  var isStale = revision !== value.revision;
232
232
  var next = _react["default"].useMemo(function () {
233
233
  return isStale ? {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@civet/core",
3
- "version": "1.2.4",
3
+ "version": "1.2.5",
4
4
  "description": "Civet",
5
5
  "main": "./lib/index.js",
6
6
  "scripts": {
@@ -19,15 +19,15 @@ class AbortSignal {
19
19
  });
20
20
  }
21
21
 
22
- listen(cb) {
22
+ listen = (cb) => {
23
23
  if (this.locked) return () => {};
24
24
  const alreadySubscribed = this.notifier.isSubscribed(cb);
25
25
  const unsubscribe = this.notifier.subscribe(cb);
26
26
  if (this.aborted && !alreadySubscribed) cb();
27
27
  return unsubscribe;
28
- }
28
+ };
29
29
 
30
- abort() {
30
+ abort = () => {
31
31
  if (this.locked) return;
32
32
  this.lock();
33
33
  Object.defineProperty(this, 'aborted', {
@@ -37,9 +37,9 @@ class AbortSignal {
37
37
  configurable: false,
38
38
  });
39
39
  this.notifier.trigger();
40
- }
40
+ };
41
41
 
42
- lock() {
42
+ lock = () => {
43
43
  if (this.locked) return;
44
44
  Object.defineProperty(this, 'locked', {
45
45
  value: true,
@@ -47,9 +47,9 @@ class AbortSignal {
47
47
  writable: false,
48
48
  configurable: false,
49
49
  });
50
- }
50
+ };
51
51
 
52
- proxy() {
52
+ proxy = () => {
53
53
  const s = this;
54
54
  return {
55
55
  listen(cb) {
@@ -62,7 +62,7 @@ class AbortSignal {
62
62
  return s.locked;
63
63
  },
64
64
  };
65
- }
65
+ };
66
66
  }
67
67
 
68
68
  export default AbortSignal;
@@ -3,28 +3,28 @@ import Notifier from './Notifier';
3
3
  class ChannelNotifier {
4
4
  channels = {};
5
5
 
6
- subscribe(channel, handler) {
6
+ subscribe = (channel, handler) => {
7
7
  if (channel == null || !`${channel}`) {
8
8
  throw new Error('Channel is required');
9
9
  }
10
10
  if (this.channels[channel] == null) this.channels[channel] = new Notifier();
11
11
  return this.channels[channel].subscribe(handler);
12
- }
12
+ };
13
13
 
14
- isSubscribed(channel, handler) {
14
+ isSubscribed = (channel, handler) => {
15
15
  if (channel == null || !`${channel}`) {
16
16
  throw new Error('Channel is required');
17
17
  }
18
18
  return this.channels[channel] != null && this.channels[channel].isSubscribed(handler);
19
- }
19
+ };
20
20
 
21
- trigger(channel, ...args) {
21
+ trigger = (channel, ...args) => {
22
22
  if (channel == null) {
23
23
  Object.values(this.channels).forEach((notifier) => notifier.trigger(...args));
24
24
  } else if (this.channels[channel] != null) {
25
25
  this.channels[channel].trigger(...args);
26
26
  }
27
- }
27
+ };
28
28
  }
29
29
 
30
30
  export default ChannelNotifier;
package/src/Meta.js CHANGED
@@ -4,43 +4,33 @@ class Meta {
4
4
  this.instance = instance;
5
5
  }
6
6
 
7
- clear() {
7
+ clear = () => {
8
8
  Object.keys(this.data).forEach((key) => {
9
9
  delete this.data[key];
10
10
  });
11
- }
11
+ };
12
12
 
13
- delete(key) {
13
+ delete = (key) => {
14
14
  const value = this.data[key];
15
15
  delete this.data[key];
16
16
  return value;
17
- }
17
+ };
18
18
 
19
- entries() {
20
- return Object.entries(this.data);
21
- }
19
+ entries = () => Object.entries(this.data);
22
20
 
23
- get(key) {
24
- return this.data[key];
25
- }
21
+ get = (key) => this.data[key];
26
22
 
27
- has(key) {
28
- return Object.prototype.hasOwnProperty.call(this.data, key);
29
- }
23
+ has = (key) => Object.prototype.hasOwnProperty.call(this.data, key);
30
24
 
31
- keys() {
32
- return Object.keys(this.data);
33
- }
25
+ keys = () => Object.keys(this.data);
34
26
 
35
- set(key, value) {
27
+ set = (key, value) => {
36
28
  this.data[key] = value;
37
- }
29
+ };
38
30
 
39
- values() {
40
- return Object.values(this.data);
41
- }
31
+ values = () => Object.values(this.data);
42
32
 
43
- commit(prev, ignore) {
33
+ commit = (prev, ignore) => {
44
34
  const next = { ...this.data };
45
35
  (ignore || []).forEach((item) => {
46
36
  delete next[item];
@@ -54,7 +44,7 @@ class Meta {
54
44
  return prev;
55
45
  }
56
46
  return next;
57
- }
47
+ };
58
48
  }
59
49
 
60
50
  export default Meta;
package/src/Notifier.js CHANGED
@@ -1,7 +1,7 @@
1
1
  class Notifier {
2
2
  subscriptions = [];
3
3
 
4
- subscribe(handler) {
4
+ subscribe = (handler) => {
5
5
  if (typeof handler !== 'function') throw new Error('Handler must be a function');
6
6
  if (!this.isSubscribed(handler)) {
7
7
  this.subscriptions.push(handler);
@@ -9,15 +9,13 @@ class Notifier {
9
9
  return () => {
10
10
  this.subscriptions = this.subscriptions.filter((item) => item !== handler);
11
11
  };
12
- }
12
+ };
13
13
 
14
- isSubscribed(handler) {
15
- return this.subscriptions.includes(handler);
16
- }
14
+ isSubscribed = (handler) => this.subscriptions.includes(handler);
17
15
 
18
- trigger(...args) {
16
+ trigger = (...args) => {
19
17
  this.subscriptions.forEach((handler) => handler(...args));
20
- }
18
+ };
21
19
  }
22
20
 
23
21
  export default Notifier;
package/src/Resource.js CHANGED
@@ -5,6 +5,22 @@ import { ResourceContext } from './context';
5
5
  import { dataProviderPropType } from './DataProvider';
6
6
  import useResource from './useResource';
7
7
 
8
+ const propTypes = {
9
+ /** DataProvider to be used for requests */
10
+ dataProvider: dataProviderPropType,
11
+ /** Resource name */
12
+ name: PropTypes.string.isRequired,
13
+ /** Query */
14
+ query: PropTypes.any,
15
+ /** Whether to prevent fetching data */
16
+ empty: PropTypes.bool,
17
+ /** DataProvider options for requests */
18
+ options: PropTypes.object,
19
+ /** Whether stale data should be retained during the next request - this only applies if neither dataProvider nor name have changed, unless set to "very" */
20
+ persistent: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['very'])]),
21
+ children: PropTypes.node,
22
+ };
23
+
8
24
  /**
9
25
  * Makes data from an DataProvider available to its descendants using React's context API.
10
26
  * If not explicitly specified, necessary configuration is taken from the nearest <ConfigProvider>.
@@ -25,32 +41,6 @@ function Resource({ dataProvider, name, query, empty, options, persistent, child
25
41
  )(context);
26
42
  }
27
43
 
28
- Resource.propTypes = {
29
- /**
30
- * DataProvider to be used for requests
31
- */
32
- dataProvider: dataProviderPropType,
33
- /**
34
- * Resource name
35
- */
36
- name: PropTypes.string.isRequired,
37
- /**
38
- * Query
39
- */
40
- query: PropTypes.any,
41
- /**
42
- * Whether to prevent fetching data
43
- */
44
- empty: PropTypes.bool,
45
- /**
46
- * DataProvider options for requests
47
- */
48
- options: PropTypes.object,
49
- /**
50
- * Whether stale data should be retained during the next request - this only applies if neither dataProvider nor name have changed, unless set to "very"
51
- */
52
- persistent: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['very'])]),
53
- children: PropTypes.node,
54
- };
44
+ Resource.propTypes = propTypes;
55
45
 
56
46
  export default Resource;
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
2
 
3
3
  import AbortSignal from './AbortSignal';
4
- import { useConfigContext } from './context';
5
4
  import Meta from './Meta';
5
+ import { useConfigContext } from './context';
6
6
  import uniqueIdentifier from './uniqueIdentifier';
7
7
 
8
8
  /**
@@ -33,13 +33,14 @@ function useResource({
33
33
  );
34
34
  }
35
35
 
36
- const [instance] = React.useState(() => dataProvider.createInstance());
37
- React.useEffect(
38
- () => () => {
39
- dataProvider.releaseInstance(instance);
40
- },
41
- [],
42
- );
36
+ const [instance, setInstance] = React.useState();
37
+ React.useEffect(() => {
38
+ const i = dataProvider.createInstance();
39
+ setInstance(i);
40
+ return () => {
41
+ dataProvider.releaseInstance(i);
42
+ };
43
+ }, []);
43
44
 
44
45
  const nextRequestDetails = React.useMemo(
45
46
  () => ({ name: nextName, query: nextQuery, empty: nextEmpty, options: nextOptions }),
@@ -123,7 +124,6 @@ function useResource({
123
124
  async () =>
124
125
  new Promise((resolve) => {
125
126
  setState((currentState) => {
126
- if (currentState.empty) return currentState;
127
127
  const nextRevision = uniqueIdentifier(currentState.revision);
128
128
  resolve({ request: currentState.request, revision: nextRevision });
129
129
  return { ...currentState, isLoading: true, revision: nextRevision };
@@ -141,7 +141,7 @@ function useResource({
141
141
  }, [requestDetails.empty, dataProvider, requestDetails.name, notify]);
142
142
 
143
143
  React.useEffect(() => {
144
- if (requestDetails.empty) return undefined;
144
+ if (requestDetails.empty || instance == null) return undefined;
145
145
 
146
146
  const abortSignal = new AbortSignal();
147
147
 
@@ -215,7 +215,7 @@ function useResource({
215
215
  return () => {
216
216
  abortSignal.abort();
217
217
  };
218
- }, [request, revision]);
218
+ }, [instance, request, revision]);
219
219
 
220
220
  const isStale = revision !== value.revision;
221
221
  const next = React.useMemo(