@webkrafters/react-observable-context 6.0.5 → 7.0.0-rc.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.
@@ -1,255 +0,0 @@
1
- "use strict";
2
-
3
- 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); }
4
- var _excluded = ["length"],
5
- _excluded2 = ["length"];
6
- function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
7
- function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
8
- function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
9
- function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
10
- 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."); }
11
- 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; } }
12
- function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
13
- 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; }
14
- 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; }
15
- 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; }
16
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
17
- 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); }
18
- function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
19
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
20
- function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
21
- function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
22
- function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
23
- function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
24
- var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
25
- return mod && mod.__esModule ? mod : {
26
- "default": mod
27
- };
28
- };
29
- Object.defineProperty(exports, "__esModule", {
30
- value: true
31
- });
32
- exports.deps = void 0;
33
- var react_1 = require("react");
34
- var lodash_isboolean_1 = __importDefault(require("lodash.isboolean"));
35
- var lodash_isempty_1 = __importDefault(require("lodash.isempty"));
36
- var data_distillery_1 = __importDefault(require("@webkrafters/data-distillery"));
37
- var path_dotize_1 = __importDefault(require("@webkrafters/path-dotize"));
38
- var auto_immutable_1 = __importDefault(require("@webkrafters/auto-immutable"));
39
- var constants_1 = require("../../../constants");
40
- var storage_1 = __importDefault(require("../../../model/storage"));
41
- var use_prehooks_ref_1 = __importDefault(require("../use-prehooks-ref"));
42
- var iCount = -1;
43
- var createStorageKey = function createStorageKey() {
44
- return "".concat(++iCount, ":").concat(Date.now(), ":").concat(Math.random());
45
- };
46
- exports.deps = {
47
- createStorageKey: createStorageKey
48
- };
49
- function runPrehook(prehooks, name, args) {
50
- if (!(name in prehooks)) {
51
- return true;
52
- }
53
- var res = prehooks[name].apply(prehooks, _toConsumableArray(args));
54
- if (!(0, lodash_isboolean_1["default"])(res)) {
55
- throw new TypeError("`".concat(name, "` prehook must return a boolean value."));
56
- }
57
- return res;
58
- }
59
- var consumer = {};
60
- function transformPayload(payload) {
61
- if ((0, lodash_isempty_1["default"])(payload) || !(constants_1.FULL_STATE_SELECTOR in payload)) {
62
- return payload;
63
- }
64
- payload = _objectSpread(_objectSpread({}, payload), {}, _defineProperty({}, constants_1.GLOBAL_SELECTOR, payload[constants_1.FULL_STATE_SELECTOR]));
65
- delete payload[constants_1.FULL_STATE_SELECTOR];
66
- return payload;
67
- }
68
- var useStore = function useStore(prehooks, value, storage) {
69
- var connKey = (0, react_1.useRef)();
70
- var mounted = (0, react_1.useRef)(false);
71
- var prehooksRef = (0, use_prehooks_ref_1["default"])(prehooks);
72
- var storageKey = (0, react_1.useRef)();
73
- var _ref = (0, react_1.useState)(function () {
74
- if (connKey.current === undefined) {
75
- var _cache = new auto_immutable_1["default"](value);
76
- var self = _cache.connect();
77
- connKey.current = self.instanceId;
78
- consumer[connKey.current] = {
79
- cache: _cache,
80
- self: self
81
- };
82
- }
83
- return [consumer[connKey.current].cache, consumer[connKey.current].self];
84
- }),
85
- _ref2 = _slicedToArray(_ref, 1),
86
- _ref2$ = _slicedToArray(_ref2[0], 2),
87
- cache = _ref2$[0],
88
- ownConnection = _ref2$[1];
89
- var _ref3 = (0, react_1.useState)(function () {
90
- return new Set();
91
- }),
92
- _ref4 = _slicedToArray(_ref3, 1),
93
- listeners = _ref4[0];
94
- var _ref5 = (0, react_1.useState)(function () {
95
- var isKeyRequired = true;
96
- var _storage = storage;
97
- if (!storage) {
98
- _storage = new storage_1["default"]();
99
- isKeyRequired = _storage.isKeyRequired;
100
- }
101
- storageKey.current = isKeyRequired ? exports.deps.createStorageKey() : null;
102
- return _storage;
103
- }),
104
- _ref6 = _slicedToArray(_ref5, 1),
105
- _storage = _ref6[0];
106
- var getChangHandler = (0, react_1.useCallback)(function (changes) {
107
- return function (netChanges, changedPathsTokens) {
108
- var mayHaveChangesAt = createChangePathSearch(changedPathsTokens);
109
- listeners.forEach(function (listener) {
110
- return listener(changes, changedPathsTokens, netChanges, mayHaveChangesAt);
111
- });
112
- };
113
- }, []);
114
- var resetState = (0, react_1.useCallback)(function (connection) {
115
- var propertyPaths = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
116
- var original = _storage.clone(_storage.getItem(storageKey.current));
117
- var resetData;
118
- if (!propertyPaths.length) {
119
- resetData = {};
120
- } else if (propertyPaths.includes(constants_1.FULL_STATE_SELECTOR)) {
121
- resetData = (0, lodash_isempty_1["default"])(original) ? constants_1.CLEAR_TAG : _defineProperty({}, constants_1.REPLACE_TAG, original);
122
- } else {
123
- var visitedPathMap = {};
124
- var transformer = function transformer(_ref8) {
125
- var trail = _ref8.trail,
126
- value = _ref8.value;
127
- visitedPathMap[trail.join('.')] = null;
128
- return _defineProperty({}, constants_1.REPLACE_TAG, value);
129
- };
130
- resetData = (0, data_distillery_1["default"])(original, propertyPaths, transformer);
131
- if (Object.keys(visitedPathMap).length < propertyPaths.length) {
132
- var _iterator = _createForOfIteratorHelper(propertyPaths),
133
- _step;
134
- try {
135
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
136
- var path = _step.value;
137
- path = (0, path_dotize_1["default"])(path);
138
- if (path in visitedPathMap) {
139
- continue;
140
- }
141
- var trail = path.split('.');
142
- var keyTuple = trail.slice(-1);
143
- trail = trail.slice(0, -1);
144
- var node = resetData;
145
- var _iterator2 = _createForOfIteratorHelper(trail),
146
- _step2;
147
- try {
148
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
149
- var t = _step2.value;
150
- if ((0, lodash_isempty_1["default"])(node[t])) {
151
- node[t] = {};
152
- }
153
- node = node[t];
154
- }
155
- } catch (err) {
156
- _iterator2.e(err);
157
- } finally {
158
- _iterator2.f();
159
- }
160
- if (constants_1.DELETE_TAG in node) {
161
- var _node$constants_1$DEL;
162
- (_node$constants_1$DEL = node[constants_1.DELETE_TAG]).push.apply(_node$constants_1$DEL, _toConsumableArray(keyTuple));
163
- } else {
164
- node[constants_1.DELETE_TAG] = keyTuple;
165
- }
166
- }
167
- } catch (err) {
168
- _iterator.e(err);
169
- } finally {
170
- _iterator.f();
171
- }
172
- }
173
- }
174
- runPrehook(prehooksRef.current, 'resetState', [resetData, {
175
- current: connection.get(constants_1.GLOBAL_SELECTOR)[constants_1.GLOBAL_SELECTOR],
176
- original: original
177
- }]) && connection.set(resetData, getChangHandler(resetData));
178
- }, []);
179
- var setState = (0, react_1.useCallback)(function (connection, changes) {
180
- if (!runPrehook(prehooksRef.current, 'setState', [changes])) {
181
- return;
182
- }
183
- if (!Array.isArray(changes)) {
184
- changes = transformPayload(changes);
185
- } else {
186
- changes = changes.slice();
187
- for (var c = changes.length; c--;) {
188
- changes[c] = transformPayload(changes[c]);
189
- }
190
- }
191
- connection.set(changes, getChangHandler(changes));
192
- }, []);
193
- var subscribe = (0, react_1.useCallback)(function (listener) {
194
- listeners.add(listener);
195
- return function () {
196
- return listeners["delete"](listener);
197
- };
198
- }, []);
199
- (0, react_1.useEffect)(function () {
200
- var sKey = storageKey.current;
201
- _storage.setItem(sKey, _storage.clone(value));
202
- return function () {
203
- _storage.removeItem(sKey);
204
- ownConnection.disconnect();
205
- delete consumer[connKey.current];
206
- connKey.current = undefined;
207
- cache.close();
208
- listeners.clear();
209
- };
210
- }, []);
211
- (0, react_1.useEffect)(function () {
212
- if (!mounted.current) {
213
- mounted.current = true;
214
- return;
215
- }
216
- setState(ownConnection, value);
217
- }, [value]);
218
- return (0, react_1.useState)(function () {
219
- return {
220
- cache: cache,
221
- resetState: resetState,
222
- setState: setState,
223
- subscribe: subscribe
224
- };
225
- })[0];
226
- };
227
- exports["default"] = useStore;
228
- function createChangePathSearch(_ref0) {
229
- var length = _ref0.length,
230
- pathTokenGroups = _objectWithoutProperties(_ref0, _excluded);
231
- var root = {};
232
- for (var g = 0; g < length; g++) {
233
- for (var obj = root, tokens = pathTokenGroups[g], tLen = tokens.length, t = 0; t < tLen; t++) {
234
- var key = tokens[t];
235
- if (!(key in obj)) {
236
- obj[key] = {};
237
- }
238
- obj = obj[key];
239
- }
240
- }
241
- return function (_ref1) {
242
- var length = _ref1.length,
243
- pathTokens = _objectWithoutProperties(_ref1, _excluded2);
244
- var obj = root;
245
- for (var p = 0; p < length; p++) {
246
- var _key = pathTokens[p];
247
- if (_key in obj) {
248
- obj = obj[_key];
249
- continue;
250
- }
251
- return !Object.keys(obj).length;
252
- }
253
- return true;
254
- };
255
- }
@@ -1,12 +0,0 @@
1
- import type { IStorage, State } from '../..';
2
- declare class Storage<T extends State> implements IStorage<T> {
3
- #private;
4
- static supportsSession: boolean;
5
- constructor();
6
- get isKeyRequired(): boolean;
7
- clone(data: any): T;
8
- getItem(key: string): T;
9
- removeItem(key: string): void;
10
- setItem(key: string, data: T): void;
11
- }
12
- export default Storage;
@@ -1,124 +0,0 @@
1
- "use strict";
2
-
3
- var _globalThis$sessionSt;
4
- 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); }
5
- function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
6
- 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); } }
7
- function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
8
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
9
- 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); }
10
- var __classPrivateFieldSet = void 0 && (void 0).__classPrivateFieldSet || function (receiver, state, value, kind, f) {
11
- if (kind === "m") throw new TypeError("Private method is not writable");
12
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
13
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
14
- return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value;
15
- };
16
- var __classPrivateFieldGet = void 0 && (void 0).__classPrivateFieldGet || function (receiver, state, kind, f) {
17
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
18
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
19
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
20
- };
21
- var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
22
- return mod && mod.__esModule ? mod : {
23
- "default": mod
24
- };
25
- };
26
- var _MemoryStorage_data, _SessionStorage_storage, _Storage_storage;
27
- Object.defineProperty(exports, "__esModule", {
28
- value: true
29
- });
30
- var clone_total_1 = __importDefault(require("@webkrafters/clone-total"));
31
- var MemoryStorage = /*#__PURE__*/function () {
32
- function MemoryStorage() {
33
- _classCallCheck(this, MemoryStorage);
34
- _MemoryStorage_data.set(this, void 0);
35
- __classPrivateFieldSet(this, _MemoryStorage_data, null, "f");
36
- }
37
- return _createClass(MemoryStorage, [{
38
- key: "clone",
39
- value: function clone(data) {
40
- return (0, clone_total_1["default"])(data);
41
- }
42
- }, {
43
- key: "getItem",
44
- value: function getItem(key) {
45
- return __classPrivateFieldGet(this, _MemoryStorage_data, "f");
46
- }
47
- }, {
48
- key: "removeItem",
49
- value: function removeItem(key) {
50
- __classPrivateFieldSet(this, _MemoryStorage_data, null, "f");
51
- }
52
- }, {
53
- key: "setItem",
54
- value: function setItem(key, data) {
55
- __classPrivateFieldSet(this, _MemoryStorage_data, data, "f");
56
- }
57
- }]);
58
- }();
59
- _MemoryStorage_data = new WeakMap();
60
- var SessionStorage = /*#__PURE__*/function () {
61
- function SessionStorage() {
62
- _classCallCheck(this, SessionStorage);
63
- _SessionStorage_storage.set(this, void 0);
64
- __classPrivateFieldSet(this, _SessionStorage_storage, globalThis.sessionStorage, "f");
65
- }
66
- return _createClass(SessionStorage, [{
67
- key: "clone",
68
- value: function clone(data) {
69
- return data;
70
- }
71
- }, {
72
- key: "getItem",
73
- value: function getItem(key) {
74
- return JSON.parse(__classPrivateFieldGet(this, _SessionStorage_storage, "f").getItem(key));
75
- }
76
- }, {
77
- key: "removeItem",
78
- value: function removeItem(key) {
79
- return __classPrivateFieldGet(this, _SessionStorage_storage, "f").removeItem(key);
80
- }
81
- }, {
82
- key: "setItem",
83
- value: function setItem(key, data) {
84
- return __classPrivateFieldGet(this, _SessionStorage_storage, "f").setItem(key, JSON.stringify(data));
85
- }
86
- }]);
87
- }();
88
- _SessionStorage_storage = new WeakMap();
89
- var Storage = /*#__PURE__*/function () {
90
- function Storage() {
91
- _classCallCheck(this, Storage);
92
- _Storage_storage.set(this, void 0);
93
- __classPrivateFieldSet(this, _Storage_storage, Storage.supportsSession ? new SessionStorage() : new MemoryStorage(), "f");
94
- }
95
- return _createClass(Storage, [{
96
- key: "isKeyRequired",
97
- get: function get() {
98
- return __classPrivateFieldGet(this, _Storage_storage, "f") instanceof SessionStorage;
99
- }
100
- }, {
101
- key: "clone",
102
- value: function clone(data) {
103
- return __classPrivateFieldGet(this, _Storage_storage, "f").clone(data);
104
- }
105
- }, {
106
- key: "getItem",
107
- value: function getItem(key) {
108
- return __classPrivateFieldGet(this, _Storage_storage, "f").getItem(key);
109
- }
110
- }, {
111
- key: "removeItem",
112
- value: function removeItem(key) {
113
- __classPrivateFieldGet(this, _Storage_storage, "f").removeItem(key);
114
- }
115
- }, {
116
- key: "setItem",
117
- value: function setItem(key, data) {
118
- __classPrivateFieldGet(this, _Storage_storage, "f").setItem(key, data);
119
- }
120
- }]);
121
- }();
122
- _Storage_storage = new WeakMap();
123
- Storage.supportsSession = typeof ((_globalThis$sessionSt = globalThis.sessionStorage) === null || _globalThis$sessionSt === void 0 ? void 0 : _globalThis$sessionSt.setItem) === 'undefined';
124
- exports["default"] = Storage;