@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.
Files changed (200) hide show
  1. package/Action.d.ts +2 -1
  2. package/AsyncScheduler.d.ts +1 -1
  3. package/LICENSE +26 -0
  4. package/ObservableRef/api.d.ts +3 -3
  5. package/ObservableRef/definition.d.ts +3 -3
  6. package/_cjs/Action.cjs +15 -16
  7. package/_cjs/Action.cjs.map +1 -1
  8. package/_cjs/AnimationFrameAction.cjs +30 -33
  9. package/_cjs/AnimationFrameAction.cjs.map +1 -1
  10. package/_cjs/AnimationFrameScheduler.cjs +30 -35
  11. package/_cjs/AnimationFrameScheduler.cjs.map +1 -1
  12. package/_cjs/AsyncAction.cjs +73 -88
  13. package/_cjs/AsyncAction.cjs.map +1 -1
  14. package/_cjs/AsyncScheduler.cjs +35 -41
  15. package/_cjs/AsyncScheduler.cjs.map +1 -1
  16. package/_cjs/BehaviorSubject.cjs +31 -37
  17. package/_cjs/BehaviorSubject.cjs.map +1 -1
  18. package/_cjs/Notification.cjs +65 -70
  19. package/_cjs/Notification.cjs.map +1 -1
  20. package/_cjs/Observable/api/connect.cjs +23 -25
  21. package/_cjs/Observable/api/connect.cjs.map +1 -1
  22. package/_cjs/Observable/api/connectable.cjs +46 -45
  23. package/_cjs/Observable/api/connectable.cjs.map +1 -1
  24. package/_cjs/Observable/api/fromCallback.cjs +44 -48
  25. package/_cjs/Observable/api/fromCallback.cjs.map +1 -1
  26. package/_cjs/Observable/api/fromEvent.cjs +15 -15
  27. package/_cjs/Observable/api/fromEvent.cjs.map +1 -1
  28. package/_cjs/Observable/api/index.cjs +32 -160
  29. package/_cjs/Observable/api/race.cjs +26 -30
  30. package/_cjs/Observable/api/race.cjs.map +1 -1
  31. package/_cjs/Observable/api/raceWith.cjs +14 -15
  32. package/_cjs/Observable/api/raceWith.cjs.map +1 -1
  33. package/_cjs/Observable/api/repeatWhen.cjs +54 -57
  34. package/_cjs/Observable/api/repeatWhen.cjs.map +1 -1
  35. package/_cjs/Observable/api/retryWhen.cjs +37 -41
  36. package/_cjs/Observable/api/retryWhen.cjs.map +1 -1
  37. package/_cjs/Observable/api/share.cjs +73 -83
  38. package/_cjs/Observable/api/share.cjs.map +1 -1
  39. package/_cjs/Observable/api/window.cjs +46 -43
  40. package/_cjs/Observable/api/window.cjs.map +1 -1
  41. package/_cjs/Observable/api/windowCount.cjs +45 -51
  42. package/_cjs/Observable/api/windowCount.cjs.map +1 -1
  43. package/_cjs/Observable/api/windowTime.cjs +73 -74
  44. package/_cjs/Observable/api/windowTime.cjs.map +1 -1
  45. package/_cjs/Observable/api/windowToggle.cjs +71 -74
  46. package/_cjs/Observable/api/windowToggle.cjs.map +1 -1
  47. package/_cjs/Observable/api/windowWhen.cjs +59 -55
  48. package/_cjs/Observable/api/windowWhen.cjs.map +1 -1
  49. package/_cjs/Observable/api.cjs +1858 -2033
  50. package/_cjs/Observable/api.cjs.map +1 -1
  51. package/_cjs/Observable/definition.cjs +107 -120
  52. package/_cjs/Observable/definition.cjs.map +1 -1
  53. package/_cjs/Observable/dom/animationFrames.cjs +30 -33
  54. package/_cjs/Observable/dom/animationFrames.cjs.map +1 -1
  55. package/_cjs/Observable/instances.cjs +0 -2
  56. package/_cjs/Observable.cjs +180 -215
  57. package/_cjs/ObservableRef/api.cjs +188 -156
  58. package/_cjs/ObservableRef/api.cjs.map +1 -1
  59. package/_cjs/ObservableRef/atomic.cjs +25 -28
  60. package/_cjs/ObservableRef/atomic.cjs.map +1 -1
  61. package/_cjs/ObservableRef/definition.cjs +32 -27
  62. package/_cjs/ObservableRef/definition.cjs.map +1 -1
  63. package/_cjs/ObservableRef.cjs +17 -39
  64. package/_cjs/Observer.cjs +0 -2
  65. package/_cjs/Operator.cjs +58 -61
  66. package/_cjs/Operator.cjs.map +1 -1
  67. package/_cjs/Scheduler.cjs +38 -37
  68. package/_cjs/Scheduler.cjs.map +1 -1
  69. package/_cjs/Subject.cjs +163 -202
  70. package/_cjs/Subject.cjs.map +1 -1
  71. package/_cjs/Subscriber.cjs +151 -170
  72. package/_cjs/Subscriber.cjs.map +1 -1
  73. package/_cjs/Subscription.cjs +98 -123
  74. package/_cjs/Subscription.cjs.map +1 -1
  75. package/_cjs/chunk.cjs +28 -0
  76. package/_cjs/config.cjs +11 -12
  77. package/_cjs/config.cjs.map +1 -1
  78. package/_cjs/global.cjs +0 -2
  79. package/_cjs/index.cjs +112 -36
  80. package/_cjs/internal/animationFrameProvider.cjs +32 -38
  81. package/_cjs/internal/animationFrameProvider.cjs.map +1 -1
  82. package/_cjs/internal/args.cjs +12 -12
  83. package/_cjs/internal/args.cjs.map +1 -1
  84. package/_cjs/internal/intervalProvider.cjs +15 -22
  85. package/_cjs/internal/intervalProvider.cjs.map +1 -1
  86. package/_cjs/internal/performanceTimestampProvider.cjs +10 -11
  87. package/_cjs/internal/performanceTimestampProvider.cjs.map +1 -1
  88. package/_cjs/internal/timeoutProvider.cjs +15 -22
  89. package/_cjs/internal/timeoutProvider.cjs.map +1 -1
  90. package/_cjs/internal/timestampProvider.cjs +10 -11
  91. package/_cjs/internal/timestampProvider.cjs.map +1 -1
  92. package/_cjs/internal/util.cjs +60 -68
  93. package/_cjs/internal/util.cjs.map +1 -1
  94. package/_mjs/Action.mjs +12 -8
  95. package/_mjs/Action.mjs.map +1 -1
  96. package/_mjs/AnimationFrameAction.mjs +25 -24
  97. package/_mjs/AnimationFrameAction.mjs.map +1 -1
  98. package/_mjs/AnimationFrameScheduler.mjs +25 -27
  99. package/_mjs/AnimationFrameScheduler.mjs.map +1 -1
  100. package/_mjs/AsyncAction.mjs +69 -79
  101. package/_mjs/AsyncAction.mjs.map +1 -1
  102. package/_mjs/AsyncScheduler.mjs +32 -34
  103. package/_mjs/AsyncScheduler.mjs.map +1 -1
  104. package/_mjs/BehaviorSubject.mjs +28 -29
  105. package/_mjs/BehaviorSubject.mjs.map +1 -1
  106. package/_mjs/Notification.mjs +57 -60
  107. package/_mjs/Notification.mjs.map +1 -1
  108. package/_mjs/Observable/api/connect.mjs +17 -17
  109. package/_mjs/Observable/api/connect.mjs.map +1 -1
  110. package/_mjs/Observable/api/connectable.mjs +39 -35
  111. package/_mjs/Observable/api/connectable.mjs.map +1 -1
  112. package/_mjs/Observable/api/fromCallback.mjs +40 -41
  113. package/_mjs/Observable/api/fromCallback.mjs.map +1 -1
  114. package/_mjs/Observable/api/fromEvent.mjs +12 -8
  115. package/_mjs/Observable/api/fromEvent.mjs.map +1 -1
  116. package/_mjs/Observable/api/index.mjs +15 -15
  117. package/_mjs/Observable/api/race.mjs +20 -22
  118. package/_mjs/Observable/api/race.mjs.map +1 -1
  119. package/_mjs/Observable/api/raceWith.mjs +11 -8
  120. package/_mjs/Observable/api/raceWith.mjs.map +1 -1
  121. package/_mjs/Observable/api/repeatWhen.mjs +48 -49
  122. package/_mjs/Observable/api/repeatWhen.mjs.map +1 -1
  123. package/_mjs/Observable/api/retryWhen.mjs +31 -33
  124. package/_mjs/Observable/api/retryWhen.mjs.map +1 -1
  125. package/_mjs/Observable/api/share.mjs +65 -74
  126. package/_mjs/Observable/api/share.mjs.map +1 -1
  127. package/_mjs/Observable/api/window.mjs +38 -34
  128. package/_mjs/Observable/api/window.mjs.map +1 -1
  129. package/_mjs/Observable/api/windowCount.mjs +39 -43
  130. package/_mjs/Observable/api/windowCount.mjs.map +1 -1
  131. package/_mjs/Observable/api/windowTime.mjs +63 -64
  132. package/_mjs/Observable/api/windowTime.mjs.map +1 -1
  133. package/_mjs/Observable/api/windowToggle.mjs +58 -62
  134. package/_mjs/Observable/api/windowToggle.mjs.map +1 -1
  135. package/_mjs/Observable/api/windowWhen.mjs +50 -46
  136. package/_mjs/Observable/api/windowWhen.mjs.map +1 -1
  137. package/_mjs/Observable/api.mjs +1822 -2030
  138. package/_mjs/Observable/api.mjs.map +1 -1
  139. package/_mjs/Observable/definition.mjs +94 -108
  140. package/_mjs/Observable/definition.mjs.map +1 -1
  141. package/_mjs/Observable/dom/animationFrames.mjs +23 -23
  142. package/_mjs/Observable/dom/animationFrames.mjs.map +1 -1
  143. package/_mjs/Observable/instances.mjs +0 -2
  144. package/_mjs/Observable.mjs +20 -25
  145. package/_mjs/ObservableRef/api.mjs +180 -144
  146. package/_mjs/ObservableRef/api.mjs.map +1 -1
  147. package/_mjs/ObservableRef/atomic.mjs +21 -20
  148. package/_mjs/ObservableRef/atomic.mjs.map +1 -1
  149. package/_mjs/ObservableRef/definition.mjs +29 -19
  150. package/_mjs/ObservableRef/definition.mjs.map +1 -1
  151. package/_mjs/ObservableRef.mjs +4 -5
  152. package/_mjs/Observer.mjs +0 -2
  153. package/_mjs/Operator.mjs +50 -50
  154. package/_mjs/Operator.mjs.map +1 -1
  155. package/_mjs/Scheduler.mjs +30 -26
  156. package/_mjs/Scheduler.mjs.map +1 -1
  157. package/_mjs/Subject.mjs +154 -191
  158. package/_mjs/Subject.mjs.map +1 -1
  159. package/_mjs/Subscriber.mjs +136 -156
  160. package/_mjs/Subscriber.mjs.map +1 -1
  161. package/_mjs/Subscription.mjs +90 -113
  162. package/_mjs/Subscription.mjs.map +1 -1
  163. package/_mjs/config.mjs +10 -6
  164. package/_mjs/config.mjs.map +1 -1
  165. package/_mjs/global.mjs +0 -2
  166. package/_mjs/index.mjs +14 -15
  167. package/_mjs/internal/animationFrameProvider.mjs +28 -30
  168. package/_mjs/internal/animationFrameProvider.mjs.map +1 -1
  169. package/_mjs/internal/args.mjs +9 -5
  170. package/_mjs/internal/args.mjs.map +1 -1
  171. package/_mjs/internal/intervalProvider.mjs +14 -16
  172. package/_mjs/internal/intervalProvider.mjs.map +1 -1
  173. package/_mjs/internal/performanceTimestampProvider.mjs +9 -5
  174. package/_mjs/internal/performanceTimestampProvider.mjs.map +1 -1
  175. package/_mjs/internal/timeoutProvider.mjs +14 -16
  176. package/_mjs/internal/timeoutProvider.mjs.map +1 -1
  177. package/_mjs/internal/timestampProvider.mjs +9 -5
  178. package/_mjs/internal/timestampProvider.mjs.map +1 -1
  179. package/_mjs/internal/util.mjs +54 -59
  180. package/_mjs/internal/util.mjs.map +1 -1
  181. package/_src/Action.ts +2 -0
  182. package/_src/AsyncScheduler.ts +2 -0
  183. package/_src/Observable/api.ts +4 -4
  184. package/_src/ObservableRef/api.ts +36 -12
  185. package/_src/ObservableRef/definition.ts +12 -4
  186. package/package.json +6 -2
  187. package/_cjs/Observable/api/index.cjs.map +0 -1
  188. package/_cjs/Observable/instances.cjs.map +0 -1
  189. package/_cjs/Observable.cjs.map +0 -1
  190. package/_cjs/ObservableRef.cjs.map +0 -1
  191. package/_cjs/Observer.cjs.map +0 -1
  192. package/_cjs/global.cjs.map +0 -1
  193. package/_cjs/index.cjs.map +0 -1
  194. package/_mjs/Observable/api/index.mjs.map +0 -1
  195. package/_mjs/Observable/instances.mjs.map +0 -1
  196. package/_mjs/Observable.mjs.map +0 -1
  197. package/_mjs/ObservableRef.mjs.map +0 -1
  198. package/_mjs/Observer.mjs.map +0 -1
  199. package/_mjs/global.mjs.map +0 -1
  200. package/_mjs/index.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Operator.mjs","names":["OperatorSubscriber","tsplus_module_1","Subscriber","constructor","destination","observer","onFinalize","next","value","err","error","tsplus_module_2","halt","unsubscribe","tsplus_module_3","isRight","failureOrCause","complete","_closed","closed","operatorSubscriber","operate_","config"],"sources":["../_src/Operator.ts"],"sourcesContent":[null],"mappings":";;;AAKA,OAAM,MAAOA,kBAAyB,SAAQC,eAAA,CAAAC,UAAgB;EAC5DC,YACEC,WAAiC,EACjCC,QAAiC,EACzBC,UAAuB;IAE/B,KAAK,CAACF,WAAW,CAAC;IAFV,KAAAE,UAAU,GAAVA,UAAU;IAGlB,IAAI,CAACC,IAAI,GAAGF,QAAQ,CAACE,IAAI,GACrB,UAA0CC,KAAQ;MAChD,IAAI;QACFH,QAAQ,CAACE,IAAK,CAACC,KAAK,CAAC;MACvB,CAAC,CAAC,OAAOC,GAAG,EAAE;QACZL,WAAW,CAACM,KAAK,CAACC,eAAA,CAAAC,IAAA,CAAWH,GAAG,CAAC,CAAC;MACpC;IACF,CAAC,GACD,KAAK,CAACF,IAAI;IACd,IAAI,CAACG,KAAK,GAAGL,QAAQ,CAACK,KAAK,GACvB,UAA0CA,KAAe;MACvD,IAAI;QACFL,QAAQ,CAACK,KAAM,CAACA,KAAK,CAAC;MACxB,CAAC,CAAC,OAAOD,GAAG,EAAE;QACZL,WAAW,CAACM,KAAK,CAACC,eAAA,CAAAC,IAAA,CAAWH,GAAG,CAAC,CAAC;QAClC,IAAI,CAACI,WAAW,EAAE;MACpB,CAAC,SAAS;QACR,IAAIC,eAAA,CAAAC,OAAA,CAAAJ,eAAA,CAAAK,cAAA,CAAAN,KAAK,EAAyB,EAAE;UAClC,IAAI,CAACG,WAAW,EAAE;QACpB;MACF;IACF,CAAC,GACD,KAAK,CAACH,KAAK;IACf,IAAI,CAACO,QAAQ,GAAGZ,QAAQ,CAACY,QAAQ,GAC7B;MACE,IAAI;QACFZ,QAAQ,CAACY,QAAS,EAAE;MACtB,CAAC,CAAC,OAAOR,GAAG,EAAE;QACZL,WAAW,CAACM,KAAK,CAACC,eAAA,CAAAC,IAAA,CAAWH,GAAG,CAAC,CAAC;MACpC,CAAC,SAAS;QACR,IAAI,CAACI,WAAW,EAAE;MACpB;IACF,CAAC,GACD,KAAK,CAACI,QAAQ;EACpB;EACAJ,WAAWA,CAAA;IACT,MAAM;MAAEK,OAAO,EAAEC;IAAM,CAAE,GAAG,IAAI;IAChC,KAAK,CAACN,WAAW,EAAE;IACnB,CAACM,MAAM,IAAI,IAAI,CAACb,UAAU,GAAE,CAAE;EAChC;;AAEF,OAAM,SAAUc,kBAAkBA,CAChChB,WAA+B,EAC/BC,QAAiC,EACjCC,UAAuB;EAEvB,OAAO,IAAIN,kBAAkB,CAACI,WAAW,EAAEC,QAAQ,EAAEC,UAAU,CAAC;AAClE;AAEA;;;AAGA,OAAM,SAAUe,QAAQA,CAASC,MAAmC;EAClE,OAAclB,WAA6B,IAAwB;IACjE;IACA,OAAO,IAAAH,eAAA,CAAIC,UAAU,CAASE,WAAW,EAAEkB,MAAM,CAAC;EACpD,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"file":"Operator.mjs","names":[],"sources":["../esm/Operator.js"],"sourcesContent":["import * as tsplus_module_1 from \"@fncts/observable/Subscriber\";\nimport * as tsplus_module_2 from \"@fncts/base/data/Cause/api\";\nimport * as tsplus_module_3 from \"@fncts/base/data/Either/api\";\nexport class OperatorSubscriber extends tsplus_module_1.Subscriber {\n onFinalize;\n constructor(destination, observer, onFinalize) {\n super(destination);\n this.onFinalize = onFinalize;\n this.next = observer.next\n ? function (value) {\n try {\n observer.next(value);\n }\n catch (err) {\n destination.error(tsplus_module_2.halt(err));\n }\n }\n : super.next;\n this.error = observer.error\n ? function (error) {\n try {\n observer.error(error);\n }\n catch (err) {\n destination.error(tsplus_module_2.halt(err));\n this.unsubscribe();\n }\n finally {\n if (tsplus_module_3.isRight(tsplus_module_2.failureOrCause(error))) {\n this.unsubscribe();\n }\n }\n }\n : super.error;\n this.complete = observer.complete\n ? function () {\n try {\n observer.complete();\n }\n catch (err) {\n destination.error(tsplus_module_2.halt(err));\n }\n finally {\n this.unsubscribe();\n }\n }\n : super.complete;\n }\n unsubscribe() {\n const { _closed: closed } = this;\n super.unsubscribe();\n !closed && this.onFinalize?.();\n }\n}\nexport function operatorSubscriber(destination, observer, onFinalize) {\n return new OperatorSubscriber(destination, observer, onFinalize);\n}\n/**\n * @tsplus pipeable fncts.observable.Subscriber operate\n */\nexport function operate_(config) {\n return (destination) => {\n // @ts-expect-error\n return new tsplus_module_1.Subscriber(destination, config);\n };\n}\n//# sourceMappingURL=Operator.js.map"],"mappings":";;;;AAGA,IAAa,qBAAb,cAAwC,gBAAgB,WAAW;CAC/D;CACA,YAAY,aAAa,UAAU,YAAY;AAC3C,QAAM,YAAY;AAClB,OAAK,aAAa;AAClB,OAAK,OAAO,SAAS,OACf,SAAU,OAAO;AACf,OAAI;AACA,aAAS,KAAK,MAAM;YAEjB,KAAK;AACR,gBAAY,MAAM,gBAAgB,KAAK,IAAI,CAAC;;MAGlD,MAAM;AACZ,OAAK,QAAQ,SAAS,QAChB,SAAU,OAAO;AACf,OAAI;AACA,aAAS,MAAM,MAAM;YAElB,KAAK;AACR,gBAAY,MAAM,gBAAgB,KAAK,IAAI,CAAC;AAC5C,SAAK,aAAa;aAEd;AACJ,QAAI,gBAAgB,QAAQ,gBAAgB,eAAe,MAAM,CAAC,CAC9D,MAAK,aAAa;;MAI5B,MAAM;AACZ,OAAK,WAAW,SAAS,WACnB,WAAY;AACV,OAAI;AACA,aAAS,UAAU;YAEhB,KAAK;AACR,gBAAY,MAAM,gBAAgB,KAAK,IAAI,CAAC;aAExC;AACJ,SAAK,aAAa;;MAGxB,MAAM;;CAEhB,cAAc;EACV,MAAM,EAAE,SAAS,WAAW;AAC5B,QAAM,aAAa;AACnB,GAAC,UAAU,KAAK,cAAc;;;AAGtC,SAAgB,mBAAmB,aAAa,UAAU,YAAY;AAClE,QAAO,IAAI,mBAAmB,aAAa,UAAU,WAAW;;;;;AAKpE,SAAgB,SAAS,QAAQ;AAC7B,SAAQ,gBAAgB;AAEpB,SAAO,IAAI,gBAAgB,WAAW,aAAa,OAAO"}
@@ -1,32 +1,36 @@
1
- var _a;
2
1
  import * as tsplus_module_1 from "@fncts/base/util/predicates";
3
2
  import * as tsplus_module_2 from "@fncts/base/data/Cause/api";
4
3
  import { dateTimestampProvider } from "@fncts/observable/internal/timestampProvider";
5
- export const SchedulerTypeId = /*#__PURE__*/Symbol.for("fncts.observable.Scheduler");
6
- export class Scheduler {
7
- constructor(actionConstructor, now = Scheduler.now) {
8
- this.actionConstructor = actionConstructor;
9
- this[_a] = SchedulerTypeId;
10
- this.now = now;
11
- }
12
- schedule(work, delay, state) {
13
- return new this.actionConstructor(this, work).schedule(state, delay);
14
- }
4
+ //#region build/esm/Scheduler.js
5
+ const SchedulerTypeId = Symbol.for("fncts.observable.Scheduler");
6
+ var Scheduler = class Scheduler {
7
+ actionConstructor;
8
+ [SchedulerTypeId] = SchedulerTypeId;
9
+ now;
10
+ constructor(actionConstructor, now = Scheduler.now) {
11
+ this.actionConstructor = actionConstructor;
12
+ this.now = now;
13
+ }
14
+ schedule(work, delay, state) {
15
+ return new this.actionConstructor(this, work).schedule(state, delay);
16
+ }
17
+ static now = dateTimestampProvider.now;
18
+ };
19
+ function isScheduler(u) {
20
+ return tsplus_module_1.isObject(u) && SchedulerTypeId in u;
15
21
  }
16
- _a = SchedulerTypeId;
17
- Scheduler.now = dateTimestampProvider.now;
18
- export function isScheduler(u) {
19
- return tsplus_module_1.isObject(u) && SchedulerTypeId in u;
20
- }
21
- export function caughtSchedule(subscriber, scheduler, execute, delay = 0) {
22
- const subscription = scheduler.schedule(function () {
23
- try {
24
- execute.call(this);
25
- } catch (err) {
26
- subscriber.error(tsplus_module_2.halt(err));
27
- }
28
- }, delay);
29
- subscriber.add(subscription);
30
- return subscription;
22
+ function caughtSchedule(subscriber, scheduler, execute, delay = 0) {
23
+ const subscription = scheduler.schedule(function() {
24
+ try {
25
+ execute.call(this);
26
+ } catch (err) {
27
+ subscriber.error(tsplus_module_2.halt(err));
28
+ }
29
+ }, delay);
30
+ subscriber.add(subscription);
31
+ return subscription;
31
32
  }
33
+ //#endregion
34
+ export { Scheduler, SchedulerTypeId, caughtSchedule, isScheduler };
35
+
32
36
  //# sourceMappingURL=Scheduler.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Scheduler.mjs","names":["dateTimestampProvider","SchedulerTypeId","Symbol","for","Scheduler","constructor","actionConstructor","now","_a","schedule","work","delay","state","isScheduler","u","tsplus_module_1","isObject","caughtSchedule","subscriber","scheduler","execute","subscription","call","err","error","tsplus_module_2","halt","add"],"sources":["../_src/Scheduler.ts"],"sourcesContent":[null],"mappings":";;;AAAA,SAASA,qBAAqB,QAAQ,8CAA8C;AAUpF,OAAO,MAAMC,eAAe,gBAAGC,MAAM,CAACC,GAAG,CAAC,4BAA4B,CAAC;AAGvE,OAAM,MAAOC,SAAS;EAIpBC,YACUC,iBAAgC,EACxCC,GAAA,GAAoBH,SAAS,CAACG,GAAG;IADzB,KAAAD,iBAAiB,GAAjBA,iBAAiB;IAJlB,KAAAE,EAAA,CAAiB,GAAoBP,eAAe;IAO3D,IAAI,CAACM,GAAG,GAAGA,GAAG;EAChB;EACAE,QAAQA,CAAIC,IAAmD,EAAEC,KAAc,EAAEC,KAAS;IACxF,OAAO,IAAI,IAAI,CAACN,iBAAiB,CAAC,IAAI,EAAEI,IAAI,CAAC,CAACD,QAAQ,CAACG,KAAK,EAAED,KAAK,CAAC;EACtE;;KAXUV,eAAe;AAYXG,SAAA,CAAAG,GAAG,GAAiBP,qBAAqB,CAACO,GAAG;AAG7D,OAAM,SAAUM,WAAWA,CAACC,CAAU;EACpC,OAAOC,eAAA,CAAAC,QAAQ,CAACF,CAAC,CAAC,IAAIb,eAAe,IAAIa,CAAC;AAC5C;AAEA,OAAM,SAAUG,cAAcA,CAC5BC,UAA4B,EAC5BC,SAAwB,EACxBC,OAA6C,EAC7CT,KAAK,GAAG,CAAC;EAET,MAAMU,YAAY,GAAGF,SAAS,CAACV,QAAQ,CAAC;IACtC,IAAI;MACFW,OAAO,CAACE,IAAI,CAAC,IAAI,CAAC;IACpB,CAAC,CAAC,OAAOC,GAAG,EAAE;MACZL,UAAU,CAACM,KAAK,CAACC,eAAA,CAAAC,IAAA,CAAWH,GAAG,CAAC,CAAC;IACnC;EACF,CAAC,EAAEZ,KAAK,CAAC;EACTO,UAAU,CAACS,GAAG,CAACN,YAAY,CAAC;EAC5B,OAAOA,YAAY;AACrB","ignoreList":[]}
1
+ {"version":3,"file":"Scheduler.mjs","names":[],"sources":["../esm/Scheduler.js"],"sourcesContent":["import * as tsplus_module_1 from \"@fncts/base/util/predicates\";\nimport * as tsplus_module_2 from \"@fncts/base/data/Cause/api\";\nimport { dateTimestampProvider } from \"@fncts/observable/internal/timestampProvider\";\nexport const SchedulerTypeId = Symbol.for(\"fncts.observable.Scheduler\");\nexport class Scheduler {\n actionConstructor;\n [SchedulerTypeId] = SchedulerTypeId;\n now;\n constructor(actionConstructor, now = Scheduler.now) {\n this.actionConstructor = actionConstructor;\n this.now = now;\n }\n schedule(work, delay, state) {\n return new this.actionConstructor(this, work).schedule(state, delay);\n }\n static now = dateTimestampProvider.now;\n}\nexport function isScheduler(u) {\n return tsplus_module_1.isObject(u) && SchedulerTypeId in u;\n}\nexport function caughtSchedule(subscriber, scheduler, execute, delay = 0) {\n const subscription = scheduler.schedule(function () {\n try {\n execute.call(this);\n }\n catch (err) {\n subscriber.error(tsplus_module_2.halt(err));\n }\n }, delay);\n subscriber.add(subscription);\n return subscription;\n}\n//# sourceMappingURL=Scheduler.js.map"],"mappings":";;;;AAGA,MAAa,kBAAkB,OAAO,IAAI,6BAA6B;AACvE,IAAa,YAAb,MAAa,UAAU;CACnB;CACA,CAAC,mBAAmB;CACpB;CACA,YAAY,mBAAmB,MAAM,UAAU,KAAK;AAChD,OAAK,oBAAoB;AACzB,OAAK,MAAM;;CAEf,SAAS,MAAM,OAAO,OAAO;AACzB,SAAO,IAAI,KAAK,kBAAkB,MAAM,KAAK,CAAC,SAAS,OAAO,MAAM;;CAExE,OAAO,MAAM,sBAAsB;;AAEvC,SAAgB,YAAY,GAAG;AAC3B,QAAO,gBAAgB,SAAS,EAAE,IAAI,mBAAmB;;AAE7D,SAAgB,eAAe,YAAY,WAAW,SAAS,QAAQ,GAAG;CACtE,MAAM,eAAe,UAAU,SAAS,WAAY;AAChD,MAAI;AACA,WAAQ,KAAK,KAAK;WAEf,KAAK;AACR,cAAW,MAAM,gBAAgB,KAAK,IAAI,CAAC;;IAEhD,MAAM;AACT,YAAW,IAAI,aAAa;AAC5B,QAAO"}
package/_mjs/Subject.mjs CHANGED
@@ -1,197 +1,160 @@
1
- const fileName_1 = "(@fncts/observable) src/Subject.ts";
2
1
  import * as tsplus_module_1 from "@fncts/observable/Observable";
3
2
  import * as tsplus_module_2 from "@fncts/observable/Subscription";
4
3
  import * as tsplus_module_3 from "@fncts/base/data/Either/destructors";
5
4
  import * as tsplus_module_4 from "@fncts/base/data/Either/constructors";
5
+ //#region build/esm/Subject.js
6
+ const fileName_1 = "(@fncts/observable) src/Subject.ts";
6
7
  /**
7
- * A Subject is a special type of Observable that allows values to be
8
- * multicasted to many Observers. Subjects are like EventEmitters.
9
- *
10
- * Every Subject is an Observable and an Observer. You can subscribe to a
11
- * Subject, and you can call next to feed values as well as error and complete.
12
- */
13
- export class Subject extends tsplus_module_1.Observable {
14
- constructor() {
15
- super();
16
- this._closed = false;
17
- this.currentObservers = new Map();
18
- this.observersCount = 0;
19
- this.hasError = false;
20
- this.thrownError = null;
21
- }
22
- get closed() {
23
- return this._closed;
24
- }
25
- get observers() {
26
- return this.observerSnapshot ?? (this.observerSnapshot = Array.from(this.currentObservers.values()));
27
- }
28
- next(value) {
29
- if (!this._closed) {
30
- const {
31
- observers
32
- } = this;
33
- const len = observers.length;
34
- for (let i = 0; i < len; i++) {
35
- observers[i].next(value);
36
- }
37
- }
38
- }
39
- error(err) {
40
- if (!this._closed) {
41
- this.hasError = this._closed = true;
42
- this.thrownError = err;
43
- const {
44
- observers
45
- } = this;
46
- const len = observers.length;
47
- for (let i = 0; i < len; i++) {
48
- observers[i].error(err);
49
- }
50
- this.clearObservers();
51
- }
52
- }
53
- complete() {
54
- if (!this._closed) {
55
- this._closed = true;
56
- const {
57
- observers
58
- } = this;
59
- const len = observers.length;
60
- for (let i = 0; i < len; i++) {
61
- observers[i].complete();
62
- }
63
- this.clearObservers();
64
- }
65
- }
66
- unsubscribe() {
67
- this._closed = true;
68
- this.clearObservers();
69
- }
70
- get observed() {
71
- return this.currentObservers.size > 0;
72
- }
73
- throwIfClosed() {
74
- if (this._closed) {
75
- throw new Error("Object Unsubscribed");
76
- }
77
- }
78
- clearObservers() {
79
- this.currentObservers.clear();
80
- this.observerSnapshot = undefined;
81
- }
82
- trySubscribe(subscriber, environment) {
83
- this.throwIfClosed();
84
- return super.trySubscribe(subscriber, environment);
85
- }
86
- subscribeInternal(subscriber) {
87
- this.checkFinalizedStatuses(subscriber);
88
- return this.innerSubscribe(subscriber);
89
- }
90
- innerSubscribe(subscriber) {
91
- const {
92
- hasError,
93
- _closed: closed
94
- } = this;
95
- if (hasError || closed) {
96
- return tsplus_module_2.EMPTY_SUBSCRIPTION;
97
- }
98
- const {
99
- currentObservers
100
- } = this;
101
- const observerId = this.observersCount++;
102
- currentObservers.set(observerId, subscriber);
103
- this.observerSnapshot = undefined;
104
- subscriber.add(() => {
105
- currentObservers.delete(observerId);
106
- this.observerSnapshot = undefined;
107
- });
108
- return subscriber;
109
- }
110
- checkFinalizedStatuses(subscriber) {
111
- const {
112
- hasError,
113
- thrownError,
114
- _closed: closed
115
- } = this;
116
- if (hasError) {
117
- subscriber.error(thrownError);
118
- } else if (closed) {
119
- subscriber.complete();
120
- }
121
- }
122
- asObservable() {
123
- const observable = new tsplus_module_1.Observable();
124
- observable.source = this;
125
- return observable;
126
- }
127
- }
128
- export class AnonymousSubject extends Subject {
129
- constructor(destination, source) {
130
- super();
131
- this.destination = destination;
132
- this.source = source;
133
- }
134
- next(value) {
135
- this.destination?.next?.(value);
136
- }
137
- error(err) {
138
- this.destination?.error?.(err);
139
- }
140
- complete() {
141
- this.destination?.complete?.();
142
- }
143
- /** @internal */
144
- subscribeInternal(subscriber) {
145
- return this.source?.provideEnvironment(this.environment).subscribe(subscriber) ?? tsplus_module_2.EMPTY_SUBSCRIPTION;
146
- }
147
- }
148
- export class AsyncSubject extends Subject {
149
- constructor() {
150
- super(...arguments);
151
- this.value = null;
152
- this.hasValue = false;
153
- this.isComplete = false;
154
- }
155
- /** @internal */
156
- checkFinalizedStatuses(subscriber) {
157
- const {
158
- hasError,
159
- hasValue,
160
- value,
161
- thrownError,
162
- _closed: closed,
163
- isComplete
164
- } = this;
165
- if (hasError) {
166
- subscriber.error(thrownError);
167
- } else if (closed || isComplete) {
168
- hasValue && tsplus_module_3.match(e => subscriber.error(e), a => subscriber.next(a))(value);
169
- subscriber.complete();
170
- }
171
- }
172
- next(value) {
173
- if (!this._closed) {
174
- this.value = tsplus_module_4.right(value, fileName_1 + ":177:35");
175
- this.hasValue = true;
176
- }
177
- }
178
- error(err) {
179
- if (!this._closed) {
180
- this.value = tsplus_module_4.left(err, fileName_1 + ":184:34");
181
- this.hasValue = true;
182
- }
183
- }
184
- complete() {
185
- const {
186
- hasValue,
187
- value,
188
- isComplete
189
- } = this;
190
- if (!isComplete) {
191
- this.isComplete = true;
192
- hasValue && tsplus_module_3.match(e => super.error(e), a => super.next(a))(value);
193
- super.complete();
194
- }
195
- }
196
- }
8
+ * A Subject is a special type of Observable that allows values to be
9
+ * multicasted to many Observers. Subjects are like EventEmitters.
10
+ *
11
+ * Every Subject is an Observable and an Observer. You can subscribe to a
12
+ * Subject, and you can call next to feed values as well as error and complete.
13
+ */
14
+ var Subject = class extends tsplus_module_1.Observable {
15
+ _closed = false;
16
+ currentObservers = /* @__PURE__ */ new Map();
17
+ observersCount = 0;
18
+ observerSnapshot;
19
+ hasError = false;
20
+ thrownError = null;
21
+ constructor() {
22
+ super();
23
+ }
24
+ get closed() {
25
+ return this._closed;
26
+ }
27
+ get observers() {
28
+ return this.observerSnapshot ??= Array.from(this.currentObservers.values());
29
+ }
30
+ next(value) {
31
+ if (!this._closed) {
32
+ const { observers } = this;
33
+ const len = observers.length;
34
+ for (let i = 0; i < len; i++) observers[i].next(value);
35
+ }
36
+ }
37
+ error(err) {
38
+ if (!this._closed) {
39
+ this.hasError = this._closed = true;
40
+ this.thrownError = err;
41
+ const { observers } = this;
42
+ const len = observers.length;
43
+ for (let i = 0; i < len; i++) observers[i].error(err);
44
+ this.clearObservers();
45
+ }
46
+ }
47
+ complete() {
48
+ if (!this._closed) {
49
+ this._closed = true;
50
+ const { observers } = this;
51
+ const len = observers.length;
52
+ for (let i = 0; i < len; i++) observers[i].complete();
53
+ this.clearObservers();
54
+ }
55
+ }
56
+ unsubscribe() {
57
+ this._closed = true;
58
+ this.clearObservers();
59
+ }
60
+ get observed() {
61
+ return this.currentObservers.size > 0;
62
+ }
63
+ throwIfClosed() {
64
+ if (this._closed) throw new Error("Object Unsubscribed");
65
+ }
66
+ clearObservers() {
67
+ this.currentObservers.clear();
68
+ this.observerSnapshot = void 0;
69
+ }
70
+ trySubscribe(subscriber, environment) {
71
+ this.throwIfClosed();
72
+ return super.trySubscribe(subscriber, environment);
73
+ }
74
+ subscribeInternal(subscriber) {
75
+ this.checkFinalizedStatuses(subscriber);
76
+ return this.innerSubscribe(subscriber);
77
+ }
78
+ innerSubscribe(subscriber) {
79
+ const { hasError, _closed: closed } = this;
80
+ if (hasError || closed) return tsplus_module_2.EMPTY_SUBSCRIPTION;
81
+ const { currentObservers } = this;
82
+ const observerId = this.observersCount++;
83
+ currentObservers.set(observerId, subscriber);
84
+ this.observerSnapshot = void 0;
85
+ subscriber.add(() => {
86
+ currentObservers.delete(observerId);
87
+ this.observerSnapshot = void 0;
88
+ });
89
+ return subscriber;
90
+ }
91
+ checkFinalizedStatuses(subscriber) {
92
+ const { hasError, thrownError, _closed: closed } = this;
93
+ if (hasError) subscriber.error(thrownError);
94
+ else if (closed) subscriber.complete();
95
+ }
96
+ asObservable() {
97
+ const observable = new tsplus_module_1.Observable();
98
+ observable.source = this;
99
+ return observable;
100
+ }
101
+ };
102
+ var AnonymousSubject = class extends Subject {
103
+ destination;
104
+ constructor(destination, source) {
105
+ super();
106
+ this.destination = destination;
107
+ this.source = source;
108
+ }
109
+ next(value) {
110
+ this.destination?.next?.(value);
111
+ }
112
+ error(err) {
113
+ this.destination?.error?.(err);
114
+ }
115
+ complete() {
116
+ this.destination?.complete?.();
117
+ }
118
+ /** @internal */
119
+ subscribeInternal(subscriber) {
120
+ return this.source?.provideEnvironment(this.environment).subscribe(subscriber) ?? tsplus_module_2.EMPTY_SUBSCRIPTION;
121
+ }
122
+ };
123
+ var AsyncSubject = class extends Subject {
124
+ value = null;
125
+ hasValue = false;
126
+ isComplete = false;
127
+ /** @internal */
128
+ checkFinalizedStatuses(subscriber) {
129
+ const { hasError, hasValue, value, thrownError, _closed: closed, isComplete } = this;
130
+ if (hasError) subscriber.error(thrownError);
131
+ else if (closed || isComplete) {
132
+ hasValue && tsplus_module_3.match((e) => subscriber.error(e), (a) => subscriber.next(a))(value);
133
+ subscriber.complete();
134
+ }
135
+ }
136
+ next(value) {
137
+ if (!this._closed) {
138
+ this.value = tsplus_module_4.right(value, fileName_1 + ":177:35");
139
+ this.hasValue = true;
140
+ }
141
+ }
142
+ error(err) {
143
+ if (!this._closed) {
144
+ this.value = tsplus_module_4.left(err, fileName_1 + ":184:34");
145
+ this.hasValue = true;
146
+ }
147
+ }
148
+ complete() {
149
+ const { hasValue, value, isComplete } = this;
150
+ if (!isComplete) {
151
+ this.isComplete = true;
152
+ hasValue && tsplus_module_3.match((e) => super.error(e), (a) => super.next(a))(value);
153
+ super.complete();
154
+ }
155
+ }
156
+ };
157
+ //#endregion
158
+ export { AnonymousSubject, AsyncSubject, Subject };
159
+
197
160
  //# sourceMappingURL=Subject.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Subject.mjs","names":["Subject","tsplus_module_1","Observable","constructor","_closed","currentObservers","Map","observersCount","hasError","thrownError","closed","observers","observerSnapshot","Array","from","values","next","value","len","length","i","error","err","clearObservers","complete","unsubscribe","observed","size","throwIfClosed","Error","clear","undefined","trySubscribe","subscriber","environment","subscribeInternal","checkFinalizedStatuses","innerSubscribe","tsplus_module_2","EMPTY_SUBSCRIPTION","observerId","set","add","delete","asObservable","observable","source","AnonymousSubject","destination","provideEnvironment","subscribe","AsyncSubject","hasValue","isComplete","tsplus_module_3","match","e","a","tsplus_module_4","right","fileName_1","left"],"sources":["../_src/Subject.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Subject.mjs","names":[],"sources":["../esm/Subject.js"],"sourcesContent":["const fileName_1 = \"(@fncts/observable) src/Subject.ts\";\nimport * as tsplus_module_1 from \"@fncts/observable/Observable\";\nimport * as tsplus_module_2 from \"@fncts/observable/Subscription\";\nimport * as tsplus_module_3 from \"@fncts/base/data/Either/destructors\";\nimport * as tsplus_module_4 from \"@fncts/base/data/Either/constructors\";\n/**\n * A Subject is a special type of Observable that allows values to be\n * multicasted to many Observers. Subjects are like EventEmitters.\n *\n * Every Subject is an Observable and an Observer. You can subscribe to a\n * Subject, and you can call next to feed values as well as error and complete.\n */\nexport class Subject extends tsplus_module_1.Observable {\n _closed = false;\n currentObservers = new Map();\n observersCount = 0;\n observerSnapshot;\n hasError = false;\n thrownError = null;\n constructor() {\n super();\n }\n get closed() {\n return this._closed;\n }\n get observers() {\n return (this.observerSnapshot ??= Array.from(this.currentObservers.values()));\n }\n next(value) {\n if (!this._closed) {\n const { observers } = this;\n const len = observers.length;\n for (let i = 0; i < len; i++) {\n observers[i].next(value);\n }\n }\n }\n error(err) {\n if (!this._closed) {\n this.hasError = this._closed = true;\n this.thrownError = err;\n const { observers } = this;\n const len = observers.length;\n for (let i = 0; i < len; i++) {\n observers[i].error(err);\n }\n this.clearObservers();\n }\n }\n complete() {\n if (!this._closed) {\n this._closed = true;\n const { observers } = this;\n const len = observers.length;\n for (let i = 0; i < len; i++) {\n observers[i].complete();\n }\n this.clearObservers();\n }\n }\n unsubscribe() {\n this._closed = true;\n this.clearObservers();\n }\n get observed() {\n return this.currentObservers.size > 0;\n }\n throwIfClosed() {\n if (this._closed) {\n throw new Error(\"Object Unsubscribed\");\n }\n }\n clearObservers() {\n this.currentObservers.clear();\n this.observerSnapshot = undefined;\n }\n trySubscribe(subscriber, environment) {\n this.throwIfClosed();\n return super.trySubscribe(subscriber, environment);\n }\n subscribeInternal(subscriber) {\n this.checkFinalizedStatuses(subscriber);\n return this.innerSubscribe(subscriber);\n }\n innerSubscribe(subscriber) {\n const { hasError, _closed: closed } = this;\n if (hasError || closed) {\n return tsplus_module_2.EMPTY_SUBSCRIPTION;\n }\n const { currentObservers } = this;\n const observerId = this.observersCount++;\n currentObservers.set(observerId, subscriber);\n this.observerSnapshot = undefined;\n subscriber.add(() => {\n currentObservers.delete(observerId);\n this.observerSnapshot = undefined;\n });\n return subscriber;\n }\n checkFinalizedStatuses(subscriber) {\n const { hasError, thrownError, _closed: closed } = this;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (closed) {\n subscriber.complete();\n }\n }\n asObservable() {\n const observable = new tsplus_module_1.Observable();\n observable.source = this;\n return observable;\n }\n}\nexport class AnonymousSubject extends Subject {\n destination;\n constructor(destination, source) {\n super();\n this.destination = destination;\n this.source = source;\n }\n next(value) {\n this.destination?.next?.(value);\n }\n error(err) {\n this.destination?.error?.(err);\n }\n complete() {\n this.destination?.complete?.();\n }\n /** @internal */\n subscribeInternal(subscriber) {\n return this.source?.provideEnvironment(this.environment).subscribe(subscriber) ?? tsplus_module_2.EMPTY_SUBSCRIPTION;\n }\n}\nexport class AsyncSubject extends Subject {\n value = null;\n hasValue = false;\n isComplete = false;\n /** @internal */\n checkFinalizedStatuses(subscriber) {\n const { hasError, hasValue, value, thrownError, _closed: closed, isComplete } = this;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (closed || isComplete) {\n hasValue &&\n tsplus_module_3.match((e) => subscriber.error(e), (a) => subscriber.next(a))(value);\n subscriber.complete();\n }\n }\n next(value) {\n if (!this._closed) {\n this.value = tsplus_module_4.right(value, fileName_1 + \":177:35\");\n this.hasValue = true;\n }\n }\n error(err) {\n if (!this._closed) {\n this.value = tsplus_module_4.left(err, fileName_1 + \":184:34\");\n this.hasValue = true;\n }\n }\n complete() {\n const { hasValue, value, isComplete } = this;\n if (!isComplete) {\n this.isComplete = true;\n hasValue &&\n tsplus_module_3.match((e) => super.error(e), (a) => super.next(a))(value);\n super.complete();\n }\n }\n}\n//# sourceMappingURL=Subject.js.map"],"mappings":"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"}