@fncts/observable 0.0.31 → 0.0.33
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/Action.d.ts +2 -1
- package/AsyncScheduler.d.ts +1 -1
- package/LICENSE +26 -0
- package/ObservableRef/api.d.ts +3 -3
- package/ObservableRef/definition.d.ts +3 -3
- package/_cjs/Action.cjs +15 -16
- package/_cjs/Action.cjs.map +1 -1
- package/_cjs/AnimationFrameAction.cjs +30 -33
- package/_cjs/AnimationFrameAction.cjs.map +1 -1
- package/_cjs/AnimationFrameScheduler.cjs +30 -35
- package/_cjs/AnimationFrameScheduler.cjs.map +1 -1
- package/_cjs/AsyncAction.cjs +73 -88
- package/_cjs/AsyncAction.cjs.map +1 -1
- package/_cjs/AsyncScheduler.cjs +35 -41
- package/_cjs/AsyncScheduler.cjs.map +1 -1
- package/_cjs/BehaviorSubject.cjs +31 -37
- package/_cjs/BehaviorSubject.cjs.map +1 -1
- package/_cjs/Notification.cjs +65 -70
- package/_cjs/Notification.cjs.map +1 -1
- package/_cjs/Observable/api/connect.cjs +23 -25
- package/_cjs/Observable/api/connect.cjs.map +1 -1
- package/_cjs/Observable/api/connectable.cjs +46 -45
- package/_cjs/Observable/api/connectable.cjs.map +1 -1
- package/_cjs/Observable/api/fromCallback.cjs +44 -48
- package/_cjs/Observable/api/fromCallback.cjs.map +1 -1
- package/_cjs/Observable/api/fromEvent.cjs +15 -15
- package/_cjs/Observable/api/fromEvent.cjs.map +1 -1
- package/_cjs/Observable/api/index.cjs +32 -160
- package/_cjs/Observable/api/race.cjs +26 -30
- package/_cjs/Observable/api/race.cjs.map +1 -1
- package/_cjs/Observable/api/raceWith.cjs +14 -15
- package/_cjs/Observable/api/raceWith.cjs.map +1 -1
- package/_cjs/Observable/api/repeatWhen.cjs +54 -57
- package/_cjs/Observable/api/repeatWhen.cjs.map +1 -1
- package/_cjs/Observable/api/retryWhen.cjs +37 -41
- package/_cjs/Observable/api/retryWhen.cjs.map +1 -1
- package/_cjs/Observable/api/share.cjs +73 -83
- package/_cjs/Observable/api/share.cjs.map +1 -1
- package/_cjs/Observable/api/window.cjs +46 -43
- package/_cjs/Observable/api/window.cjs.map +1 -1
- package/_cjs/Observable/api/windowCount.cjs +45 -51
- package/_cjs/Observable/api/windowCount.cjs.map +1 -1
- package/_cjs/Observable/api/windowTime.cjs +73 -74
- package/_cjs/Observable/api/windowTime.cjs.map +1 -1
- package/_cjs/Observable/api/windowToggle.cjs +71 -74
- package/_cjs/Observable/api/windowToggle.cjs.map +1 -1
- package/_cjs/Observable/api/windowWhen.cjs +59 -55
- package/_cjs/Observable/api/windowWhen.cjs.map +1 -1
- package/_cjs/Observable/api.cjs +1858 -2033
- package/_cjs/Observable/api.cjs.map +1 -1
- package/_cjs/Observable/definition.cjs +107 -120
- package/_cjs/Observable/definition.cjs.map +1 -1
- package/_cjs/Observable/dom/animationFrames.cjs +30 -33
- package/_cjs/Observable/dom/animationFrames.cjs.map +1 -1
- package/_cjs/Observable/instances.cjs +0 -2
- package/_cjs/Observable.cjs +180 -215
- package/_cjs/ObservableRef/api.cjs +188 -156
- package/_cjs/ObservableRef/api.cjs.map +1 -1
- package/_cjs/ObservableRef/atomic.cjs +25 -28
- package/_cjs/ObservableRef/atomic.cjs.map +1 -1
- package/_cjs/ObservableRef/definition.cjs +32 -27
- package/_cjs/ObservableRef/definition.cjs.map +1 -1
- package/_cjs/ObservableRef.cjs +17 -39
- package/_cjs/Observer.cjs +0 -2
- package/_cjs/Operator.cjs +58 -61
- package/_cjs/Operator.cjs.map +1 -1
- package/_cjs/Scheduler.cjs +38 -37
- package/_cjs/Scheduler.cjs.map +1 -1
- package/_cjs/Subject.cjs +163 -202
- package/_cjs/Subject.cjs.map +1 -1
- package/_cjs/Subscriber.cjs +151 -170
- package/_cjs/Subscriber.cjs.map +1 -1
- package/_cjs/Subscription.cjs +98 -123
- package/_cjs/Subscription.cjs.map +1 -1
- package/_cjs/chunk.cjs +28 -0
- package/_cjs/config.cjs +11 -12
- package/_cjs/config.cjs.map +1 -1
- package/_cjs/global.cjs +0 -2
- package/_cjs/index.cjs +112 -36
- package/_cjs/internal/animationFrameProvider.cjs +32 -38
- package/_cjs/internal/animationFrameProvider.cjs.map +1 -1
- package/_cjs/internal/args.cjs +12 -12
- package/_cjs/internal/args.cjs.map +1 -1
- package/_cjs/internal/intervalProvider.cjs +15 -22
- package/_cjs/internal/intervalProvider.cjs.map +1 -1
- package/_cjs/internal/performanceTimestampProvider.cjs +10 -11
- package/_cjs/internal/performanceTimestampProvider.cjs.map +1 -1
- package/_cjs/internal/timeoutProvider.cjs +15 -22
- package/_cjs/internal/timeoutProvider.cjs.map +1 -1
- package/_cjs/internal/timestampProvider.cjs +10 -11
- package/_cjs/internal/timestampProvider.cjs.map +1 -1
- package/_cjs/internal/util.cjs +60 -68
- package/_cjs/internal/util.cjs.map +1 -1
- package/_mjs/Action.mjs +12 -8
- package/_mjs/Action.mjs.map +1 -1
- package/_mjs/AnimationFrameAction.mjs +25 -24
- package/_mjs/AnimationFrameAction.mjs.map +1 -1
- package/_mjs/AnimationFrameScheduler.mjs +25 -27
- package/_mjs/AnimationFrameScheduler.mjs.map +1 -1
- package/_mjs/AsyncAction.mjs +69 -79
- package/_mjs/AsyncAction.mjs.map +1 -1
- package/_mjs/AsyncScheduler.mjs +32 -34
- package/_mjs/AsyncScheduler.mjs.map +1 -1
- package/_mjs/BehaviorSubject.mjs +28 -29
- package/_mjs/BehaviorSubject.mjs.map +1 -1
- package/_mjs/Notification.mjs +57 -60
- package/_mjs/Notification.mjs.map +1 -1
- package/_mjs/Observable/api/connect.mjs +17 -17
- package/_mjs/Observable/api/connect.mjs.map +1 -1
- package/_mjs/Observable/api/connectable.mjs +39 -35
- package/_mjs/Observable/api/connectable.mjs.map +1 -1
- package/_mjs/Observable/api/fromCallback.mjs +40 -41
- package/_mjs/Observable/api/fromCallback.mjs.map +1 -1
- package/_mjs/Observable/api/fromEvent.mjs +12 -8
- package/_mjs/Observable/api/fromEvent.mjs.map +1 -1
- package/_mjs/Observable/api/index.mjs +15 -15
- package/_mjs/Observable/api/race.mjs +20 -22
- package/_mjs/Observable/api/race.mjs.map +1 -1
- package/_mjs/Observable/api/raceWith.mjs +11 -8
- package/_mjs/Observable/api/raceWith.mjs.map +1 -1
- package/_mjs/Observable/api/repeatWhen.mjs +48 -49
- package/_mjs/Observable/api/repeatWhen.mjs.map +1 -1
- package/_mjs/Observable/api/retryWhen.mjs +31 -33
- package/_mjs/Observable/api/retryWhen.mjs.map +1 -1
- package/_mjs/Observable/api/share.mjs +65 -74
- package/_mjs/Observable/api/share.mjs.map +1 -1
- package/_mjs/Observable/api/window.mjs +38 -34
- package/_mjs/Observable/api/window.mjs.map +1 -1
- package/_mjs/Observable/api/windowCount.mjs +39 -43
- package/_mjs/Observable/api/windowCount.mjs.map +1 -1
- package/_mjs/Observable/api/windowTime.mjs +63 -64
- package/_mjs/Observable/api/windowTime.mjs.map +1 -1
- package/_mjs/Observable/api/windowToggle.mjs +58 -62
- package/_mjs/Observable/api/windowToggle.mjs.map +1 -1
- package/_mjs/Observable/api/windowWhen.mjs +50 -46
- package/_mjs/Observable/api/windowWhen.mjs.map +1 -1
- package/_mjs/Observable/api.mjs +1822 -2030
- package/_mjs/Observable/api.mjs.map +1 -1
- package/_mjs/Observable/definition.mjs +94 -108
- package/_mjs/Observable/definition.mjs.map +1 -1
- package/_mjs/Observable/dom/animationFrames.mjs +23 -23
- package/_mjs/Observable/dom/animationFrames.mjs.map +1 -1
- package/_mjs/Observable/instances.mjs +0 -2
- package/_mjs/Observable.mjs +20 -25
- package/_mjs/ObservableRef/api.mjs +180 -144
- package/_mjs/ObservableRef/api.mjs.map +1 -1
- package/_mjs/ObservableRef/atomic.mjs +21 -20
- package/_mjs/ObservableRef/atomic.mjs.map +1 -1
- package/_mjs/ObservableRef/definition.mjs +29 -19
- package/_mjs/ObservableRef/definition.mjs.map +1 -1
- package/_mjs/ObservableRef.mjs +4 -5
- package/_mjs/Observer.mjs +0 -2
- package/_mjs/Operator.mjs +50 -50
- package/_mjs/Operator.mjs.map +1 -1
- package/_mjs/Scheduler.mjs +30 -26
- package/_mjs/Scheduler.mjs.map +1 -1
- package/_mjs/Subject.mjs +154 -191
- package/_mjs/Subject.mjs.map +1 -1
- package/_mjs/Subscriber.mjs +136 -156
- package/_mjs/Subscriber.mjs.map +1 -1
- package/_mjs/Subscription.mjs +90 -113
- package/_mjs/Subscription.mjs.map +1 -1
- package/_mjs/config.mjs +10 -6
- package/_mjs/config.mjs.map +1 -1
- package/_mjs/global.mjs +0 -2
- package/_mjs/index.mjs +14 -15
- package/_mjs/internal/animationFrameProvider.mjs +28 -30
- package/_mjs/internal/animationFrameProvider.mjs.map +1 -1
- package/_mjs/internal/args.mjs +9 -5
- package/_mjs/internal/args.mjs.map +1 -1
- package/_mjs/internal/intervalProvider.mjs +14 -16
- package/_mjs/internal/intervalProvider.mjs.map +1 -1
- package/_mjs/internal/performanceTimestampProvider.mjs +9 -5
- package/_mjs/internal/performanceTimestampProvider.mjs.map +1 -1
- package/_mjs/internal/timeoutProvider.mjs +14 -16
- package/_mjs/internal/timeoutProvider.mjs.map +1 -1
- package/_mjs/internal/timestampProvider.mjs +9 -5
- package/_mjs/internal/timestampProvider.mjs.map +1 -1
- package/_mjs/internal/util.mjs +54 -59
- package/_mjs/internal/util.mjs.map +1 -1
- package/_src/Action.ts +2 -0
- package/_src/AsyncScheduler.ts +2 -0
- package/_src/Observable/api.ts +4 -4
- package/_src/ObservableRef/api.ts +36 -12
- package/_src/ObservableRef/definition.ts +12 -4
- package/package.json +6 -2
- package/_cjs/Observable/api/index.cjs.map +0 -1
- package/_cjs/Observable/instances.cjs.map +0 -1
- package/_cjs/Observable.cjs.map +0 -1
- package/_cjs/ObservableRef.cjs.map +0 -1
- package/_cjs/Observer.cjs.map +0 -1
- package/_cjs/global.cjs.map +0 -1
- package/_cjs/index.cjs.map +0 -1
- package/_mjs/Observable/api/index.mjs.map +0 -1
- package/_mjs/Observable/instances.mjs.map +0 -1
- package/_mjs/Observable.mjs.map +0 -1
- package/_mjs/ObservableRef.mjs.map +0 -1
- package/_mjs/Observer.mjs.map +0 -1
- package/_mjs/global.mjs.map +0 -1
- package/_mjs/index.mjs.map +0 -1
|
@@ -1,82 +1,73 @@
|
|
|
1
|
-
import * as tsplus_module_1 from "@fncts/observable/Subject";
|
|
2
1
|
import * as tsplus_module_2 from "@fncts/observable/Observable";
|
|
2
|
+
import * as tsplus_module_1 from "@fncts/observable/Subject";
|
|
3
3
|
import * as tsplus_module_3 from "@fncts/observable/Subscriber";
|
|
4
4
|
import * as tsplus_module_4 from "@fncts/observable/Observable/api";
|
|
5
|
+
//#region build/esm/Observable/api/share.js
|
|
5
6
|
/**
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
cancelReset();
|
|
61
|
-
resetConnection = handleReset(reset, resetOnComplete, environment);
|
|
62
|
-
dest.complete();
|
|
63
|
-
}
|
|
64
|
-
});
|
|
65
|
-
tsplus_module_4.from(fa).provideEnvironment(environment).subscribe(connection);
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
};
|
|
7
|
+
* @tsplus pipeable fncts.observable.Observable share
|
|
8
|
+
*/
|
|
9
|
+
function share(options = {}) {
|
|
10
|
+
return (fa) => {
|
|
11
|
+
const { connector = () => new tsplus_module_1.Subject(), resetOnDefect = true, resetOnComplete = true, resetOnRefCountZero = true } = options;
|
|
12
|
+
let connection = null;
|
|
13
|
+
let resetConnection = null;
|
|
14
|
+
let subject = null;
|
|
15
|
+
let refCount = 0;
|
|
16
|
+
let hasCompleted = false;
|
|
17
|
+
let hasErrored = false;
|
|
18
|
+
const cancelReset = () => {
|
|
19
|
+
resetConnection?.unsubscribe();
|
|
20
|
+
resetConnection = null;
|
|
21
|
+
};
|
|
22
|
+
const reset = () => {
|
|
23
|
+
cancelReset();
|
|
24
|
+
connection = subject = null;
|
|
25
|
+
hasCompleted = hasErrored = false;
|
|
26
|
+
};
|
|
27
|
+
const resetAndUnsubscribe = () => {
|
|
28
|
+
const conn = connection;
|
|
29
|
+
reset();
|
|
30
|
+
conn?.unsubscribe();
|
|
31
|
+
};
|
|
32
|
+
return new tsplus_module_2.Observable((subscriber, environment) => {
|
|
33
|
+
refCount++;
|
|
34
|
+
if (!hasErrored && !hasCompleted) cancelReset();
|
|
35
|
+
const dest = subject ||= connector();
|
|
36
|
+
subscriber.add(() => {
|
|
37
|
+
refCount--;
|
|
38
|
+
if (refCount === 0 && !hasErrored && !hasCompleted) resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero, environment);
|
|
39
|
+
});
|
|
40
|
+
dest.provideEnvironment(environment).subscribe(subscriber);
|
|
41
|
+
if (!connection) {
|
|
42
|
+
connection = new tsplus_module_3.Subscriber({
|
|
43
|
+
next: (value) => dest.next(value),
|
|
44
|
+
error: (defect) => {
|
|
45
|
+
hasErrored = true;
|
|
46
|
+
cancelReset();
|
|
47
|
+
resetConnection = handleReset(reset, resetOnDefect, environment, defect);
|
|
48
|
+
dest.error(defect);
|
|
49
|
+
},
|
|
50
|
+
complete: () => {
|
|
51
|
+
hasCompleted = true;
|
|
52
|
+
cancelReset();
|
|
53
|
+
resetConnection = handleReset(reset, resetOnComplete, environment);
|
|
54
|
+
dest.complete();
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
tsplus_module_4.from(fa).provideEnvironment(environment).subscribe(connection);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
};
|
|
69
61
|
}
|
|
70
62
|
function handleReset(reset, on, environment, ...args) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
}
|
|
78
|
-
return tsplus_module_4.take(1)(on(...args)).provideEnvironment(environment).subscribe({
|
|
79
|
-
next: () => reset()
|
|
80
|
-
});
|
|
63
|
+
if (on === true) {
|
|
64
|
+
reset();
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
if (on === false) return null;
|
|
68
|
+
return tsplus_module_4.take(1)(on(...args)).provideEnvironment(environment).subscribe({ next: () => reset() });
|
|
81
69
|
}
|
|
70
|
+
//#endregion
|
|
71
|
+
export { share };
|
|
72
|
+
|
|
82
73
|
//# sourceMappingURL=share.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"share.mjs","names":["share","
|
|
1
|
+
{"version":3,"file":"share.mjs","names":[],"sources":["../../../esm/Observable/api/share.js"],"sourcesContent":["import * as tsplus_module_1 from \"@fncts/observable/Subject\";\nimport * as tsplus_module_2 from \"@fncts/observable/Observable\";\nimport * as tsplus_module_3 from \"@fncts/observable/Subscriber\";\nimport * as tsplus_module_4 from \"@fncts/observable/Observable/api\";\n/**\n * @tsplus pipeable fncts.observable.Observable share\n */\nexport function share(options = {}) {\n return (fa) => {\n const { connector = () => new tsplus_module_1.Subject(), resetOnDefect = true, resetOnComplete = true, resetOnRefCountZero = true, } = options;\n let connection = null;\n let resetConnection = null;\n let subject = null;\n let refCount = 0;\n let hasCompleted = false;\n let hasErrored = false;\n const cancelReset = () => {\n resetConnection?.unsubscribe();\n resetConnection = null;\n };\n const reset = () => {\n cancelReset();\n connection = subject = null;\n hasCompleted = hasErrored = false;\n };\n const resetAndUnsubscribe = () => {\n const conn = connection;\n reset();\n conn?.unsubscribe();\n };\n return new tsplus_module_2.Observable((subscriber, environment) => {\n refCount++;\n if (!hasErrored && !hasCompleted) {\n cancelReset();\n }\n const dest = (subject ||= connector());\n subscriber.add(() => {\n refCount--;\n if (refCount === 0 && !hasErrored && !hasCompleted) {\n resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero, environment);\n }\n });\n dest.provideEnvironment(environment).subscribe(subscriber);\n if (!connection) {\n connection = new tsplus_module_3.Subscriber({\n next: (value) => dest.next(value),\n error: (defect) => {\n hasErrored = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnDefect, environment, defect);\n dest.error(defect);\n },\n complete: () => {\n hasCompleted = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnComplete, environment);\n dest.complete();\n },\n });\n tsplus_module_4.from(fa).provideEnvironment(environment).subscribe(connection);\n }\n });\n };\n}\nfunction handleReset(reset, on, environment, ...args) {\n if (on === true) {\n reset();\n return null;\n }\n if (on === false) {\n return null;\n }\n return tsplus_module_4.take(1)(on(...args))\n .provideEnvironment(environment)\n .subscribe({ next: () => reset() });\n}\n//# sourceMappingURL=share.js.map"],"mappings":";;;;;;;;AAOA,SAAgB,MAAM,UAAU,EAAE,EAAE;AAChC,SAAQ,OAAO;EACX,MAAM,EAAE,kBAAkB,IAAI,gBAAgB,SAAS,EAAE,gBAAgB,MAAM,kBAAkB,MAAM,sBAAsB,SAAU;EACvI,IAAI,aAAa;EACjB,IAAI,kBAAkB;EACtB,IAAI,UAAU;EACd,IAAI,WAAW;EACf,IAAI,eAAe;EACnB,IAAI,aAAa;EACjB,MAAM,oBAAoB;AACtB,oBAAiB,aAAa;AAC9B,qBAAkB;;EAEtB,MAAM,cAAc;AAChB,gBAAa;AACb,gBAAa,UAAU;AACvB,kBAAe,aAAa;;EAEhC,MAAM,4BAA4B;GAC9B,MAAM,OAAO;AACb,UAAO;AACP,SAAM,aAAa;;AAEvB,SAAO,IAAI,gBAAgB,YAAY,YAAY,gBAAgB;AAC/D;AACA,OAAI,CAAC,cAAc,CAAC,aAChB,cAAa;GAEjB,MAAM,OAAQ,YAAY,WAAW;AACrC,cAAW,UAAU;AACjB;AACA,QAAI,aAAa,KAAK,CAAC,cAAc,CAAC,aAClC,mBAAkB,YAAY,qBAAqB,qBAAqB,YAAY;KAE1F;AACF,QAAK,mBAAmB,YAAY,CAAC,UAAU,WAAW;AAC1D,OAAI,CAAC,YAAY;AACb,iBAAa,IAAI,gBAAgB,WAAW;KACxC,OAAO,UAAU,KAAK,KAAK,MAAM;KACjC,QAAQ,WAAW;AACf,mBAAa;AACb,mBAAa;AACb,wBAAkB,YAAY,OAAO,eAAe,aAAa,OAAO;AACxE,WAAK,MAAM,OAAO;;KAEtB,gBAAgB;AACZ,qBAAe;AACf,mBAAa;AACb,wBAAkB,YAAY,OAAO,iBAAiB,YAAY;AAClE,WAAK,UAAU;;KAEtB,CAAC;AACF,oBAAgB,KAAK,GAAG,CAAC,mBAAmB,YAAY,CAAC,UAAU,WAAW;;IAEpF;;;AAGV,SAAS,YAAY,OAAO,IAAI,aAAa,GAAG,MAAM;AAClD,KAAI,OAAO,MAAM;AACb,SAAO;AACP,SAAO;;AAEX,KAAI,OAAO,MACP,QAAO;AAEX,QAAO,gBAAgB,KAAK,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,CACtC,mBAAmB,YAAY,CAC/B,UAAU,EAAE,YAAY,OAAO,EAAE,CAAC"}
|
|
@@ -1,40 +1,44 @@
|
|
|
1
1
|
import * as tsplus_module_1 from "@fncts/observable/Observable";
|
|
2
|
-
import * as tsplus_module_2 from "@fncts/observable/Subject";
|
|
3
2
|
import * as tsplus_module_3 from "@fncts/observable/Operator";
|
|
3
|
+
import * as tsplus_module_2 from "@fncts/observable/Subject";
|
|
4
4
|
import * as tsplus_module_4 from "@fncts/observable/internal/util";
|
|
5
|
+
//#region build/esm/Observable/api/window.js
|
|
5
6
|
/**
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
7
|
+
* @tsplus pipeable fncts.observable.Observable window
|
|
8
|
+
*/
|
|
9
|
+
function window(windowBoundaries) {
|
|
10
|
+
return (fa) => {
|
|
11
|
+
return new tsplus_module_1.Observable((subscriber, environment) => {
|
|
12
|
+
let windowSubject = new tsplus_module_2.Subject();
|
|
13
|
+
subscriber.next(windowSubject.asObservable());
|
|
14
|
+
const errorHandler = (err) => {
|
|
15
|
+
windowSubject.error(err);
|
|
16
|
+
subscriber.error(err);
|
|
17
|
+
};
|
|
18
|
+
fa.provideEnvironment(environment).subscribe(tsplus_module_3.operate_({
|
|
19
|
+
next: (value) => windowSubject.next(value),
|
|
20
|
+
error: errorHandler,
|
|
21
|
+
complete: () => {
|
|
22
|
+
windowSubject.complete();
|
|
23
|
+
subscriber.complete();
|
|
24
|
+
}
|
|
25
|
+
})(subscriber));
|
|
26
|
+
windowBoundaries.subscribe(tsplus_module_3.operatorSubscriber(subscriber, {
|
|
27
|
+
next: () => {
|
|
28
|
+
windowSubject.complete();
|
|
29
|
+
subscriber.next(windowSubject = new tsplus_module_2.Subject());
|
|
30
|
+
},
|
|
31
|
+
complete: tsplus_module_4.noop,
|
|
32
|
+
error: errorHandler
|
|
33
|
+
}));
|
|
34
|
+
return () => {
|
|
35
|
+
windowSubject.unsubscribe();
|
|
36
|
+
windowSubject = null;
|
|
37
|
+
};
|
|
38
|
+
});
|
|
39
|
+
};
|
|
39
40
|
}
|
|
41
|
+
//#endregion
|
|
42
|
+
export { window };
|
|
43
|
+
|
|
40
44
|
//# sourceMappingURL=window.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"window.mjs","names":["
|
|
1
|
+
{"version":3,"file":"window.mjs","names":[],"sources":["../../../esm/Observable/api/window.js"],"sourcesContent":["import * as tsplus_module_1 from \"@fncts/observable/Observable\";\nimport * as tsplus_module_2 from \"@fncts/observable/Subject\";\nimport * as tsplus_module_3 from \"@fncts/observable/Operator\";\nimport * as tsplus_module_4 from \"@fncts/observable/internal/util\";\n/**\n * @tsplus pipeable fncts.observable.Observable window\n */\nexport function window(windowBoundaries) {\n return (fa) => {\n return new tsplus_module_1.Observable((subscriber, environment) => {\n let windowSubject = new tsplus_module_2.Subject();\n subscriber.next(windowSubject.asObservable());\n const errorHandler = (err) => {\n windowSubject.error(err);\n subscriber.error(err);\n };\n fa.provideEnvironment(environment).subscribe(tsplus_module_3.operate_({\n next: (value) => windowSubject.next(value),\n error: errorHandler,\n complete: () => {\n windowSubject.complete();\n subscriber.complete();\n },\n })(subscriber));\n windowBoundaries.subscribe(tsplus_module_3.operatorSubscriber(subscriber, {\n next: () => {\n windowSubject.complete();\n subscriber.next((windowSubject = new tsplus_module_2.Subject()));\n },\n complete: tsplus_module_4.noop,\n error: errorHandler,\n }));\n return () => {\n windowSubject.unsubscribe();\n windowSubject = null;\n };\n });\n };\n}\n//# sourceMappingURL=window.js.map"],"mappings":";;;;;;;;AAOA,SAAgB,OAAO,kBAAkB;AACrC,SAAQ,OAAO;AACX,SAAO,IAAI,gBAAgB,YAAY,YAAY,gBAAgB;GAC/D,IAAI,gBAAgB,IAAI,gBAAgB,SAAS;AACjD,cAAW,KAAK,cAAc,cAAc,CAAC;GAC7C,MAAM,gBAAgB,QAAQ;AAC1B,kBAAc,MAAM,IAAI;AACxB,eAAW,MAAM,IAAI;;AAEzB,MAAG,mBAAmB,YAAY,CAAC,UAAU,gBAAgB,SAAS;IAClE,OAAO,UAAU,cAAc,KAAK,MAAM;IAC1C,OAAO;IACP,gBAAgB;AACZ,mBAAc,UAAU;AACxB,gBAAW,UAAU;;IAE5B,CAAC,CAAC,WAAW,CAAC;AACf,oBAAiB,UAAU,gBAAgB,mBAAmB,YAAY;IACtE,YAAY;AACR,mBAAc,UAAU;AACxB,gBAAW,KAAM,gBAAgB,IAAI,gBAAgB,SAAS,CAAE;;IAEpE,UAAU,gBAAgB;IAC1B,OAAO;IACV,CAAC,CAAC;AACH,gBAAa;AACT,kBAAc,aAAa;AAC3B,oBAAgB;;IAEtB"}
|
|
@@ -1,48 +1,44 @@
|
|
|
1
1
|
import * as tsplus_module_1 from "@fncts/observable/Observable";
|
|
2
|
-
import * as tsplus_module_2 from "@fncts/observable/Subject";
|
|
3
2
|
import * as tsplus_module_3 from "@fncts/observable/Operator";
|
|
3
|
+
import * as tsplus_module_2 from "@fncts/observable/Subject";
|
|
4
|
+
//#region build/esm/Observable/api/windowCount.js
|
|
4
5
|
/**
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
subscriber.error(err);
|
|
40
|
-
},
|
|
41
|
-
finalize: () => {
|
|
42
|
-
windows = null;
|
|
43
|
-
}
|
|
44
|
-
})(subscriber));
|
|
45
|
-
});
|
|
46
|
-
};
|
|
6
|
+
* @tsplus pipeable fncts.observable.Observable windowCount
|
|
7
|
+
*/
|
|
8
|
+
function windowCount(windowSize, startWindowEvery = 0) {
|
|
9
|
+
return (fa) => {
|
|
10
|
+
const startEvery = startWindowEvery > 0 ? startWindowEvery : windowSize;
|
|
11
|
+
return new tsplus_module_1.Observable((subscriber, environment) => {
|
|
12
|
+
let windows = [new tsplus_module_2.Subject()];
|
|
13
|
+
let count = 0;
|
|
14
|
+
subscriber.next(windows[0].asObservable());
|
|
15
|
+
fa.provideEnvironment(environment).subscribe(tsplus_module_3.operate_({
|
|
16
|
+
next: (value) => {
|
|
17
|
+
for (const window of windows) window.next(value);
|
|
18
|
+
const c = count - windowSize + 1;
|
|
19
|
+
if (c >= 0 && c % startEvery === 0) windows.shift().complete();
|
|
20
|
+
if (++count && startEvery === 0) {
|
|
21
|
+
const window = new tsplus_module_2.Subject();
|
|
22
|
+
windows.push(window);
|
|
23
|
+
subscriber.next(window.asObservable());
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
complete: () => {
|
|
27
|
+
while (windows.length > 0) windows.shift().complete();
|
|
28
|
+
subscriber.complete();
|
|
29
|
+
},
|
|
30
|
+
error: (err) => {
|
|
31
|
+
while (windows.length > 0) windows.shift().error(err);
|
|
32
|
+
subscriber.error(err);
|
|
33
|
+
},
|
|
34
|
+
finalize: () => {
|
|
35
|
+
windows = null;
|
|
36
|
+
}
|
|
37
|
+
})(subscriber));
|
|
38
|
+
});
|
|
39
|
+
};
|
|
47
40
|
}
|
|
41
|
+
//#endregion
|
|
42
|
+
export { windowCount };
|
|
43
|
+
|
|
48
44
|
//# sourceMappingURL=windowCount.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"windowCount.mjs","names":["
|
|
1
|
+
{"version":3,"file":"windowCount.mjs","names":[],"sources":["../../../esm/Observable/api/windowCount.js"],"sourcesContent":["import * as tsplus_module_1 from \"@fncts/observable/Observable\";\nimport * as tsplus_module_2 from \"@fncts/observable/Subject\";\nimport * as tsplus_module_3 from \"@fncts/observable/Operator\";\n/**\n * @tsplus pipeable fncts.observable.Observable windowCount\n */\nexport function windowCount(windowSize, startWindowEvery = 0) {\n return (fa) => {\n const startEvery = startWindowEvery > 0 ? startWindowEvery : windowSize;\n return new tsplus_module_1.Observable((subscriber, environment) => {\n let windows = [new tsplus_module_2.Subject()];\n let count = 0;\n subscriber.next(windows[0].asObservable());\n fa.provideEnvironment(environment).subscribe(tsplus_module_3.operate_({\n next: (value) => {\n for (const window of windows) {\n window.next(value);\n }\n const c = count - windowSize + 1;\n if (c >= 0 && c % startEvery === 0) {\n windows.shift().complete();\n }\n if (++count && startEvery === 0) {\n const window = new tsplus_module_2.Subject();\n windows.push(window);\n subscriber.next(window.asObservable());\n }\n },\n complete: () => {\n while (windows.length > 0) {\n windows.shift().complete();\n }\n subscriber.complete();\n },\n error: (err) => {\n while (windows.length > 0) {\n windows.shift().error(err);\n }\n subscriber.error(err);\n },\n finalize: () => {\n windows = null;\n },\n })(subscriber));\n });\n };\n}\n//# sourceMappingURL=windowCount.js.map"],"mappings":";;;;;;;AAMA,SAAgB,YAAY,YAAY,mBAAmB,GAAG;AAC1D,SAAQ,OAAO;EACX,MAAM,aAAa,mBAAmB,IAAI,mBAAmB;AAC7D,SAAO,IAAI,gBAAgB,YAAY,YAAY,gBAAgB;GAC/D,IAAI,UAAU,CAAC,IAAI,gBAAgB,SAAS,CAAC;GAC7C,IAAI,QAAQ;AACZ,cAAW,KAAK,QAAQ,GAAG,cAAc,CAAC;AAC1C,MAAG,mBAAmB,YAAY,CAAC,UAAU,gBAAgB,SAAS;IAClE,OAAO,UAAU;AACb,UAAK,MAAM,UAAU,QACjB,QAAO,KAAK,MAAM;KAEtB,MAAM,IAAI,QAAQ,aAAa;AAC/B,SAAI,KAAK,KAAK,IAAI,eAAe,EAC7B,SAAQ,OAAO,CAAC,UAAU;AAE9B,SAAI,EAAE,SAAS,eAAe,GAAG;MAC7B,MAAM,SAAS,IAAI,gBAAgB,SAAS;AAC5C,cAAQ,KAAK,OAAO;AACpB,iBAAW,KAAK,OAAO,cAAc,CAAC;;;IAG9C,gBAAgB;AACZ,YAAO,QAAQ,SAAS,EACpB,SAAQ,OAAO,CAAC,UAAU;AAE9B,gBAAW,UAAU;;IAEzB,QAAQ,QAAQ;AACZ,YAAO,QAAQ,SAAS,EACpB,SAAQ,OAAO,CAAC,MAAM,IAAI;AAE9B,gBAAW,MAAM,IAAI;;IAEzB,gBAAgB;AACZ,eAAU;;IAEjB,CAAC,CAAC,WAAW,CAAC;IACjB"}
|
|
@@ -1,70 +1,69 @@
|
|
|
1
1
|
import * as tsplus_module_1 from "@fncts/observable/AsyncScheduler";
|
|
2
2
|
import * as tsplus_module_2 from "@fncts/observable/Observable";
|
|
3
|
-
import * as tsplus_module_3 from "@fncts/observable/Subscription";
|
|
4
|
-
import * as tsplus_module_4 from "@fncts/observable/Subject";
|
|
5
3
|
import * as tsplus_module_5 from "@fncts/observable/Operator";
|
|
6
|
-
import
|
|
4
|
+
import * as tsplus_module_4 from "@fncts/observable/Subject";
|
|
5
|
+
import * as tsplus_module_3 from "@fncts/observable/Subscription";
|
|
7
6
|
import { arrayRemove } from "@fncts/observable/internal/util";
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
};
|
|
67
|
-
});
|
|
68
|
-
};
|
|
7
|
+
import { popScheduler } from "@fncts/observable/internal/args";
|
|
8
|
+
//#region build/esm/Observable/api/windowTime.js
|
|
9
|
+
function windowTime(windowTimeSpan, ...args) {
|
|
10
|
+
return (fa) => {
|
|
11
|
+
const scheduler = popScheduler(args) ?? tsplus_module_1.asyncScheduler;
|
|
12
|
+
const windowCreationInterval = args[0] ?? null;
|
|
13
|
+
const maxWindowSize = args[1] || Infinity;
|
|
14
|
+
return new tsplus_module_2.Observable((subscriber, environment) => {
|
|
15
|
+
let windowRecords = [];
|
|
16
|
+
let restartOnClose = false;
|
|
17
|
+
const closeWindow = (record) => {
|
|
18
|
+
const { window, subs } = record;
|
|
19
|
+
window.complete();
|
|
20
|
+
subs.unsubscribe();
|
|
21
|
+
arrayRemove(windowRecords, record);
|
|
22
|
+
restartOnClose && startWindow();
|
|
23
|
+
};
|
|
24
|
+
const startWindow = () => {
|
|
25
|
+
if (windowRecords) {
|
|
26
|
+
const subs = new tsplus_module_3.Subscription();
|
|
27
|
+
subscriber.add(subs);
|
|
28
|
+
const window = new tsplus_module_4.Subject();
|
|
29
|
+
const record = {
|
|
30
|
+
window,
|
|
31
|
+
subs,
|
|
32
|
+
seen: 0
|
|
33
|
+
};
|
|
34
|
+
windowRecords.push(record);
|
|
35
|
+
subscriber.next(window.asObservable());
|
|
36
|
+
subs.add(scheduler.schedule(() => closeWindow(record), windowTimeSpan));
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
windowCreationInterval !== null && windowCreationInterval >= 0 ? subscriber.add(scheduler.schedule(function() {
|
|
40
|
+
startWindow();
|
|
41
|
+
!this._closed && subscriber.add(this.schedule(null, windowCreationInterval));
|
|
42
|
+
}, windowCreationInterval)) : restartOnClose = true;
|
|
43
|
+
startWindow();
|
|
44
|
+
const loop = (cb) => windowRecords.slice().forEach(cb);
|
|
45
|
+
const terminate = (cb) => {
|
|
46
|
+
loop(({ window }) => cb(window));
|
|
47
|
+
cb(subscriber);
|
|
48
|
+
subscriber.unsubscribe();
|
|
49
|
+
};
|
|
50
|
+
fa.provideEnvironment(environment).subscribe(tsplus_module_5.operate_({
|
|
51
|
+
next: (value) => {
|
|
52
|
+
loop((record) => {
|
|
53
|
+
record.window.next(value);
|
|
54
|
+
maxWindowSize <= ++record.seen && closeWindow(record);
|
|
55
|
+
});
|
|
56
|
+
},
|
|
57
|
+
error: (err) => terminate((consumer) => consumer.error(err)),
|
|
58
|
+
complete: () => terminate((consumer) => consumer.complete())
|
|
59
|
+
})(subscriber));
|
|
60
|
+
return () => {
|
|
61
|
+
windowRecords = null;
|
|
62
|
+
};
|
|
63
|
+
});
|
|
64
|
+
};
|
|
69
65
|
}
|
|
66
|
+
//#endregion
|
|
67
|
+
export { windowTime };
|
|
68
|
+
|
|
70
69
|
//# sourceMappingURL=windowTime.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"windowTime.mjs","names":[
|
|
1
|
+
{"version":3,"file":"windowTime.mjs","names":[],"sources":["../../../esm/Observable/api/windowTime.js"],"sourcesContent":["import * as tsplus_module_1 from \"@fncts/observable/AsyncScheduler\";\nimport * as tsplus_module_2 from \"@fncts/observable/Observable\";\nimport * as tsplus_module_3 from \"@fncts/observable/Subscription\";\nimport * as tsplus_module_4 from \"@fncts/observable/Subject\";\nimport * as tsplus_module_5 from \"@fncts/observable/Operator\";\nimport { popScheduler } from \"@fncts/observable/internal/args\";\nimport { arrayRemove } from \"@fncts/observable/internal/util\";\nexport function windowTime(windowTimeSpan, ...args) {\n return (fa) => {\n const scheduler = popScheduler(args) ?? tsplus_module_1.asyncScheduler;\n const windowCreationInterval = args[0] ?? null;\n const maxWindowSize = args[1] || Infinity;\n return new tsplus_module_2.Observable((subscriber, environment) => {\n let windowRecords = [];\n let restartOnClose = false;\n const closeWindow = (record) => {\n const { window, subs } = record;\n window.complete();\n subs.unsubscribe();\n arrayRemove(windowRecords, record);\n restartOnClose && startWindow();\n };\n const startWindow = () => {\n if (windowRecords) {\n const subs = new tsplus_module_3.Subscription();\n subscriber.add(subs);\n const window = new tsplus_module_4.Subject();\n const record = {\n window,\n subs,\n seen: 0,\n };\n windowRecords.push(record);\n subscriber.next(window.asObservable());\n subs.add(scheduler.schedule(() => closeWindow(record), windowTimeSpan));\n }\n };\n windowCreationInterval !== null && windowCreationInterval >= 0\n ? subscriber.add(scheduler.schedule(function () {\n startWindow();\n !this._closed && subscriber.add(this.schedule(null, windowCreationInterval));\n }, windowCreationInterval))\n : (restartOnClose = true);\n startWindow();\n const loop = (cb) => windowRecords.slice().forEach(cb);\n const terminate = (cb) => {\n loop(({ window }) => cb(window));\n cb(subscriber);\n subscriber.unsubscribe();\n };\n fa.provideEnvironment(environment).subscribe(tsplus_module_5.operate_({\n next: (value) => {\n loop((record) => {\n record.window.next(value);\n maxWindowSize <= ++record.seen && closeWindow(record);\n });\n },\n error: (err) => terminate((consumer) => consumer.error(err)),\n complete: () => terminate((consumer) => consumer.complete()),\n })(subscriber));\n return () => {\n windowRecords = null;\n };\n });\n };\n}\n//# sourceMappingURL=windowTime.js.map"],"mappings":";;;;;;;;AAOA,SAAgB,WAAW,gBAAgB,GAAG,MAAM;AAChD,SAAQ,OAAO;EACX,MAAM,YAAY,aAAa,KAAK,IAAI,gBAAgB;EACxD,MAAM,yBAAyB,KAAK,MAAM;EAC1C,MAAM,gBAAgB,KAAK,MAAM;AACjC,SAAO,IAAI,gBAAgB,YAAY,YAAY,gBAAgB;GAC/D,IAAI,gBAAgB,EAAE;GACtB,IAAI,iBAAiB;GACrB,MAAM,eAAe,WAAW;IAC5B,MAAM,EAAE,QAAQ,SAAS;AACzB,WAAO,UAAU;AACjB,SAAK,aAAa;AAClB,gBAAY,eAAe,OAAO;AAClC,sBAAkB,aAAa;;GAEnC,MAAM,oBAAoB;AACtB,QAAI,eAAe;KACf,MAAM,OAAO,IAAI,gBAAgB,cAAc;AAC/C,gBAAW,IAAI,KAAK;KACpB,MAAM,SAAS,IAAI,gBAAgB,SAAS;KAC5C,MAAM,SAAS;MACX;MACA;MACA,MAAM;MACT;AACD,mBAAc,KAAK,OAAO;AAC1B,gBAAW,KAAK,OAAO,cAAc,CAAC;AACtC,UAAK,IAAI,UAAU,eAAe,YAAY,OAAO,EAAE,eAAe,CAAC;;;AAG/E,8BAA2B,QAAQ,0BAA0B,IACvD,WAAW,IAAI,UAAU,SAAS,WAAY;AAC5C,iBAAa;AACb,KAAC,KAAK,WAAW,WAAW,IAAI,KAAK,SAAS,MAAM,uBAAuB,CAAC;MAC7E,uBAAuB,CAAC,GACxB,iBAAiB;AACxB,gBAAa;GACb,MAAM,QAAQ,OAAO,cAAc,OAAO,CAAC,QAAQ,GAAG;GACtD,MAAM,aAAa,OAAO;AACtB,UAAM,EAAE,aAAa,GAAG,OAAO,CAAC;AAChC,OAAG,WAAW;AACd,eAAW,aAAa;;AAE5B,MAAG,mBAAmB,YAAY,CAAC,UAAU,gBAAgB,SAAS;IAClE,OAAO,UAAU;AACb,WAAM,WAAW;AACb,aAAO,OAAO,KAAK,MAAM;AACzB,uBAAiB,EAAE,OAAO,QAAQ,YAAY,OAAO;OACvD;;IAEN,QAAQ,QAAQ,WAAW,aAAa,SAAS,MAAM,IAAI,CAAC;IAC5D,gBAAgB,WAAW,aAAa,SAAS,UAAU,CAAC;IAC/D,CAAC,CAAC,WAAW,CAAC;AACf,gBAAa;AACT,oBAAgB;;IAEtB"}
|