@webkrafters/react-eagleeye 1.1.0-alpha.7 → 1.1.0-alpha.9
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/universe/index.d.ts +135 -0
- package/dist/main/{universal → universe}/index.js +268 -134
- 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");
|
|
@@ -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,53 @@ var EagleEyeUniversal = exports.EagleEyeUniversal = /*#__PURE__*/function () {
|
|
|
251
340
|
value: function defineProvider() {
|
|
252
341
|
var me = this;
|
|
253
342
|
function provide() {
|
|
254
|
-
var _props$ref;
|
|
343
|
+
var _props$observableConf, _props$observableConf2, _props$observableConf3, _props$ref$current;
|
|
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;
|
|
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;
|
|
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 = {};
|
|
263
383
|
}
|
|
384
|
+
;
|
|
385
|
+
props.ref.current.targetId = id.current;
|
|
264
386
|
}
|
|
265
|
-
(_props$ref = props.ref) !== null && _props$ref !== void 0 ? _props$ref : props.ref = {
|
|
266
|
-
current: {}
|
|
267
|
-
};
|
|
268
|
-
props.ref.current.targetId = targetId;
|
|
269
387
|
var Context = me._context;
|
|
270
388
|
return (0, _jsxRuntime.jsx)(Context, {
|
|
271
|
-
value:
|
|
389
|
+
value: id.current,
|
|
272
390
|
children: props.children
|
|
273
391
|
});
|
|
274
392
|
}
|
|
@@ -289,7 +407,7 @@ var EagleEyeUniversal = exports.EagleEyeUniversal = /*#__PURE__*/function () {
|
|
|
289
407
|
return updateSMapHash(_this4._util.hashSelectorMap(selectorMap));
|
|
290
408
|
}, [selectorMap]);
|
|
291
409
|
var targetId = (0, _react.use)(_this4._context);
|
|
292
|
-
var
|
|
410
|
+
var handle = (0, _react.useMemo)(function () {
|
|
293
411
|
var ctxHandle = _this4._obs.createHandleFor(targetId);
|
|
294
412
|
var streamHandle = ctxHandle.getChannelHandleAt(sMapHash);
|
|
295
413
|
if (!streamHandle.isValid) {
|
|
@@ -297,10 +415,10 @@ var EagleEyeUniversal = exports.EagleEyeUniversal = /*#__PURE__*/function () {
|
|
|
297
415
|
streamHandle = ctxHandle.getChannelHandleAt(sMapHash);
|
|
298
416
|
}
|
|
299
417
|
streamHandle.inc();
|
|
300
|
-
return streamHandle
|
|
418
|
+
return streamHandle;
|
|
301
419
|
}, [sMapHash, targetId]);
|
|
302
420
|
var _useState3 = (0, _react.useState)(function () {
|
|
303
|
-
return (0, _.makeStore)(
|
|
421
|
+
return (0, _.makeStore)(handle.resource);
|
|
304
422
|
}),
|
|
305
423
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
306
424
|
store = _useState4[0],
|
|
@@ -308,65 +426,81 @@ var EagleEyeUniversal = exports.EagleEyeUniversal = /*#__PURE__*/function () {
|
|
|
308
426
|
(0, _react.useEffect)(function () {
|
|
309
427
|
var fn = function fn() {
|
|
310
428
|
return setStore(_objectSpread(_objectSpread({}, store), {}, {
|
|
311
|
-
data:
|
|
429
|
+
data: handle.resource.data
|
|
312
430
|
}));
|
|
313
431
|
};
|
|
314
|
-
|
|
432
|
+
handle.resource.addListener('data-changed', fn);
|
|
315
433
|
return function () {
|
|
316
|
-
|
|
434
|
+
handle.resource.removeListener('data-changed', fn);
|
|
435
|
+
handle.dec();
|
|
317
436
|
};
|
|
318
|
-
}, [
|
|
437
|
+
}, [handle.resource]);
|
|
319
438
|
return store;
|
|
320
439
|
};
|
|
321
440
|
}
|
|
322
441
|
}]);
|
|
323
442
|
}();
|
|
324
|
-
var Utility = /*#__PURE__*/function () {
|
|
443
|
+
var Utility = exports.Utility = /*#__PURE__*/function () {
|
|
325
444
|
function Utility(context) {
|
|
326
445
|
_classCallCheck(this, Utility);
|
|
327
|
-
_defineProperty(this, "
|
|
328
|
-
this.
|
|
446
|
+
_defineProperty(this, "_wContext", void 0);
|
|
447
|
+
this._wContext = new WeakRef(context);
|
|
329
448
|
}
|
|
330
449
|
return _createClass(Utility, [{
|
|
331
450
|
key: "getIdOf",
|
|
332
451
|
value: function getIdOf(target) {
|
|
333
|
-
return this.
|
|
452
|
+
return this._registry.getRegNumOf(target);
|
|
334
453
|
}
|
|
335
454
|
}, {
|
|
336
455
|
key: "getObservableAt",
|
|
337
456
|
value: function getObservableAt(targetId) {
|
|
338
|
-
return this.
|
|
457
|
+
return this._registry.getResourceAt(targetId);
|
|
339
458
|
}
|
|
340
459
|
}, {
|
|
341
460
|
key: "hashSelectorMap",
|
|
342
461
|
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
|
-
}));
|
|
462
|
+
return (0, _jsSha.sha512)(typeof selectorMap === 'undefined' ? 'undefined' : selectorMap === null ? 'null' : (0, _safeStableStringify["default"])(selectorMap));
|
|
346
463
|
}
|
|
347
464
|
}, {
|
|
348
465
|
key: "pointAt",
|
|
349
466
|
value: function pointAt(target) {
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
target: target,
|
|
357
|
-
targetId: _targetId
|
|
358
|
-
};
|
|
359
|
-
}
|
|
467
|
+
var targetId = this.getIdOf(target);
|
|
468
|
+
if (targetId) {
|
|
469
|
+
return {
|
|
470
|
+
target: target,
|
|
471
|
+
targetId: targetId
|
|
472
|
+
};
|
|
360
473
|
}
|
|
361
|
-
|
|
362
|
-
this.
|
|
474
|
+
targetId = genRegNum();
|
|
475
|
+
this._registry.acquire(targetId, target);
|
|
363
476
|
return {
|
|
364
477
|
target: target,
|
|
365
478
|
targetId: targetId
|
|
366
479
|
};
|
|
367
480
|
}
|
|
481
|
+
}, {
|
|
482
|
+
key: "untrack",
|
|
483
|
+
value: function untrack(target, force) {
|
|
484
|
+
this.untrackId(this.getIdOf(target), force);
|
|
485
|
+
}
|
|
486
|
+
}, {
|
|
487
|
+
key: "untrackId",
|
|
488
|
+
value: function untrackId(targetId, force) {
|
|
489
|
+
var _this$_registry;
|
|
490
|
+
(_this$_registry = this._registry) === null || _this$_registry === void 0 || _this$_registry.removeResourceAt(targetId, force);
|
|
491
|
+
}
|
|
492
|
+
}, {
|
|
493
|
+
key: "_context",
|
|
494
|
+
get: function get() {
|
|
495
|
+
return this._wContext.deref();
|
|
496
|
+
}
|
|
497
|
+
}, {
|
|
498
|
+
key: "_registry",
|
|
499
|
+
get: function get() {
|
|
500
|
+
return this._context.secureResourceMapFor(this);
|
|
501
|
+
}
|
|
368
502
|
}]);
|
|
369
503
|
}();
|
|
370
504
|
function createContext() {
|
|
371
|
-
return new
|
|
505
|
+
return new ObservableUniverse();
|
|
372
506
|
}
|
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.9",
|
|
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<T, S>;
|
|
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 {};
|