flinker 1.0.6 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/RXPublisher.js +4 -12
- package/dist/cjs/index.js +1 -8
- package/dist/esm/RXPublisher.js +4 -12
- package/dist/esm/index.js +0 -1
- package/dist/index.d.ts +0 -1
- package/package.json +3 -7
- package/dist/RXObserver.d.ts +0 -33
- package/dist/cjs/RXObserver.js +0 -255
- package/dist/esm/RXObserver.js +0 -249
package/dist/cjs/RXPublisher.js
CHANGED
|
@@ -202,9 +202,7 @@ exports.RXDelayedError = RXDelayedError;
|
|
|
202
202
|
var RXEmitter = /** @class */ (function (_super) {
|
|
203
203
|
__extends(RXEmitter, _super);
|
|
204
204
|
function RXEmitter() {
|
|
205
|
-
var _this = this;
|
|
206
|
-
console.log('new RXEmitter');
|
|
207
|
-
_this = _super.call(this) || this;
|
|
205
|
+
var _this = _super.call(this) || this;
|
|
208
206
|
_this._hasValue = false;
|
|
209
207
|
_this.hasError = false;
|
|
210
208
|
_this._err = undefined;
|
|
@@ -407,9 +405,7 @@ exports.RXOperation = RXOperation;
|
|
|
407
405
|
var RXCombine = /** @class */ (function (_super) {
|
|
408
406
|
__extends(RXCombine, _super);
|
|
409
407
|
function RXCombine(list) {
|
|
410
|
-
var _this = this;
|
|
411
|
-
console.log('new RXCombine');
|
|
412
|
-
_this = _super.call(this) || this;
|
|
408
|
+
var _this = _super.call(this) || this;
|
|
413
409
|
_this._values = [];
|
|
414
410
|
_this._hasError = false;
|
|
415
411
|
_this._err = undefined;
|
|
@@ -464,9 +460,7 @@ exports.RXCombine = RXCombine;
|
|
|
464
460
|
var RXFrom = /** @class */ (function (_super) {
|
|
465
461
|
__extends(RXFrom, _super);
|
|
466
462
|
function RXFrom(list) {
|
|
467
|
-
var _this = this;
|
|
468
|
-
console.log('new RXFrom');
|
|
469
|
-
_this = _super.call(this) || this;
|
|
463
|
+
var _this = _super.call(this) || this;
|
|
470
464
|
_this.values = list;
|
|
471
465
|
_this.sendComplete();
|
|
472
466
|
return _this;
|
|
@@ -487,9 +481,7 @@ exports.RXFrom = RXFrom;
|
|
|
487
481
|
var RXWaitUntilComplete = /** @class */ (function (_super) {
|
|
488
482
|
__extends(RXWaitUntilComplete, _super);
|
|
489
483
|
function RXWaitUntilComplete(list, resultPublisher) {
|
|
490
|
-
var _this = this;
|
|
491
|
-
console.log('new RXSequence');
|
|
492
|
-
_this = _super.call(this) || this;
|
|
484
|
+
var _this = _super.call(this) || this;
|
|
493
485
|
_this._value = undefined;
|
|
494
486
|
_this._hasError = false;
|
|
495
487
|
_this._err = undefined;
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.asyncDelay = exports.MD5 = exports.RXSubscriber = exports.RXPipeline = exports.RXReplaceError = exports.RXDebounce = exports.RXRemoveDuplicates = exports.RXSkipNullable = exports.RXSkipFirst = exports.RXSpread = exports.RXFilter = exports.RXParallel = exports.RXSequent = exports.RXForEach = exports.RXFlatMap = exports.RXMap = exports.RXOperator = exports.
|
|
3
|
+
exports.asyncDelay = exports.MD5 = exports.RXSubscriber = exports.RXPipeline = exports.RXReplaceError = exports.RXDebounce = exports.RXRemoveDuplicates = exports.RXSkipNullable = exports.RXSkipFirst = exports.RXSpread = exports.RXFilter = exports.RXParallel = exports.RXSequent = exports.RXForEach = exports.RXFlatMap = exports.RXMap = exports.RXOperator = exports.RXQueue = exports.RXQueueOperator = exports.RXObservableValue = exports.RXObservableEntity = exports.RXWaitUntilComplete = exports.RXFrom = exports.RXCombine = exports.RXOperation = exports.RXBuffer = exports.RXSubject = exports.RXEmitter = exports.RXDelayedError = exports.RXDelayedComplete = exports.RXJustError = exports.RXJustComplete = exports.RXPublisher = exports.RX = void 0;
|
|
4
4
|
var RX_js_1 = require("./RX.js");
|
|
5
5
|
Object.defineProperty(exports, "RX", { enumerable: true, get: function () { return RX_js_1.RX; } });
|
|
6
6
|
var RXPublisher_js_1 = require("./RXPublisher.js");
|
|
@@ -20,13 +20,6 @@ Object.defineProperty(exports, "RXObservableEntity", { enumerable: true, get: fu
|
|
|
20
20
|
Object.defineProperty(exports, "RXObservableValue", { enumerable: true, get: function () { return RXPublisher_js_1.RXObservableValue; } });
|
|
21
21
|
Object.defineProperty(exports, "RXQueueOperator", { enumerable: true, get: function () { return RXPublisher_js_1.RXQueueOperator; } });
|
|
22
22
|
Object.defineProperty(exports, "RXQueue", { enumerable: true, get: function () { return RXPublisher_js_1.RXQueue; } });
|
|
23
|
-
var RXObserver_js_1 = require("./RXObserver.js");
|
|
24
|
-
Object.defineProperty(exports, "observe", { enumerable: true, get: function () { return RXObserver_js_1.observe; } });
|
|
25
|
-
Object.defineProperty(exports, "observeFrom", { enumerable: true, get: function () { return RXObserver_js_1.observeFrom; } });
|
|
26
|
-
Object.defineProperty(exports, "observer", { enumerable: true, get: function () { return RXObserver_js_1.observer; } });
|
|
27
|
-
Object.defineProperty(exports, "JSXSubscriber", { enumerable: true, get: function () { return RXObserver_js_1.JSXSubscriber; } });
|
|
28
|
-
Object.defineProperty(exports, "ObservableGlobalState", { enumerable: true, get: function () { return RXObserver_js_1.ObservableGlobalState; } });
|
|
29
|
-
Object.defineProperty(exports, "RenderQueueStatus", { enumerable: true, get: function () { return RXObserver_js_1.RenderQueueStatus; } });
|
|
30
23
|
var RXOperator_js_1 = require("./RXOperator.js");
|
|
31
24
|
Object.defineProperty(exports, "RXOperator", { enumerable: true, get: function () { return RXOperator_js_1.RXOperator; } });
|
|
32
25
|
Object.defineProperty(exports, "RXMap", { enumerable: true, get: function () { return RXOperator_js_1.RXMap; } });
|
package/dist/esm/RXPublisher.js
CHANGED
|
@@ -199,9 +199,7 @@ export { RXDelayedError };
|
|
|
199
199
|
var RXEmitter = /** @class */ (function (_super) {
|
|
200
200
|
__extends(RXEmitter, _super);
|
|
201
201
|
function RXEmitter() {
|
|
202
|
-
var _this = this;
|
|
203
|
-
console.log('new RXEmitter');
|
|
204
|
-
_this = _super.call(this) || this;
|
|
202
|
+
var _this = _super.call(this) || this;
|
|
205
203
|
_this._hasValue = false;
|
|
206
204
|
_this.hasError = false;
|
|
207
205
|
_this._err = undefined;
|
|
@@ -404,9 +402,7 @@ export { RXOperation };
|
|
|
404
402
|
var RXCombine = /** @class */ (function (_super) {
|
|
405
403
|
__extends(RXCombine, _super);
|
|
406
404
|
function RXCombine(list) {
|
|
407
|
-
var _this = this;
|
|
408
|
-
console.log('new RXCombine');
|
|
409
|
-
_this = _super.call(this) || this;
|
|
405
|
+
var _this = _super.call(this) || this;
|
|
410
406
|
_this._values = [];
|
|
411
407
|
_this._hasError = false;
|
|
412
408
|
_this._err = undefined;
|
|
@@ -461,9 +457,7 @@ export { RXCombine };
|
|
|
461
457
|
var RXFrom = /** @class */ (function (_super) {
|
|
462
458
|
__extends(RXFrom, _super);
|
|
463
459
|
function RXFrom(list) {
|
|
464
|
-
var _this = this;
|
|
465
|
-
console.log('new RXFrom');
|
|
466
|
-
_this = _super.call(this) || this;
|
|
460
|
+
var _this = _super.call(this) || this;
|
|
467
461
|
_this.values = list;
|
|
468
462
|
_this.sendComplete();
|
|
469
463
|
return _this;
|
|
@@ -484,9 +478,7 @@ export { RXFrom };
|
|
|
484
478
|
var RXWaitUntilComplete = /** @class */ (function (_super) {
|
|
485
479
|
__extends(RXWaitUntilComplete, _super);
|
|
486
480
|
function RXWaitUntilComplete(list, resultPublisher) {
|
|
487
|
-
var _this = this;
|
|
488
|
-
console.log('new RXSequence');
|
|
489
|
-
_this = _super.call(this) || this;
|
|
481
|
+
var _this = _super.call(this) || this;
|
|
490
482
|
_this._value = undefined;
|
|
491
483
|
_this._hasError = false;
|
|
492
484
|
_this._err = undefined;
|
package/dist/esm/index.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export { RX, } from "./RX.js";
|
|
2
2
|
export { RXPublisher, RXJustComplete, RXJustError, RXDelayedComplete, RXDelayedError, RXEmitter, RXSubject, RXBuffer, RXOperation, RXCombine, RXFrom, RXWaitUntilComplete, RXObservableEntity, RXObservableValue, RXQueueOperator, RXQueue, } from "./RXPublisher.js";
|
|
3
|
-
export { observe, observeFrom, observer, JSXSubscriber, ObservableGlobalState, RenderQueueStatus, } from "./RXObserver.js";
|
|
4
3
|
export { RXOperator, RXMap, RXFlatMap, RXForEach, RXSequent, RXParallel, RXFilter, RXSpread, RXSkipFirst, RXSkipNullable, RXRemoveDuplicates, RXDebounce, RXReplaceError, } from "./RXOperator.js";
|
|
5
4
|
export { RXPipeline } from "./RXPipeline.js";
|
|
6
5
|
export { RXSubscriber } from "./RXSubscriber.js";
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export { RXAnySender, RXSender, RX, } from "./RX.js";
|
|
2
2
|
export { AnyRXObservable, RXObservable, RXPublisherUID, RXPublisher, RXJustComplete, RXJustError, RXDelayedComplete, RXDelayedError, RXEmitter, RXSubject, RXBuffer, RXOperation, RXCombine, RXFrom, RXWaitUntilComplete, RXObservableEntity, RXObservableValue, RXAnyQueueOperator, RXQueueOperator, RXQueue, } from "./RXPublisher.js";
|
|
3
|
-
export { observe, observeFrom, observer, JSXSubscriber, ObservableGlobalState, RenderQueueStatus, } from "./RXObserver.js";
|
|
4
3
|
export { RXOperatorProtocol, RXAnyOperator, RXOperator, RXMap, RXFlatMap, RXForEach, RXSequent, RXParallel, RXFilter, RXSpread, RXSkipFirst, RXSkipNullable, RXRemoveDuplicates, RXDebounce, RXReplaceError, } from "./RXOperator.js";
|
|
5
4
|
export { RXAnyPipeline, RXPipeline } from "./RXPipeline.js";
|
|
6
5
|
export { ErrorMethod, CompleteMethod, SubscribeMethod, RXAnySubscriber, RXSubscriber } from "./RXSubscriber.js";
|
package/package.json
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "flinker",
|
|
3
3
|
"description": "RX.ts lib for building frontend apps",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "2.0.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "git+https://github.com/Dittner/Flinker.git"
|
|
8
8
|
},
|
|
9
9
|
"keywords": [
|
|
10
|
-
"RX.ts"
|
|
11
|
-
"React",
|
|
12
|
-
"App state manager"
|
|
10
|
+
"RX.ts"
|
|
13
11
|
],
|
|
14
12
|
"author": "Alexander Dittner",
|
|
15
13
|
"license": "MIT",
|
|
@@ -64,9 +62,7 @@
|
|
|
64
62
|
"ts-jest": "^29.3.0",
|
|
65
63
|
"typescript": "^5.8.2",
|
|
66
64
|
"@types/react": "^19.0.12",
|
|
67
|
-
"@types/react-dom": "^19.0.4"
|
|
68
|
-
"react": "^19.0.0",
|
|
69
|
-
"react-dom": "^19.0.0"
|
|
65
|
+
"@types/react-dom": "^19.0.4"
|
|
70
66
|
},
|
|
71
67
|
"directories": {
|
|
72
68
|
"test": "test"
|
package/dist/RXObserver.d.ts
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { type AnyRXObservable, type RXObservable } from './RXPublisher.js';
|
|
2
|
-
export declare function observe<RXElement extends AnyRXObservable | undefined>(rx: RXElement): RXElement;
|
|
3
|
-
export declare function observeFrom(rx: () => AnyRXObservable): void;
|
|
4
|
-
export declare function observer<T>(component: (props: T) => React.JSX.Element): (props: T) => React.JSX.Element;
|
|
5
|
-
type JSXSubscriberUID = number;
|
|
6
|
-
export declare class JSXSubscriber {
|
|
7
|
-
static readonly empty: JSXSubscriber;
|
|
8
|
-
readonly uid: JSXSubscriberUID;
|
|
9
|
-
private readonly buildersSet;
|
|
10
|
-
private readonly unsubscribeColl;
|
|
11
|
-
renderCycle: number;
|
|
12
|
-
initialized: boolean;
|
|
13
|
-
readonly forceRenderFunc: (renderCycle: number) => void;
|
|
14
|
-
constructor(forceRenderFunc: (renderCycle: number) => void);
|
|
15
|
-
private _isDisposed;
|
|
16
|
-
get isDisposed(): boolean;
|
|
17
|
-
observe<V, E>(b: RXObservable<V, E>): void;
|
|
18
|
-
observeFrom(f: () => AnyRXObservable): void;
|
|
19
|
-
dispose(): void;
|
|
20
|
-
resurrect(): void;
|
|
21
|
-
render(renderCycle: number): boolean;
|
|
22
|
-
}
|
|
23
|
-
export declare class ObservableGlobalState {
|
|
24
|
-
static renderCycle: number;
|
|
25
|
-
static initializingJSXComponent: JSXSubscriber;
|
|
26
|
-
static debug: boolean;
|
|
27
|
-
}
|
|
28
|
-
export declare enum RenderQueueStatus {
|
|
29
|
-
IDLE = "IDLE",
|
|
30
|
-
PENDING = "PENDING",
|
|
31
|
-
RUNNING = "LOADING"
|
|
32
|
-
}
|
|
33
|
-
export {};
|
package/dist/cjs/RXObserver.js
DELETED
|
@@ -1,255 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
3
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
4
|
-
if (ar || !(i in from)) {
|
|
5
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
6
|
-
ar[i] = from[i];
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.RenderQueueStatus = exports.ObservableGlobalState = exports.JSXSubscriber = void 0;
|
|
13
|
-
exports.observe = observe;
|
|
14
|
-
exports.observeFrom = observeFrom;
|
|
15
|
-
exports.observer = observer;
|
|
16
|
-
var react_1 = require("react");
|
|
17
|
-
var __DEV__ = false;
|
|
18
|
-
/*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* GLOBAL OBSERVE METHODS
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* */
|
|
25
|
-
function observe(rx) {
|
|
26
|
-
if (rx) {
|
|
27
|
-
var jsxSubscriber = ObservableGlobalState.initializingJSXComponent;
|
|
28
|
-
if (jsxSubscriber !== JSXSubscriber.empty) {
|
|
29
|
-
logInfo('observe(' + rx.constructor.name + '), subscriber uid =', jsxSubscriber.uid);
|
|
30
|
-
jsxSubscriber.observe(rx);
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
logWarn('observe(' + rx.constructor.name + ') is failed: JSX Function Component has not "observer" wrapper!');
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
return rx;
|
|
37
|
-
}
|
|
38
|
-
function observeFrom(rx) {
|
|
39
|
-
if (rx) {
|
|
40
|
-
var jsxSubscriber = ObservableGlobalState.initializingJSXComponent;
|
|
41
|
-
if (jsxSubscriber !== JSXSubscriber.empty) {
|
|
42
|
-
logInfo('observeFunc(' + rx.constructor.name + '), subscriber uid =', jsxSubscriber.uid);
|
|
43
|
-
jsxSubscriber.observeFrom(rx);
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
logWarn('observeFunc(' + rx.constructor.name + ') is failed: JSX Function Component has not "observer" wrapper!');
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
function observer(component) {
|
|
51
|
-
return function (props) {
|
|
52
|
-
var subscriberRef = (0, react_1.useRef)(JSXSubscriber.empty);
|
|
53
|
-
var _a = (0, react_1.useState)(ObservableGlobalState.renderCycle), forceRender = _a[1];
|
|
54
|
-
if (subscriberRef.current === JSXSubscriber.empty) {
|
|
55
|
-
subscriberRef.current = new JSXSubscriber(function (renderCycle) {
|
|
56
|
-
forceRender(renderCycle);
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
if (__DEV__) {
|
|
60
|
-
(0, react_1.useLayoutEffect)(function () {
|
|
61
|
-
if (ObservableGlobalState.debug)
|
|
62
|
-
logInfo('Registering of unmounting [' + subscriberRef.current.uid + ']');
|
|
63
|
-
if (subscriberRef.current.isDisposed) {
|
|
64
|
-
if (ObservableGlobalState.debug)
|
|
65
|
-
logInfo('Disposed Subscriber [' + subscriberRef.current.uid + '] is resurrected');
|
|
66
|
-
subscriberRef.current.resurrect();
|
|
67
|
-
}
|
|
68
|
-
return function () {
|
|
69
|
-
if (ObservableGlobalState.debug)
|
|
70
|
-
logInfo('Subscriber [' + subscriberRef.current.uid + '] is unmounted and disposed');
|
|
71
|
-
subscriberRef.current.dispose();
|
|
72
|
-
};
|
|
73
|
-
}, []);
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
(0, react_1.useLayoutEffect)(function () { return function () { subscriberRef.current.dispose(); }; }, []);
|
|
77
|
-
}
|
|
78
|
-
var parentGlobalComponent = ObservableGlobalState.initializingJSXComponent;
|
|
79
|
-
ObservableGlobalState.initializingJSXComponent = subscriberRef.current;
|
|
80
|
-
//initializing begin
|
|
81
|
-
subscriberRef.current.renderCycle = ObservableGlobalState.renderCycle;
|
|
82
|
-
var renderedComponent = component(props);
|
|
83
|
-
subscriberRef.current.initialized = true;
|
|
84
|
-
//initializing end
|
|
85
|
-
ObservableGlobalState.initializingJSXComponent = parentGlobalComponent;
|
|
86
|
-
return renderedComponent;
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
var suid = (function () { var value = 0; return function () { return value++; }; })();
|
|
90
|
-
var JSXSubscriber = /** @class */ (function () {
|
|
91
|
-
function JSXSubscriber(forceRenderFunc) {
|
|
92
|
-
this.buildersSet = new Set();
|
|
93
|
-
this.unsubscribeColl = Array();
|
|
94
|
-
this.renderCycle = -1;
|
|
95
|
-
this.initialized = false;
|
|
96
|
-
this._isDisposed = false;
|
|
97
|
-
this.uid = suid();
|
|
98
|
-
this.forceRenderFunc = forceRenderFunc;
|
|
99
|
-
}
|
|
100
|
-
Object.defineProperty(JSXSubscriber.prototype, "isDisposed", {
|
|
101
|
-
get: function () {
|
|
102
|
-
return this._isDisposed;
|
|
103
|
-
},
|
|
104
|
-
enumerable: false,
|
|
105
|
-
configurable: true
|
|
106
|
-
});
|
|
107
|
-
JSXSubscriber.prototype.observe = function (b) {
|
|
108
|
-
var _this = this;
|
|
109
|
-
if (b.isComplete || this.buildersSet.has(b.suid))
|
|
110
|
-
return;
|
|
111
|
-
this.buildersSet.add(b.suid);
|
|
112
|
-
this.unsubscribeColl.push(b.pipe()
|
|
113
|
-
.onReceive(function () {
|
|
114
|
-
RenderQueue.self.add(_this);
|
|
115
|
-
})
|
|
116
|
-
.subscribe());
|
|
117
|
-
};
|
|
118
|
-
JSXSubscriber.prototype.observeFrom = function (f) {
|
|
119
|
-
var _this = this;
|
|
120
|
-
if (this.initialized)
|
|
121
|
-
return;
|
|
122
|
-
this.unsubscribeColl.push(f().pipe()
|
|
123
|
-
.skipFirst()
|
|
124
|
-
.onReceive(function () {
|
|
125
|
-
RenderQueue.self.add(_this);
|
|
126
|
-
})
|
|
127
|
-
.subscribe());
|
|
128
|
-
};
|
|
129
|
-
JSXSubscriber.prototype.dispose = function () {
|
|
130
|
-
this._isDisposed = true;
|
|
131
|
-
if (!__DEV__)
|
|
132
|
-
this.unsubscribeColl.forEach(function (f) { f(); });
|
|
133
|
-
};
|
|
134
|
-
JSXSubscriber.prototype.resurrect = function () {
|
|
135
|
-
this._isDisposed = false;
|
|
136
|
-
};
|
|
137
|
-
JSXSubscriber.prototype.render = function (renderCycle) {
|
|
138
|
-
if (this.isDisposed || this.renderCycle === renderCycle) {
|
|
139
|
-
return false;
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
this.renderCycle = renderCycle;
|
|
143
|
-
logInfo('----::forceRenderFunc');
|
|
144
|
-
this.forceRenderFunc(this.renderCycle);
|
|
145
|
-
return true;
|
|
146
|
-
}
|
|
147
|
-
};
|
|
148
|
-
JSXSubscriber.empty = new JSXSubscriber(function () { });
|
|
149
|
-
return JSXSubscriber;
|
|
150
|
-
}());
|
|
151
|
-
exports.JSXSubscriber = JSXSubscriber;
|
|
152
|
-
//--------------------------------------
|
|
153
|
-
// GlobalState
|
|
154
|
-
//--------------------------------------
|
|
155
|
-
var ObservableGlobalState = /** @class */ (function () {
|
|
156
|
-
function ObservableGlobalState() {
|
|
157
|
-
}
|
|
158
|
-
ObservableGlobalState.renderCycle = 0;
|
|
159
|
-
ObservableGlobalState.initializingJSXComponent = JSXSubscriber.empty;
|
|
160
|
-
ObservableGlobalState.debug = false;
|
|
161
|
-
return ObservableGlobalState;
|
|
162
|
-
}());
|
|
163
|
-
exports.ObservableGlobalState = ObservableGlobalState;
|
|
164
|
-
//--------------------------------------
|
|
165
|
-
// RenderQueue
|
|
166
|
-
//--------------------------------------
|
|
167
|
-
var RenderQueueStatus;
|
|
168
|
-
(function (RenderQueueStatus) {
|
|
169
|
-
RenderQueueStatus["IDLE"] = "IDLE";
|
|
170
|
-
RenderQueueStatus["PENDING"] = "PENDING";
|
|
171
|
-
RenderQueueStatus["RUNNING"] = "LOADING";
|
|
172
|
-
})(RenderQueueStatus || (exports.RenderQueueStatus = RenderQueueStatus = {}));
|
|
173
|
-
var RenderQueue = /** @class */ (function () {
|
|
174
|
-
function RenderQueue() {
|
|
175
|
-
this.temp = Array();
|
|
176
|
-
this.queue = new Set();
|
|
177
|
-
this.status = RenderQueueStatus.IDLE;
|
|
178
|
-
this.INFINITE_LOOP_LIMIT = 20;
|
|
179
|
-
this.infiniteLoopDetected = false;
|
|
180
|
-
this.loopRenderings = 0;
|
|
181
|
-
}
|
|
182
|
-
RenderQueue.prototype.add = function (s) {
|
|
183
|
-
var _this = this;
|
|
184
|
-
if (this.infiniteLoopDetected)
|
|
185
|
-
return;
|
|
186
|
-
if (this.status === RenderQueueStatus.RUNNING) {
|
|
187
|
-
this.temp.push(s);
|
|
188
|
-
}
|
|
189
|
-
else {
|
|
190
|
-
this.queue.add(s);
|
|
191
|
-
if (this.status === RenderQueueStatus.IDLE) {
|
|
192
|
-
this.status = RenderQueueStatus.PENDING;
|
|
193
|
-
setTimeout(function () {
|
|
194
|
-
_this.render();
|
|
195
|
-
}, 0);
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
};
|
|
199
|
-
RenderQueue.prototype.render = function () {
|
|
200
|
-
var _this = this;
|
|
201
|
-
logInfo('RenderQueue:render: begin, cycle:', ObservableGlobalState.renderCycle);
|
|
202
|
-
this.status = RenderQueueStatus.RUNNING;
|
|
203
|
-
ObservableGlobalState.renderCycle++;
|
|
204
|
-
var renderedComponentsCount = 0;
|
|
205
|
-
Array.from(this.queue)
|
|
206
|
-
.sort(function (s1, s2) { return s1.uid - s2.uid; })
|
|
207
|
-
.forEach(function (subscriber) {
|
|
208
|
-
subscriber.render(ObservableGlobalState.renderCycle) && renderedComponentsCount++;
|
|
209
|
-
});
|
|
210
|
-
this.queue.clear();
|
|
211
|
-
this.status = RenderQueueStatus.IDLE;
|
|
212
|
-
if (this.temp.length > 0) {
|
|
213
|
-
this.loopRenderings++;
|
|
214
|
-
if (this.loopRenderings > 2) {
|
|
215
|
-
logWarn.apply(void 0, __spreadArray(__spreadArray(['Sending value from publisher while jsx-component is rendering may cause an infinite loop. Loop renderings:', this.loopRenderings,
|
|
216
|
-
'. Most active publishers: ['], this.temp.map(function (ob) { return ob.constructor.name; }), false), [']'], false));
|
|
217
|
-
}
|
|
218
|
-
if (this.loopRenderings < this.INFINITE_LOOP_LIMIT) {
|
|
219
|
-
this.temp.forEach(function (publisherUID) {
|
|
220
|
-
_this.add(publisherUID);
|
|
221
|
-
});
|
|
222
|
-
this.temp.length = 0;
|
|
223
|
-
}
|
|
224
|
-
else {
|
|
225
|
-
this.infiniteLoopDetected = true;
|
|
226
|
-
logWarn('--Infinite Loop! The possible reason: An executed jsx-component X invoked new rendering of a jsx-component, ' +
|
|
227
|
-
'that caused mutation in publisher, that trigger again force render of X');
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
else {
|
|
231
|
-
this.loopRenderings = 0;
|
|
232
|
-
}
|
|
233
|
-
logInfo('RenderQueue:render: end, renderedComponentsCount:', renderedComponentsCount);
|
|
234
|
-
};
|
|
235
|
-
RenderQueue.self = new RenderQueue();
|
|
236
|
-
return RenderQueue;
|
|
237
|
-
}());
|
|
238
|
-
//--------------------------------------
|
|
239
|
-
// logging
|
|
240
|
-
//--------------------------------------
|
|
241
|
-
var logInfo = function () {
|
|
242
|
-
var msg = [];
|
|
243
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
244
|
-
msg[_i] = arguments[_i];
|
|
245
|
-
}
|
|
246
|
-
if (ObservableGlobalState.debug)
|
|
247
|
-
console.log.apply(console, msg);
|
|
248
|
-
};
|
|
249
|
-
var logWarn = function () {
|
|
250
|
-
var msg = [];
|
|
251
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
252
|
-
msg[_i] = arguments[_i];
|
|
253
|
-
}
|
|
254
|
-
console.warn.apply(console, msg);
|
|
255
|
-
};
|
package/dist/esm/RXObserver.js
DELETED
|
@@ -1,249 +0,0 @@
|
|
|
1
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
2
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
3
|
-
if (ar || !(i in from)) {
|
|
4
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
5
|
-
ar[i] = from[i];
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
9
|
-
};
|
|
10
|
-
import { useLayoutEffect, useRef, useState } from 'react';
|
|
11
|
-
var __DEV__ = false;
|
|
12
|
-
/*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* GLOBAL OBSERVE METHODS
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* */
|
|
19
|
-
export function observe(rx) {
|
|
20
|
-
if (rx) {
|
|
21
|
-
var jsxSubscriber = ObservableGlobalState.initializingJSXComponent;
|
|
22
|
-
if (jsxSubscriber !== JSXSubscriber.empty) {
|
|
23
|
-
logInfo('observe(' + rx.constructor.name + '), subscriber uid =', jsxSubscriber.uid);
|
|
24
|
-
jsxSubscriber.observe(rx);
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
logWarn('observe(' + rx.constructor.name + ') is failed: JSX Function Component has not "observer" wrapper!');
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
return rx;
|
|
31
|
-
}
|
|
32
|
-
export function observeFrom(rx) {
|
|
33
|
-
if (rx) {
|
|
34
|
-
var jsxSubscriber = ObservableGlobalState.initializingJSXComponent;
|
|
35
|
-
if (jsxSubscriber !== JSXSubscriber.empty) {
|
|
36
|
-
logInfo('observeFunc(' + rx.constructor.name + '), subscriber uid =', jsxSubscriber.uid);
|
|
37
|
-
jsxSubscriber.observeFrom(rx);
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
logWarn('observeFunc(' + rx.constructor.name + ') is failed: JSX Function Component has not "observer" wrapper!');
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
export function observer(component) {
|
|
45
|
-
return function (props) {
|
|
46
|
-
var subscriberRef = useRef(JSXSubscriber.empty);
|
|
47
|
-
var _a = useState(ObservableGlobalState.renderCycle), forceRender = _a[1];
|
|
48
|
-
if (subscriberRef.current === JSXSubscriber.empty) {
|
|
49
|
-
subscriberRef.current = new JSXSubscriber(function (renderCycle) {
|
|
50
|
-
forceRender(renderCycle);
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
if (__DEV__) {
|
|
54
|
-
useLayoutEffect(function () {
|
|
55
|
-
if (ObservableGlobalState.debug)
|
|
56
|
-
logInfo('Registering of unmounting [' + subscriberRef.current.uid + ']');
|
|
57
|
-
if (subscriberRef.current.isDisposed) {
|
|
58
|
-
if (ObservableGlobalState.debug)
|
|
59
|
-
logInfo('Disposed Subscriber [' + subscriberRef.current.uid + '] is resurrected');
|
|
60
|
-
subscriberRef.current.resurrect();
|
|
61
|
-
}
|
|
62
|
-
return function () {
|
|
63
|
-
if (ObservableGlobalState.debug)
|
|
64
|
-
logInfo('Subscriber [' + subscriberRef.current.uid + '] is unmounted and disposed');
|
|
65
|
-
subscriberRef.current.dispose();
|
|
66
|
-
};
|
|
67
|
-
}, []);
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
useLayoutEffect(function () { return function () { subscriberRef.current.dispose(); }; }, []);
|
|
71
|
-
}
|
|
72
|
-
var parentGlobalComponent = ObservableGlobalState.initializingJSXComponent;
|
|
73
|
-
ObservableGlobalState.initializingJSXComponent = subscriberRef.current;
|
|
74
|
-
//initializing begin
|
|
75
|
-
subscriberRef.current.renderCycle = ObservableGlobalState.renderCycle;
|
|
76
|
-
var renderedComponent = component(props);
|
|
77
|
-
subscriberRef.current.initialized = true;
|
|
78
|
-
//initializing end
|
|
79
|
-
ObservableGlobalState.initializingJSXComponent = parentGlobalComponent;
|
|
80
|
-
return renderedComponent;
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
var suid = (function () { var value = 0; return function () { return value++; }; })();
|
|
84
|
-
var JSXSubscriber = /** @class */ (function () {
|
|
85
|
-
function JSXSubscriber(forceRenderFunc) {
|
|
86
|
-
this.buildersSet = new Set();
|
|
87
|
-
this.unsubscribeColl = Array();
|
|
88
|
-
this.renderCycle = -1;
|
|
89
|
-
this.initialized = false;
|
|
90
|
-
this._isDisposed = false;
|
|
91
|
-
this.uid = suid();
|
|
92
|
-
this.forceRenderFunc = forceRenderFunc;
|
|
93
|
-
}
|
|
94
|
-
Object.defineProperty(JSXSubscriber.prototype, "isDisposed", {
|
|
95
|
-
get: function () {
|
|
96
|
-
return this._isDisposed;
|
|
97
|
-
},
|
|
98
|
-
enumerable: false,
|
|
99
|
-
configurable: true
|
|
100
|
-
});
|
|
101
|
-
JSXSubscriber.prototype.observe = function (b) {
|
|
102
|
-
var _this = this;
|
|
103
|
-
if (b.isComplete || this.buildersSet.has(b.suid))
|
|
104
|
-
return;
|
|
105
|
-
this.buildersSet.add(b.suid);
|
|
106
|
-
this.unsubscribeColl.push(b.pipe()
|
|
107
|
-
.onReceive(function () {
|
|
108
|
-
RenderQueue.self.add(_this);
|
|
109
|
-
})
|
|
110
|
-
.subscribe());
|
|
111
|
-
};
|
|
112
|
-
JSXSubscriber.prototype.observeFrom = function (f) {
|
|
113
|
-
var _this = this;
|
|
114
|
-
if (this.initialized)
|
|
115
|
-
return;
|
|
116
|
-
this.unsubscribeColl.push(f().pipe()
|
|
117
|
-
.skipFirst()
|
|
118
|
-
.onReceive(function () {
|
|
119
|
-
RenderQueue.self.add(_this);
|
|
120
|
-
})
|
|
121
|
-
.subscribe());
|
|
122
|
-
};
|
|
123
|
-
JSXSubscriber.prototype.dispose = function () {
|
|
124
|
-
this._isDisposed = true;
|
|
125
|
-
if (!__DEV__)
|
|
126
|
-
this.unsubscribeColl.forEach(function (f) { f(); });
|
|
127
|
-
};
|
|
128
|
-
JSXSubscriber.prototype.resurrect = function () {
|
|
129
|
-
this._isDisposed = false;
|
|
130
|
-
};
|
|
131
|
-
JSXSubscriber.prototype.render = function (renderCycle) {
|
|
132
|
-
if (this.isDisposed || this.renderCycle === renderCycle) {
|
|
133
|
-
return false;
|
|
134
|
-
}
|
|
135
|
-
else {
|
|
136
|
-
this.renderCycle = renderCycle;
|
|
137
|
-
logInfo('----::forceRenderFunc');
|
|
138
|
-
this.forceRenderFunc(this.renderCycle);
|
|
139
|
-
return true;
|
|
140
|
-
}
|
|
141
|
-
};
|
|
142
|
-
JSXSubscriber.empty = new JSXSubscriber(function () { });
|
|
143
|
-
return JSXSubscriber;
|
|
144
|
-
}());
|
|
145
|
-
export { JSXSubscriber };
|
|
146
|
-
//--------------------------------------
|
|
147
|
-
// GlobalState
|
|
148
|
-
//--------------------------------------
|
|
149
|
-
var ObservableGlobalState = /** @class */ (function () {
|
|
150
|
-
function ObservableGlobalState() {
|
|
151
|
-
}
|
|
152
|
-
ObservableGlobalState.renderCycle = 0;
|
|
153
|
-
ObservableGlobalState.initializingJSXComponent = JSXSubscriber.empty;
|
|
154
|
-
ObservableGlobalState.debug = false;
|
|
155
|
-
return ObservableGlobalState;
|
|
156
|
-
}());
|
|
157
|
-
export { ObservableGlobalState };
|
|
158
|
-
//--------------------------------------
|
|
159
|
-
// RenderQueue
|
|
160
|
-
//--------------------------------------
|
|
161
|
-
export var RenderQueueStatus;
|
|
162
|
-
(function (RenderQueueStatus) {
|
|
163
|
-
RenderQueueStatus["IDLE"] = "IDLE";
|
|
164
|
-
RenderQueueStatus["PENDING"] = "PENDING";
|
|
165
|
-
RenderQueueStatus["RUNNING"] = "LOADING";
|
|
166
|
-
})(RenderQueueStatus || (RenderQueueStatus = {}));
|
|
167
|
-
var RenderQueue = /** @class */ (function () {
|
|
168
|
-
function RenderQueue() {
|
|
169
|
-
this.temp = Array();
|
|
170
|
-
this.queue = new Set();
|
|
171
|
-
this.status = RenderQueueStatus.IDLE;
|
|
172
|
-
this.INFINITE_LOOP_LIMIT = 20;
|
|
173
|
-
this.infiniteLoopDetected = false;
|
|
174
|
-
this.loopRenderings = 0;
|
|
175
|
-
}
|
|
176
|
-
RenderQueue.prototype.add = function (s) {
|
|
177
|
-
var _this = this;
|
|
178
|
-
if (this.infiniteLoopDetected)
|
|
179
|
-
return;
|
|
180
|
-
if (this.status === RenderQueueStatus.RUNNING) {
|
|
181
|
-
this.temp.push(s);
|
|
182
|
-
}
|
|
183
|
-
else {
|
|
184
|
-
this.queue.add(s);
|
|
185
|
-
if (this.status === RenderQueueStatus.IDLE) {
|
|
186
|
-
this.status = RenderQueueStatus.PENDING;
|
|
187
|
-
setTimeout(function () {
|
|
188
|
-
_this.render();
|
|
189
|
-
}, 0);
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
};
|
|
193
|
-
RenderQueue.prototype.render = function () {
|
|
194
|
-
var _this = this;
|
|
195
|
-
logInfo('RenderQueue:render: begin, cycle:', ObservableGlobalState.renderCycle);
|
|
196
|
-
this.status = RenderQueueStatus.RUNNING;
|
|
197
|
-
ObservableGlobalState.renderCycle++;
|
|
198
|
-
var renderedComponentsCount = 0;
|
|
199
|
-
Array.from(this.queue)
|
|
200
|
-
.sort(function (s1, s2) { return s1.uid - s2.uid; })
|
|
201
|
-
.forEach(function (subscriber) {
|
|
202
|
-
subscriber.render(ObservableGlobalState.renderCycle) && renderedComponentsCount++;
|
|
203
|
-
});
|
|
204
|
-
this.queue.clear();
|
|
205
|
-
this.status = RenderQueueStatus.IDLE;
|
|
206
|
-
if (this.temp.length > 0) {
|
|
207
|
-
this.loopRenderings++;
|
|
208
|
-
if (this.loopRenderings > 2) {
|
|
209
|
-
logWarn.apply(void 0, __spreadArray(__spreadArray(['Sending value from publisher while jsx-component is rendering may cause an infinite loop. Loop renderings:', this.loopRenderings,
|
|
210
|
-
'. Most active publishers: ['], this.temp.map(function (ob) { return ob.constructor.name; }), false), [']'], false));
|
|
211
|
-
}
|
|
212
|
-
if (this.loopRenderings < this.INFINITE_LOOP_LIMIT) {
|
|
213
|
-
this.temp.forEach(function (publisherUID) {
|
|
214
|
-
_this.add(publisherUID);
|
|
215
|
-
});
|
|
216
|
-
this.temp.length = 0;
|
|
217
|
-
}
|
|
218
|
-
else {
|
|
219
|
-
this.infiniteLoopDetected = true;
|
|
220
|
-
logWarn('--Infinite Loop! The possible reason: An executed jsx-component X invoked new rendering of a jsx-component, ' +
|
|
221
|
-
'that caused mutation in publisher, that trigger again force render of X');
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
else {
|
|
225
|
-
this.loopRenderings = 0;
|
|
226
|
-
}
|
|
227
|
-
logInfo('RenderQueue:render: end, renderedComponentsCount:', renderedComponentsCount);
|
|
228
|
-
};
|
|
229
|
-
RenderQueue.self = new RenderQueue();
|
|
230
|
-
return RenderQueue;
|
|
231
|
-
}());
|
|
232
|
-
//--------------------------------------
|
|
233
|
-
// logging
|
|
234
|
-
//--------------------------------------
|
|
235
|
-
var logInfo = function () {
|
|
236
|
-
var msg = [];
|
|
237
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
238
|
-
msg[_i] = arguments[_i];
|
|
239
|
-
}
|
|
240
|
-
if (ObservableGlobalState.debug)
|
|
241
|
-
console.log.apply(console, msg);
|
|
242
|
-
};
|
|
243
|
-
var logWarn = function () {
|
|
244
|
-
var msg = [];
|
|
245
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
246
|
-
msg[_i] = arguments[_i];
|
|
247
|
-
}
|
|
248
|
-
console.warn.apply(console, msg);
|
|
249
|
-
};
|