@civet/core 1.2.7 → 1.3.1
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/LICENSE +2 -2
- package/lib/AbortSignal.js +4 -5
- package/lib/ChannelNotifier.js +4 -5
- package/lib/ConfigProvider.js +10 -10
- package/lib/DataProvider.js +7 -11
- package/lib/Meta.js +6 -7
- package/lib/Notifier.js +4 -5
- package/lib/Resource.js +35 -27
- package/lib/compose.js +1 -2
- package/lib/context.js +8 -13
- package/lib/createPlugin.js +10 -13
- package/lib/index.js +8 -11
- package/lib/uniqueIdentifier.js +2 -3
- package/lib/useResource.js +227 -151
- package/package.json +29 -25
- package/src/{ConfigProvider.js → ConfigProvider.jsx} +3 -4
- package/src/DataProvider.js +1 -2
- package/src/{Resource.js → Resource.jsx} +16 -15
- package/src/context.js +5 -5
- package/src/createPlugin.js +0 -1
- package/src/index.js +3 -3
- package/src/useResource.js +224 -150
package/lib/useResource.js
CHANGED
|
@@ -1,37 +1,189 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
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); }
|
|
4
3
|
Object.defineProperty(exports, "__esModule", {
|
|
5
4
|
value: true
|
|
6
5
|
});
|
|
7
6
|
exports["default"] = void 0;
|
|
8
|
-
var _react =
|
|
7
|
+
var _react = require("react");
|
|
9
8
|
var _AbortSignal = _interopRequireDefault(require("./AbortSignal"));
|
|
10
9
|
var _Meta = _interopRequireDefault(require("./Meta"));
|
|
11
|
-
var
|
|
10
|
+
var _context2 = require("./context");
|
|
12
11
|
var _uniqueIdentifier = _interopRequireDefault(require("./uniqueIdentifier"));
|
|
13
12
|
var _excluded = ["dataProvider", "name", "query", "empty", "options", "persistent"];
|
|
14
13
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
15
|
-
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
|
|
14
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
15
|
+
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
|
|
16
16
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
17
17
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
18
|
-
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; }
|
|
19
|
-
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; }
|
|
20
|
-
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; }
|
|
21
|
-
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
22
|
-
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); }
|
|
23
18
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
24
19
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
25
20
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
26
21
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
27
|
-
function _iterableToArrayLimit(
|
|
22
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
28
23
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
29
24
|
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; }
|
|
30
25
|
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; }
|
|
26
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
27
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
28
|
+
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; }
|
|
29
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
30
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
31
|
+
/**
|
|
32
|
+
* Appends a new requestInstruction to the state, causing the resource to fetch data.
|
|
33
|
+
**/
|
|
34
|
+
function createRequestInstruction(state) {
|
|
35
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
36
|
+
requestInstruction: {
|
|
37
|
+
dataProvider: state.dataProvider,
|
|
38
|
+
requestDetails: state.requestDetails,
|
|
39
|
+
request: state.request,
|
|
40
|
+
revision: state.revision,
|
|
41
|
+
value: state.value
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
|
|
31
46
|
/**
|
|
32
|
-
*
|
|
33
|
-
|
|
34
|
-
|
|
47
|
+
* State reducer for the resource.
|
|
48
|
+
*/
|
|
49
|
+
function reducer(state, action) {
|
|
50
|
+
switch (action.type) {
|
|
51
|
+
// Creates a new request and instructs the resource to fetch data.
|
|
52
|
+
case 'next-request':
|
|
53
|
+
{
|
|
54
|
+
var nextRequestDetails = action.requestDetails,
|
|
55
|
+
nextPersistent = action.persistent;
|
|
56
|
+
var nextRequest = (0, _uniqueIdentifier["default"])(state.request);
|
|
57
|
+
var nextRevision = (0, _uniqueIdentifier["default"])(state.revision);
|
|
58
|
+
var isPersistent = false;
|
|
59
|
+
if (state.persistent === 'very' && nextPersistent === 'very') {
|
|
60
|
+
isPersistent = 'very';
|
|
61
|
+
} else if (state.persistent && nextPersistent) {
|
|
62
|
+
isPersistent = true;
|
|
63
|
+
}
|
|
64
|
+
var shouldValuePersist = !nextRequestDetails.empty && state.dataProvider.shouldPersist(nextRequestDetails, state.requestDetails, isPersistent, state.value);
|
|
65
|
+
return createRequestInstruction({
|
|
66
|
+
dataProvider: state.dataProvider,
|
|
67
|
+
requestDetails: nextRequestDetails,
|
|
68
|
+
request: nextRequest,
|
|
69
|
+
revision: nextRevision,
|
|
70
|
+
isLoading: !nextRequestDetails.empty,
|
|
71
|
+
value: shouldValuePersist ? state.value : {
|
|
72
|
+
name: nextRequestDetails.name,
|
|
73
|
+
query: nextRequestDetails.query,
|
|
74
|
+
options: nextRequestDetails.options,
|
|
75
|
+
request: nextRequest,
|
|
76
|
+
revision: nextRevision,
|
|
77
|
+
data: [],
|
|
78
|
+
meta: {},
|
|
79
|
+
error: undefined,
|
|
80
|
+
isEmpty: !!nextRequestDetails.empty,
|
|
81
|
+
isIncomplete: !nextRequestDetails.empty,
|
|
82
|
+
isInitial: !nextRequestDetails.empty
|
|
83
|
+
},
|
|
84
|
+
persistent: nextPersistent
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// Creates a new revision for the current request and instructs the resource to fetch data.
|
|
89
|
+
case 'next-revision':
|
|
90
|
+
{
|
|
91
|
+
var notify = action.notify;
|
|
92
|
+
var _nextRevision = (0, _uniqueIdentifier["default"])(state.revision);
|
|
93
|
+
notify({
|
|
94
|
+
request: state.request,
|
|
95
|
+
revison: _nextRevision
|
|
96
|
+
});
|
|
97
|
+
return createRequestInstruction(_objectSpread(_objectSpread({}, state), {}, {
|
|
98
|
+
revision: _nextRevision,
|
|
99
|
+
isLoading: !state.requestDetails.empty
|
|
100
|
+
}));
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// Sets a new persistence level.
|
|
104
|
+
case 'set-persistence':
|
|
105
|
+
{
|
|
106
|
+
var _nextPersistent = action.persistent;
|
|
107
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
108
|
+
persistent: _nextPersistent
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// Updates the current request's data.
|
|
113
|
+
case 'update-data':
|
|
114
|
+
{
|
|
115
|
+
var request = action.request,
|
|
116
|
+
revision = action.revision,
|
|
117
|
+
value = action.value;
|
|
118
|
+
if (request !== state.request || revision !== state.revision) return state;
|
|
119
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
120
|
+
isLoading: value.isIncomplete,
|
|
121
|
+
value: value
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return state;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Starts fetching data and updates the resource when new data is available.
|
|
130
|
+
*/
|
|
131
|
+
function fetchData(requestInstruction, instance, abortSignal, dispatch) {
|
|
132
|
+
var dataProvider = requestInstruction.dataProvider,
|
|
133
|
+
requestDetails = requestInstruction.requestDetails,
|
|
134
|
+
request = requestInstruction.request,
|
|
135
|
+
revision = requestInstruction.revision,
|
|
136
|
+
value = requestInstruction.value;
|
|
137
|
+
var meta = new _Meta["default"](_objectSpread({}, value.meta), instance);
|
|
138
|
+
var promise = Promise.resolve(value);
|
|
139
|
+
var callback = function callback(error, done, data) {
|
|
140
|
+
promise = promise.then(function (prevValue) {
|
|
141
|
+
try {
|
|
142
|
+
var nextValue;
|
|
143
|
+
if (error != null) {
|
|
144
|
+
nextValue = _objectSpread(_objectSpread({}, prevValue), {}, {
|
|
145
|
+
error: error,
|
|
146
|
+
isIncomplete: false
|
|
147
|
+
});
|
|
148
|
+
} else {
|
|
149
|
+
var context = {
|
|
150
|
+
name: requestDetails.name,
|
|
151
|
+
query: requestDetails.query,
|
|
152
|
+
options: requestDetails.options,
|
|
153
|
+
request: request,
|
|
154
|
+
revision: revision,
|
|
155
|
+
data: data,
|
|
156
|
+
meta: meta.commit(prevValue.meta),
|
|
157
|
+
error: undefined,
|
|
158
|
+
isEmpty: false,
|
|
159
|
+
isIncomplete: !done,
|
|
160
|
+
isInitial: !!prevValue.isInitial && !done
|
|
161
|
+
};
|
|
162
|
+
context.data = dataProvider.transition(context, prevValue);
|
|
163
|
+
context.data = dataProvider.recycleItems(context, prevValue);
|
|
164
|
+
nextValue = context;
|
|
165
|
+
}
|
|
166
|
+
dispatch({
|
|
167
|
+
type: 'update-data',
|
|
168
|
+
request: request,
|
|
169
|
+
revision: revision,
|
|
170
|
+
value: nextValue
|
|
171
|
+
});
|
|
172
|
+
return nextValue;
|
|
173
|
+
} catch (_unused) {
|
|
174
|
+
return prevValue;
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
};
|
|
178
|
+
dataProvider.continuousGet(requestDetails.name, requestDetails.query, requestDetails.options, meta, callback, abortSignal);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Provides data based on the given request details and DataProvider.
|
|
183
|
+
*
|
|
184
|
+
* Necessary configuration that is not directly specified is taken from the ConfigContext.
|
|
185
|
+
*
|
|
186
|
+
* The provided DataProvider must not be changed.
|
|
35
187
|
*/
|
|
36
188
|
function useResource(_ref) {
|
|
37
189
|
var dataProviderProp = _ref.dataProvider,
|
|
@@ -41,29 +193,9 @@ function useResource(_ref) {
|
|
|
41
193
|
nextOptions = _ref.options,
|
|
42
194
|
nextPersistent = _ref.persistent,
|
|
43
195
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
44
|
-
var configContext = (0,
|
|
196
|
+
var configContext = (0, _context2.useConfigContext)();
|
|
45
197
|
var currentDataProvider = dataProviderProp || configContext.dataProvider;
|
|
46
|
-
var
|
|
47
|
-
_React$useState2 = _slicedToArray(_React$useState, 1),
|
|
48
|
-
dataProvider = _React$useState2[0];
|
|
49
|
-
if (dataProvider == null) {
|
|
50
|
-
throw new Error('Unmet requirement: The DataProvider for the useResource hook is missing - Check your ConfigContext provider and the dataProvider property');
|
|
51
|
-
}
|
|
52
|
-
if (dataProvider !== currentDataProvider) {
|
|
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
|
-
}
|
|
55
|
-
var _React$useState3 = _react["default"].useState(),
|
|
56
|
-
_React$useState4 = _slicedToArray(_React$useState3, 2),
|
|
57
|
-
instance = _React$useState4[0],
|
|
58
|
-
setInstance = _React$useState4[1];
|
|
59
|
-
_react["default"].useEffect(function () {
|
|
60
|
-
var i = dataProvider.createInstance();
|
|
61
|
-
setInstance(i !== null && i !== void 0 ? i : {});
|
|
62
|
-
return function () {
|
|
63
|
-
dataProvider.releaseInstance(i);
|
|
64
|
-
};
|
|
65
|
-
}, []);
|
|
66
|
-
var nextRequestDetails = _react["default"].useMemo(function () {
|
|
198
|
+
var nextRequestDetails = (0, _react.useMemo)(function () {
|
|
67
199
|
return {
|
|
68
200
|
name: nextName,
|
|
69
201
|
query: nextQuery,
|
|
@@ -71,10 +203,11 @@ function useResource(_ref) {
|
|
|
71
203
|
options: nextOptions
|
|
72
204
|
};
|
|
73
205
|
}, [nextName, nextQuery, nextEmpty, nextOptions]);
|
|
74
|
-
var
|
|
206
|
+
var _useReducer = (0, _react.useReducer)(reducer, undefined, function () {
|
|
75
207
|
var request = (0, _uniqueIdentifier["default"])();
|
|
76
208
|
var revision = (0, _uniqueIdentifier["default"])();
|
|
77
|
-
return {
|
|
209
|
+
return createRequestInstruction({
|
|
210
|
+
dataProvider: currentDataProvider,
|
|
78
211
|
requestDetails: nextRequestDetails,
|
|
79
212
|
request: request,
|
|
80
213
|
revision: revision,
|
|
@@ -93,71 +226,56 @@ function useResource(_ref) {
|
|
|
93
226
|
isInitial: !nextRequestDetails.empty
|
|
94
227
|
},
|
|
95
228
|
persistent: nextPersistent
|
|
96
|
-
};
|
|
229
|
+
});
|
|
97
230
|
}),
|
|
98
|
-
|
|
99
|
-
state =
|
|
100
|
-
|
|
101
|
-
var
|
|
231
|
+
_useReducer2 = _slicedToArray(_useReducer, 2),
|
|
232
|
+
state = _useReducer2[0],
|
|
233
|
+
dispatch = _useReducer2[1];
|
|
234
|
+
var dataProvider = state.dataProvider,
|
|
235
|
+
requestDetails = state.requestDetails,
|
|
102
236
|
request = state.request,
|
|
103
237
|
revision = state.revision,
|
|
104
238
|
isLoading = state.isLoading,
|
|
105
239
|
value = state.value,
|
|
106
|
-
persistent = state.persistent
|
|
240
|
+
persistent = state.persistent,
|
|
241
|
+
requestInstruction = state.requestInstruction;
|
|
242
|
+
if (dataProvider == null) {
|
|
243
|
+
throw new Error('Unmet requirement: The DataProvider for the useResource hook is missing - Check your ConfigContext provider and the dataProvider property');
|
|
244
|
+
}
|
|
245
|
+
if (dataProvider !== currentDataProvider) {
|
|
246
|
+
throw new Error('Constant violation: The DataProvider provided to the useResource hook must not be replaced - Check your ConfigContext provider and the dataProvider property');
|
|
247
|
+
}
|
|
248
|
+
var _useState = (0, _react.useState)(),
|
|
249
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
250
|
+
instance = _useState2[0],
|
|
251
|
+
setInstance = _useState2[1];
|
|
252
|
+
(0, _react.useEffect)(function () {
|
|
253
|
+
var i = dataProvider.createInstance();
|
|
254
|
+
setInstance(i !== null && i !== void 0 ? i : {});
|
|
255
|
+
return function () {
|
|
256
|
+
dataProvider.releaseInstance(i);
|
|
257
|
+
};
|
|
258
|
+
}, [dataProvider]);
|
|
107
259
|
if (requestDetails !== nextRequestDetails && !dataProvider.compareRequests(nextRequestDetails, requestDetails)) {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
if (prevState.persistent === 'very' && nextPersistent === 'very') {
|
|
113
|
-
isPersistent = 'very';
|
|
114
|
-
} else if (prevState.persistent && nextPersistent) {
|
|
115
|
-
isPersistent = true;
|
|
116
|
-
}
|
|
117
|
-
var shouldValuePersist = !nextRequestDetails.empty && dataProvider.shouldPersist(nextRequestDetails, prevState.requestDetails, isPersistent, prevState.value);
|
|
118
|
-
return {
|
|
119
|
-
requestDetails: nextRequestDetails,
|
|
120
|
-
request: nextRequest,
|
|
121
|
-
revision: nextRevision,
|
|
122
|
-
isLoading: !nextRequestDetails.empty,
|
|
123
|
-
value: shouldValuePersist ? prevState.value : {
|
|
124
|
-
name: nextRequestDetails.name,
|
|
125
|
-
query: nextRequestDetails.query,
|
|
126
|
-
options: nextRequestDetails.options,
|
|
127
|
-
request: nextRequest,
|
|
128
|
-
revision: nextRevision,
|
|
129
|
-
data: [],
|
|
130
|
-
meta: {},
|
|
131
|
-
error: undefined,
|
|
132
|
-
isEmpty: !!nextRequestDetails.empty,
|
|
133
|
-
isIncomplete: !nextRequestDetails.empty,
|
|
134
|
-
isInitial: !nextRequestDetails.empty
|
|
135
|
-
},
|
|
136
|
-
persistent: nextPersistent
|
|
137
|
-
};
|
|
260
|
+
dispatch({
|
|
261
|
+
type: 'next-request',
|
|
262
|
+
requestDetails: nextRequestDetails,
|
|
263
|
+
persistent: nextPersistent
|
|
138
264
|
});
|
|
139
265
|
} else if (persistent !== nextPersistent) {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
});
|
|
266
|
+
dispatch({
|
|
267
|
+
type: 'set-persistence',
|
|
268
|
+
persistent: nextPersistent
|
|
144
269
|
});
|
|
145
270
|
}
|
|
146
|
-
var notify = _react
|
|
271
|
+
var notify = (0, _react.useCallback)( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
147
272
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
148
273
|
while (1) switch (_context.prev = _context.next) {
|
|
149
274
|
case 0:
|
|
150
275
|
return _context.abrupt("return", new Promise(function (resolve) {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
resolve
|
|
154
|
-
request: currentState.request,
|
|
155
|
-
revision: nextRevision
|
|
156
|
-
});
|
|
157
|
-
return _objectSpread(_objectSpread({}, currentState), {}, {
|
|
158
|
-
isLoading: true,
|
|
159
|
-
revision: nextRevision
|
|
160
|
-
});
|
|
276
|
+
dispatch({
|
|
277
|
+
type: 'next-revision',
|
|
278
|
+
notify: resolve
|
|
161
279
|
});
|
|
162
280
|
}));
|
|
163
281
|
case 1:
|
|
@@ -168,77 +286,34 @@ function useResource(_ref) {
|
|
|
168
286
|
})), []);
|
|
169
287
|
|
|
170
288
|
// DataProvider events
|
|
171
|
-
_react
|
|
289
|
+
(0, _react.useEffect)(function () {
|
|
172
290
|
if (requestDetails.empty) return undefined;
|
|
173
291
|
var unsubscribe = dataProvider.subscribe(requestDetails.name, notify);
|
|
174
292
|
return unsubscribe;
|
|
175
293
|
}, [requestDetails.empty, dataProvider, requestDetails.name, notify]);
|
|
176
|
-
|
|
177
|
-
|
|
294
|
+
|
|
295
|
+
// Fetch data when instructed
|
|
296
|
+
(0, _react.useEffect)(function () {
|
|
297
|
+
if (instance == null || requestInstruction.requestDetails.empty) return undefined;
|
|
178
298
|
var abortSignal = new _AbortSignal["default"]();
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
promise = promise.then(function (prevState) {
|
|
183
|
-
try {
|
|
184
|
-
var nextState;
|
|
185
|
-
if (error != null) {
|
|
186
|
-
nextState = _objectSpread(_objectSpread({}, prevState), {}, {
|
|
187
|
-
isLoading: false,
|
|
188
|
-
value: _objectSpread(_objectSpread({}, prevState.value), {}, {
|
|
189
|
-
error: error,
|
|
190
|
-
isIncomplete: false
|
|
191
|
-
})
|
|
192
|
-
});
|
|
193
|
-
} else {
|
|
194
|
-
var _context2 = {
|
|
195
|
-
name: requestDetails.name,
|
|
196
|
-
query: requestDetails.query,
|
|
197
|
-
options: requestDetails.options,
|
|
198
|
-
request: request,
|
|
199
|
-
revision: revision,
|
|
200
|
-
data: data,
|
|
201
|
-
meta: meta.commit(prevState.value.meta),
|
|
202
|
-
error: undefined,
|
|
203
|
-
isEmpty: false,
|
|
204
|
-
isIncomplete: !done,
|
|
205
|
-
isInitial: !!prevState.isInitial && !done
|
|
206
|
-
};
|
|
207
|
-
_context2.data = dataProvider.transition(_context2, prevState.value);
|
|
208
|
-
_context2.data = dataProvider.recycleItems(_context2, prevState.value);
|
|
209
|
-
nextState = _objectSpread(_objectSpread({}, prevState), {}, {
|
|
210
|
-
isLoading: !done,
|
|
211
|
-
value: _context2
|
|
212
|
-
});
|
|
213
|
-
}
|
|
214
|
-
setState(function (otherState) {
|
|
215
|
-
if (request !== otherState.request || revision !== otherState.revision) {
|
|
216
|
-
return otherState;
|
|
217
|
-
}
|
|
218
|
-
return nextState;
|
|
219
|
-
});
|
|
220
|
-
return nextState;
|
|
221
|
-
} catch (_unused) {
|
|
222
|
-
return prevState;
|
|
223
|
-
}
|
|
224
|
-
});
|
|
225
|
-
};
|
|
226
|
-
dataProvider.continuousGet(requestDetails.name, requestDetails.query, requestDetails.options, meta, callback, abortSignal);
|
|
299
|
+
|
|
300
|
+
// Start fetching data.
|
|
301
|
+
fetchData(requestInstruction, instance, abortSignal, dispatch);
|
|
227
302
|
return function () {
|
|
303
|
+
// Abort fetching data when another request is pending or the React component is unmounted.
|
|
228
304
|
abortSignal.abort();
|
|
229
305
|
};
|
|
230
|
-
}, [instance,
|
|
306
|
+
}, [instance, requestInstruction]);
|
|
231
307
|
var isStale = revision !== value.revision;
|
|
232
|
-
var
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
revision: value.revision
|
|
308
|
+
var nextRequest = isStale ? request : value.request;
|
|
309
|
+
var nextRevision = isStale ? revision : value.revision;
|
|
310
|
+
var next = (0, _react.useMemo)(function () {
|
|
311
|
+
return {
|
|
312
|
+
request: nextRequest,
|
|
313
|
+
revision: nextRevision
|
|
239
314
|
};
|
|
240
|
-
}, [
|
|
241
|
-
var context = _react
|
|
315
|
+
}, [nextRequest, nextRevision]);
|
|
316
|
+
var context = (0, _react.useMemo)(function () {
|
|
242
317
|
return _objectSpread(_objectSpread({}, value), {}, {
|
|
243
318
|
dataProvider: dataProvider,
|
|
244
319
|
isLoading: isLoading,
|
|
@@ -247,9 +322,10 @@ function useResource(_ref) {
|
|
|
247
322
|
notify: notify
|
|
248
323
|
});
|
|
249
324
|
}, [value, dataProvider, isLoading, isStale, next, notify]);
|
|
325
|
+
|
|
326
|
+
// Apply context plugins and return the final context.
|
|
250
327
|
return dataProvider.contextPlugins.reduce(function (result, fn) {
|
|
251
328
|
return fn(result, rest);
|
|
252
329
|
}, context);
|
|
253
330
|
}
|
|
254
|
-
var _default = useResource;
|
|
255
|
-
exports["default"] = _default;
|
|
331
|
+
var _default = exports["default"] = useResource;
|
package/package.json
CHANGED
|
@@ -1,22 +1,29 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@civet/core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.1",
|
|
4
4
|
"description": "Civet",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
|
+
"exports": {
|
|
7
|
+
".": {
|
|
8
|
+
"import": "./src/index.js",
|
|
9
|
+
"require": "./lib/index.js",
|
|
10
|
+
"default": "./lib/index.js"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"files": [
|
|
14
|
+
"lib",
|
|
15
|
+
"src"
|
|
16
|
+
],
|
|
6
17
|
"scripts": {
|
|
7
18
|
"build:clean": "rimraf ./lib",
|
|
8
19
|
"prebuild": "npm run build:clean",
|
|
9
|
-
"build": "
|
|
10
|
-
"lint": "eslint src",
|
|
20
|
+
"build": "babel src -d lib",
|
|
21
|
+
"lint": "eslint src --report-unused-disable-directives",
|
|
11
22
|
"prepare": "npm run lint && npm run build",
|
|
12
23
|
"preversion": "git diff HEAD --name-only --exit-code || (echo -\\> unclean working directory && exit 1)",
|
|
13
24
|
"postversion": "cross-env git commit -am$npm_package_version",
|
|
14
25
|
"prettify": "prettier --write src/**"
|
|
15
26
|
},
|
|
16
|
-
"files": [
|
|
17
|
-
"lib",
|
|
18
|
-
"src"
|
|
19
|
-
],
|
|
20
27
|
"repository": {
|
|
21
28
|
"type": "git",
|
|
22
29
|
"url": "git+https://github.com/civet-org/core.git"
|
|
@@ -34,35 +41,32 @@
|
|
|
34
41
|
},
|
|
35
42
|
"homepage": "https://civet.js.org/",
|
|
36
43
|
"devDependencies": {
|
|
37
|
-
"@babel/cli": "^7.
|
|
38
|
-
"@babel/core": "^7.
|
|
39
|
-
"@babel/
|
|
40
|
-
"@babel/preset-env": "^7.
|
|
44
|
+
"@babel/cli": "^7.22.15",
|
|
45
|
+
"@babel/core": "^7.24.4",
|
|
46
|
+
"@babel/eslint-parser": "^7.22.15",
|
|
47
|
+
"@babel/preset-env": "^7.24.4",
|
|
41
48
|
"@babel/preset-react": "^7.18.6",
|
|
42
|
-
"babel-eslint": "^10.1.0",
|
|
43
49
|
"cross-env": "^7.0.3",
|
|
44
|
-
"eslint": "^
|
|
45
|
-
"eslint-config-
|
|
46
|
-
"eslint-
|
|
47
|
-
"eslint-
|
|
48
|
-
"eslint-plugin-
|
|
49
|
-
"eslint-plugin-jsx-a11y": "^6.6.1",
|
|
50
|
-
"eslint-plugin-prettier": "^4.2.1",
|
|
51
|
-
"eslint-plugin-react": "^7.31.11",
|
|
50
|
+
"eslint": "^8.53.0",
|
|
51
|
+
"eslint-config-prettier": "^9.0.0",
|
|
52
|
+
"eslint-plugin-import": "^2.29.0",
|
|
53
|
+
"eslint-plugin-prettier": "^5.0.1",
|
|
54
|
+
"eslint-plugin-react": "^7.33.2",
|
|
52
55
|
"eslint-plugin-react-hooks": "^4.6.0",
|
|
53
|
-
"
|
|
56
|
+
"eslint-plugin-unused-imports": "^3.0.0",
|
|
57
|
+
"prettier": "^3.2.5",
|
|
54
58
|
"react": "^18.2.0",
|
|
55
59
|
"react-dom": "^18.2.0",
|
|
56
|
-
"rimraf": "^
|
|
60
|
+
"rimraf": "^5.0.5"
|
|
57
61
|
},
|
|
58
62
|
"peerDependencies": {
|
|
59
|
-
"react": ">=
|
|
60
|
-
"react-dom": ">=
|
|
63
|
+
"react": ">=18.0",
|
|
64
|
+
"react-dom": ">=18.0"
|
|
61
65
|
},
|
|
62
66
|
"dependencies": {
|
|
63
67
|
"fast-deep-equal": "^3.1.3",
|
|
64
68
|
"object-hash": "^3.0.0",
|
|
65
69
|
"prop-types": "^15.8.1",
|
|
66
|
-
"uuid": "^9.0.
|
|
70
|
+
"uuid": "^9.0.1"
|
|
67
71
|
}
|
|
68
72
|
}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import PropTypes from 'prop-types';
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
import { ConfigContext } from './context';
|
|
2
|
+
import { useMemo } from 'react';
|
|
5
3
|
import { dataProviderPropType } from './DataProvider';
|
|
4
|
+
import { ConfigContext } from './context';
|
|
6
5
|
|
|
7
6
|
/**
|
|
8
7
|
* Provides general configuration to its descendants using React's context API.
|
|
9
8
|
*/
|
|
10
9
|
function ConfigProvider({ dataProvider, children }) {
|
|
11
|
-
const context =
|
|
10
|
+
const context = useMemo(() => ({ dataProvider }), [dataProvider]);
|
|
12
11
|
|
|
13
12
|
return <ConfigContext.Provider value={context}>{children}</ConfigContext.Provider>;
|
|
14
13
|
}
|
package/src/DataProvider.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import deepEquals from 'fast-deep-equal';
|
|
2
2
|
import objectHash from 'object-hash';
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
|
-
|
|
5
4
|
import AbortSignal from './AbortSignal';
|
|
6
5
|
import ChannelNotifier from './ChannelNotifier';
|
|
7
6
|
import Meta from './Meta';
|
|
@@ -191,4 +190,4 @@ const isDataProvider = (dataProvider) => dataProvider instanceof DataProvider;
|
|
|
191
190
|
const dataProviderPropType = PropTypes.instanceOf(DataProvider);
|
|
192
191
|
|
|
193
192
|
export default DataProvider;
|
|
194
|
-
export {
|
|
193
|
+
export { dataProviderPropType, isDataProvider };
|