@fncts/observable 0.0.1

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.
Files changed (259) hide show
  1. package/Action.d.ts +6 -0
  2. package/AnimationFrameAction.d.ts +11 -0
  3. package/AnimationFrameScheduler.d.ts +6 -0
  4. package/AsyncAction.d.ts +19 -0
  5. package/AsyncScheduler.d.ts +11 -0
  6. package/BehaviorSubject.d.ts +10 -0
  7. package/Notification.d.ts +59 -0
  8. package/Observable/api/connect.d.ts +10 -0
  9. package/Observable/api/connectable.d.ts +24 -0
  10. package/Observable/api/fromCallback.d.ts +11 -0
  11. package/Observable/api/fromEvent.d.ts +4 -0
  12. package/Observable/api/index.d.ts +14 -0
  13. package/Observable/api/race.d.ts +9 -0
  14. package/Observable/api/raceWith.d.ts +6 -0
  15. package/Observable/api/repeatWhen.d.ts +5 -0
  16. package/Observable/api/retryWhen.d.ts +10 -0
  17. package/Observable/api/share.d.ts +16 -0
  18. package/Observable/api/window.d.ts +8 -0
  19. package/Observable/api/windowCount.d.ts +6 -0
  20. package/Observable/api/windowTime.d.ts +12 -0
  21. package/Observable/api/windowToggle.d.ts +8 -0
  22. package/Observable/api/windowWhen.d.ts +9 -0
  23. package/Observable/api.d.ts +668 -0
  24. package/Observable/definition.d.ts +32 -0
  25. package/Observable/dom/animationFrames.d.ts +6 -0
  26. package/Observable/instances.d.ts +1 -0
  27. package/Observable.d.ts +19 -0
  28. package/Observer.d.ts +6 -0
  29. package/Operator.d.ts +19 -0
  30. package/Scheduler.d.ts +22 -0
  31. package/Subject.d.ts +48 -0
  32. package/Subscriber.d.ts +27 -0
  33. package/Subscription.d.ts +41 -0
  34. package/_cjs/Action.cjs +27 -0
  35. package/_cjs/Action.cjs.map +1 -0
  36. package/_cjs/AnimationFrameAction.cjs +48 -0
  37. package/_cjs/AnimationFrameAction.cjs.map +1 -0
  38. package/_cjs/AnimationFrameScheduler.cjs +51 -0
  39. package/_cjs/AnimationFrameScheduler.cjs.map +1 -0
  40. package/_cjs/AsyncAction.cjs +116 -0
  41. package/_cjs/AsyncAction.cjs.map +1 -0
  42. package/_cjs/AsyncScheduler.cjs +61 -0
  43. package/_cjs/AsyncScheduler.cjs.map +1 -0
  44. package/_cjs/BehaviorSubject.cjs +52 -0
  45. package/_cjs/BehaviorSubject.cjs.map +1 -0
  46. package/_cjs/Notification.cjs +110 -0
  47. package/_cjs/Notification.cjs.map +1 -0
  48. package/_cjs/Observable/api/connect.cjs +35 -0
  49. package/_cjs/Observable/api/connect.cjs.map +1 -0
  50. package/_cjs/Observable/api/connectable.cjs +64 -0
  51. package/_cjs/Observable/api/connectable.cjs.map +1 -0
  52. package/_cjs/Observable/api/fromCallback.cjs +74 -0
  53. package/_cjs/Observable/api/fromCallback.cjs.map +1 -0
  54. package/_cjs/Observable/api/fromEvent.cjs +22 -0
  55. package/_cjs/Observable/api/fromEvent.cjs.map +1 -0
  56. package/_cjs/Observable/api/index.cjs +188 -0
  57. package/_cjs/Observable/api/index.cjs.map +1 -0
  58. package/_cjs/Observable/api/race.cjs +47 -0
  59. package/_cjs/Observable/api/race.cjs.map +1 -0
  60. package/_cjs/Observable/api/raceWith.cjs +24 -0
  61. package/_cjs/Observable/api/raceWith.cjs.map +1 -0
  62. package/_cjs/Observable/api/repeatWhen.cjs +72 -0
  63. package/_cjs/Observable/api/repeatWhen.cjs.map +1 -0
  64. package/_cjs/Observable/api/retryWhen.cjs +61 -0
  65. package/_cjs/Observable/api/retryWhen.cjs.map +1 -0
  66. package/_cjs/Observable/api/share.cjs +115 -0
  67. package/_cjs/Observable/api/share.cjs.map +1 -0
  68. package/_cjs/Observable/api/window.cjs +53 -0
  69. package/_cjs/Observable/api/window.cjs.map +1 -0
  70. package/_cjs/Observable/api/windowCount.cjs +62 -0
  71. package/_cjs/Observable/api/windowCount.cjs.map +1 -0
  72. package/_cjs/Observable/api/windowTime.cjs +90 -0
  73. package/_cjs/Observable/api/windowTime.cjs.map +1 -0
  74. package/_cjs/Observable/api/windowToggle.cjs +92 -0
  75. package/_cjs/Observable/api/windowToggle.cjs.map +1 -0
  76. package/_cjs/Observable/api/windowWhen.cjs +68 -0
  77. package/_cjs/Observable/api/windowWhen.cjs.map +1 -0
  78. package/_cjs/Observable/api.cjs +2558 -0
  79. package/_cjs/Observable/api.cjs.map +1 -0
  80. package/_cjs/Observable/definition.cjs +76 -0
  81. package/_cjs/Observable/definition.cjs.map +1 -0
  82. package/_cjs/Observable/dom/animationFrames.cjs +51 -0
  83. package/_cjs/Observable/dom/animationFrames.cjs.map +1 -0
  84. package/_cjs/Observable/instances.cjs +6 -0
  85. package/_cjs/Observable/instances.cjs.map +1 -0
  86. package/_cjs/Observable.cjs +253 -0
  87. package/_cjs/Observable.cjs.map +1 -0
  88. package/_cjs/Observer.cjs +6 -0
  89. package/_cjs/Observer.cjs.map +1 -0
  90. package/_cjs/Operator.cjs +83 -0
  91. package/_cjs/Operator.cjs.map +1 -0
  92. package/_cjs/Scheduler.cjs +62 -0
  93. package/_cjs/Scheduler.cjs.map +1 -0
  94. package/_cjs/Subject.cjs +228 -0
  95. package/_cjs/Subject.cjs.map +1 -0
  96. package/_cjs/Subscriber.cjs +172 -0
  97. package/_cjs/Subscriber.cjs.map +1 -0
  98. package/_cjs/Subscription.cjs +174 -0
  99. package/_cjs/Subscription.cjs.map +1 -0
  100. package/_cjs/demo.cjs +40 -0
  101. package/_cjs/demo.cjs.map +1 -0
  102. package/_cjs/global.cjs +4 -0
  103. package/_cjs/global.cjs.map +1 -0
  104. package/_cjs/index.cjs +65 -0
  105. package/_cjs/index.cjs.map +1 -0
  106. package/_cjs/internal/animationFrameProvider.cjs +51 -0
  107. package/_cjs/internal/animationFrameProvider.cjs.map +1 -0
  108. package/_cjs/internal/args.cjs +26 -0
  109. package/_cjs/internal/args.cjs.map +1 -0
  110. package/_cjs/internal/intervalProvider.cjs +27 -0
  111. package/_cjs/internal/intervalProvider.cjs.map +1 -0
  112. package/_cjs/internal/performanceTimestampProvider.cjs +15 -0
  113. package/_cjs/internal/performanceTimestampProvider.cjs.map +1 -0
  114. package/_cjs/internal/timeoutProvider.cjs +27 -0
  115. package/_cjs/internal/timeoutProvider.cjs.map +1 -0
  116. package/_cjs/internal/timestampProvider.cjs +15 -0
  117. package/_cjs/internal/timestampProvider.cjs.map +1 -0
  118. package/_cjs/internal/util.cjs +107 -0
  119. package/_cjs/internal/util.cjs.map +1 -0
  120. package/_mjs/Action.mjs +14 -0
  121. package/_mjs/Action.mjs.map +1 -0
  122. package/_mjs/AnimationFrameAction.mjs +33 -0
  123. package/_mjs/AnimationFrameAction.mjs.map +1 -0
  124. package/_mjs/AnimationFrameScheduler.mjs +36 -0
  125. package/_mjs/AnimationFrameScheduler.mjs.map +1 -0
  126. package/_mjs/AsyncAction.mjs +99 -0
  127. package/_mjs/AsyncAction.mjs.map +1 -0
  128. package/_mjs/AsyncScheduler.mjs +45 -0
  129. package/_mjs/AsyncScheduler.mjs.map +1 -0
  130. package/_mjs/BehaviorSubject.mjs +38 -0
  131. package/_mjs/BehaviorSubject.mjs.map +1 -0
  132. package/_mjs/Notification.mjs +80 -0
  133. package/_mjs/Notification.mjs.map +1 -0
  134. package/_mjs/Observable/api/connect.mjs +21 -0
  135. package/_mjs/Observable/api/connect.mjs.map +1 -0
  136. package/_mjs/Observable/api/connectable.mjs +45 -0
  137. package/_mjs/Observable/api/connectable.mjs.map +1 -0
  138. package/_mjs/Observable/api/fromCallback.mjs +60 -0
  139. package/_mjs/Observable/api/fromCallback.mjs.map +1 -0
  140. package/_mjs/Observable/api/fromEvent.mjs +10 -0
  141. package/_mjs/Observable/api/fromEvent.mjs.map +1 -0
  142. package/_mjs/Observable/api/index.mjs +15 -0
  143. package/_mjs/Observable/api/index.mjs.map +1 -0
  144. package/_mjs/Observable/api/race.mjs +32 -0
  145. package/_mjs/Observable/api/race.mjs.map +1 -0
  146. package/_mjs/Observable/api/raceWith.mjs +12 -0
  147. package/_mjs/Observable/api/raceWith.mjs.map +1 -0
  148. package/_mjs/Observable/api/repeatWhen.mjs +57 -0
  149. package/_mjs/Observable/api/repeatWhen.mjs.map +1 -0
  150. package/_mjs/Observable/api/retryWhen.mjs +45 -0
  151. package/_mjs/Observable/api/retryWhen.mjs.map +1 -0
  152. package/_mjs/Observable/api/share.mjs +97 -0
  153. package/_mjs/Observable/api/share.mjs.map +1 -0
  154. package/_mjs/Observable/api/window.mjs +40 -0
  155. package/_mjs/Observable/api/window.mjs.map +1 -0
  156. package/_mjs/Observable/api/windowCount.mjs +50 -0
  157. package/_mjs/Observable/api/windowCount.mjs.map +1 -0
  158. package/_mjs/Observable/api/windowTime.mjs +73 -0
  159. package/_mjs/Observable/api/windowTime.mjs.map +1 -0
  160. package/_mjs/Observable/api/windowToggle.mjs +77 -0
  161. package/_mjs/Observable/api/windowToggle.mjs.map +1 -0
  162. package/_mjs/Observable/api/windowWhen.mjs +54 -0
  163. package/_mjs/Observable/api/windowWhen.mjs.map +1 -0
  164. package/_mjs/Observable/api.mjs +2291 -0
  165. package/_mjs/Observable/api.mjs.map +1 -0
  166. package/_mjs/Observable/definition.mjs +54 -0
  167. package/_mjs/Observable/definition.mjs.map +1 -0
  168. package/_mjs/Observable/dom/animationFrames.mjs +36 -0
  169. package/_mjs/Observable/dom/animationFrames.mjs.map +1 -0
  170. package/_mjs/Observable/instances.mjs +2 -0
  171. package/_mjs/Observable/instances.mjs.map +1 -0
  172. package/_mjs/Observable.mjs +25 -0
  173. package/_mjs/Observable.mjs.map +1 -0
  174. package/_mjs/Observer.mjs +2 -0
  175. package/_mjs/Observer.mjs.map +1 -0
  176. package/_mjs/Operator.mjs +63 -0
  177. package/_mjs/Operator.mjs.map +1 -0
  178. package/_mjs/Scheduler.mjs +41 -0
  179. package/_mjs/Scheduler.mjs.map +1 -0
  180. package/_mjs/Subject.mjs +204 -0
  181. package/_mjs/Subject.mjs.map +1 -0
  182. package/_mjs/Subscriber.mjs +147 -0
  183. package/_mjs/Subscriber.mjs.map +1 -0
  184. package/_mjs/Subscription.mjs +148 -0
  185. package/_mjs/Subscription.mjs.map +1 -0
  186. package/_mjs/demo.mjs +30 -0
  187. package/_mjs/demo.mjs.map +1 -0
  188. package/_mjs/global.mjs +2 -0
  189. package/_mjs/global.mjs.map +1 -0
  190. package/_mjs/index.mjs +15 -0
  191. package/_mjs/index.mjs.map +1 -0
  192. package/_mjs/internal/animationFrameProvider.mjs +38 -0
  193. package/_mjs/internal/animationFrameProvider.mjs.map +1 -0
  194. package/_mjs/internal/args.mjs +13 -0
  195. package/_mjs/internal/args.mjs.map +1 -0
  196. package/_mjs/internal/intervalProvider.mjs +20 -0
  197. package/_mjs/internal/intervalProvider.mjs.map +1 -0
  198. package/_mjs/internal/performanceTimestampProvider.mjs +8 -0
  199. package/_mjs/internal/performanceTimestampProvider.mjs.map +1 -0
  200. package/_mjs/internal/timeoutProvider.mjs +20 -0
  201. package/_mjs/internal/timeoutProvider.mjs.map +1 -0
  202. package/_mjs/internal/timestampProvider.mjs +8 -0
  203. package/_mjs/internal/timestampProvider.mjs.map +1 -0
  204. package/_mjs/internal/util.mjs +76 -0
  205. package/_mjs/internal/util.mjs.map +1 -0
  206. package/_src/Action.ts +10 -0
  207. package/_src/AnimationFrameAction.ts +27 -0
  208. package/_src/AnimationFrameScheduler.ts +30 -0
  209. package/_src/AsyncAction.ts +93 -0
  210. package/_src/AsyncScheduler.ts +41 -0
  211. package/_src/BehaviorSubject.ts +28 -0
  212. package/_src/Notification.ts +91 -0
  213. package/_src/Observable/api/connect.ts +23 -0
  214. package/_src/Observable/api/connectable.ts +52 -0
  215. package/_src/Observable/api/fromCallback.ts +57 -0
  216. package/_src/Observable/api/fromEvent.ts +12 -0
  217. package/_src/Observable/api/index.ts +14 -0
  218. package/_src/Observable/api/race.ts +31 -0
  219. package/_src/Observable/api/raceWith.ts +15 -0
  220. package/_src/Observable/api/repeatWhen.ts +63 -0
  221. package/_src/Observable/api/retryWhen.ts +47 -0
  222. package/_src/Observable/api/share.ts +107 -0
  223. package/_src/Observable/api/window.ts +44 -0
  224. package/_src/Observable/api/windowCount.ts +56 -0
  225. package/_src/Observable/api/windowTime.ts +102 -0
  226. package/_src/Observable/api/windowToggle.ts +84 -0
  227. package/_src/Observable/api/windowWhen.ts +59 -0
  228. package/_src/Observable/api.ts +2749 -0
  229. package/_src/Observable/definition.ts +69 -0
  230. package/_src/Observable/dom/animationFrames.ts +33 -0
  231. package/_src/Observable/instances.ts +106 -0
  232. package/_src/Observable.ts +27 -0
  233. package/_src/Observer.ts +5 -0
  234. package/_src/Operator.ts +73 -0
  235. package/_src/Scheduler.ts +52 -0
  236. package/_src/Subject.ts +171 -0
  237. package/_src/Subscriber.ts +130 -0
  238. package/_src/Subscription.ts +143 -0
  239. package/_src/demo.ts +29 -0
  240. package/_src/global.ts +141 -0
  241. package/_src/index.ts +14 -0
  242. package/_src/internal/animationFrameProvider.ts +37 -0
  243. package/_src/internal/args.ts +11 -0
  244. package/_src/internal/intervalProvider.ts +27 -0
  245. package/_src/internal/performanceTimestampProvider.ts +12 -0
  246. package/_src/internal/timeoutProvider.ts +27 -0
  247. package/_src/internal/timestampProvider.ts +14 -0
  248. package/_src/internal/util.ts +94 -0
  249. package/demo.d.ts +1 -0
  250. package/global.d.ts +125 -0
  251. package/index.d.ts +14 -0
  252. package/internal/animationFrameProvider.d.ts +12 -0
  253. package/internal/args.d.ts +3 -0
  254. package/internal/intervalProvider.d.ts +12 -0
  255. package/internal/performanceTimestampProvider.d.ts +6 -0
  256. package/internal/timeoutProvider.d.ts +12 -0
  257. package/internal/timestampProvider.d.ts +7 -0
  258. package/internal/util.d.ts +28 -0
  259. package/package.json +16 -0
@@ -0,0 +1,147 @@
1
+ var _a;
2
+
3
+ import * as tsplus_module_1 from "@fncts/observable/Subscription";
4
+ import * as tsplus_module_2 from "@fncts/base/util/predicates";
5
+ import * as tsplus_module_3 from "@fncts/observable/internal/util";
6
+ import * as tsplus_module_4 from "@fncts/base/data/Cause/api";
7
+ export const SubscriberTypeId = /*#__PURE__*/Symbol.for("fncts.observable.Subscriber");
8
+ export class Subscriber extends tsplus_module_1.Subscription {
9
+ constructor(observer) {
10
+ super();
11
+ this[_a] = SubscriberTypeId;
12
+ this.isStopped = false;
13
+
14
+ if (observer) {
15
+ this.observer = observer;
16
+
17
+ if (tsplus_module_1.isSubscription(observer)) {
18
+ observer.add(this);
19
+ }
20
+ } else {
21
+ this.observer = EMPTY_OBSERVER;
22
+ }
23
+ }
24
+
25
+ next(value) {
26
+ if (!this.isStopped) {
27
+ this._next(value);
28
+ }
29
+ }
30
+
31
+ error(err) {
32
+ if (!this.isStopped) {
33
+ this.isStopped = true;
34
+
35
+ this._error(err);
36
+ }
37
+ }
38
+
39
+ complete() {
40
+ if (!this.isStopped) {
41
+ this.isStopped = true;
42
+
43
+ this._complete();
44
+ }
45
+ }
46
+
47
+ unsubscribe() {
48
+ if (!this.closed) {
49
+ this.isStopped = true;
50
+ super.unsubscribe();
51
+ this.observer = null;
52
+ }
53
+ }
54
+
55
+ _next(value) {
56
+ this.observer.next(value);
57
+ }
58
+
59
+ _error(err) {
60
+ try {
61
+ this.observer.error(err);
62
+ } finally {
63
+ this.unsubscribe();
64
+ }
65
+ }
66
+
67
+ _complete() {
68
+ try {
69
+ this.observer.complete();
70
+ } finally {
71
+ this.unsubscribe();
72
+ }
73
+ }
74
+
75
+ }
76
+ _a = SubscriberTypeId;
77
+ export class SafeSubscriber extends Subscriber {
78
+ constructor(observer) {
79
+ super();
80
+ let next = undefined;
81
+ let error = undefined;
82
+ let complete = undefined;
83
+
84
+ if (tsplus_module_2.isFunction(observer)) {
85
+ next = observer;
86
+ } else if (observer) {
87
+ ({
88
+ next,
89
+ error,
90
+ complete
91
+ } = observer);
92
+ next = next?.bind(observer);
93
+ error = error?.bind(observer);
94
+ complete = complete?.bind(observer);
95
+ }
96
+
97
+ if (error) {
98
+ this.observer = {
99
+ next: next ? wrapDefectHandler(next, error) : tsplus_module_3.noop,
100
+ error: error ? wrapDefectHandler(error, error) : tsplus_module_3.noop,
101
+ complete: complete ? wrapDefectHandler(complete, error) : tsplus_module_3.noop
102
+ };
103
+ } else {
104
+ this.observer = {
105
+ next: next ? wrapThrowHandler(next) : tsplus_module_3.noop,
106
+ error: wrapThrowHandler(error ?? defaultErrorHandler),
107
+ complete: complete ? wrapThrowHandler(complete) : tsplus_module_3.noop
108
+ };
109
+ }
110
+ }
111
+
112
+ }
113
+
114
+ function wrapDefectHandler(handler, onDefect) {
115
+ return (...args) => {
116
+ try {
117
+ handler(...args);
118
+ } catch (err) {
119
+ onDefect(tsplus_module_4.halt(err));
120
+ }
121
+ };
122
+ }
123
+
124
+ function wrapThrowHandler(handler) {
125
+ return (...args) => {
126
+ try {
127
+ handler(...args);
128
+ } catch (err) {
129
+ tsplus_module_3.reportUnhandledError(err);
130
+ }
131
+ };
132
+ }
133
+
134
+ function defaultErrorHandler(error) {
135
+ throw error;
136
+ }
137
+
138
+ export const EMPTY_OBSERVER = {
139
+ closed: true,
140
+ next: tsplus_module_3.noop,
141
+ error: defaultErrorHandler,
142
+ complete: tsplus_module_3.noop
143
+ };
144
+ export function isSubscriber(u) {
145
+ return tsplus_module_2.isObject(u) && SubscriberTypeId in u;
146
+ }
147
+ //# sourceMappingURL=Subscriber.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Subscriber.mjs","mappings":"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","names":["SubscriberTypeId","Symbol","for","Subscriber","tsplus_module_1","constructor","observer","add","EMPTY_OBSERVER","next","value","isStopped","_next","error","err","_error","complete","_complete","unsubscribe","closed","SafeSubscriber","undefined","tsplus_module_2","bind","wrapDefectHandler","tsplus_module_3","noop","wrapThrowHandler","defaultErrorHandler","handler","onDefect","args","tsplus_module_4","isSubscriber","u"],"sourceRoot":"","sources":["../_src/Subscriber.ts"],"sourcesContent":[null]}
@@ -0,0 +1,148 @@
1
+ var _a, _b;
2
+
3
+ import * as tsplus_module_1 from "@fncts/base/util/predicates";
4
+ export const SubscriptionTypeId = /*#__PURE__*/Symbol.for("@fncts/observable/Subscription");
5
+ /**
6
+ * @tsplus type fncts.observable.Subscription
7
+ * @tsplus companion fncts.observable.SubscriptionOps
8
+ */
9
+
10
+ export class Subscription {
11
+ constructor(initialFinalizer) {
12
+ this.initialFinalizer = initialFinalizer;
13
+ this[_a] = SubscriptionTypeId;
14
+ this.closed = false;
15
+ this.finalizers = null;
16
+ this.parents = null;
17
+ }
18
+
19
+ unsubscribe() {
20
+ let errors;
21
+
22
+ if (!this.closed) {
23
+ this.closed = true;
24
+ const {
25
+ parents,
26
+ initialFinalizer,
27
+ finalizers
28
+ } = this;
29
+
30
+ if (parents) {
31
+ this.parents = null;
32
+
33
+ for (const parent of parents) {
34
+ parent.remove(this);
35
+ }
36
+ }
37
+
38
+ if (initialFinalizer) {
39
+ try {
40
+ initialFinalizer();
41
+ } catch (e) {
42
+ errors = isUnsubscribeError(e) ? e.errors : [e];
43
+ }
44
+ }
45
+
46
+ if (finalizers) {
47
+ this.finalizers = null;
48
+
49
+ for (const finalizer of finalizers) {
50
+ try {
51
+ executeFinalizer(finalizer);
52
+ } catch (e) {
53
+ errors || (errors = []);
54
+
55
+ if (isUnsubscribeError(e)) {
56
+ errors.push(...e.errors);
57
+ } else {
58
+ errors.push(e);
59
+ }
60
+ }
61
+ }
62
+ }
63
+ }
64
+
65
+ if (errors) {
66
+ throw new UnsubscribeError(errors);
67
+ }
68
+ }
69
+
70
+ add(finalizer) {
71
+ if (finalizer && finalizer !== this) {
72
+ if (this.closed) {
73
+ executeFinalizer(finalizer);
74
+ } else {
75
+ if (isSubscription(finalizer)) {
76
+ if (finalizer.closed || finalizer.hasParent(this)) {
77
+ return;
78
+ }
79
+
80
+ finalizer.addParent(this);
81
+ }
82
+
83
+ if (!this.finalizers) {
84
+ this.finalizers = new Set();
85
+ }
86
+
87
+ this.finalizers.add(finalizer);
88
+ }
89
+ }
90
+ }
91
+
92
+ hasParent(parent) {
93
+ const parentage = this.parents;
94
+ return parentage ? parentage.has(parent) : false;
95
+ }
96
+
97
+ addParent(parent) {
98
+ if (!this.parents) {
99
+ this.parents = new Set();
100
+ }
101
+
102
+ this.parents.add(parent);
103
+ }
104
+
105
+ removeParent(parent) {
106
+ this.parents?.delete(parent);
107
+ }
108
+
109
+ remove(finalizer) {
110
+ this.finalizers?.delete(finalizer);
111
+
112
+ if (isSubscription(finalizer)) {
113
+ finalizer.removeParent(this);
114
+ }
115
+ }
116
+
117
+ }
118
+ _a = SubscriptionTypeId;
119
+ export function isSubscription(u) {
120
+ return tsplus_module_1.isObject(u) && SubscriptionTypeId in u;
121
+ }
122
+
123
+ function executeFinalizer(finalizer) {
124
+ return finalizer && ("unsubscribe" in finalizer ? finalizer.unsubscribe() : finalizer());
125
+ }
126
+ /**
127
+ * @tsplus static fncts.observable.SubscriptionOps empty
128
+ */
129
+
130
+
131
+ export const EMPTY_SUBSCRIPTION = /*#__PURE__*/(() => {
132
+ const empty = /*#__PURE__*/new Subscription();
133
+ empty.closed = true;
134
+ return empty;
135
+ })();
136
+ export const UnsubscribeErrorTypeId = /*#__PURE__*/Symbol.for("@principia/observable/UnsubscribeError");
137
+ export class UnsubscribeError {
138
+ constructor(errors) {
139
+ this.errors = errors;
140
+ this[_b] = UnsubscribeErrorTypeId;
141
+ }
142
+
143
+ }
144
+ _b = UnsubscribeErrorTypeId;
145
+ export function isUnsubscribeError(u) {
146
+ return tsplus_module_1.isObject(u) && UnsubscribeErrorTypeId in u;
147
+ }
148
+ //# sourceMappingURL=Subscription.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Subscription.mjs","mappings":"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","names":["SubscriptionTypeId","Symbol","for","Subscription","constructor","initialFinalizer","unsubscribe","errors","closed","parents","finalizers","parent","remove","e","isUnsubscribeError","finalizer","executeFinalizer","push","UnsubscribeError","add","isSubscription","hasParent","addParent","Set","parentage","has","removeParent","delete","u","tsplus_module_1","EMPTY_SUBSCRIPTION","empty","UnsubscribeErrorTypeId"],"sourceRoot":"","sources":["../_src/Subscription.ts"],"sourcesContent":[null]}
package/_mjs/demo.mjs ADDED
@@ -0,0 +1,30 @@
1
+ import * as tsplus_module_1 from "@fncts/observable/Observable";
2
+ import * as tsplus_module_2 from "@fncts/base/data/Cause/api";
3
+ import * as tsplus_module_3 from "@fncts/observable/Observable/api/share";
4
+ import * as tsplus_module_4 from "@fncts/observable/Observable/api/window";
5
+ const x = /*#__PURE__*/new tsplus_module_1.Observable(subscriber => {
6
+ setInterval(() => {
7
+ subscriber.next(undefined);
8
+ }, 1000);
9
+ });
10
+ tsplus_module_4.window_(tsplus_module_3.share_(new tsplus_module_1.Observable(subscriber => {
11
+ let i = 0;
12
+ const handle = setInterval(() => {
13
+ if (i === 100) {
14
+ subscriber.error(tsplus_module_2.fail("lmao"));
15
+ } else {
16
+ subscriber.next(i++);
17
+ }
18
+ }, 100);
19
+ subscriber.add(() => {
20
+ clearInterval(handle);
21
+ });
22
+ })), x).subscribe({
23
+ next: value => {
24
+ value.subscribe(console.log.bind(console));
25
+ },
26
+ error: cause => {
27
+ console.log(cause);
28
+ }
29
+ });
30
+ //# sourceMappingURL=demo.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demo.mjs","mappings":";;;;AAAA,MAAMA,CAAC,gBAAG,oBAAIC,UAAJ,CAA6BC,UAAD,IAAe;EACnDC,WAAW,CAAC,MAAK;IACfD,UAAU,CAACE,IAAX,CAAgBC,SAAhB;EACD,CAFU,EAER,IAFQ,CAAX;AAGD,CAJS,CAAV;AAMAC,mEAAIL,UAAJ,CAAgCC,UAAD,IAAe;EAC5C,IAAIK,CAAC,GAAU,CAAf;EACA,MAAMC,MAAM,GAAGL,WAAW,CAAC,MAAK;IAC9B,IAAII,CAAC,KAAK,GAAV,EAAe;MACbL,UAAU,CAACO,KAAX,CAAiBC,qBAAW,MAAX,CAAjB;IACD,CAFD,MAEO;MACLR,UAAU,CAACE,IAAX,CAAgBG,CAAC,EAAjB;IACD;EACF,CANyB,EAMvB,GANuB,CAA1B;EAOAL,UAAU,CAACS,GAAX,CAAe,MAAK;IAClBC,aAAa,CAACJ,MAAD,CAAb;EACD,CAFD;AAGD,CAZD,IAcUR,CAdV,EAeGa,SAfH,CAea;EACTT,IAAI,EAAGU,KAAD,IAAU;IACdA,KAAK,CAACD,SAAN,CAAgBE,OAAO,CAACC,GAAR,CAAYC,IAAZ,CAAiBF,OAAjB,CAAhB;EACD,CAHQ;EAITN,KAAK,EAAGS,KAAD,IAAU;IACfH,OAAO,CAACC,GAAR,CAAYE,KAAZ;EACD;AANQ,CAfb","names":["x","Observable","subscriber","setInterval","next","undefined","tsplus_module_4","i","handle","error","tsplus_module_2","add","clearInterval","subscribe","value","console","log","bind","cause"],"sourceRoot":"","sources":["../_src/demo.ts"],"sourcesContent":[null]}
@@ -0,0 +1,2 @@
1
+ import "@fncts/observable";
2
+ //# sourceMappingURL=global.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global.mjs","mappings":"AAAA,OAAO,mBAAP","names":[],"sourceRoot":"","sources":["../_src/global.ts"],"sourcesContent":[null]}
package/_mjs/index.mjs ADDED
@@ -0,0 +1,15 @@
1
+ export * as action from "@fncts/observable/Action";
2
+ export * as animationFrameAction from "@fncts/observable/AnimationFrameAction";
3
+ export * as animationFrameScheduler from "@fncts/observable/AnimationFrameScheduler";
4
+ export * as asyncAction from "@fncts/observable/AsyncAction";
5
+ export * as asyncScheduler from "@fncts/observable/AsyncScheduler";
6
+ export * as behaviorSubject from "@fncts/observable/BehaviorSubject";
7
+ export * as observable from "@fncts/observable/Observable";
8
+ export * as notification from "@fncts/observable/Observable";
9
+ export * as observer from "@fncts/observable/Observer";
10
+ export * as operator from "@fncts/observable/Operator";
11
+ export * as scheduler from "@fncts/observable/Scheduler";
12
+ export * as subject from "@fncts/observable/Subject";
13
+ export * as subscriber from "@fncts/observable/Subscriber";
14
+ export * as subscription from "@fncts/observable/Subscription";
15
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","mappings":"AAAA,OAAO,KAAKA,MAAZ,MAAwB,0BAAxB;AACA,OAAO,KAAKC,oBAAZ,MAAsC,wCAAtC;AACA,OAAO,KAAKC,uBAAZ,MAAyC,2CAAzC;AACA,OAAO,KAAKC,WAAZ,MAA6B,+BAA7B;AACA,OAAO,KAAKC,cAAZ,MAAgC,kCAAhC;AACA,OAAO,KAAKC,eAAZ,MAAiC,mCAAjC;AACA,OAAO,KAAKC,UAAZ,MAA4B,8BAA5B;AACA,OAAO,KAAKC,YAAZ,MAA8B,8BAA9B;AACA,OAAO,KAAKC,QAAZ,MAA0B,4BAA1B;AACA,OAAO,KAAKC,QAAZ,MAA0B,4BAA1B;AACA,OAAO,KAAKC,SAAZ,MAA2B,6BAA3B;AACA,OAAO,KAAKC,OAAZ,MAAyB,2BAAzB;AACA,OAAO,KAAKC,UAAZ,MAA4B,8BAA5B;AACA,OAAO,KAAKC,YAAZ,MAA8B,gCAA9B","names":["action","animationFrameAction","animationFrameScheduler","asyncAction","asyncScheduler","behaviorSubject","observable","notification","observer","operator","scheduler","subject","subscriber","subscription"],"sourceRoot":"","sources":["../_src/index.ts"],"sourcesContent":[null]}
@@ -0,0 +1,38 @@
1
+ import * as tsplus_module_1 from "@fncts/observable/Subscription";
2
+ export const animationFrameProvider = {
3
+ schedule(callback) {
4
+ let request = requestAnimationFrame;
5
+ let cancel = cancelAnimationFrame;
6
+ const {
7
+ delegate
8
+ } = animationFrameProvider;
9
+
10
+ if (delegate) {
11
+ request = delegate.requestAnimationFrame;
12
+ cancel = delegate.cancelAnimationFrame;
13
+ }
14
+
15
+ const handle = request(timestamp => {
16
+ cancel = undefined;
17
+ callback(timestamp);
18
+ });
19
+ return new tsplus_module_1.Subscription(() => cancel?.(handle));
20
+ },
21
+
22
+ requestAnimationFrame(...args) {
23
+ const {
24
+ delegate
25
+ } = animationFrameProvider;
26
+ return (delegate?.requestAnimationFrame || requestAnimationFrame)(...args);
27
+ },
28
+
29
+ cancelAnimationFrame(...args) {
30
+ const {
31
+ delegate
32
+ } = animationFrameProvider;
33
+ return (delegate?.cancelAnimationFrame || cancelAnimationFrame)(...args);
34
+ },
35
+
36
+ delegate: undefined
37
+ };
38
+ //# sourceMappingURL=animationFrameProvider.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animationFrameProvider.mjs","mappings":";AAYA,OAAO,MAAMA,sBAAsB,GAA2B;EAC5DC,QAAQ,CAACC,QAAD,EAAS;IACf,IAAIC,OAAO,GAAGC,qBAAd;IACA,IAAIC,MAAM,GAAiDC,oBAA3D;IACA,MAAM;MAAEC;IAAF,IAAeP,sBAArB;;IACA,IAAIO,QAAJ,EAAc;MACZJ,OAAO,GAAGI,QAAQ,CAACH,qBAAnB;MACAC,MAAM,GAAIE,QAAQ,CAACD,oBAAnB;IACD;;IACD,MAAME,MAAM,GAAGL,OAAO,CAAEM,SAAD,IAAc;MACnCJ,MAAM,GAAGK,SAAT;MACAR,QAAQ,CAACO,SAAD,CAAR;IACD,CAHqB,CAAtB;IAIA,OAAO,oBAAIE,YAAJ,CAAiB,MAAMN,MAAM,GAAGG,MAAH,CAA7B,CAAP;EACD,CAd2D;;EAe5DJ,qBAAqB,CAAC,GAAGQ,IAAJ,EAAQ;IAC3B,MAAM;MAAEL;IAAF,IAAeP,sBAArB;IACA,OAAO,CAACO,QAAQ,EAAEH,qBAAV,IAAmCA,qBAApC,EAA2D,GAAGQ,IAA9D,CAAP;EACD,CAlB2D;;EAmB5DN,oBAAoB,CAAC,GAAGM,IAAJ,EAAQ;IAC1B,MAAM;MAAEL;IAAF,IAAeP,sBAArB;IACA,OAAO,CAACO,QAAQ,EAAED,oBAAV,IAAkCA,oBAAnC,EAAyD,GAAGM,IAA5D,CAAP;EACD,CAtB2D;;EAuB5DL,QAAQ,EAAEG;AAvBkD,CAAvD","names":["animationFrameProvider","schedule","callback","request","requestAnimationFrame","cancel","cancelAnimationFrame","delegate","handle","timestamp","undefined","Subscription","args"],"sourceRoot":"","sources":["../../_src/internal/animationFrameProvider.ts"],"sourcesContent":[null]}
@@ -0,0 +1,13 @@
1
+ import * as tsplus_module_1 from "@fncts/observable/Scheduler";
2
+
3
+ function last(arr) {
4
+ return arr[arr.length - 1];
5
+ }
6
+
7
+ export function popNumber(args, defaultValue) {
8
+ return typeof last(args) === "number" ? args.pop() : defaultValue;
9
+ }
10
+ export function popScheduler(args) {
11
+ return tsplus_module_1.isScheduler(last(args)) ? args.pop() : undefined;
12
+ }
13
+ //# sourceMappingURL=args.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.mjs","mappings":";;AAAA,SAASA,IAAT,CAAiBC,GAAjB,EAAyB;EACvB,OAAOA,GAAG,CAACA,GAAG,CAACC,MAAJ,GAAa,CAAd,CAAV;AACD;;AAED,OAAM,SAAUC,SAAV,CAAoBC,IAApB,EAAiCC,YAAjC,EAAqD;EACzD,OAAO,OAAOL,IAAI,CAACI,IAAD,CAAX,KAAsB,QAAtB,GAAiCA,IAAI,CAACE,GAAL,EAAjC,GAA+CD,YAAtD;AACD;AAED,OAAM,SAAUE,YAAV,CAAuBH,IAAvB,EAAkC;EACtC,OAAOI,4BAAYR,IAAI,CAACI,IAAD,CAAhB,IAA0BA,IAAI,CAACE,GAAL,EAA1B,GAAuCG,SAA9C;AACD","names":["last","arr","length","popNumber","args","defaultValue","pop","popScheduler","tsplus_module_1","undefined"],"sourceRoot":"","sources":["../../_src/internal/args.ts"],"sourcesContent":[null]}
@@ -0,0 +1,20 @@
1
+ export const intervalProvider = {
2
+ // When accessing the delegate, use the variable rather than `this` so that
3
+ // the functions can be called without being bound to the provider.
4
+ setInterval(...args) {
5
+ const {
6
+ delegate
7
+ } = intervalProvider;
8
+ return (delegate?.setInterval || setInterval)(...args);
9
+ },
10
+
11
+ clearInterval(handle) {
12
+ const {
13
+ delegate
14
+ } = intervalProvider;
15
+ return (delegate?.clearInterval || clearInterval)(handle);
16
+ },
17
+
18
+ delegate: undefined
19
+ };
20
+ //# sourceMappingURL=intervalProvider.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intervalProvider.mjs","mappings":"AAcA,OAAO,MAAMA,gBAAgB,GAAqB;EAChD;EACA;EACAC,WAAW,CAAC,GAAGC,IAAJ,EAAQ;IACjB,MAAM;MAAEC;IAAF,IAAeH,gBAArB;IACA,OAAO,CAACG,QAAQ,EAAEF,WAAV,IAAyBA,WAA1B,EAAuC,GAAGC,IAA1C,CAAP;EACD,CAN+C;;EAOhDE,aAAa,CAACC,MAAD,EAAO;IAClB,MAAM;MAAEF;IAAF,IAAeH,gBAArB;IACA,OAAO,CAACG,QAAQ,EAAEC,aAAV,IAA2BA,aAA5B,EAA2CC,MAA3C,CAAP;EACD,CAV+C;;EAWhDF,QAAQ,EAAEG;AAXsC,CAA3C","names":["intervalProvider","setInterval","args","delegate","clearInterval","handle","undefined"],"sourceRoot":"","sources":["../../_src/internal/intervalProvider.ts"],"sourcesContent":[null]}
@@ -0,0 +1,8 @@
1
+ export const performanceTimestampProvider = {
2
+ now() {
3
+ return (performanceTimestampProvider.delegate || performance).now();
4
+ },
5
+
6
+ delegate: undefined
7
+ };
8
+ //# sourceMappingURL=performanceTimestampProvider.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"performanceTimestampProvider.mjs","mappings":"AAMA,OAAO,MAAMA,4BAA4B,GAAiC;EACxEC,GAAG;IACD,OAAO,CAACD,4BAA4B,CAACE,QAA7B,IAAyCC,WAA1C,EAAuDF,GAAvD,EAAP;EACD,CAHuE;;EAIxEC,QAAQ,EAAEE;AAJ8D,CAAnE","names":["performanceTimestampProvider","now","delegate","performance","undefined"],"sourceRoot":"","sources":["../../_src/internal/performanceTimestampProvider.ts"],"sourcesContent":[null]}
@@ -0,0 +1,20 @@
1
+ export const timeoutProvider = {
2
+ // When accessing the delegate, use the variable rather than `this` so that
3
+ // the functions can be called without being bound to the provider.
4
+ setTimeout(...args) {
5
+ const {
6
+ delegate
7
+ } = timeoutProvider;
8
+ return (delegate?.setTimeout || setTimeout)(...args);
9
+ },
10
+
11
+ clearTimeout(handle) {
12
+ const {
13
+ delegate
14
+ } = timeoutProvider;
15
+ return (delegate?.clearTimeout || clearTimeout)(handle);
16
+ },
17
+
18
+ delegate: undefined
19
+ };
20
+ //# sourceMappingURL=timeoutProvider.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeoutProvider.mjs","mappings":"AAcA,OAAO,MAAMA,eAAe,GAAoB;EAC9C;EACA;EACAC,UAAU,CAAC,GAAGC,IAAJ,EAAQ;IAChB,MAAM;MAAEC;IAAF,IAAeH,eAArB;IACA,OAAO,CAACG,QAAQ,EAAEF,UAAV,IAAwBA,UAAzB,EAAqC,GAAGC,IAAxC,CAAP;EACD,CAN6C;;EAO9CE,YAAY,CAACC,MAAD,EAAO;IACjB,MAAM;MAAEF;IAAF,IAAeH,eAArB;IACA,OAAO,CAACG,QAAQ,EAAEC,YAAV,IAA0BA,YAA3B,EAAyCC,MAAzC,CAAP;EACD,CAV6C;;EAW9CF,QAAQ,EAAEG;AAXoC,CAAzC","names":["timeoutProvider","setTimeout","args","delegate","clearTimeout","handle","undefined"],"sourceRoot":"","sources":["../../_src/internal/timeoutProvider.ts"],"sourcesContent":[null]}
@@ -0,0 +1,8 @@
1
+ export const dateTimestampProvider = {
2
+ now() {
3
+ return (dateTimestampProvider.delegate || Date).now();
4
+ },
5
+
6
+ delegate: undefined
7
+ };
8
+ //# sourceMappingURL=timestampProvider.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timestampProvider.mjs","mappings":"AAQA,OAAO,MAAMA,qBAAqB,GAA0B;EAC1DC,GAAG;IACD,OAAO,CAACD,qBAAqB,CAACE,QAAtB,IAAkCC,IAAnC,EAAyCF,GAAzC,EAAP;EACD,CAHyD;;EAI1DC,QAAQ,EAAEE;AAJgD,CAArD","names":["dateTimestampProvider","now","delegate","Date","undefined"],"sourceRoot":"","sources":["../../_src/internal/timestampProvider.ts"],"sourcesContent":[null]}
@@ -0,0 +1,76 @@
1
+ import * as tsplus_module_1 from "@fncts/base/util/predicates";
2
+ import * as tsplus_module_2 from "@fncts/observable/internal/timeoutProvider";
3
+ export function arrayRemove(arr, item) {
4
+ if (arr) {
5
+ const index = arr.indexOf(item);
6
+ 0 <= index && arr.splice(index, 1);
7
+ }
8
+ }
9
+ export function noop() {// noop
10
+ }
11
+ export function isAsyncIterable(u) {
12
+ return Symbol.asyncIterator && tsplus_module_1.isFunction(u?.[Symbol.asyncIterator]);
13
+ }
14
+ export function isArrayLike(u) {
15
+ return u != null && typeof u.length === "number" && typeof u !== "function";
16
+ }
17
+ export function isPromiseLike(u) {
18
+ return tsplus_module_1.isFunction(u?.then);
19
+ }
20
+ export function isValidDate(u) {
21
+ return tsplus_module_1.isDate(u) && !isNaN(u);
22
+ }
23
+ export function reportUnhandledError(err) {
24
+ return tsplus_module_2.timeoutProvider.setTimeout(() => {
25
+ throw err;
26
+ });
27
+ }
28
+ export function arrayOrObject(args) {
29
+ if (args.length === 1) {
30
+ const first = args[0];
31
+
32
+ if (Array.isArray(first)) {
33
+ return {
34
+ args: first,
35
+ keys: null
36
+ };
37
+ }
38
+
39
+ if (tsplus_module_1.isPlain(first)) {
40
+ const keys = Object.keys(first);
41
+ return {
42
+ args: Object.values(first),
43
+ keys
44
+ };
45
+ }
46
+ }
47
+
48
+ return {
49
+ args: args,
50
+ keys: null
51
+ };
52
+ }
53
+ export async function* readableStreamToAsyncGenerator(readableStream) {
54
+ const reader = readableStream.getReader();
55
+
56
+ try {
57
+ while (true) {
58
+ const {
59
+ value,
60
+ done
61
+ } = await reader.read();
62
+
63
+ if (done) {
64
+ return;
65
+ }
66
+
67
+ yield value;
68
+ }
69
+ } finally {
70
+ reader.releaseLock();
71
+ }
72
+ }
73
+ export function isReadableStream(u) {
74
+ return tsplus_module_1.isFunction(u?.getReader);
75
+ }
76
+ //# sourceMappingURL=util.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.mjs","mappings":";;AAAA,OAAM,SAAUA,WAAV,CAAyBC,GAAzB,EAAsDC,IAAtD,EAA6D;EACjE,IAAID,GAAJ,EAAS;IACP,MAAME,KAAK,GAAGF,GAAG,CAACG,OAAJ,CAAYF,IAAZ,CAAd;IACA,KAAKC,KAAL,IAAcF,GAAG,CAACI,MAAJ,CAAWF,KAAX,EAAkB,CAAlB,CAAd;EACD;AACF;AAED,OAAM,SAAUG,IAAV,GAAc,CAClB;AACD;AAED,OAAM,SAAUC,eAAV,CAA0BC,CAA1B,EAAgC;EACpC,OAAOC,MAAM,CAACC,aAAP,IAAwBC,2BAAWH,CAAC,GAAGC,MAAM,CAACC,aAAV,CAAZ,CAA/B;AACD;AAED,OAAM,SAAUE,WAAV,CAAsBJ,CAAtB,EAA4B;EAChC,OAAOA,CAAC,IAAI,IAAL,IAAa,OAAOA,CAAC,CAACK,MAAT,KAAoB,QAAjC,IAA6C,OAAOL,CAAP,KAAa,UAAjE;AACD;AAED,OAAM,SAAUM,aAAV,CAAwBN,CAAxB,EAA8B;EAClC,OAAOG,2BAAWH,CAAC,EAAEO,IAAd,CAAP;AACD;AAED,OAAM,SAAUC,WAAV,CAAsBR,CAAtB,EAAgC;EACpC,OAAOG,uBAAOH,CAAP,KAAa,CAACS,KAAK,CAACT,CAAD,CAA1B;AACD;AAED,OAAM,SAAUU,oBAAV,CAA+BC,GAA/B,EAA2C;EAC/C,OAAOC,gCAAgBC,UAAhB,CAA2B,MAAK;IACrC,MAAMF,GAAN;EACD,CAFM,CAAP;AAGD;AAED,OAAM,SAAUG,aAAV,CACJC,IADI,EAC6C;EAEjD,IAAIA,IAAI,CAACV,MAAL,KAAgB,CAApB,EAAuB;IACrB,MAAMW,KAAK,GAAGD,IAAI,CAAC,CAAD,CAAlB;;IACA,IAAIE,KAAK,CAACC,OAAN,CAAcF,KAAd,CAAJ,EAA0B;MACxB,OAAO;QAAED,IAAI,EAAEC,KAAR;QAAeG,IAAI,EAAE;MAArB,CAAP;IACD;;IACD,IAAIhB,wBAAQa,KAAR,CAAJ,EAAoB;MAClB,MAAMG,IAAI,GAAGC,MAAM,CAACD,IAAP,CAAYH,KAAZ,CAAb;MACA,OAAO;QACLD,IAAI,EAAEK,MAAM,CAACC,MAAP,CAAcL,KAAd,CADD;QAELG;MAFK,CAAP;IAID;EACF;;EAED,OAAO;IAAEJ,IAAI,EAAEA,IAAR;IAAkCI,IAAI,EAAE;EAAxC,CAAP;AACD;AAuBD,OAAO,gBAAgBG,8BAAhB,CAAkDC,cAAlD,EAAuF;EAC5F,MAAMC,MAAM,GAAGD,cAAc,CAACE,SAAf,EAAf;;EACA,IAAI;IACF,OAAO,IAAP,EAAa;MACX,MAAM;QAAEC,KAAF;QAASC;MAAT,IAAkB,MAAMH,MAAM,CAACI,IAAP,EAA9B;;MACA,IAAID,IAAJ,EAAU;QACR;MACD;;MACD,MAAMD,KAAN;IACD;EACF,CARD,SAQU;IACRF,MAAM,CAACK,WAAP;EACD;AACF;AAED,OAAM,SAAUC,gBAAV,CAA8B9B,CAA9B,EAAoC;EACxC,OAAOG,2BAAWH,CAAC,EAAEyB,SAAd,CAAP;AACD","names":["arrayRemove","arr","item","index","indexOf","splice","noop","isAsyncIterable","u","Symbol","asyncIterator","tsplus_module_1","isArrayLike","length","isPromiseLike","then","isValidDate","isNaN","reportUnhandledError","err","tsplus_module_2","setTimeout","arrayOrObject","args","first","Array","isArray","keys","Object","values","readableStreamToAsyncGenerator","readableStream","reader","getReader","value","done","read","releaseLock","isReadableStream"],"sourceRoot":"","sources":["../../_src/internal/util.ts"],"sourcesContent":[null]}
package/_src/Action.ts ADDED
@@ -0,0 +1,10 @@
1
+ /* eslint-disable @typescript-eslint/no-unused-vars */
2
+ export class Action<A> extends Subscription {
3
+ constructor(scheduler: Scheduler, work: (this: SchedulerAction<A>, state?: A) => void) {
4
+ super();
5
+ }
6
+
7
+ public schedule(state?: A, delay = 0): Subscription {
8
+ return this;
9
+ }
10
+ }
@@ -0,0 +1,27 @@
1
+ export class AnimationFrameAction<A> extends AsyncAction<A> {
2
+ constructor(
3
+ protected scheduler: AnimationFrameScheduler,
4
+ protected work: (this: SchedulerAction<A>, state?: A) => void,
5
+ ) {
6
+ super(scheduler, work);
7
+ }
8
+
9
+ protected requestAsyncId(scheduler: AnimationFrameScheduler, delay = 0): any {
10
+ if (delay != null && delay > 0) {
11
+ return super.requestAsyncId(scheduler, delay);
12
+ }
13
+ scheduler.actions.push(this);
14
+ return (scheduler.scheduled ||= animationFrameProvider.requestAnimationFrame(() => scheduler.flush(undefined)));
15
+ }
16
+
17
+ protected recycleAsyncId(scheduler: AnimationFrameScheduler, id?: any, delay = 0): any {
18
+ if ((delay != null && delay > 0) || (delay == null && this.delay! > 0)) {
19
+ super.recycleAsyncId(scheduler, delay);
20
+ }
21
+ if (scheduler.actions.length === 0) {
22
+ animationFrameProvider.cancelAnimationFrame(id);
23
+ scheduler.scheduled = undefined;
24
+ }
25
+ return undefined;
26
+ }
27
+ }