@webkrafters/react-eagleeye 1.1.0-alpha.0 → 1.1.0-alpha.10
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/README.md +16 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +3 -3
- package/dist/main/index.js +3 -11
- package/dist/main/universe/index.d.ts +135 -0
- package/dist/main/{universal → universe}/index.js +300 -180
- package/package.json +2 -2
- package/dist/main/universal/index.d.ts +0 -153
package/README.md
CHANGED
|
@@ -44,8 +44,22 @@
|
|
|
44
44
|
|
|
45
45
|
**Usage:** Please see <b><a href="https://react-eagleeye.js.org/getting-started">Getting Started</a></b>.
|
|
46
46
|
|
|
47
|
-
**Demo
|
|
48
|
-
|
|
47
|
+
**Demo:**\
|
|
48
|
+
[1] [Play with the app on codesandbox](https://codesandbox.io/s/github/webKrafters/react-eagleeye-app)\
|
|
49
|
+
[2] [Play with the app on codesandbox (Universal Rendering)](https://codesandbox.io/s/github/webKrafters/react-eagleeye-universal-app)\
|
|
50
|
+
If sandbox fails to load app, please refresh dependencies on its lower left.\
|
|
51
|
+
**OR**\
|
|
52
|
+
Bring in and run the demo software locally through the following steps:\
|
|
53
|
+
**Step 1:** Run either\
|
|
54
|
+
`git clone https://github.com/webKrafters/react-eagleeye-app.git`\
|
|
55
|
+
or\
|
|
56
|
+
`git clone https://github.com/webKrafters/react-eagleeye-universal-app.git` (Universal Rendering)\
|
|
57
|
+
**Step 2:** CD into the cloned directory\
|
|
58
|
+
**Step 3:** Run `npm i`\
|
|
59
|
+
**Step 4:** Run `npm run dev`\
|
|
60
|
+
**Step 5:** Copy and paste the displayed URL into the web browser.\
|
|
61
|
+
**Step 6:** Use CTRL+F5 (Mac: CMD+F5) at the browser to ensure a fresh page load if needed.\
|
|
62
|
+
**Step 7:** Pay with the app.
|
|
49
63
|
|
|
50
64
|
**Install:**\
|
|
51
65
|
npm install --save @webkrafters/react-eagleeye
|
package/dist/index.d.ts
CHANGED
|
@@ -11,5 +11,5 @@ export interface IProps {
|
|
|
11
11
|
}
|
|
12
12
|
export type OwnProps = IProps & Record<any, any>;
|
|
13
13
|
export { createContext as createEagleEye, type AbstractObservable, type ObservableContext as EagleEyeContext } from './main';
|
|
14
|
-
export { createContext as
|
|
15
|
-
export type { Address as
|
|
14
|
+
export { createContext as createEagleEyeUniverse } from './main/universe';
|
|
15
|
+
export type { Address as AddressUniverse, BaseProviderPropsRaw as BaseProviderPropsRawUniverse, ObservableUniverse as EagleEyeUniverse, IProviderProps as IProviderPropsUniverse, Observable as ObservableUniverse, ProviderProps as ProviderPropsUniverse, ProviderPropsPrimitive as ProviderPropsPrimitiveUniverse, ProviderPropsRaw as ProviderPropsRawUniverse, RefProps as RefPropsUniverse, WithChildren as WithChildrenUniverse } from './main/universe';
|
package/dist/index.js
CHANGED
|
@@ -69,12 +69,12 @@ Object.defineProperty(exports, "createEagleEye", {
|
|
|
69
69
|
return _main.createContext;
|
|
70
70
|
}
|
|
71
71
|
});
|
|
72
|
-
Object.defineProperty(exports, "
|
|
72
|
+
Object.defineProperty(exports, "createEagleEyeUniverse", {
|
|
73
73
|
enumerable: true,
|
|
74
74
|
get: function get() {
|
|
75
|
-
return
|
|
75
|
+
return _universe.createContext;
|
|
76
76
|
}
|
|
77
77
|
});
|
|
78
78
|
var _eagleeye = require("@webkrafters/eagleeye");
|
|
79
79
|
var _main = require("./main");
|
|
80
|
-
var
|
|
80
|
+
var _universe = require("./main/universe");
|
package/dist/main/index.js
CHANGED
|
@@ -123,7 +123,6 @@ var ObservableContext = exports.ObservableContext = /*#__PURE__*/function (_Abst
|
|
|
123
123
|
get: function get() {
|
|
124
124
|
var stream = this.stream;
|
|
125
125
|
return function (selectorMap) {
|
|
126
|
-
var strictMode = (0, _react.useRef)(true);
|
|
127
126
|
var _useState = (0, _react.useState)(function () {
|
|
128
127
|
return stream(selectorMap);
|
|
129
128
|
}),
|
|
@@ -139,20 +138,13 @@ var ObservableContext = exports.ObservableContext = /*#__PURE__*/function (_Abst
|
|
|
139
138
|
channel.selectorMap = selectorMap;
|
|
140
139
|
}, [selectorMap]);
|
|
141
140
|
(0, _react.useEffect)(function () {
|
|
142
|
-
if (!strictMode.current) {
|
|
143
|
-
return;
|
|
144
|
-
}
|
|
145
141
|
channel.addListener('data-changed', function () {
|
|
146
|
-
return setStore(
|
|
147
|
-
data: channel.data
|
|
148
|
-
}));
|
|
142
|
+
return setStore(makeStore(channel));
|
|
149
143
|
});
|
|
150
|
-
strictMode.current = false;
|
|
151
144
|
return function () {
|
|
152
|
-
channel.endStream();
|
|
153
|
-
strictMode.current = true;
|
|
145
|
+
return channel.endStream();
|
|
154
146
|
};
|
|
155
|
-
}, []);
|
|
147
|
+
}, [channel]);
|
|
156
148
|
return store;
|
|
157
149
|
};
|
|
158
150
|
}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { FC, ComponentType, JSX, RefObject } from 'react';
|
|
2
|
+
import { AbstractObservable } from '..';
|
|
3
|
+
import { Channel, type ProviderProps as BaseProviderProps, SelectorMap, State, Store } from '../..';
|
|
4
|
+
export interface Address<ID extends string = string> {
|
|
5
|
+
targetId: ID;
|
|
6
|
+
}
|
|
7
|
+
export interface Point<T extends State = any, ID extends string = string> extends Address<ID> {
|
|
8
|
+
target: AbstractObservable<T>;
|
|
9
|
+
}
|
|
10
|
+
export type BaseProviderPropsRaw<T extends State> = {
|
|
11
|
+
value?: T;
|
|
12
|
+
} & Pick<BaseProviderProps<T>, "prehooks" | "storage">;
|
|
13
|
+
export interface IProviderProps<ID extends string = string> {
|
|
14
|
+
ref?: RefObject<Address<ID>>;
|
|
15
|
+
}
|
|
16
|
+
export interface RefProps<ID extends string = string> extends IProviderProps<ID> {
|
|
17
|
+
targetId: ID;
|
|
18
|
+
}
|
|
19
|
+
export interface ProviderProps<T extends State = any, ID extends string = string> extends IProviderProps<ID> {
|
|
20
|
+
observable?: AbstractObservable<T>;
|
|
21
|
+
}
|
|
22
|
+
export interface ProviderPropsRaw<T extends State = any, ID extends string = string> extends IProviderProps<ID> {
|
|
23
|
+
observableConfig?: BaseProviderProps<T>;
|
|
24
|
+
}
|
|
25
|
+
export interface ProviderPropsPrimitive<T extends State = any, ID extends string = string> extends IProviderProps<ID> {
|
|
26
|
+
observableConfig?: BaseProviderPropsRaw<T>;
|
|
27
|
+
}
|
|
28
|
+
type OwnPropsTemplate<P> = P extends IProviderProps<infer U> ? U : never;
|
|
29
|
+
type ObservableTemplate<T> = T extends AbstractObservable<infer U> ? U : never;
|
|
30
|
+
export type WithChildren<P extends IProviderProps<OwnPropsTemplate<P>>> = P & {
|
|
31
|
+
children?: React.ReactNode;
|
|
32
|
+
};
|
|
33
|
+
interface ChannelEntry {
|
|
34
|
+
channel: WeakRef<Channel>;
|
|
35
|
+
numConnections: number;
|
|
36
|
+
}
|
|
37
|
+
interface Entry {
|
|
38
|
+
channels: ChsResource<Channel>;
|
|
39
|
+
observable: WeakRef<AbstractObservable<any>>;
|
|
40
|
+
}
|
|
41
|
+
interface Handle<W extends WeakKey> {
|
|
42
|
+
readonly resource: W;
|
|
43
|
+
}
|
|
44
|
+
declare class ObserverHandle<W extends AbstractObservable<ObservableTemplate<W>>> implements Handle<W> {
|
|
45
|
+
private _wObs;
|
|
46
|
+
private _regNum;
|
|
47
|
+
constructor(obs: ObsResource<W>, regNum: string);
|
|
48
|
+
private get _obs();
|
|
49
|
+
private get _entry();
|
|
50
|
+
get resource(): W;
|
|
51
|
+
addChannelAt(sMapHash: string, channel: Channel): StreamerHandle<Channel<import("@webkrafters/auto-immutable").Value, SelectorMap>>;
|
|
52
|
+
getChannelHandleAt(sMapHash: string): StreamerHandle<Channel<import("@webkrafters/auto-immutable").Value, SelectorMap>>;
|
|
53
|
+
release(force?: boolean): void;
|
|
54
|
+
}
|
|
55
|
+
declare class StreamerHandle<W extends Channel> implements Handle<W> {
|
|
56
|
+
private _wChs;
|
|
57
|
+
private _sMapHash;
|
|
58
|
+
constructor(chs: ChsResource<W>, sMapHash: string);
|
|
59
|
+
private get _chs();
|
|
60
|
+
private get _entry();
|
|
61
|
+
get isValid(): boolean;
|
|
62
|
+
get resource(): W;
|
|
63
|
+
get size(): number;
|
|
64
|
+
dec(): void;
|
|
65
|
+
inc(): void;
|
|
66
|
+
}
|
|
67
|
+
interface IResource<W extends WeakKey> {
|
|
68
|
+
acquire(desc: string, resource: W): Handle<W>;
|
|
69
|
+
createHandleFor(desc: string): Handle<W>;
|
|
70
|
+
}
|
|
71
|
+
declare abstract class AbstractResource<W extends WeakKey> implements IResource<W> {
|
|
72
|
+
abstract registry: Record<string, any>;
|
|
73
|
+
get size(): number;
|
|
74
|
+
abstract acquire(desc: string, resource: W): Handle<W>;
|
|
75
|
+
abstract createHandleFor(desc: string): Handle<W>;
|
|
76
|
+
finalizer: FinalizationRegistry<string>;
|
|
77
|
+
finalize(key: string): void;
|
|
78
|
+
}
|
|
79
|
+
declare class ChsResource<W extends Channel> extends AbstractResource<W> {
|
|
80
|
+
registry: Record<string, ChannelEntry>;
|
|
81
|
+
acquire(sMapHash: string, resource: W): StreamerHandle<W>;
|
|
82
|
+
createHandleFor(sMapHash: string): StreamerHandle<W>;
|
|
83
|
+
}
|
|
84
|
+
declare class ObsResource<W extends AbstractObservable<ObservableTemplate<W>>> extends AbstractResource<W> {
|
|
85
|
+
registry: Record<string, Entry>;
|
|
86
|
+
acquire(regNum: string, resource: W): ObserverHandle<W>;
|
|
87
|
+
createHandleFor(regNum: string): ObserverHandle<W>;
|
|
88
|
+
getRegNumOf(resource: W): string;
|
|
89
|
+
removeResourceAt(regNum: string, force?: boolean): void;
|
|
90
|
+
getResourceAt(regNum: string): W;
|
|
91
|
+
}
|
|
92
|
+
export declare class Observable<T extends State> extends AbstractObservable<T> {
|
|
93
|
+
}
|
|
94
|
+
export declare class ObservableUniverse<T extends State> {
|
|
95
|
+
private _context;
|
|
96
|
+
private _pCache;
|
|
97
|
+
private _obs;
|
|
98
|
+
private _sCache;
|
|
99
|
+
private _util;
|
|
100
|
+
constructor();
|
|
101
|
+
get Provider(): {
|
|
102
|
+
<const ID extends string>(props?: WithChildren<ProviderProps<T, ID>>): JSX.Element;
|
|
103
|
+
<const ID extends string>(props?: WithChildren<ProviderPropsRaw<T, ID>>): JSX.Element;
|
|
104
|
+
<const ID extends string>(props?: WithChildren<ProviderPropsPrimitive<T, ID>>): JSX.Element;
|
|
105
|
+
<const ID extends string>(props?: WithChildren<RefProps<ID>>): JSX.Element;
|
|
106
|
+
};
|
|
107
|
+
get useStream(): <const S extends SelectorMap>(selectorMap?: S) => Store<T, S>;
|
|
108
|
+
free(observable: AbstractObservable<T>, force?: boolean): void;
|
|
109
|
+
free(observable: string, force?: boolean): void;
|
|
110
|
+
provide<const ID extends string>(props?: ProviderProps<T, ID>): Point<T, ID>;
|
|
111
|
+
provide<const ID extends string>(props?: ProviderPropsRaw<T, ID>): Point<T, ID>;
|
|
112
|
+
provide<const ID extends string>(props?: ProviderPropsPrimitive<T, ID>): Point<T, ID>;
|
|
113
|
+
secureResourceMapFor(requestor: Utility<T>): ObsResource<AbstractObservable<any>>;
|
|
114
|
+
stream<const S extends SelectorMap>(selectorMap?: S): {
|
|
115
|
+
into<P>(WrappedComponent: ComponentType<Store<T, S> & P>): FC<P>;
|
|
116
|
+
};
|
|
117
|
+
getIdOf(observable: AbstractObservable<T>): string;
|
|
118
|
+
getObservableAt<const ID extends string>(id: ID): AbstractObservable<T>;
|
|
119
|
+
private defineProvider;
|
|
120
|
+
private defineStreamHook;
|
|
121
|
+
}
|
|
122
|
+
export declare class Utility<T extends State> {
|
|
123
|
+
private _wContext;
|
|
124
|
+
constructor(context: ObservableUniverse<T>);
|
|
125
|
+
getIdOf(target: AbstractObservable<T>): string;
|
|
126
|
+
getObservableAt<const ID extends string>(targetId: ID): AbstractObservable<T>;
|
|
127
|
+
hashSelectorMap<S extends SelectorMap>(selectorMap?: S): string;
|
|
128
|
+
pointAt<const ID extends string>(target: AbstractObservable<T>): Point<T, ID>;
|
|
129
|
+
untrack(target: AbstractObservable<T>, force?: boolean): void;
|
|
130
|
+
untrackId<const ID extends string>(targetId: ID, force?: boolean): void;
|
|
131
|
+
private get _context();
|
|
132
|
+
private get _registry();
|
|
133
|
+
}
|
|
134
|
+
export declare function createContext<T extends State>(): ObservableUniverse<T>;
|
|
135
|
+
export {};
|
|
@@ -3,16 +3,25 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.Utility = exports.ObservableUniverse = exports.Observable = void 0;
|
|
7
7
|
exports.createContext = createContext;
|
|
8
8
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
9
9
|
var _react = require("react");
|
|
10
|
-
var
|
|
10
|
+
var _lodash = _interopRequireDefault(require("lodash.isplainobject"));
|
|
11
11
|
var _safeStableStringify = _interopRequireDefault(require("safe-stable-stringify"));
|
|
12
|
+
var _jsSha = require("js-sha512");
|
|
12
13
|
var _ = require("..");
|
|
13
|
-
var _2 = require("
|
|
14
|
+
var _2 = require("../..");
|
|
14
15
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
15
16
|
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); }
|
|
17
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
18
|
+
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."); }
|
|
19
|
+
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; } }
|
|
20
|
+
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; }
|
|
21
|
+
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; } }
|
|
22
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
23
|
+
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; }
|
|
24
|
+
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; }
|
|
16
25
|
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
17
26
|
function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); }
|
|
18
27
|
function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
|
|
@@ -20,170 +29,218 @@ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.
|
|
|
20
29
|
function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
|
|
21
30
|
function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
|
|
22
31
|
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
|
|
23
|
-
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; }
|
|
24
|
-
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; }
|
|
25
|
-
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
26
|
-
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."); }
|
|
27
|
-
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; } }
|
|
28
|
-
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; }
|
|
29
|
-
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; } }
|
|
30
|
-
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
31
32
|
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
|
32
33
|
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); } }
|
|
33
34
|
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
|
34
35
|
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; }
|
|
35
36
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
36
37
|
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); }
|
|
37
|
-
var
|
|
38
|
-
function
|
|
38
|
+
var ObserverHandle = /*#__PURE__*/function () {
|
|
39
|
+
function ObserverHandle(obs, regNum) {
|
|
40
|
+
_classCallCheck(this, ObserverHandle);
|
|
41
|
+
_defineProperty(this, "_wObs", void 0);
|
|
42
|
+
_defineProperty(this, "_regNum", void 0);
|
|
43
|
+
this._wObs = new WeakRef(obs);
|
|
44
|
+
this._regNum = regNum;
|
|
45
|
+
}
|
|
46
|
+
return _createClass(ObserverHandle, [{
|
|
47
|
+
key: "_obs",
|
|
48
|
+
get: function get() {
|
|
49
|
+
return this._wObs.deref();
|
|
50
|
+
}
|
|
51
|
+
}, {
|
|
52
|
+
key: "_entry",
|
|
53
|
+
get: function get() {
|
|
54
|
+
var _this$_obs$registry$t;
|
|
55
|
+
return (_this$_obs$registry$t = this._obs.registry[this._regNum]) !== null && _this$_obs$registry$t !== void 0 ? _this$_obs$registry$t : {};
|
|
56
|
+
}
|
|
57
|
+
}, {
|
|
58
|
+
key: "resource",
|
|
59
|
+
get: function get() {
|
|
60
|
+
var _this$_entry, _this$_entry$deref;
|
|
61
|
+
return (_this$_entry = this._entry) === null || _this$_entry === void 0 || (_this$_entry = _this$_entry.observable) === null || _this$_entry === void 0 || (_this$_entry$deref = _this$_entry.deref) === null || _this$_entry$deref === void 0 ? void 0 : _this$_entry$deref.call(_this$_entry);
|
|
62
|
+
}
|
|
63
|
+
}, {
|
|
64
|
+
key: "addChannelAt",
|
|
65
|
+
value: function addChannelAt(sMapHash, channel) {
|
|
66
|
+
var _this$_entry2;
|
|
67
|
+
return (_this$_entry2 = this._entry) === null || _this$_entry2 === void 0 ? void 0 : _this$_entry2.channels.acquire(sMapHash, channel);
|
|
68
|
+
}
|
|
69
|
+
}, {
|
|
70
|
+
key: "getChannelHandleAt",
|
|
71
|
+
value: function getChannelHandleAt(sMapHash) {
|
|
72
|
+
var _this$_entry3;
|
|
73
|
+
return (_this$_entry3 = this._entry) === null || _this$_entry3 === void 0 ? void 0 : _this$_entry3.channels.createHandleFor(sMapHash);
|
|
74
|
+
}
|
|
75
|
+
}, {
|
|
76
|
+
key: "release",
|
|
77
|
+
value: function release() {
|
|
78
|
+
var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
79
|
+
if (!force && this._entry.channels.size) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
this._obs.finalizer.unregister(this.resource);
|
|
83
|
+
this._entry.observable = null;
|
|
84
|
+
this._obs.finalize(this._regNum);
|
|
85
|
+
}
|
|
86
|
+
}]);
|
|
87
|
+
}();
|
|
88
|
+
var StreamerHandle = /*#__PURE__*/function () {
|
|
89
|
+
function StreamerHandle(chs, sMapHash) {
|
|
90
|
+
_classCallCheck(this, StreamerHandle);
|
|
91
|
+
_defineProperty(this, "_wChs", void 0);
|
|
92
|
+
_defineProperty(this, "_sMapHash", void 0);
|
|
93
|
+
this._wChs = new WeakRef(chs);
|
|
94
|
+
this._sMapHash = sMapHash;
|
|
95
|
+
}
|
|
96
|
+
return _createClass(StreamerHandle, [{
|
|
97
|
+
key: "_chs",
|
|
98
|
+
get: function get() {
|
|
99
|
+
return this._wChs.deref();
|
|
100
|
+
}
|
|
101
|
+
}, {
|
|
102
|
+
key: "_entry",
|
|
103
|
+
get: function get() {
|
|
104
|
+
var _this$_chs;
|
|
105
|
+
return (_this$_chs = this._chs) === null || _this$_chs === void 0 ? void 0 : _this$_chs.registry[this._sMapHash];
|
|
106
|
+
}
|
|
107
|
+
}, {
|
|
108
|
+
key: "isValid",
|
|
109
|
+
get: function get() {
|
|
110
|
+
return !!this._entry;
|
|
111
|
+
}
|
|
112
|
+
}, {
|
|
113
|
+
key: "resource",
|
|
114
|
+
get: function get() {
|
|
115
|
+
var _this$_entry4, _this$_entry4$deref;
|
|
116
|
+
return (_this$_entry4 = this._entry) === null || _this$_entry4 === void 0 || (_this$_entry4 = _this$_entry4.channel) === null || _this$_entry4 === void 0 || (_this$_entry4$deref = _this$_entry4.deref) === null || _this$_entry4$deref === void 0 ? void 0 : _this$_entry4$deref.call(_this$_entry4);
|
|
117
|
+
}
|
|
118
|
+
}, {
|
|
119
|
+
key: "size",
|
|
120
|
+
get: function get() {
|
|
121
|
+
return this.isValid ? this._entry.numConnections : -1;
|
|
122
|
+
}
|
|
123
|
+
}, {
|
|
124
|
+
key: "dec",
|
|
125
|
+
value: function dec() {
|
|
126
|
+
if (!this.isValid) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
this._entry.numConnections--;
|
|
130
|
+
if (this.size) {
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
this.resource.endStream();
|
|
134
|
+
this._chs.finalizer.unregister(this.resource);
|
|
135
|
+
this._entry.channel = null;
|
|
136
|
+
this._chs.finalize(this._sMapHash);
|
|
137
|
+
}
|
|
138
|
+
}, {
|
|
139
|
+
key: "inc",
|
|
140
|
+
value: function inc() {
|
|
141
|
+
this.isValid && this._entry.numConnections++;
|
|
142
|
+
}
|
|
143
|
+
}]);
|
|
144
|
+
}();
|
|
145
|
+
var AbstractResource = /*#__PURE__*/function () {
|
|
146
|
+
function AbstractResource() {
|
|
39
147
|
var _this = this;
|
|
40
|
-
_classCallCheck(this,
|
|
41
|
-
_defineProperty(this, "
|
|
148
|
+
_classCallCheck(this, AbstractResource);
|
|
149
|
+
_defineProperty(this, "finalizer", new FinalizationRegistry(function (s) {
|
|
42
150
|
return _this.finalize(s);
|
|
43
151
|
}));
|
|
44
|
-
_defineProperty(this, "_registry", void 0);
|
|
45
152
|
}
|
|
153
|
+
return _createClass(AbstractResource, [{
|
|
154
|
+
key: "size",
|
|
155
|
+
get: function get() {
|
|
156
|
+
return Object.keys(this.registry).length;
|
|
157
|
+
}
|
|
158
|
+
}, {
|
|
159
|
+
key: "finalize",
|
|
160
|
+
value: function finalize(key) {
|
|
161
|
+
delete this.registry[key];
|
|
162
|
+
}
|
|
163
|
+
}]);
|
|
164
|
+
}();
|
|
165
|
+
var ChsResource = /*#__PURE__*/function (_AbstractResource2) {
|
|
166
|
+
function ChsResource() {
|
|
167
|
+
var _this2;
|
|
168
|
+
_classCallCheck(this, ChsResource);
|
|
169
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
170
|
+
args[_key] = arguments[_key];
|
|
171
|
+
}
|
|
172
|
+
_this2 = _callSuper(this, ChsResource, [].concat(args));
|
|
173
|
+
_defineProperty(_this2, "registry", {});
|
|
174
|
+
return _this2;
|
|
175
|
+
}
|
|
176
|
+
_inherits(ChsResource, _AbstractResource2);
|
|
46
177
|
return _createClass(ChsResource, [{
|
|
47
178
|
key: "acquire",
|
|
48
179
|
value: function acquire(sMapHash, resource) {
|
|
49
|
-
|
|
50
|
-
var _useState = (0, _react.useState)(function () {
|
|
51
|
-
return (0, _.makeStore)(resource);
|
|
52
|
-
}),
|
|
53
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
54
|
-
store = _useState2[0],
|
|
55
|
-
setStore = _useState2[1];
|
|
56
|
-
(0, _react.useEffect)(function () {
|
|
57
|
-
var fn = function fn() {
|
|
58
|
-
return setStore(_objectSpread(_objectSpread({}, store), {}, {
|
|
59
|
-
data: resource.data
|
|
60
|
-
}));
|
|
61
|
-
};
|
|
62
|
-
resource.addListener('data-changed', fn);
|
|
63
|
-
return function () {
|
|
64
|
-
return resource.removeListener('data-changed', fn);
|
|
65
|
-
};
|
|
66
|
-
}, [resource]);
|
|
67
|
-
return store;
|
|
68
|
-
};
|
|
69
|
-
this._registry[sMapHash] = {
|
|
180
|
+
this.registry[sMapHash] = {
|
|
70
181
|
channel: new WeakRef(resource),
|
|
71
|
-
numConnections: 0
|
|
72
|
-
useStore: useStore
|
|
182
|
+
numConnections: 0
|
|
73
183
|
};
|
|
74
|
-
this.
|
|
184
|
+
this.finalizer.register(resource, sMapHash, resource);
|
|
75
185
|
return this.createHandleFor(sMapHash);
|
|
76
186
|
}
|
|
77
187
|
}, {
|
|
78
188
|
key: "createHandleFor",
|
|
79
189
|
value: function createHandleFor(sMapHash) {
|
|
80
|
-
|
|
81
|
-
var entry = this._registry[sMapHash];
|
|
82
|
-
var handle = {
|
|
83
|
-
get descriptor() {
|
|
84
|
-
return sMapHash;
|
|
85
|
-
},
|
|
86
|
-
get isValid() {
|
|
87
|
-
return !!entry;
|
|
88
|
-
},
|
|
89
|
-
get resource() {
|
|
90
|
-
var _entry$channel$deref, _entry$channel;
|
|
91
|
-
return entry === null || entry === void 0 || (_entry$channel$deref = (_entry$channel = entry.channel).deref) === null || _entry$channel$deref === void 0 ? void 0 : _entry$channel$deref.call(_entry$channel);
|
|
92
|
-
},
|
|
93
|
-
get size() {
|
|
94
|
-
return handle.isValid ? entry.numConnections : -1;
|
|
95
|
-
},
|
|
96
|
-
get useStore() {
|
|
97
|
-
return entry.useStore;
|
|
98
|
-
},
|
|
99
|
-
dec: function dec() {
|
|
100
|
-
if (!handle.isValid) {
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
entry.numConnections--;
|
|
104
|
-
if (handle.size) {
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
handle.resource.endStream();
|
|
108
|
-
_this2._finalizer.unregister(handle.resource);
|
|
109
|
-
entry.channel = null;
|
|
110
|
-
_this2.finalize(sMapHash);
|
|
111
|
-
},
|
|
112
|
-
inc: function inc() {
|
|
113
|
-
handle.isValid && entry.numConnections++;
|
|
114
|
-
}
|
|
115
|
-
};
|
|
116
|
-
return handle;
|
|
117
|
-
}
|
|
118
|
-
}, {
|
|
119
|
-
key: "getResourceAt",
|
|
120
|
-
value: function getResourceAt(sMapHash) {
|
|
121
|
-
return this.createHandleFor(sMapHash).resource;
|
|
122
|
-
}
|
|
123
|
-
}, {
|
|
124
|
-
key: "finalize",
|
|
125
|
-
value: function finalize(sMapHash) {
|
|
126
|
-
delete this._registry[sMapHash];
|
|
190
|
+
return new StreamerHandle(this, sMapHash);
|
|
127
191
|
}
|
|
128
192
|
}]);
|
|
129
|
-
}();
|
|
130
|
-
var ObsResource = /*#__PURE__*/function () {
|
|
193
|
+
}(AbstractResource);
|
|
194
|
+
var ObsResource = /*#__PURE__*/function (_AbstractResource3) {
|
|
131
195
|
function ObsResource() {
|
|
132
|
-
var _this3
|
|
196
|
+
var _this3;
|
|
133
197
|
_classCallCheck(this, ObsResource);
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
}
|
|
137
|
-
|
|
198
|
+
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
199
|
+
args[_key2] = arguments[_key2];
|
|
200
|
+
}
|
|
201
|
+
_this3 = _callSuper(this, ObsResource, [].concat(args));
|
|
202
|
+
_defineProperty(_this3, "registry", {});
|
|
203
|
+
return _this3;
|
|
138
204
|
}
|
|
205
|
+
_inherits(ObsResource, _AbstractResource3);
|
|
139
206
|
return _createClass(ObsResource, [{
|
|
140
207
|
key: "acquire",
|
|
141
208
|
value: function acquire(regNum, resource) {
|
|
142
|
-
this.
|
|
209
|
+
this.registry[regNum] = {
|
|
143
210
|
channels: new ChsResource(),
|
|
144
211
|
observable: new WeakRef(resource)
|
|
145
212
|
};
|
|
146
|
-
this.
|
|
213
|
+
this.finalizer.register(resource, regNum, resource);
|
|
147
214
|
return this.createHandleFor(regNum);
|
|
148
215
|
}
|
|
149
216
|
}, {
|
|
150
217
|
key: "createHandleFor",
|
|
151
218
|
value: function createHandleFor(regNum) {
|
|
152
|
-
|
|
153
|
-
var entry = (_this$_registry$regNu = this._registry[regNum]) !== null && _this$_registry$regNu !== void 0 ? _this$_registry$regNu : {};
|
|
154
|
-
return {
|
|
155
|
-
get descriptor() {
|
|
156
|
-
return regNum;
|
|
157
|
-
},
|
|
158
|
-
get resource() {
|
|
159
|
-
var _entry$observable$der, _entry$observable;
|
|
160
|
-
return entry === null || entry === void 0 || (_entry$observable$der = (_entry$observable = entry.observable).deref) === null || _entry$observable$der === void 0 ? void 0 : _entry$observable$der.call(_entry$observable);
|
|
161
|
-
},
|
|
162
|
-
addChannelAt: function addChannelAt(sMapHash, channel) {
|
|
163
|
-
return entry === null || entry === void 0 ? void 0 : entry.channels.acquire(sMapHash, channel);
|
|
164
|
-
},
|
|
165
|
-
getChannelHandleAt: function getChannelHandleAt(sMapHash) {
|
|
166
|
-
return entry === null || entry === void 0 ? void 0 : entry.channels.createHandleFor(sMapHash);
|
|
167
|
-
}
|
|
168
|
-
};
|
|
219
|
+
return new ObserverHandle(this, regNum);
|
|
169
220
|
}
|
|
170
221
|
}, {
|
|
171
222
|
key: "getRegNumOf",
|
|
172
223
|
value: function getRegNumOf(resource) {
|
|
173
|
-
for (var regNum in this.
|
|
224
|
+
for (var regNum in this.registry) {
|
|
174
225
|
if (this.getResourceAt(regNum) === resource) {
|
|
175
226
|
return regNum;
|
|
176
227
|
}
|
|
177
228
|
}
|
|
178
229
|
}
|
|
230
|
+
}, {
|
|
231
|
+
key: "removeResourceAt",
|
|
232
|
+
value: function removeResourceAt(regNum, force) {
|
|
233
|
+
var _this$createHandleFor;
|
|
234
|
+
(_this$createHandleFor = this.createHandleFor(regNum)) === null || _this$createHandleFor === void 0 || _this$createHandleFor.release(force);
|
|
235
|
+
}
|
|
179
236
|
}, {
|
|
180
237
|
key: "getResourceAt",
|
|
181
238
|
value: function getResourceAt(regNum) {
|
|
182
|
-
var _this$
|
|
183
|
-
return (_this$
|
|
239
|
+
var _this$createHandleFor2;
|
|
240
|
+
return (_this$createHandleFor2 = this.createHandleFor(regNum)) === null || _this$createHandleFor2 === void 0 ? void 0 : _this$createHandleFor2.resource;
|
|
184
241
|
}
|
|
185
242
|
}]);
|
|
186
|
-
}();
|
|
243
|
+
}(AbstractResource);
|
|
187
244
|
var genRegNum = function () {
|
|
188
245
|
var count = 0;
|
|
189
246
|
var ts = 0;
|
|
@@ -206,24 +263,21 @@ var Observable = exports.Observable = /*#__PURE__*/function (_AbstractObservable
|
|
|
206
263
|
_inherits(Observable, _AbstractObservable);
|
|
207
264
|
return _createClass(Observable);
|
|
208
265
|
}(_.AbstractObservable);
|
|
209
|
-
var
|
|
210
|
-
function
|
|
211
|
-
_classCallCheck(this,
|
|
266
|
+
var ObservableUniverse = exports.ObservableUniverse = /*#__PURE__*/function () {
|
|
267
|
+
function ObservableUniverse() {
|
|
268
|
+
_classCallCheck(this, ObservableUniverse);
|
|
212
269
|
_defineProperty(this, "_context", void 0);
|
|
213
270
|
_defineProperty(this, "_pCache", null);
|
|
214
271
|
_defineProperty(this, "_obs", null);
|
|
272
|
+
_defineProperty(this, "_sCache", null);
|
|
215
273
|
_defineProperty(this, "_util", null);
|
|
216
274
|
this._context = /*#__PURE__*/(0, _react.createContext)('0:0');
|
|
217
275
|
this._pCache = this.defineProvider();
|
|
218
276
|
this._obs = new ObsResource();
|
|
277
|
+
this._sCache = this.defineStreamHook();
|
|
219
278
|
this._util = new Utility(this);
|
|
220
279
|
}
|
|
221
|
-
return _createClass(
|
|
222
|
-
key: "resourceMap",
|
|
223
|
-
get: function get() {
|
|
224
|
-
return this._obs;
|
|
225
|
-
}
|
|
226
|
-
}, {
|
|
280
|
+
return _createClass(ObservableUniverse, [{
|
|
227
281
|
key: "Provider",
|
|
228
282
|
get: function get() {
|
|
229
283
|
return this._pCache;
|
|
@@ -231,7 +285,12 @@ var EagleEyeUniversal = exports.EagleEyeUniversal = /*#__PURE__*/function () {
|
|
|
231
285
|
}, {
|
|
232
286
|
key: "useStream",
|
|
233
287
|
get: function get() {
|
|
234
|
-
return this.
|
|
288
|
+
return this._sCache;
|
|
289
|
+
}
|
|
290
|
+
}, {
|
|
291
|
+
key: "free",
|
|
292
|
+
value: function free(observable, force) {
|
|
293
|
+
!(observable instanceof _.AbstractObservable) ? this._util.untrackId(observable, force) : this._util.untrack(observable, force);
|
|
235
294
|
}
|
|
236
295
|
}, {
|
|
237
296
|
key: "provide",
|
|
@@ -244,6 +303,14 @@ var EagleEyeUniversal = exports.EagleEyeUniversal = /*#__PURE__*/function () {
|
|
|
244
303
|
}
|
|
245
304
|
return this._util.pointAt(observable);
|
|
246
305
|
}
|
|
306
|
+
}, {
|
|
307
|
+
key: "secureResourceMapFor",
|
|
308
|
+
value: function secureResourceMapFor(requestor) {
|
|
309
|
+
if (requestor === this._util) {
|
|
310
|
+
return this._obs;
|
|
311
|
+
}
|
|
312
|
+
throw new Error('Illegal operation.');
|
|
313
|
+
}
|
|
247
314
|
}, {
|
|
248
315
|
key: "stream",
|
|
249
316
|
value: function stream(selectorMap) {
|
|
@@ -273,42 +340,74 @@ var EagleEyeUniversal = exports.EagleEyeUniversal = /*#__PURE__*/function () {
|
|
|
273
340
|
value: function defineProvider() {
|
|
274
341
|
var me = this;
|
|
275
342
|
function provide() {
|
|
276
|
-
var _props$ref;
|
|
343
|
+
var _props$observableConf, _props$observableConf2, _props$observableConf3, _props$ref$current;
|
|
277
344
|
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
278
|
-
var
|
|
279
|
-
|
|
280
|
-
targetId
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
345
|
+
var id = (0, _react.useRef)(null);
|
|
346
|
+
(0, _react.useMemo)(function () {
|
|
347
|
+
if ('targetId' in props) {
|
|
348
|
+
if (!me.getObservableAt(props.targetId)) {
|
|
349
|
+
throw new Error("No valid observable instance found at target ID, ".concat(props.targetId));
|
|
350
|
+
}
|
|
351
|
+
id.current = props.targetId;
|
|
352
|
+
return;
|
|
353
|
+
}
|
|
354
|
+
if (!id.current || 'observable' in props) {
|
|
355
|
+
id.current = me.provide(props).targetId;
|
|
356
|
+
return;
|
|
357
|
+
}
|
|
358
|
+
var ctx = me.getObservableAt(id.current);
|
|
359
|
+
if (!('observableConfig' in props)) {
|
|
360
|
+
return;
|
|
361
|
+
}
|
|
362
|
+
var config = props.observableConfig;
|
|
363
|
+
if ('storage' in config && config.storage !== ctx.storage) {
|
|
364
|
+
ctx.storage = config.storage;
|
|
365
|
+
}
|
|
366
|
+
if ('prehooks' in config && config.prehooks !== ctx.prehooks) {
|
|
367
|
+
ctx.prehooks = config.prehooks;
|
|
368
|
+
}
|
|
369
|
+
if (!('value' in config)) {
|
|
370
|
+
return;
|
|
285
371
|
}
|
|
372
|
+
if ((0, _lodash["default"])(config.value)) {
|
|
373
|
+
return ctx.store.setState(config.value);
|
|
374
|
+
}
|
|
375
|
+
var connection = config.value.connect();
|
|
376
|
+
var value = connection.get('@@GLOBAL')['@@GLOBAL'];
|
|
377
|
+
connection.disconnect();
|
|
378
|
+
ctx.store.setState(value);
|
|
379
|
+
}, [(_props$observableConf = props.observableConfig) === null || _props$observableConf === void 0 ? void 0 : _props$observableConf.value, props.targetId, props.observable, (_props$observableConf2 = props.observableConfig) === null || _props$observableConf2 === void 0 ? void 0 : _props$observableConf2.prehooks, (_props$observableConf3 = props.observableConfig) === null || _props$observableConf3 === void 0 ? void 0 : _props$observableConf3.storage]);
|
|
380
|
+
if ('ref' in props && ((_props$ref$current = props.ref.current) === null || _props$ref$current === void 0 ? void 0 : _props$ref$current.targetId) !== id.current) {
|
|
381
|
+
if (!props.ref.current) {
|
|
382
|
+
props.ref.current = {};
|
|
383
|
+
}
|
|
384
|
+
;
|
|
385
|
+
props.ref.current.targetId = id.current;
|
|
286
386
|
}
|
|
287
|
-
(_props$ref = props.ref) !== null && _props$ref !== void 0 ? _props$ref : props.ref = {
|
|
288
|
-
current: {}
|
|
289
|
-
};
|
|
290
|
-
props.ref.current.targetId = targetId;
|
|
291
387
|
var Context = me._context;
|
|
292
388
|
return (0, _jsxRuntime.jsx)(Context, {
|
|
293
|
-
value:
|
|
389
|
+
value: id.current,
|
|
294
390
|
children: props.children
|
|
295
391
|
});
|
|
296
392
|
}
|
|
297
393
|
return provide;
|
|
298
394
|
}
|
|
299
395
|
}, {
|
|
300
|
-
key: "
|
|
301
|
-
value: function
|
|
396
|
+
key: "defineStreamHook",
|
|
397
|
+
value: function defineStreamHook() {
|
|
302
398
|
var _this4 = this;
|
|
303
399
|
return function (selectorMap) {
|
|
304
|
-
var
|
|
400
|
+
var _useState = (0, _react.useState)(function () {
|
|
305
401
|
return _this4._util.hashSelectorMap(selectorMap);
|
|
306
402
|
}),
|
|
307
|
-
|
|
308
|
-
sMapHash =
|
|
309
|
-
updateSMapHash =
|
|
403
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
404
|
+
sMapHash = _useState2[0],
|
|
405
|
+
updateSMapHash = _useState2[1];
|
|
406
|
+
(0, _react.useEffect)(function () {
|
|
407
|
+
return updateSMapHash(_this4._util.hashSelectorMap(selectorMap));
|
|
408
|
+
}, [selectorMap]);
|
|
310
409
|
var targetId = (0, _react.use)(_this4._context);
|
|
311
|
-
var
|
|
410
|
+
var handle = (0, _react.useMemo)(function () {
|
|
312
411
|
var ctxHandle = _this4._obs.createHandleFor(targetId);
|
|
313
412
|
var streamHandle = ctxHandle.getChannelHandleAt(sMapHash);
|
|
314
413
|
if (!streamHandle.isValid) {
|
|
@@ -316,69 +415,90 @@ var EagleEyeUniversal = exports.EagleEyeUniversal = /*#__PURE__*/function () {
|
|
|
316
415
|
streamHandle = ctxHandle.getChannelHandleAt(sMapHash);
|
|
317
416
|
}
|
|
318
417
|
streamHandle.inc();
|
|
319
|
-
return streamHandle
|
|
320
|
-
}, [sMapHash,
|
|
321
|
-
var
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
}, [selectorMap]);
|
|
418
|
+
return streamHandle;
|
|
419
|
+
}, [sMapHash, targetId]);
|
|
420
|
+
var _useState3 = (0, _react.useState)(function () {
|
|
421
|
+
return (0, _.makeStore)(handle.resource);
|
|
422
|
+
}),
|
|
423
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
424
|
+
store = _useState4[0],
|
|
425
|
+
setStore = _useState4[1];
|
|
328
426
|
(0, _react.useEffect)(function () {
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
427
|
+
var fn = function fn() {
|
|
428
|
+
return setStore((0, _.makeStore)(handle.resource));
|
|
429
|
+
};
|
|
430
|
+
handle.resource.addListener('data-changed', fn);
|
|
431
|
+
return function () {
|
|
432
|
+
handle.resource.removeListener('data-changed', fn);
|
|
433
|
+
handle.dec();
|
|
434
|
+
};
|
|
435
|
+
}, [handle.resource]);
|
|
436
|
+
return store;
|
|
332
437
|
};
|
|
333
438
|
}
|
|
334
439
|
}]);
|
|
335
440
|
}();
|
|
336
|
-
var Utility = /*#__PURE__*/function () {
|
|
441
|
+
var Utility = exports.Utility = /*#__PURE__*/function () {
|
|
337
442
|
function Utility(context) {
|
|
338
443
|
_classCallCheck(this, Utility);
|
|
339
|
-
_defineProperty(this, "
|
|
340
|
-
this.
|
|
444
|
+
_defineProperty(this, "_wContext", void 0);
|
|
445
|
+
this._wContext = new WeakRef(context);
|
|
341
446
|
}
|
|
342
447
|
return _createClass(Utility, [{
|
|
343
448
|
key: "getIdOf",
|
|
344
449
|
value: function getIdOf(target) {
|
|
345
|
-
return this.
|
|
450
|
+
return this._registry.getRegNumOf(target);
|
|
346
451
|
}
|
|
347
452
|
}, {
|
|
348
453
|
key: "getObservableAt",
|
|
349
454
|
value: function getObservableAt(targetId) {
|
|
350
|
-
return this.
|
|
455
|
+
return this._registry.getResourceAt(targetId);
|
|
351
456
|
}
|
|
352
457
|
}, {
|
|
353
458
|
key: "hashSelectorMap",
|
|
354
459
|
value: function hashSelectorMap(selectorMap) {
|
|
355
|
-
return (0, _jsSha.sha512)((0, _safeStableStringify["default"])(selectorMap
|
|
356
|
-
typeof v === 'undefined' ? 'undefined' : v === null ? 'null' : v;
|
|
357
|
-
}));
|
|
460
|
+
return (0, _jsSha.sha512)(typeof selectorMap === 'undefined' ? 'undefined' : selectorMap === null ? 'null' : (0, _safeStableStringify["default"])(selectorMap));
|
|
358
461
|
}
|
|
359
462
|
}, {
|
|
360
463
|
key: "pointAt",
|
|
361
464
|
value: function pointAt(target) {
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
target: target,
|
|
369
|
-
targetId: _targetId
|
|
370
|
-
};
|
|
371
|
-
}
|
|
465
|
+
var targetId = this.getIdOf(target);
|
|
466
|
+
if (targetId) {
|
|
467
|
+
return {
|
|
468
|
+
target: target,
|
|
469
|
+
targetId: targetId
|
|
470
|
+
};
|
|
372
471
|
}
|
|
373
|
-
|
|
374
|
-
this.
|
|
472
|
+
targetId = genRegNum();
|
|
473
|
+
this._registry.acquire(targetId, target);
|
|
375
474
|
return {
|
|
376
475
|
target: target,
|
|
377
476
|
targetId: targetId
|
|
378
477
|
};
|
|
379
478
|
}
|
|
479
|
+
}, {
|
|
480
|
+
key: "untrack",
|
|
481
|
+
value: function untrack(target, force) {
|
|
482
|
+
this.untrackId(this.getIdOf(target), force);
|
|
483
|
+
}
|
|
484
|
+
}, {
|
|
485
|
+
key: "untrackId",
|
|
486
|
+
value: function untrackId(targetId, force) {
|
|
487
|
+
var _this$_registry;
|
|
488
|
+
(_this$_registry = this._registry) === null || _this$_registry === void 0 || _this$_registry.removeResourceAt(targetId, force);
|
|
489
|
+
}
|
|
490
|
+
}, {
|
|
491
|
+
key: "_context",
|
|
492
|
+
get: function get() {
|
|
493
|
+
return this._wContext.deref();
|
|
494
|
+
}
|
|
495
|
+
}, {
|
|
496
|
+
key: "_registry",
|
|
497
|
+
get: function get() {
|
|
498
|
+
return this._context.secureResourceMapFor(this);
|
|
499
|
+
}
|
|
380
500
|
}]);
|
|
381
501
|
}();
|
|
382
502
|
function createContext() {
|
|
383
|
-
return new
|
|
503
|
+
return new ObservableUniverse();
|
|
384
504
|
}
|
package/package.json
CHANGED
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
"@types/node": "^20.11.28",
|
|
29
29
|
"@types/react": "^19.2.9",
|
|
30
30
|
"@types/react-dom": "^19.2.3",
|
|
31
|
+
"@webkrafters/auto-immutable": "^2.0.5",
|
|
31
32
|
"@webkrafters/clone-total": "^1.0.1",
|
|
32
33
|
"@webkrafters/get-property": "^2.0.0",
|
|
33
34
|
"@webkrafters/path-dotize": "0.0.2",
|
|
@@ -56,7 +57,6 @@
|
|
|
56
57
|
"npm": "^4.0.6",
|
|
57
58
|
"react": "^19.2.3",
|
|
58
59
|
"react-dom": "^19.2.3",
|
|
59
|
-
"react-performance-testing": "^2.0.0",
|
|
60
60
|
"setimmediate": "^1.0.5",
|
|
61
61
|
"ts-jest": "^29.1.2",
|
|
62
62
|
"ts-node": "^10.9.2",
|
|
@@ -126,7 +126,7 @@
|
|
|
126
126
|
"test:watch": "eslint --fix && jest --updateSnapshot --watchAll"
|
|
127
127
|
},
|
|
128
128
|
"types": "dist/index.d.ts",
|
|
129
|
-
"version": "1.1.0-alpha.
|
|
129
|
+
"version": "1.1.0-alpha.10",
|
|
130
130
|
"dependencies": {
|
|
131
131
|
"@webkrafters/eagleeye": "^1.0.8",
|
|
132
132
|
"js-sha512": "^0.9.0",
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
import { FC, RefObject, ComponentType, JSX } from 'react';
|
|
2
|
-
import { AbstractObservable } from '..';
|
|
3
|
-
import { Channel, type ProviderProps as BaseProviderProps, SelectorMap, State, Store } from '../../';
|
|
4
|
-
export interface Address<ID extends string = string> {
|
|
5
|
-
targetId: ID;
|
|
6
|
-
}
|
|
7
|
-
export interface Point<T extends State = any, ID extends string = string> extends Address<ID> {
|
|
8
|
-
target: AbstractObservable<T>;
|
|
9
|
-
}
|
|
10
|
-
export type BaseProviderPropsRaw<T extends State> = {
|
|
11
|
-
value?: T;
|
|
12
|
-
} & Pick<BaseProviderProps<T>, "prehooks" | "storage">;
|
|
13
|
-
export interface IProviderProps<ID extends string = string> {
|
|
14
|
-
ref?: RefObject<Address<ID>>;
|
|
15
|
-
}
|
|
16
|
-
export interface RefProps<ID extends string = string> extends IProviderProps<ID> {
|
|
17
|
-
targetId: ID;
|
|
18
|
-
}
|
|
19
|
-
export interface ProviderProps<T extends State = any, ID extends string = string> extends IProviderProps<ID> {
|
|
20
|
-
observable?: AbstractObservable<T>;
|
|
21
|
-
}
|
|
22
|
-
export interface ProviderPropsRaw<T extends State = any, ID extends string = string> extends IProviderProps<ID> {
|
|
23
|
-
observableConfig?: BaseProviderProps<T>;
|
|
24
|
-
}
|
|
25
|
-
export interface ProviderPropsPrimitive<T extends State = any, ID extends string = string> extends IProviderProps<ID> {
|
|
26
|
-
observableConfig?: BaseProviderPropsRaw<T>;
|
|
27
|
-
}
|
|
28
|
-
type TemplateType<P> = P extends IProviderProps<infer U> ? U : never;
|
|
29
|
-
type TemplateType2<T> = T extends AbstractObservable<infer U> ? U : never;
|
|
30
|
-
export type WithChildren<P extends IProviderProps<TemplateType<P>>> = P & {
|
|
31
|
-
children?: React.ReactNode;
|
|
32
|
-
};
|
|
33
|
-
export interface ChannelEntry {
|
|
34
|
-
channel: WeakRef<Channel>;
|
|
35
|
-
numConnections: number;
|
|
36
|
-
useStore: () => Store;
|
|
37
|
-
}
|
|
38
|
-
export interface Entry {
|
|
39
|
-
channels: ChsResource<Channel>;
|
|
40
|
-
observable: WeakRef<AbstractObservable<any>>;
|
|
41
|
-
}
|
|
42
|
-
export interface Handle<W extends WeakKey> {
|
|
43
|
-
readonly descriptor: string;
|
|
44
|
-
readonly resource: W;
|
|
45
|
-
}
|
|
46
|
-
interface IResource<W extends WeakKey> {
|
|
47
|
-
acquire(desc: string, resource: W): Handle<W>;
|
|
48
|
-
createHandleFor(desc: string): Handle<W>;
|
|
49
|
-
getResourceAt(desc: string): W;
|
|
50
|
-
}
|
|
51
|
-
declare class ChsResource<W extends Channel> implements IResource<W> {
|
|
52
|
-
private _finalizer;
|
|
53
|
-
private _registry;
|
|
54
|
-
acquire(sMapHash: string, resource: W): {
|
|
55
|
-
readonly descriptor: string;
|
|
56
|
-
readonly isValid: boolean;
|
|
57
|
-
readonly resource: W;
|
|
58
|
-
readonly size: number;
|
|
59
|
-
readonly useStore: () => Store;
|
|
60
|
-
dec: () => void;
|
|
61
|
-
inc(): void;
|
|
62
|
-
};
|
|
63
|
-
createHandleFor(sMapHash: string): {
|
|
64
|
-
readonly descriptor: string;
|
|
65
|
-
readonly isValid: boolean;
|
|
66
|
-
readonly resource: W;
|
|
67
|
-
readonly size: number;
|
|
68
|
-
readonly useStore: () => Store;
|
|
69
|
-
dec: () => void;
|
|
70
|
-
inc(): void;
|
|
71
|
-
};
|
|
72
|
-
getResourceAt(sMapHash: string): W;
|
|
73
|
-
private finalize;
|
|
74
|
-
}
|
|
75
|
-
declare class ObsResource<W extends AbstractObservable<TemplateType2<W>>> implements IResource<W> {
|
|
76
|
-
private _finalizer;
|
|
77
|
-
private _registry;
|
|
78
|
-
acquire(regNum: string, resource: W): {
|
|
79
|
-
readonly descriptor: string;
|
|
80
|
-
readonly resource: W;
|
|
81
|
-
addChannelAt(sMapHash: string, channel: Channel): {
|
|
82
|
-
readonly descriptor: string;
|
|
83
|
-
readonly isValid: boolean;
|
|
84
|
-
readonly resource: W_1;
|
|
85
|
-
readonly size: number;
|
|
86
|
-
readonly useStore: () => Store;
|
|
87
|
-
dec: () => void;
|
|
88
|
-
inc(): void;
|
|
89
|
-
};
|
|
90
|
-
getChannelHandleAt(sMapHash: string): {
|
|
91
|
-
readonly descriptor: string;
|
|
92
|
-
readonly isValid: boolean;
|
|
93
|
-
readonly resource: W_1;
|
|
94
|
-
readonly size: number;
|
|
95
|
-
readonly useStore: () => Store;
|
|
96
|
-
dec: () => void;
|
|
97
|
-
inc(): void;
|
|
98
|
-
};
|
|
99
|
-
};
|
|
100
|
-
createHandleFor(regNum: string): {
|
|
101
|
-
readonly descriptor: string;
|
|
102
|
-
readonly resource: W;
|
|
103
|
-
addChannelAt(sMapHash: string, channel: Channel): {
|
|
104
|
-
readonly descriptor: string;
|
|
105
|
-
readonly isValid: boolean;
|
|
106
|
-
readonly resource: W_1;
|
|
107
|
-
readonly size: number;
|
|
108
|
-
readonly useStore: () => Store;
|
|
109
|
-
dec: () => void;
|
|
110
|
-
inc(): void;
|
|
111
|
-
};
|
|
112
|
-
getChannelHandleAt(sMapHash: string): {
|
|
113
|
-
readonly descriptor: string;
|
|
114
|
-
readonly isValid: boolean;
|
|
115
|
-
readonly resource: W_1;
|
|
116
|
-
readonly size: number;
|
|
117
|
-
readonly useStore: () => Store;
|
|
118
|
-
dec: () => void;
|
|
119
|
-
inc(): void;
|
|
120
|
-
};
|
|
121
|
-
};
|
|
122
|
-
getRegNumOf(resource: W): string;
|
|
123
|
-
getResourceAt(regNum: string): W;
|
|
124
|
-
}
|
|
125
|
-
export declare class Observable<T extends State> extends AbstractObservable<T> {
|
|
126
|
-
}
|
|
127
|
-
export declare class EagleEyeUniversal<T extends State> {
|
|
128
|
-
private _context;
|
|
129
|
-
private _pCache;
|
|
130
|
-
private _obs;
|
|
131
|
-
private _util;
|
|
132
|
-
constructor();
|
|
133
|
-
get resourceMap(): ObsResource<AbstractObservable<any>>;
|
|
134
|
-
get Provider(): {
|
|
135
|
-
<const ID extends string>(props?: WithChildren<ProviderProps<T, ID>>): JSX.Element;
|
|
136
|
-
<const ID extends string>(props?: WithChildren<ProviderPropsRaw<T, ID>>): JSX.Element;
|
|
137
|
-
<const ID extends string>(props?: WithChildren<ProviderPropsPrimitive<T, ID>>): JSX.Element;
|
|
138
|
-
<const ID extends string>(props?: WithChildren<RefProps<ID>>): JSX.Element;
|
|
139
|
-
};
|
|
140
|
-
get useStream(): any;
|
|
141
|
-
provide<const ID extends string>(props?: ProviderProps<T, ID>): Point<T, ID>;
|
|
142
|
-
provide<const ID extends string>(props?: ProviderPropsRaw<T, ID>): Point<T, ID>;
|
|
143
|
-
provide<const ID extends string>(props?: ProviderPropsPrimitive<T, ID>): Point<T, ID>;
|
|
144
|
-
stream<const S extends SelectorMap>(selectorMap?: S): {
|
|
145
|
-
into<P>(WrappedComponent: ComponentType<Store<T, S> & P>): FC<P>;
|
|
146
|
-
};
|
|
147
|
-
getIdOf(observable: AbstractObservable<T>): string;
|
|
148
|
-
getObservableAt<const ID extends string>(id: ID): AbstractObservable<T>;
|
|
149
|
-
private defineProvider;
|
|
150
|
-
private _useStream;
|
|
151
|
-
}
|
|
152
|
-
export declare function createContext<T extends State>(): EagleEyeUniversal<T>;
|
|
153
|
-
export {};
|