@civet/core 1.4.2 → 2.0.0
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/dist/AbortSignal.d.ts +16 -0
- package/dist/ChannelNotifier.d.ts +6 -0
- package/dist/ConfigProvider.d.ts +8 -0
- package/dist/DataProvider.d.ts +110 -0
- package/dist/Meta.d.ts +18 -0
- package/dist/Notifier.d.ts +6 -0
- package/dist/Resource.d.ts +20 -0
- package/dist/ResourceProvider.d.ts +5 -0
- package/dist/compose.d.ts +1 -0
- package/dist/context.d.ts +15 -0
- package/dist/createPlugin.d.ts +4 -0
- package/dist/main.d.ts +18 -0
- package/dist/main.js +1473 -0
- package/dist/uniqueIdentifier.d.ts +8 -0
- package/dist/useResource.d.ts +29 -0
- package/package.json +50 -49
- package/lib/AbortSignal.js +0 -76
- package/lib/ChannelNotifier.js +0 -47
- package/lib/ConfigProvider.js +0 -32
- package/lib/DataProvider.js +0 -222
- package/lib/Meta.js +0 -63
- package/lib/Notifier.js +0 -39
- package/lib/Resource.js +0 -81
- package/lib/compose.js +0 -21
- package/lib/context.js +0 -21
- package/lib/createPlugin.js +0 -44
- package/lib/index.js +0 -109
- package/lib/uniqueIdentifier.js +0 -41
- package/lib/useResource.js +0 -335
- package/src/AbortSignal.js +0 -68
- package/src/ChannelNotifier.js +0 -35
- package/src/ConfigProvider.jsx +0 -22
- package/src/DataProvider.js +0 -228
- package/src/Meta.js +0 -50
- package/src/Notifier.js +0 -21
- package/src/Resource.jsx +0 -68
- package/src/compose.js +0 -9
- package/src/context.js +0 -11
- package/src/createPlugin.js +0 -23
- package/src/index.js +0 -25
- package/src/uniqueIdentifier.js +0 -27
- package/src/useResource.js +0 -321
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns incrementing unique string identifiers.
|
|
3
|
+
* Uniqueness is guaranteed for <Number.MAX_SAFE_INTEGER> iterations.
|
|
4
|
+
* The values can be compared alphanumerically, as long as they do not exceed the previously specified number of iterations.
|
|
5
|
+
*
|
|
6
|
+
* @param {string?} previous Previous identifier
|
|
7
|
+
*/
|
|
8
|
+
export default function uniqueIdentifier(previous?: string): string;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { GenericDataProvider, InferItem, InferOptions, InferQuery, Persistence, ResourceContextValue } from './DataProvider';
|
|
2
|
+
/**
|
|
3
|
+
* Provides data based on the given request details and DataProvider.
|
|
4
|
+
*
|
|
5
|
+
* Necessary configuration that is not directly specified is taken from the ConfigContext.
|
|
6
|
+
*
|
|
7
|
+
* The provided DataProvider must not be changed.
|
|
8
|
+
*/
|
|
9
|
+
export default function useResource<DataProviderI extends GenericDataProvider, ItemI extends InferItem<DataProviderI> = InferItem<DataProviderI>, QueryI extends InferQuery<DataProviderI> = InferQuery<DataProviderI>, OptionsI extends InferOptions<DataProviderI> = InferOptions<DataProviderI>>({
|
|
10
|
+
/** DataProvider to be used for requests - must not be changed */
|
|
11
|
+
dataProvider: dataProviderProp,
|
|
12
|
+
/** Resource name */
|
|
13
|
+
name: nextName,
|
|
14
|
+
/** Query instructions */
|
|
15
|
+
query: nextQuery,
|
|
16
|
+
/** Disables fetching data, resulting in an empty data array */
|
|
17
|
+
empty: nextEmpty,
|
|
18
|
+
/** Query options for requests */
|
|
19
|
+
options: nextOptions,
|
|
20
|
+
/** Whether stale data should be retained during the next request - this only applies if name did not change, unless set to "very" */
|
|
21
|
+
persistent: nextPersistent, ...rest }: {
|
|
22
|
+
dataProvider?: DataProviderI;
|
|
23
|
+
name: string;
|
|
24
|
+
query: QueryI;
|
|
25
|
+
empty?: boolean;
|
|
26
|
+
options?: OptionsI;
|
|
27
|
+
persistent?: Persistence;
|
|
28
|
+
[rest: string]: unknown;
|
|
29
|
+
}): ResourceContextValue<DataProviderI, ItemI, QueryI, OptionsI>;
|
package/package.json
CHANGED
|
@@ -1,50 +1,49 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@civet/core",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "Civet",
|
|
5
|
-
"
|
|
6
|
-
|
|
7
|
-
"exports": {
|
|
8
|
-
".": {
|
|
9
|
-
"import": "./src/index.js",
|
|
10
|
-
"require": "./lib/index.js",
|
|
11
|
-
"default": "./lib/index.js"
|
|
12
|
-
}
|
|
13
|
-
},
|
|
14
|
-
"files": [
|
|
15
|
-
"lib",
|
|
16
|
-
"src"
|
|
17
|
-
],
|
|
18
|
-
"scripts": {
|
|
19
|
-
"prebuild": "npm run build:clean",
|
|
20
|
-
"build:clean": "rimraf ./lib",
|
|
21
|
-
"build": "babel src -d lib",
|
|
22
|
-
"lint": "eslint",
|
|
23
|
-
"prepare": "npm run lint && npm run build",
|
|
24
|
-
"preversion": "git diff HEAD --name-only --exit-code || (echo -\\> unclean working directory && exit 1)",
|
|
25
|
-
"postversion": "cross-env git commit -am$npm_package_version",
|
|
26
|
-
"prettify": "prettier . --write"
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Aaron Burmeister"
|
|
27
7
|
},
|
|
28
8
|
"repository": {
|
|
29
9
|
"type": "git",
|
|
30
|
-
"url": "
|
|
10
|
+
"url": "https://github.com/civet-org/core.git"
|
|
11
|
+
},
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/civet-org/core/issues"
|
|
31
14
|
},
|
|
15
|
+
"homepage": "https://civet.js.org/",
|
|
16
|
+
"license": "MIT",
|
|
17
|
+
"type": "module",
|
|
32
18
|
"keywords": [
|
|
33
19
|
"civet",
|
|
34
20
|
"react",
|
|
35
21
|
"data",
|
|
36
22
|
"rest"
|
|
37
23
|
],
|
|
38
|
-
"
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
24
|
+
"files": [
|
|
25
|
+
"dist"
|
|
26
|
+
],
|
|
27
|
+
"main": "./dist/main.js",
|
|
28
|
+
"types": "./dist/main.d.ts",
|
|
29
|
+
"exports": {
|
|
30
|
+
".": {
|
|
31
|
+
"import": "./dist/main.js"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"scripts": {
|
|
35
|
+
"dev": "vite",
|
|
36
|
+
"build": "tsc -b ./tsconfig-build.json && vite build",
|
|
37
|
+
"lint": "eslint . --max-warnings 0",
|
|
38
|
+
"lint:fix": "npm run lint -- --fix",
|
|
39
|
+
"prettify": "prettier . --write",
|
|
40
|
+
"preview": "vite preview",
|
|
41
|
+
"prepublishOnly": "npm run build"
|
|
42
42
|
},
|
|
43
|
-
"homepage": "https://civet.js.org/",
|
|
44
43
|
"dependencies": {
|
|
44
|
+
"@types/object-hash": "^3.0.6",
|
|
45
45
|
"fast-deep-equal": "^3.1.3",
|
|
46
46
|
"object-hash": "^3.0.0",
|
|
47
|
-
"prop-types": "^15.8.1",
|
|
48
47
|
"uuid": "^11.1.0"
|
|
49
48
|
},
|
|
50
49
|
"peerDependencies": {
|
|
@@ -52,25 +51,27 @@
|
|
|
52
51
|
"react-dom": ">=18.0"
|
|
53
52
|
},
|
|
54
53
|
"devDependencies": {
|
|
55
|
-
"@
|
|
56
|
-
"@
|
|
57
|
-
"@
|
|
58
|
-
"@
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"cross-env": "^7.0.3",
|
|
62
|
-
"eslint": "^9.20.0",
|
|
63
|
-
"eslint-config-prettier": "^10.0.1",
|
|
54
|
+
"@eslint/js": "^9.32.0",
|
|
55
|
+
"@types/react": "^19.1.12",
|
|
56
|
+
"@types/react-dom": "^19.1.9",
|
|
57
|
+
"@vitejs/plugin-react": "^5.0.2",
|
|
58
|
+
"eslint": "^9.34.0",
|
|
59
|
+
"eslint-config-prettier": "^10.1.8",
|
|
64
60
|
"eslint-import-resolver-alias": "^1.1.2",
|
|
65
|
-
"eslint-
|
|
66
|
-
"eslint-plugin-
|
|
67
|
-
"eslint-plugin-
|
|
68
|
-
"eslint-plugin-react-hooks": "^5.2.0
|
|
69
|
-
"eslint-plugin-
|
|
70
|
-
"
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"react
|
|
74
|
-
"
|
|
61
|
+
"eslint-import-resolver-typescript": "^4.4.4",
|
|
62
|
+
"eslint-plugin-import": "^2.32.0",
|
|
63
|
+
"eslint-plugin-prettier": "^5.5.4",
|
|
64
|
+
"eslint-plugin-react-hooks": "^5.2.0",
|
|
65
|
+
"eslint-plugin-react-refresh": "^0.4.20",
|
|
66
|
+
"eslint-plugin-unused-imports": "^4.2.0",
|
|
67
|
+
"globals": "^16.3.0",
|
|
68
|
+
"prettier": "^3.6.2",
|
|
69
|
+
"react": "^19.1.1",
|
|
70
|
+
"react-dom": "^19.1.1",
|
|
71
|
+
"typescript": "^5.9.2",
|
|
72
|
+
"typescript-eslint": "^8.41.0",
|
|
73
|
+
"vite": "^7.1.3",
|
|
74
|
+
"vite-plugin-dts": "^4.5.4",
|
|
75
|
+
"vite-tsconfig-paths": "^5.1.4"
|
|
75
76
|
}
|
|
76
77
|
}
|
package/lib/AbortSignal.js
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports["default"] = void 0;
|
|
7
|
-
var _Notifier = _interopRequireDefault(require("./Notifier"));
|
|
8
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
9
|
-
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); }
|
|
10
|
-
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
|
|
11
|
-
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
|
12
|
-
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
|
13
|
-
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
14
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
15
|
-
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); }
|
|
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;
|
|
54
|
-
},
|
|
55
|
-
get aborted() {
|
|
56
|
-
return s.locked;
|
|
57
|
-
}
|
|
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
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
|
-
});
|
|
76
|
-
var _default = exports["default"] = AbortSignal;
|
package/lib/ChannelNotifier.js
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports["default"] = void 0;
|
|
7
|
-
var _Notifier = _interopRequireDefault(require("./Notifier"));
|
|
8
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
9
|
-
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); }
|
|
10
|
-
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
|
|
11
|
-
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
|
12
|
-
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
|
13
|
-
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
14
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
15
|
-
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); }
|
|
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');
|
|
23
|
-
}
|
|
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');
|
|
30
|
-
}
|
|
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];
|
|
36
|
-
}
|
|
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
|
-
});
|
|
47
|
-
var _default = exports["default"] = ChannelNotifier;
|
package/lib/ConfigProvider.js
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports["default"] = void 0;
|
|
7
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
8
|
-
var _react = require("react");
|
|
9
|
-
var _DataProvider = require("./DataProvider");
|
|
10
|
-
var _context = require("./context");
|
|
11
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
13
|
-
/**
|
|
14
|
-
* Provides general configuration to its descendants using React's context API.
|
|
15
|
-
*/function ConfigProvider(_ref) {
|
|
16
|
-
var dataProvider = _ref.dataProvider,
|
|
17
|
-
children = _ref.children;
|
|
18
|
-
var context = (0, _react.useMemo)(function () {
|
|
19
|
-
return {
|
|
20
|
-
dataProvider: dataProvider
|
|
21
|
-
};
|
|
22
|
-
}, [dataProvider]);
|
|
23
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_context.ConfigContext.Provider, {
|
|
24
|
-
value: context,
|
|
25
|
-
children: children
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
ConfigProvider.propTypes = {
|
|
29
|
-
dataProvider: _DataProvider.dataProviderPropType,
|
|
30
|
-
children: _propTypes["default"].node
|
|
31
|
-
};
|
|
32
|
-
var _default = exports["default"] = ConfigProvider;
|
package/lib/DataProvider.js
DELETED
|
@@ -1,222 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.isDataProvider = exports["default"] = exports.dataProviderPropType = void 0;
|
|
7
|
-
var _fastDeepEqual = _interopRequireDefault(require("fast-deep-equal"));
|
|
8
|
-
var _objectHash = _interopRequireDefault(require("object-hash"));
|
|
9
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
10
|
-
var _AbortSignal = _interopRequireDefault(require("./AbortSignal"));
|
|
11
|
-
var _ChannelNotifier = _interopRequireDefault(require("./ChannelNotifier"));
|
|
12
|
-
var _Meta = _interopRequireDefault(require("./Meta"));
|
|
13
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
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 _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
|
16
|
-
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
|
|
17
|
-
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
|
18
|
-
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
19
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
20
|
-
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); }
|
|
21
|
-
var getMeta = function getMeta(meta) {
|
|
22
|
-
return meta instanceof _Meta["default"] ? meta : new _Meta["default"](meta);
|
|
23
|
-
};
|
|
24
|
-
var DataProvider = /*#__PURE__*/function () {
|
|
25
|
-
function DataProvider() {
|
|
26
|
-
_classCallCheck(this, DataProvider);
|
|
27
|
-
_defineProperty(this, "notifier", new _ChannelNotifier["default"]());
|
|
28
|
-
var contextPlugins = [];
|
|
29
|
-
var uiPlugins = [];
|
|
30
|
-
this.extend({
|
|
31
|
-
context: function context(plugin) {
|
|
32
|
-
var plugins = contextPlugins;
|
|
33
|
-
if (plugin != null && !plugins.includes(plugin)) plugins.push(plugin);
|
|
34
|
-
},
|
|
35
|
-
ui: function ui(plugin) {
|
|
36
|
-
var plugins = uiPlugins;
|
|
37
|
-
if (plugin != null && !plugins.includes(plugin)) plugins.push(plugin);
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
Object.defineProperties(this, {
|
|
41
|
-
contextPlugins: {
|
|
42
|
-
value: Object.freeze(contextPlugins.slice()),
|
|
43
|
-
enumerable: true,
|
|
44
|
-
writable: false,
|
|
45
|
-
configurable: false
|
|
46
|
-
},
|
|
47
|
-
uiPlugins: {
|
|
48
|
-
value: Object.freeze(uiPlugins.slice()),
|
|
49
|
-
enumerable: true,
|
|
50
|
-
writable: false,
|
|
51
|
-
configurable: false
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
return _createClass(DataProvider, [{
|
|
56
|
-
key: "extend",
|
|
57
|
-
value: function extend() {}
|
|
58
|
-
}, {
|
|
59
|
-
key: "createInstance",
|
|
60
|
-
value: function createInstance() {
|
|
61
|
-
return null;
|
|
62
|
-
}
|
|
63
|
-
}, {
|
|
64
|
-
key: "releaseInstance",
|
|
65
|
-
value: function releaseInstance() {}
|
|
66
|
-
}, {
|
|
67
|
-
key: "subscribe",
|
|
68
|
-
value: function subscribe(resource, handler) {
|
|
69
|
-
if (resource == null) throw new Error('No resource name specified');
|
|
70
|
-
return this.notifier.subscribe(resource, handler);
|
|
71
|
-
}
|
|
72
|
-
}, {
|
|
73
|
-
key: "notify",
|
|
74
|
-
value: function notify(resource) {
|
|
75
|
-
this.notifier.trigger(resource);
|
|
76
|
-
}
|
|
77
|
-
}, {
|
|
78
|
-
key: "get",
|
|
79
|
-
value: function get(resource, query, options, meta, abortSignal) {
|
|
80
|
-
var _this = this;
|
|
81
|
-
return new Promise(function (resolve, reject) {
|
|
82
|
-
return _this.continuousGet(resource, query, options, meta, function (error, done, result) {
|
|
83
|
-
if (error != null) {
|
|
84
|
-
reject(error);
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
if (done) resolve(result);
|
|
88
|
-
}, abortSignal);
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
}, {
|
|
92
|
-
key: "continuousGet",
|
|
93
|
-
value: function continuousGet(resource, query, options, meta, callback, abortSignal) {
|
|
94
|
-
var _this2 = this;
|
|
95
|
-
var signal = abortSignal == null ? new _AbortSignal["default"]() : abortSignal;
|
|
96
|
-
new Promise(function (resolve) {
|
|
97
|
-
if (resource == null) throw new Error('No resource name specified');
|
|
98
|
-
|
|
99
|
-
// result transformation
|
|
100
|
-
var cb = function cb(error, done, result) {
|
|
101
|
-
// prevent updates after completion
|
|
102
|
-
if (signal.locked) return;
|
|
103
|
-
if (error != null || done) {
|
|
104
|
-
signal.lock();
|
|
105
|
-
}
|
|
106
|
-
if (error != null) callback(error, true, []);else if (result == null) callback(undefined, done, []);else if (Array.isArray(result)) callback(undefined, done, result);else callback(undefined, done, [result]);
|
|
107
|
-
};
|
|
108
|
-
var proxy = signal.proxy();
|
|
109
|
-
resolve(Promise.resolve(_this2.handleGet(resource, query, options, getMeta(meta), proxy)).then(function (result) {
|
|
110
|
-
if (typeof result === 'function') {
|
|
111
|
-
// `proxy` is being passed down here for backwards compatibility
|
|
112
|
-
result(cb, proxy);
|
|
113
|
-
} else {
|
|
114
|
-
cb(undefined, true, result);
|
|
115
|
-
}
|
|
116
|
-
}));
|
|
117
|
-
})["catch"](function (e) {
|
|
118
|
-
if (!signal.locked) callback(e, true, []);
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
}, {
|
|
122
|
-
key: "create",
|
|
123
|
-
value: function create(resource, data, options, meta) {
|
|
124
|
-
var _this3 = this;
|
|
125
|
-
return new Promise(function (resolve) {
|
|
126
|
-
if (resource == null) throw new Error('No resource name specified');
|
|
127
|
-
if (data == null) throw new Error('No data specified');
|
|
128
|
-
resolve(Promise.resolve(_this3.handleCreate(resource, data, options, getMeta(meta))));
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
}, {
|
|
132
|
-
key: "update",
|
|
133
|
-
value: function update(resource, query, data, options, meta) {
|
|
134
|
-
var _this4 = this;
|
|
135
|
-
return new Promise(function (resolve) {
|
|
136
|
-
if (resource == null) throw new Error('No resource name specified');
|
|
137
|
-
if (data == null) throw new Error('No data specified');
|
|
138
|
-
resolve(Promise.resolve(_this4.handleUpdate(resource, query, data, options, getMeta(meta))));
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
}, {
|
|
142
|
-
key: "patch",
|
|
143
|
-
value: function patch(resource, query, data, options, meta) {
|
|
144
|
-
var _this5 = this;
|
|
145
|
-
return new Promise(function (resolve) {
|
|
146
|
-
if (resource == null) throw new Error('No resource name specified');
|
|
147
|
-
if (data == null) throw new Error('No data specified');
|
|
148
|
-
resolve(Promise.resolve(_this5.handlePatch(resource, query, data, options, getMeta(meta))));
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
}, {
|
|
152
|
-
key: "remove",
|
|
153
|
-
value: function remove(resource, query, options, meta) {
|
|
154
|
-
var _this6 = this;
|
|
155
|
-
return new Promise(function (resolve) {
|
|
156
|
-
if (resource == null) throw new Error('No resource name specified');
|
|
157
|
-
resolve(Promise.resolve(_this6.handleRemove(resource, query, options, getMeta(meta))));
|
|
158
|
-
});
|
|
159
|
-
}
|
|
160
|
-
}, {
|
|
161
|
-
key: "compareRequests",
|
|
162
|
-
value: function compareRequests(nextRequestDetails, prevRequestDetails) {
|
|
163
|
-
return (0, _fastDeepEqual["default"])(nextRequestDetails, prevRequestDetails);
|
|
164
|
-
}
|
|
165
|
-
}, {
|
|
166
|
-
key: "shouldPersist",
|
|
167
|
-
value: function shouldPersist(nextRequestDetails, prevRequestDetails, persistent) {
|
|
168
|
-
return persistent === 'very' || persistent && prevRequestDetails.name === nextRequestDetails.name;
|
|
169
|
-
}
|
|
170
|
-
}, {
|
|
171
|
-
key: "compareItemVersions",
|
|
172
|
-
value: function compareItemVersions() {
|
|
173
|
-
return true;
|
|
174
|
-
}
|
|
175
|
-
}, {
|
|
176
|
-
key: "getItemIdentifier",
|
|
177
|
-
value: function getItemIdentifier(item) {
|
|
178
|
-
return (0, _objectHash["default"])(item);
|
|
179
|
-
}
|
|
180
|
-
}, {
|
|
181
|
-
key: "transition",
|
|
182
|
-
value: function transition(nextContext) {
|
|
183
|
-
return nextContext.data;
|
|
184
|
-
}
|
|
185
|
-
}, {
|
|
186
|
-
key: "recycleItems",
|
|
187
|
-
value: function recycleItems(nextContext, prevContext) {
|
|
188
|
-
var _this7 = this;
|
|
189
|
-
var prevMapping = {};
|
|
190
|
-
if (nextContext.data.length > 0) {
|
|
191
|
-
prevContext.data.forEach(function (item) {
|
|
192
|
-
var id = _this7.getItemIdentifier(item);
|
|
193
|
-
if (id != null) prevMapping[id] = item;
|
|
194
|
-
});
|
|
195
|
-
}
|
|
196
|
-
var result;
|
|
197
|
-
if (prevContext.data.length > 0) {
|
|
198
|
-
result = nextContext.data.map(function (nextItem) {
|
|
199
|
-
var id = _this7.getItemIdentifier(nextItem);
|
|
200
|
-
if (id != null && Object.prototype.hasOwnProperty.call(prevMapping, id)) {
|
|
201
|
-
var prevItem = prevMapping[id];
|
|
202
|
-
if (_this7.compareItemVersions(nextItem, prevItem)) return prevItem;
|
|
203
|
-
}
|
|
204
|
-
return nextItem;
|
|
205
|
-
});
|
|
206
|
-
} else {
|
|
207
|
-
result = nextContext.data;
|
|
208
|
-
}
|
|
209
|
-
if (prevContext.data.length === result.length && result.reduce(function (sum, item, i) {
|
|
210
|
-
return sum && Object.is(prevContext.data[i], item);
|
|
211
|
-
}, true)) {
|
|
212
|
-
return prevContext.data;
|
|
213
|
-
}
|
|
214
|
-
return result;
|
|
215
|
-
}
|
|
216
|
-
}]);
|
|
217
|
-
}();
|
|
218
|
-
var isDataProvider = exports.isDataProvider = function isDataProvider(dataProvider) {
|
|
219
|
-
return dataProvider instanceof DataProvider;
|
|
220
|
-
};
|
|
221
|
-
var dataProviderPropType = exports.dataProviderPropType = _propTypes["default"].instanceOf(DataProvider);
|
|
222
|
-
var _default = exports["default"] = DataProvider;
|
package/lib/Meta.js
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports["default"] = void 0;
|
|
7
|
-
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); }
|
|
8
|
-
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; }
|
|
9
|
-
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; }
|
|
10
|
-
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
|
|
11
|
-
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
|
12
|
-
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
|
13
|
-
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
14
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
15
|
-
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); }
|
|
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;
|
|
57
|
-
}
|
|
58
|
-
return next;
|
|
59
|
-
});
|
|
60
|
-
this.data = base == null ? {} : base;
|
|
61
|
-
this.instance = instance;
|
|
62
|
-
});
|
|
63
|
-
var _default = exports["default"] = Meta;
|
package/lib/Notifier.js
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports["default"] = void 0;
|
|
7
|
-
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); }
|
|
8
|
-
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
|
|
9
|
-
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
|
10
|
-
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
|
11
|
-
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
12
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
13
|
-
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); }
|
|
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') {
|
|
20
|
-
throw new Error('Handler must be a function');
|
|
21
|
-
}
|
|
22
|
-
_this.listeners.add(handler);
|
|
23
|
-
return function () {
|
|
24
|
-
_this.listeners["delete"](handler);
|
|
25
|
-
};
|
|
26
|
-
});
|
|
27
|
-
_defineProperty(this, "isSubscribed", function (handler) {
|
|
28
|
-
return _this.listeners.has(handler);
|
|
29
|
-
});
|
|
30
|
-
_defineProperty(this, "trigger", function () {
|
|
31
|
-
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
32
|
-
args[_key] = arguments[_key];
|
|
33
|
-
}
|
|
34
|
-
_this.listeners.forEach(function (handler) {
|
|
35
|
-
return handler.apply(void 0, args);
|
|
36
|
-
});
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
var _default = exports["default"] = Notifier;
|