@civet/core 1.2.4 → 1.2.6
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.
- package/lib/AbortSignal.js +59 -69
- package/lib/ChannelNotifier.js +29 -38
- package/lib/Meta.js +48 -70
- package/lib/Notifier.js +23 -37
- package/lib/Resource.js +17 -27
- package/lib/useResource.js +10 -10
- package/package.json +1 -1
- package/src/AbortSignal.js +8 -8
- package/src/ChannelNotifier.js +6 -6
- package/src/Meta.js +13 -23
- package/src/Notifier.js +9 -13
- package/src/Resource.js +17 -27
- package/src/useResource.js +11 -11
package/lib/AbortSignal.js
CHANGED
|
@@ -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
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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
|
-
|
|
28
|
-
enumerable: true,
|
|
29
|
-
writable: false,
|
|
30
|
-
configurable: true
|
|
55
|
+
get aborted() {
|
|
56
|
+
return s.locked;
|
|
31
57
|
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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
|
-
|
|
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;
|
package/lib/ChannelNotifier.js
CHANGED
|
@@ -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
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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
|
-
|
|
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
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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,34 @@ 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
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
}, {
|
|
34
|
-
key: "isSubscribed",
|
|
35
|
-
value: function isSubscribed(handler) {
|
|
36
|
-
return this.subscriptions.includes(handler);
|
|
14
|
+
var Notifier = /*#__PURE__*/_createClass(function Notifier() {
|
|
15
|
+
var _this = this;
|
|
16
|
+
_classCallCheck(this, Notifier);
|
|
17
|
+
_defineProperty(this, "listeners", new Set());
|
|
18
|
+
_defineProperty(this, "subscribe", function (handler) {
|
|
19
|
+
if (typeof handler !== 'function') throw new Error('Handler must be a function');
|
|
20
|
+
_this.listeners.add(handler);
|
|
21
|
+
return function () {
|
|
22
|
+
_this.listeners["delete"](handler);
|
|
23
|
+
};
|
|
24
|
+
});
|
|
25
|
+
_defineProperty(this, "isSubscribed", function (handler) {
|
|
26
|
+
return _this.listeners.has(handler);
|
|
27
|
+
});
|
|
28
|
+
_defineProperty(this, "trigger", function () {
|
|
29
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
30
|
+
args[_key] = arguments[_key];
|
|
37
31
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
this.subscriptions.forEach(function (handler) {
|
|
45
|
-
return handler.apply(void 0, args);
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
}]);
|
|
49
|
-
return Notifier;
|
|
50
|
-
}();
|
|
32
|
+
_this.listeners.forEach(function (handler) {
|
|
33
|
+
return handler.apply(void 0, args);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
});
|
|
51
37
|
var _default = Notifier;
|
|
52
38
|
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;
|
package/lib/useResource.js
CHANGED
|
@@ -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(
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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(
|
|
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
package/src/AbortSignal.js
CHANGED
|
@@ -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;
|
package/src/ChannelNotifier.js
CHANGED
|
@@ -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,23 +1,19 @@
|
|
|
1
1
|
class Notifier {
|
|
2
|
-
|
|
2
|
+
listeners = new Set();
|
|
3
3
|
|
|
4
|
-
subscribe(handler) {
|
|
4
|
+
subscribe = (handler) => {
|
|
5
5
|
if (typeof handler !== 'function') throw new Error('Handler must be a function');
|
|
6
|
-
|
|
7
|
-
this.subscriptions.push(handler);
|
|
8
|
-
}
|
|
6
|
+
this.listeners.add(handler);
|
|
9
7
|
return () => {
|
|
10
|
-
this.
|
|
8
|
+
this.listeners.delete(handler);
|
|
11
9
|
};
|
|
12
|
-
}
|
|
10
|
+
};
|
|
13
11
|
|
|
14
|
-
isSubscribed(handler)
|
|
15
|
-
return this.subscriptions.includes(handler);
|
|
16
|
-
}
|
|
12
|
+
isSubscribed = (handler) => this.listeners.has(handler);
|
|
17
13
|
|
|
18
|
-
trigger(...args) {
|
|
19
|
-
this.
|
|
20
|
-
}
|
|
14
|
+
trigger = (...args) => {
|
|
15
|
+
this.listeners.forEach((handler) => handler(...args));
|
|
16
|
+
};
|
|
21
17
|
}
|
|
22
18
|
|
|
23
19
|
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;
|
package/src/useResource.js
CHANGED
|
@@ -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(
|
|
37
|
-
React.useEffect(
|
|
38
|
-
|
|
39
|
-
|
|
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(
|