@webkrafters/react-eagleeye 1.1.0-alpha.6 → 1.1.0-alpha.8
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 +2 -8
- package/dist/main/universe/index.d.ts +135 -0
- package/dist/main/{universal → universe}/index.js +268 -135
- package/package.json +2 -1
- package/dist/main/universal/index.d.ts +0 -147
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,15 @@ 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
142
|
return setStore(_objectSpread(_objectSpread({}, store), {}, {
|
|
147
143
|
data: channel.data
|
|
148
144
|
}));
|
|
149
145
|
});
|
|
150
|
-
strictMode.current = false;
|
|
151
146
|
return function () {
|
|
152
|
-
channel.endStream();
|
|
153
|
-
strictMode.current = true;
|
|
147
|
+
return channel.endStream();
|
|
154
148
|
};
|
|
155
|
-
}, []);
|
|
149
|
+
}, [channel]);
|
|
156
150
|
return store;
|
|
157
151
|
};
|
|
158
152
|
}
|
|
@@ -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,14 +3,15 @@
|
|
|
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); }
|
|
16
17
|
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
@@ -34,132 +35,212 @@ function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r),
|
|
|
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", {});
|
|
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
|
-
this.
|
|
180
|
+
this.registry[sMapHash] = {
|
|
50
181
|
channel: new WeakRef(resource),
|
|
51
182
|
numConnections: 0
|
|
52
183
|
};
|
|
53
|
-
this.
|
|
184
|
+
this.finalizer.register(resource, sMapHash, resource);
|
|
54
185
|
return this.createHandleFor(sMapHash);
|
|
55
186
|
}
|
|
56
187
|
}, {
|
|
57
188
|
key: "createHandleFor",
|
|
58
189
|
value: function createHandleFor(sMapHash) {
|
|
59
|
-
|
|
60
|
-
var entry = this._registry[sMapHash];
|
|
61
|
-
var handle = {
|
|
62
|
-
get descriptor() {
|
|
63
|
-
return sMapHash;
|
|
64
|
-
},
|
|
65
|
-
get isValid() {
|
|
66
|
-
return !!entry;
|
|
67
|
-
},
|
|
68
|
-
get resource() {
|
|
69
|
-
var _entry$channel$deref, _entry$channel;
|
|
70
|
-
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);
|
|
71
|
-
},
|
|
72
|
-
get size() {
|
|
73
|
-
return handle.isValid ? entry.numConnections : -1;
|
|
74
|
-
},
|
|
75
|
-
dec: function dec() {
|
|
76
|
-
if (!handle.isValid) {
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
entry.numConnections--;
|
|
80
|
-
if (handle.size) {
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
handle.resource.endStream();
|
|
84
|
-
_this2._finalizer.unregister(handle.resource);
|
|
85
|
-
entry.channel = null;
|
|
86
|
-
_this2.finalize(sMapHash);
|
|
87
|
-
},
|
|
88
|
-
inc: function inc() {
|
|
89
|
-
handle.isValid && entry.numConnections++;
|
|
90
|
-
}
|
|
91
|
-
};
|
|
92
|
-
return handle;
|
|
93
|
-
}
|
|
94
|
-
}, {
|
|
95
|
-
key: "getResourceAt",
|
|
96
|
-
value: function getResourceAt(sMapHash) {
|
|
97
|
-
return this.createHandleFor(sMapHash).resource;
|
|
98
|
-
}
|
|
99
|
-
}, {
|
|
100
|
-
key: "finalize",
|
|
101
|
-
value: function finalize(sMapHash) {
|
|
102
|
-
delete this._registry[sMapHash];
|
|
190
|
+
return new StreamerHandle(this, sMapHash);
|
|
103
191
|
}
|
|
104
192
|
}]);
|
|
105
|
-
}();
|
|
106
|
-
var ObsResource = /*#__PURE__*/function () {
|
|
193
|
+
}(AbstractResource);
|
|
194
|
+
var ObsResource = /*#__PURE__*/function (_AbstractResource3) {
|
|
107
195
|
function ObsResource() {
|
|
108
|
-
var _this3
|
|
196
|
+
var _this3;
|
|
109
197
|
_classCallCheck(this, ObsResource);
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
}
|
|
113
|
-
|
|
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;
|
|
114
204
|
}
|
|
205
|
+
_inherits(ObsResource, _AbstractResource3);
|
|
115
206
|
return _createClass(ObsResource, [{
|
|
116
207
|
key: "acquire",
|
|
117
208
|
value: function acquire(regNum, resource) {
|
|
118
|
-
this.
|
|
209
|
+
this.registry[regNum] = {
|
|
119
210
|
channels: new ChsResource(),
|
|
120
211
|
observable: new WeakRef(resource)
|
|
121
212
|
};
|
|
122
|
-
this.
|
|
213
|
+
this.finalizer.register(resource, regNum, resource);
|
|
123
214
|
return this.createHandleFor(regNum);
|
|
124
215
|
}
|
|
125
216
|
}, {
|
|
126
217
|
key: "createHandleFor",
|
|
127
218
|
value: function createHandleFor(regNum) {
|
|
128
|
-
|
|
129
|
-
var entry = (_this$_registry$regNu = this._registry[regNum]) !== null && _this$_registry$regNu !== void 0 ? _this$_registry$regNu : {};
|
|
130
|
-
return {
|
|
131
|
-
get descriptor() {
|
|
132
|
-
return regNum;
|
|
133
|
-
},
|
|
134
|
-
get resource() {
|
|
135
|
-
var _entry$observable$der, _entry$observable;
|
|
136
|
-
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);
|
|
137
|
-
},
|
|
138
|
-
addChannelAt: function addChannelAt(sMapHash, channel) {
|
|
139
|
-
return entry === null || entry === void 0 ? void 0 : entry.channels.acquire(sMapHash, channel);
|
|
140
|
-
},
|
|
141
|
-
getChannelHandleAt: function getChannelHandleAt(sMapHash) {
|
|
142
|
-
return entry === null || entry === void 0 ? void 0 : entry.channels.createHandleFor(sMapHash);
|
|
143
|
-
}
|
|
144
|
-
};
|
|
219
|
+
return new ObserverHandle(this, regNum);
|
|
145
220
|
}
|
|
146
221
|
}, {
|
|
147
222
|
key: "getRegNumOf",
|
|
148
223
|
value: function getRegNumOf(resource) {
|
|
149
|
-
for (var regNum in this.
|
|
224
|
+
for (var regNum in this.registry) {
|
|
150
225
|
if (this.getResourceAt(regNum) === resource) {
|
|
151
226
|
return regNum;
|
|
152
227
|
}
|
|
153
228
|
}
|
|
154
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
|
+
}
|
|
155
236
|
}, {
|
|
156
237
|
key: "getResourceAt",
|
|
157
238
|
value: function getResourceAt(regNum) {
|
|
158
|
-
var _this$
|
|
159
|
-
return (_this$
|
|
239
|
+
var _this$createHandleFor2;
|
|
240
|
+
return (_this$createHandleFor2 = this.createHandleFor(regNum)) === null || _this$createHandleFor2 === void 0 ? void 0 : _this$createHandleFor2.resource;
|
|
160
241
|
}
|
|
161
242
|
}]);
|
|
162
|
-
}();
|
|
243
|
+
}(AbstractResource);
|
|
163
244
|
var genRegNum = function () {
|
|
164
245
|
var count = 0;
|
|
165
246
|
var ts = 0;
|
|
@@ -182,9 +263,9 @@ var Observable = exports.Observable = /*#__PURE__*/function (_AbstractObservable
|
|
|
182
263
|
_inherits(Observable, _AbstractObservable);
|
|
183
264
|
return _createClass(Observable);
|
|
184
265
|
}(_.AbstractObservable);
|
|
185
|
-
var
|
|
186
|
-
function
|
|
187
|
-
_classCallCheck(this,
|
|
266
|
+
var ObservableUniverse = exports.ObservableUniverse = /*#__PURE__*/function () {
|
|
267
|
+
function ObservableUniverse() {
|
|
268
|
+
_classCallCheck(this, ObservableUniverse);
|
|
188
269
|
_defineProperty(this, "_context", void 0);
|
|
189
270
|
_defineProperty(this, "_pCache", null);
|
|
190
271
|
_defineProperty(this, "_obs", null);
|
|
@@ -196,12 +277,7 @@ var EagleEyeUniversal = exports.EagleEyeUniversal = /*#__PURE__*/function () {
|
|
|
196
277
|
this._sCache = this.defineStreamHook();
|
|
197
278
|
this._util = new Utility(this);
|
|
198
279
|
}
|
|
199
|
-
return _createClass(
|
|
200
|
-
key: "resourceMap",
|
|
201
|
-
get: function get() {
|
|
202
|
-
return this._obs;
|
|
203
|
-
}
|
|
204
|
-
}, {
|
|
280
|
+
return _createClass(ObservableUniverse, [{
|
|
205
281
|
key: "Provider",
|
|
206
282
|
get: function get() {
|
|
207
283
|
return this._pCache;
|
|
@@ -211,6 +287,11 @@ var EagleEyeUniversal = exports.EagleEyeUniversal = /*#__PURE__*/function () {
|
|
|
211
287
|
get: function get() {
|
|
212
288
|
return this._sCache;
|
|
213
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);
|
|
294
|
+
}
|
|
214
295
|
}, {
|
|
215
296
|
key: "provide",
|
|
216
297
|
value: function provide() {
|
|
@@ -222,6 +303,14 @@ var EagleEyeUniversal = exports.EagleEyeUniversal = /*#__PURE__*/function () {
|
|
|
222
303
|
}
|
|
223
304
|
return this._util.pointAt(observable);
|
|
224
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
|
+
}
|
|
225
314
|
}, {
|
|
226
315
|
key: "stream",
|
|
227
316
|
value: function stream(selectorMap) {
|
|
@@ -251,24 +340,52 @@ var EagleEyeUniversal = exports.EagleEyeUniversal = /*#__PURE__*/function () {
|
|
|
251
340
|
value: function defineProvider() {
|
|
252
341
|
var me = this;
|
|
253
342
|
function provide() {
|
|
254
|
-
var _props$
|
|
343
|
+
var _props$observableConf, _props$observableConf2, _props$observableConf3;
|
|
255
344
|
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
256
|
-
var
|
|
257
|
-
|
|
258
|
-
targetId
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
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;
|
|
263
353
|
}
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
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;
|
|
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
|
+
(0, _react.useImperativeHandle)(props.ref, function () {
|
|
381
|
+
var _props$ref$current;
|
|
382
|
+
var c = (_props$ref$current = props.ref.current) !== null && _props$ref$current !== void 0 ? _props$ref$current : {};
|
|
383
|
+
c.targetId = id.current;
|
|
384
|
+
return c;
|
|
385
|
+
}, [id.current]);
|
|
269
386
|
var Context = me._context;
|
|
270
387
|
return (0, _jsxRuntime.jsx)(Context, {
|
|
271
|
-
value:
|
|
388
|
+
value: id.current,
|
|
272
389
|
children: props.children
|
|
273
390
|
});
|
|
274
391
|
}
|
|
@@ -289,7 +406,7 @@ var EagleEyeUniversal = exports.EagleEyeUniversal = /*#__PURE__*/function () {
|
|
|
289
406
|
return updateSMapHash(_this4._util.hashSelectorMap(selectorMap));
|
|
290
407
|
}, [selectorMap]);
|
|
291
408
|
var targetId = (0, _react.use)(_this4._context);
|
|
292
|
-
var
|
|
409
|
+
var handle = (0, _react.useMemo)(function () {
|
|
293
410
|
var ctxHandle = _this4._obs.createHandleFor(targetId);
|
|
294
411
|
var streamHandle = ctxHandle.getChannelHandleAt(sMapHash);
|
|
295
412
|
if (!streamHandle.isValid) {
|
|
@@ -297,10 +414,10 @@ var EagleEyeUniversal = exports.EagleEyeUniversal = /*#__PURE__*/function () {
|
|
|
297
414
|
streamHandle = ctxHandle.getChannelHandleAt(sMapHash);
|
|
298
415
|
}
|
|
299
416
|
streamHandle.inc();
|
|
300
|
-
return streamHandle
|
|
417
|
+
return streamHandle;
|
|
301
418
|
}, [sMapHash, targetId]);
|
|
302
419
|
var _useState3 = (0, _react.useState)(function () {
|
|
303
|
-
return (0, _.makeStore)(
|
|
420
|
+
return (0, _.makeStore)(handle.resource);
|
|
304
421
|
}),
|
|
305
422
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
306
423
|
store = _useState4[0],
|
|
@@ -308,65 +425,81 @@ var EagleEyeUniversal = exports.EagleEyeUniversal = /*#__PURE__*/function () {
|
|
|
308
425
|
(0, _react.useEffect)(function () {
|
|
309
426
|
var fn = function fn() {
|
|
310
427
|
return setStore(_objectSpread(_objectSpread({}, store), {}, {
|
|
311
|
-
data:
|
|
428
|
+
data: handle.resource.data
|
|
312
429
|
}));
|
|
313
430
|
};
|
|
314
|
-
|
|
431
|
+
handle.resource.addListener('data-changed', fn);
|
|
315
432
|
return function () {
|
|
316
|
-
|
|
433
|
+
handle.resource.removeListener('data-changed', fn);
|
|
434
|
+
handle.dec();
|
|
317
435
|
};
|
|
318
|
-
}, [
|
|
436
|
+
}, [handle.resource]);
|
|
319
437
|
return store;
|
|
320
438
|
};
|
|
321
439
|
}
|
|
322
440
|
}]);
|
|
323
441
|
}();
|
|
324
|
-
var Utility = /*#__PURE__*/function () {
|
|
442
|
+
var Utility = exports.Utility = /*#__PURE__*/function () {
|
|
325
443
|
function Utility(context) {
|
|
326
444
|
_classCallCheck(this, Utility);
|
|
327
|
-
_defineProperty(this, "
|
|
328
|
-
this.
|
|
445
|
+
_defineProperty(this, "_wContext", void 0);
|
|
446
|
+
this._wContext = new WeakRef(context);
|
|
329
447
|
}
|
|
330
448
|
return _createClass(Utility, [{
|
|
331
449
|
key: "getIdOf",
|
|
332
450
|
value: function getIdOf(target) {
|
|
333
|
-
return this.
|
|
451
|
+
return this._registry.getRegNumOf(target);
|
|
334
452
|
}
|
|
335
453
|
}, {
|
|
336
454
|
key: "getObservableAt",
|
|
337
455
|
value: function getObservableAt(targetId) {
|
|
338
|
-
return this.
|
|
456
|
+
return this._registry.getResourceAt(targetId);
|
|
339
457
|
}
|
|
340
458
|
}, {
|
|
341
459
|
key: "hashSelectorMap",
|
|
342
460
|
value: function hashSelectorMap(selectorMap) {
|
|
343
|
-
return (0, _jsSha.sha512)(typeof selectorMap === 'undefined' ? 'undefined' : selectorMap === null ? 'null' : (0, _safeStableStringify["default"])(selectorMap
|
|
344
|
-
return v !== null && v !== void 0 ? v : 'undefined';
|
|
345
|
-
}));
|
|
461
|
+
return (0, _jsSha.sha512)(typeof selectorMap === 'undefined' ? 'undefined' : selectorMap === null ? 'null' : (0, _safeStableStringify["default"])(selectorMap));
|
|
346
462
|
}
|
|
347
463
|
}, {
|
|
348
464
|
key: "pointAt",
|
|
349
465
|
value: function pointAt(target) {
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
target: target,
|
|
357
|
-
targetId: _targetId
|
|
358
|
-
};
|
|
359
|
-
}
|
|
466
|
+
var targetId = this.getIdOf(target);
|
|
467
|
+
if (targetId) {
|
|
468
|
+
return {
|
|
469
|
+
target: target,
|
|
470
|
+
targetId: targetId
|
|
471
|
+
};
|
|
360
472
|
}
|
|
361
|
-
|
|
362
|
-
this.
|
|
473
|
+
targetId = genRegNum();
|
|
474
|
+
this._registry.acquire(targetId, target);
|
|
363
475
|
return {
|
|
364
476
|
target: target,
|
|
365
477
|
targetId: targetId
|
|
366
478
|
};
|
|
367
479
|
}
|
|
480
|
+
}, {
|
|
481
|
+
key: "untrack",
|
|
482
|
+
value: function untrack(target, force) {
|
|
483
|
+
this.untrackId(this.getIdOf(target), force);
|
|
484
|
+
}
|
|
485
|
+
}, {
|
|
486
|
+
key: "untrackId",
|
|
487
|
+
value: function untrackId(targetId, force) {
|
|
488
|
+
var _this$_registry;
|
|
489
|
+
(_this$_registry = this._registry) === null || _this$_registry === void 0 || _this$_registry.removeResourceAt(targetId, force);
|
|
490
|
+
}
|
|
491
|
+
}, {
|
|
492
|
+
key: "_context",
|
|
493
|
+
get: function get() {
|
|
494
|
+
return this._wContext.deref();
|
|
495
|
+
}
|
|
496
|
+
}, {
|
|
497
|
+
key: "_registry",
|
|
498
|
+
get: function get() {
|
|
499
|
+
return this._context.secureResourceMapFor(this);
|
|
500
|
+
}
|
|
368
501
|
}]);
|
|
369
502
|
}();
|
|
370
503
|
function createContext() {
|
|
371
|
-
return new
|
|
504
|
+
return new ObservableUniverse();
|
|
372
505
|
}
|
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",
|
|
@@ -125,7 +126,7 @@
|
|
|
125
126
|
"test:watch": "eslint --fix && jest --updateSnapshot --watchAll"
|
|
126
127
|
},
|
|
127
128
|
"types": "dist/index.d.ts",
|
|
128
|
-
"version": "1.1.0-alpha.
|
|
129
|
+
"version": "1.1.0-alpha.8",
|
|
129
130
|
"dependencies": {
|
|
130
131
|
"@webkrafters/eagleeye": "^1.0.8",
|
|
131
132
|
"js-sha512": "^0.9.0",
|
|
@@ -1,147 +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
|
-
}
|
|
37
|
-
export interface Entry {
|
|
38
|
-
channels: ChsResource<Channel>;
|
|
39
|
-
observable: WeakRef<AbstractObservable<any>>;
|
|
40
|
-
}
|
|
41
|
-
export interface Handle<W extends WeakKey> {
|
|
42
|
-
readonly descriptor: string;
|
|
43
|
-
readonly resource: W;
|
|
44
|
-
}
|
|
45
|
-
interface IResource<W extends WeakKey> {
|
|
46
|
-
acquire(desc: string, resource: W): Handle<W>;
|
|
47
|
-
createHandleFor(desc: string): Handle<W>;
|
|
48
|
-
getResourceAt(desc: string): W;
|
|
49
|
-
}
|
|
50
|
-
declare class ChsResource<W extends Channel> implements IResource<W> {
|
|
51
|
-
private _finalizer;
|
|
52
|
-
private _registry;
|
|
53
|
-
acquire(sMapHash: string, resource: W): {
|
|
54
|
-
readonly descriptor: string;
|
|
55
|
-
readonly isValid: boolean;
|
|
56
|
-
readonly resource: W;
|
|
57
|
-
readonly size: number;
|
|
58
|
-
dec: () => void;
|
|
59
|
-
inc(): void;
|
|
60
|
-
};
|
|
61
|
-
createHandleFor(sMapHash: string): {
|
|
62
|
-
readonly descriptor: string;
|
|
63
|
-
readonly isValid: boolean;
|
|
64
|
-
readonly resource: W;
|
|
65
|
-
readonly size: number;
|
|
66
|
-
dec: () => void;
|
|
67
|
-
inc(): void;
|
|
68
|
-
};
|
|
69
|
-
getResourceAt(sMapHash: string): W;
|
|
70
|
-
private finalize;
|
|
71
|
-
}
|
|
72
|
-
declare class ObsResource<W extends AbstractObservable<TemplateType2<W>>> implements IResource<W> {
|
|
73
|
-
private _finalizer;
|
|
74
|
-
private _registry;
|
|
75
|
-
acquire(regNum: string, resource: W): {
|
|
76
|
-
readonly descriptor: string;
|
|
77
|
-
readonly resource: W;
|
|
78
|
-
addChannelAt(sMapHash: string, channel: Channel): {
|
|
79
|
-
readonly descriptor: string;
|
|
80
|
-
readonly isValid: boolean;
|
|
81
|
-
readonly resource: W_1;
|
|
82
|
-
readonly size: number;
|
|
83
|
-
dec: () => void;
|
|
84
|
-
inc(): void;
|
|
85
|
-
};
|
|
86
|
-
getChannelHandleAt(sMapHash: string): {
|
|
87
|
-
readonly descriptor: string;
|
|
88
|
-
readonly isValid: boolean;
|
|
89
|
-
readonly resource: W_1;
|
|
90
|
-
readonly size: number;
|
|
91
|
-
dec: () => void;
|
|
92
|
-
inc(): void;
|
|
93
|
-
};
|
|
94
|
-
};
|
|
95
|
-
createHandleFor(regNum: string): {
|
|
96
|
-
readonly descriptor: string;
|
|
97
|
-
readonly resource: W;
|
|
98
|
-
addChannelAt(sMapHash: string, channel: Channel): {
|
|
99
|
-
readonly descriptor: string;
|
|
100
|
-
readonly isValid: boolean;
|
|
101
|
-
readonly resource: W_1;
|
|
102
|
-
readonly size: number;
|
|
103
|
-
dec: () => void;
|
|
104
|
-
inc(): void;
|
|
105
|
-
};
|
|
106
|
-
getChannelHandleAt(sMapHash: string): {
|
|
107
|
-
readonly descriptor: string;
|
|
108
|
-
readonly isValid: boolean;
|
|
109
|
-
readonly resource: W_1;
|
|
110
|
-
readonly size: number;
|
|
111
|
-
dec: () => void;
|
|
112
|
-
inc(): void;
|
|
113
|
-
};
|
|
114
|
-
};
|
|
115
|
-
getRegNumOf(resource: W): string;
|
|
116
|
-
getResourceAt(regNum: string): W;
|
|
117
|
-
}
|
|
118
|
-
export declare class Observable<T extends State> extends AbstractObservable<T> {
|
|
119
|
-
}
|
|
120
|
-
export declare class EagleEyeUniversal<T extends State> {
|
|
121
|
-
private _context;
|
|
122
|
-
private _pCache;
|
|
123
|
-
private _obs;
|
|
124
|
-
private _sCache;
|
|
125
|
-
private _util;
|
|
126
|
-
constructor();
|
|
127
|
-
get resourceMap(): ObsResource<AbstractObservable<any>>;
|
|
128
|
-
get Provider(): {
|
|
129
|
-
<const ID extends string>(props?: WithChildren<ProviderProps<T, ID>>): JSX.Element;
|
|
130
|
-
<const ID extends string>(props?: WithChildren<ProviderPropsRaw<T, ID>>): JSX.Element;
|
|
131
|
-
<const ID extends string>(props?: WithChildren<ProviderPropsPrimitive<T, ID>>): JSX.Element;
|
|
132
|
-
<const ID extends string>(props?: WithChildren<RefProps<ID>>): JSX.Element;
|
|
133
|
-
};
|
|
134
|
-
get useStream(): <const S extends SelectorMap>(selectorMap?: S) => Store<import("@webkrafters/auto-immutable").Value, SelectorMap>;
|
|
135
|
-
provide<const ID extends string>(props?: ProviderProps<T, ID>): Point<T, ID>;
|
|
136
|
-
provide<const ID extends string>(props?: ProviderPropsRaw<T, ID>): Point<T, ID>;
|
|
137
|
-
provide<const ID extends string>(props?: ProviderPropsPrimitive<T, ID>): Point<T, ID>;
|
|
138
|
-
stream<const S extends SelectorMap>(selectorMap?: S): {
|
|
139
|
-
into<P>(WrappedComponent: ComponentType<Store<T, S> & P>): FC<P>;
|
|
140
|
-
};
|
|
141
|
-
getIdOf(observable: AbstractObservable<T>): string;
|
|
142
|
-
getObservableAt<const ID extends string>(id: ID): AbstractObservable<T>;
|
|
143
|
-
private defineProvider;
|
|
144
|
-
private defineStreamHook;
|
|
145
|
-
}
|
|
146
|
-
export declare function createContext<T extends State>(): EagleEyeUniversal<T>;
|
|
147
|
-
export {};
|