synstate 3.0.0 → 3.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 (137) hide show
  1. package/dist/core/base/create-child-observable.mjs +164 -140
  2. package/dist/core/base/create-child-observable.mjs.map +1 -1
  3. package/dist/core/base/create-observable-base.mjs +148 -152
  4. package/dist/core/base/create-observable-base.mjs.map +1 -1
  5. package/dist/core/base/create-root-observable.mjs +48 -34
  6. package/dist/core/base/create-root-observable.mjs.map +1 -1
  7. package/dist/core/base/index.mjs +3 -3
  8. package/dist/core/base/index.mjs.map +1 -1
  9. package/dist/core/combine/combine.mjs +129 -37
  10. package/dist/core/combine/combine.mjs.map +1 -1
  11. package/dist/core/combine/index.mjs +4 -4
  12. package/dist/core/combine/index.mjs.map +1 -1
  13. package/dist/core/combine/merge.mjs +75 -24
  14. package/dist/core/combine/merge.mjs.map +1 -1
  15. package/dist/core/combine/zip.mjs +120 -39
  16. package/dist/core/combine/zip.mjs.map +1 -1
  17. package/dist/core/create/counter.mjs +81 -45
  18. package/dist/core/create/counter.mjs.map +1 -1
  19. package/dist/core/create/from-abortable-promise.mjs +63 -38
  20. package/dist/core/create/from-abortable-promise.mjs.map +1 -1
  21. package/dist/core/create/from-promise.mjs +67 -25
  22. package/dist/core/create/from-promise.mjs.map +1 -1
  23. package/dist/core/create/from-subscribable.mjs +70 -26
  24. package/dist/core/create/from-subscribable.mjs.map +1 -1
  25. package/dist/core/create/index.mjs +8 -8
  26. package/dist/core/create/index.mjs.map +1 -1
  27. package/dist/core/create/just.mjs +36 -13
  28. package/dist/core/create/just.mjs.map +1 -1
  29. package/dist/core/create/source.mjs +15 -19
  30. package/dist/core/create/source.mjs.map +1 -1
  31. package/dist/core/create/timer.mjs +66 -37
  32. package/dist/core/create/timer.mjs.map +1 -1
  33. package/dist/core/index.mjs +6 -41
  34. package/dist/core/index.mjs.map +1 -1
  35. package/dist/core/operators/audit.mjs +126 -39
  36. package/dist/core/operators/audit.mjs.map +1 -1
  37. package/dist/core/operators/debounce.mjs +114 -37
  38. package/dist/core/operators/debounce.mjs.map +1 -1
  39. package/dist/core/operators/filter.mjs +39 -24
  40. package/dist/core/operators/filter.mjs.map +1 -1
  41. package/dist/core/operators/index.mjs +18 -18
  42. package/dist/core/operators/index.mjs.map +1 -1
  43. package/dist/core/operators/map.mjs +74 -26
  44. package/dist/core/operators/map.mjs.map +1 -1
  45. package/dist/core/operators/merge-map.mjs +128 -35
  46. package/dist/core/operators/merge-map.mjs.map +1 -1
  47. package/dist/core/operators/pairwise.mjs +73 -23
  48. package/dist/core/operators/pairwise.mjs.map +1 -1
  49. package/dist/core/operators/scan.mjs +59 -15
  50. package/dist/core/operators/scan.mjs.map +1 -1
  51. package/dist/core/operators/skip-if-no-change.mjs +89 -31
  52. package/dist/core/operators/skip-if-no-change.mjs.map +1 -1
  53. package/dist/core/operators/skip-until.mjs +71 -29
  54. package/dist/core/operators/skip-until.mjs.map +1 -1
  55. package/dist/core/operators/skip-while.mjs +79 -27
  56. package/dist/core/operators/skip-while.mjs.map +1 -1
  57. package/dist/core/operators/switch-map.mjs +118 -31
  58. package/dist/core/operators/switch-map.mjs.map +1 -1
  59. package/dist/core/operators/take-until.mjs +70 -35
  60. package/dist/core/operators/take-until.mjs.map +1 -1
  61. package/dist/core/operators/take-while.mjs +97 -25
  62. package/dist/core/operators/take-while.mjs.map +1 -1
  63. package/dist/core/operators/throttle.mjs +108 -38
  64. package/dist/core/operators/throttle.mjs.map +1 -1
  65. package/dist/core/operators/with-buffered-from.mjs +94 -47
  66. package/dist/core/operators/with-buffered-from.mjs.map +1 -1
  67. package/dist/core/operators/with-current-value-from.mjs +78 -23
  68. package/dist/core/operators/with-current-value-from.mjs.map +1 -1
  69. package/dist/core/operators/with-initial-value.mjs +64 -14
  70. package/dist/core/operators/with-initial-value.mjs.map +1 -1
  71. package/dist/core/predefined/index.mjs +2 -12
  72. package/dist/core/predefined/index.mjs.map +1 -1
  73. package/dist/core/predefined/operators/attach-index.mjs +55 -7
  74. package/dist/core/predefined/operators/attach-index.mjs.map +1 -1
  75. package/dist/core/predefined/operators/index.mjs +12 -12
  76. package/dist/core/predefined/operators/index.mjs.map +1 -1
  77. package/dist/core/predefined/operators/map-optional.mjs +48 -5
  78. package/dist/core/predefined/operators/map-optional.mjs.map +1 -1
  79. package/dist/core/predefined/operators/map-result-err.mjs +48 -5
  80. package/dist/core/predefined/operators/map-result-err.mjs.map +1 -1
  81. package/dist/core/predefined/operators/map-result-ok.mjs +48 -5
  82. package/dist/core/predefined/operators/map-result-ok.mjs.map +1 -1
  83. package/dist/core/predefined/operators/map-to.mjs +41 -6
  84. package/dist/core/predefined/operators/map-to.mjs.map +1 -1
  85. package/dist/core/predefined/operators/pluck.mjs +45 -7
  86. package/dist/core/predefined/operators/pluck.mjs.map +1 -1
  87. package/dist/core/predefined/operators/skip.mjs +49 -6
  88. package/dist/core/predefined/operators/skip.mjs.map +1 -1
  89. package/dist/core/predefined/operators/take.mjs +42 -6
  90. package/dist/core/predefined/operators/take.mjs.map +1 -1
  91. package/dist/core/predefined/operators/unwrap-optional.mjs +43 -8
  92. package/dist/core/predefined/operators/unwrap-optional.mjs.map +1 -1
  93. package/dist/core/predefined/operators/unwrap-result-err.mjs +41 -5
  94. package/dist/core/predefined/operators/unwrap-result-err.mjs.map +1 -1
  95. package/dist/core/predefined/operators/unwrap-result-ok.mjs +43 -8
  96. package/dist/core/predefined/operators/unwrap-result-ok.mjs.map +1 -1
  97. package/dist/core/types/id.mjs +2 -2
  98. package/dist/core/types/id.mjs.map +1 -1
  99. package/dist/core/types/index.mjs +7 -3
  100. package/dist/core/types/index.mjs.map +1 -1
  101. package/dist/core/types/observable-family.mjs +14 -2
  102. package/dist/core/types/observable-family.mjs.map +1 -1
  103. package/dist/core/types/observable-kind.mjs +2 -2
  104. package/dist/core/types/observable-kind.mjs.map +1 -1
  105. package/dist/core/types/observable.mjs +14 -6
  106. package/dist/core/types/observable.mjs.map +1 -1
  107. package/dist/core/types/timer.mjs +2 -2
  108. package/dist/core/types/timer.mjs.map +1 -1
  109. package/dist/core/types/types.mjs +9 -2
  110. package/dist/core/types/types.mjs.map +1 -1
  111. package/dist/core/utils/id-maker.mjs +10 -11
  112. package/dist/core/utils/id-maker.mjs.map +1 -1
  113. package/dist/core/utils/index.mjs +5 -5
  114. package/dist/core/utils/index.mjs.map +1 -1
  115. package/dist/core/utils/max-depth.mjs +7 -4
  116. package/dist/core/utils/max-depth.mjs.map +1 -1
  117. package/dist/core/utils/observable-utils.mjs +4 -7
  118. package/dist/core/utils/observable-utils.mjs.map +1 -1
  119. package/dist/core/utils/utils.mjs +32 -28
  120. package/dist/core/utils/utils.mjs.map +1 -1
  121. package/dist/entry-point.mjs +2 -46
  122. package/dist/entry-point.mjs.map +1 -1
  123. package/dist/index.mjs +3 -46
  124. package/dist/index.mjs.map +1 -1
  125. package/dist/utils/collect-to-array.mjs +8 -13
  126. package/dist/utils/collect-to-array.mjs.map +1 -1
  127. package/dist/utils/create-boolean-state.mjs +47 -22
  128. package/dist/utils/create-boolean-state.mjs.map +1 -1
  129. package/dist/utils/create-event-emitter.mjs +67 -19
  130. package/dist/utils/create-event-emitter.mjs.map +1 -1
  131. package/dist/utils/create-reducer.mjs +54 -16
  132. package/dist/utils/create-reducer.mjs.map +1 -1
  133. package/dist/utils/create-state.mjs +54 -27
  134. package/dist/utils/create-state.mjs.map +1 -1
  135. package/dist/utils/index.mjs +6 -6
  136. package/dist/utils/index.mjs.map +1 -1
  137. package/package.json +11 -12
@@ -1,29 +1,73 @@
1
- import { Result, Optional } from 'ts-data-forge';
2
- import '../utils/id-maker.mjs';
3
- import { createRootObservable } from '../base/create-root-observable.mjs';
4
-
5
- const fromSubscribable = (subscribable) => createRootObservable(
6
- { initialValue: Optional.none },
7
- ({ startUpdate, complete }) => {
8
- subscribable.subscribe(
9
- (nextValue) => {
1
+ import { Optional, Result } from 'ts-data-forge';
2
+ import { createRootObservable } from '../base/index.mjs';
3
+
4
+
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
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+
54
+
55
+
56
+
57
+
58
+
59
+
60
+
61
+ export const fromSubscribable = (subscribable) => createRootObservable({ initialValue: Optional.none }, ({ startUpdate, complete }) => {
62
+ subscribable.subscribe((nextValue) => {
10
63
  startUpdate(Result.ok(nextValue));
11
- },
12
- (error) => {
13
- startUpdate(
14
- Result.err(
15
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion
16
- error
17
- )
18
- );
19
- },
20
- () => {
64
+ }, (error) => {
65
+ startUpdate(Result.err(
66
+
67
+ error));
68
+ }, () => {
21
69
  complete();
22
- }
23
- );
70
+ });
24
71
  return {};
25
- }
26
- );
27
-
28
- export { fromSubscribable };
29
- //# sourceMappingURL=from-subscribable.mjs.map
72
+ });
73
+ //# sourceMappingURL=from-subscribable.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"from-subscribable.mjs","sources":["../../../src/core/create/from-subscribable.mts"],"sourcesContent":["import { Optional, Result } from 'ts-data-forge';\nimport { createRootObservable } from '../base/index.mjs';\nimport {\n type FromSubscribableObservable,\n type Subscribable,\n} from '../types/index.mjs';\n\n/**\n * Converts any subscribable object into a SynState Observable.\n * Works with objects that have a subscribe(onNext, onError, onComplete) method.\n *\n * @template A - The type of values from the subscribable\n * @template E - The type of errors from the subscribable\n * @param subscribable - An object with a subscribe method\n * @returns An observable that wraps values in Result type\n *\n * @example\n * ```ts\n * // Explanation:\n * // - fromSubscribable converts any subscribable object into a SynState Observable\n * // - Works with objects that have a subscribe(onNext, onError, onComplete) method\n * // - Wraps values in Result type for error handling\n * // - Useful for integrating with other reactive libraries or custom subscribables\n *\n * // Example: Converting a custom subscribable\n * const customSubscribable = {\n * subscribe: (\n * onNext: (value: number) => void,\n * _onError?: (error: unknown) => void,\n * onComplete?: () => void,\n * ) => {\n * setTimeout(() => {\n * onNext(1);\n *\n * onNext(2);\n *\n * onNext(3);\n *\n * onComplete?.();\n * }, 0);\n *\n * return { unsubscribe: () => {} };\n * },\n * } as const;\n *\n * const observable$ = fromSubscribable<number>(customSubscribable);\n *\n * const valueHistory: number[] = [];\n *\n * await new Promise<void>((resolve) => {\n * observable$.subscribe(\n * (result) => {\n * if (Result.isOk(result)) {\n * valueHistory.push(result.value);\n * }\n * },\n * () => {\n * resolve();\n * },\n * );\n * });\n *\n * assert.deepStrictEqual(valueHistory, [1, 2, 3]);\n * ```\n */\nexport const fromSubscribable = <A, E = unknown>(\n subscribable: Subscribable<A>,\n): FromSubscribableObservable<A, E> =>\n createRootObservable<Result<A, E>>(\n { initialValue: Optional.none },\n ({ startUpdate, complete }) => {\n subscribable.subscribe(\n (nextValue) => {\n startUpdate(Result.ok(nextValue));\n },\n (error?: unknown) => {\n startUpdate(\n Result.err(\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n error as E,\n ),\n );\n },\n () => {\n complete();\n },\n );\n\n return {};\n },\n );\n"],"names":[],"mappings":";;;;AAiEO,MAAM,gBAAA,GAAmB,CAC9B,YAAA,KAEA,oBAAA;AAAA,EACE,EAAE,YAAA,EAAc,QAAA,CAAS,IAAA,EAAK;AAAA,EAC9B,CAAC,EAAE,WAAA,EAAa,QAAA,EAAS,KAAM;AAC7B,IAAA,YAAA,CAAa,SAAA;AAAA,MACX,CAAC,SAAA,KAAc;AACb,QAAA,WAAA,CAAY,MAAA,CAAO,EAAA,CAAG,SAAS,CAAC,CAAA;AAAA,MAClC,CAAA;AAAA,MACA,CAAC,KAAA,KAAoB;AACnB,QAAA,WAAA;AAAA,UACE,MAAA,CAAO,GAAA;AAAA;AAAA,YAEL;AAAA;AACF,SACF;AAAA,MACF,CAAA;AAAA,MACA,MAAM;AACJ,QAAA,QAAA,EAAS;AAAA,MACX;AAAA,KACF;AAEA,IAAA,OAAO,EAAC;AAAA,EACV;AACF;;;;"}
1
+ {"version":3,"file":"from-subscribable.mjs","sourceRoot":"","sources":["../../../src/core/create/from-subscribable.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAMzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,YAA6B,EACK,EAAE,CACpC,oBAAoB,CAClB,EAAE,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE,EAC/B,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC5B,YAAY,CAAC,SAAS,CACpB,CAAC,SAAS,EAAE,EAAE;QACZ,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IACpC,CAAC,EACD,CAAC,KAAe,EAAE,EAAE;QAClB,WAAW,CACT,MAAM,CAAC,GAAG;QACR,oEAAoE;QACpE,KAAU,CACX,CACF,CAAC;IACJ,CAAC,EACD,GAAG,EAAE;QACH,QAAQ,EAAE,CAAC;IACb,CAAC,CACF,CAAC;IAEF,OAAO,EAAE,CAAC;AACZ,CAAC,CACF,CAAC"}
@@ -1,8 +1,8 @@
1
- export { counter } from './counter.mjs';
2
- export { fromAbortablePromise } from './from-abortable-promise.mjs';
3
- export { fromPromise } from './from-promise.mjs';
4
- export { fromSubscribable } from './from-subscribable.mjs';
5
- export { just } from './just.mjs';
6
- export { source } from './source.mjs';
7
- export { timer } from './timer.mjs';
8
- //# sourceMappingURL=index.mjs.map
1
+ export * from './counter.mjs';
2
+ export * from './from-abortable-promise.mjs';
3
+ export * from './from-promise.mjs';
4
+ export * from './from-subscribable.mjs';
5
+ export * from './just.mjs';
6
+ export * from './source.mjs';
7
+ export * from './timer.mjs';
8
+ //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../../src/core/create/index.mts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"}
@@ -1,15 +1,38 @@
1
1
  import { Optional } from 'ts-data-forge';
2
- import '../utils/id-maker.mjs';
3
- import { createRootObservable } from '../base/create-root-observable.mjs';
4
-
5
- const just = (value) => {
6
- const obs = createRootObservable(
7
- { initialValue: Optional.some(value) },
8
- () => ({})
9
- );
10
- obs.complete();
11
- return obs;
12
- };
2
+ import { createRootObservable } from '../base/index.mjs';
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
13
18
 
14
- export { just };
15
- //# sourceMappingURL=just.mjs.map
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+
31
+
32
+ export const just = (value) => {
33
+ const obs = createRootObservable({ initialValue: Optional.some(value) }, () => ({}));
34
+ obs.complete();
35
+
36
+ return obs;
37
+ };
38
+ //# sourceMappingURL=just.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"just.mjs","sources":["../../../src/core/create/just.mts"],"sourcesContent":["import { Optional } from 'ts-data-forge';\nimport { createRootObservable } from '../base/index.mjs';\nimport { type InitializedRootObservable } from '../types/index.mjs';\n\n/**\n * Creates an Observable that holds a single static value and immediately\n * completes. Useful inside `switchMap` to emit a fallback value when no\n * asynchronous work is needed.\n *\n * @template A - The type of the value\n * @param value - The value to emit\n * @returns An initialized Observable that holds the value and is already completed\n *\n * @example\n * ```ts\n * const greeting$ = just('hello');\n *\n * const valueHistory: string[] = [];\n *\n * greeting$.subscribe(\n * (value) => {\n * valueHistory.push(value);\n * },\n * () => {\n * // onComplete — called immediately since just() completes right away\n * },\n * );\n *\n * assert.deepStrictEqual(valueHistory, ['hello']);\n *\n * assert.strictEqual(greeting$.isCompleted, true);\n * ```\n */\nexport const just = <const A,>(value: A): InitializedRootObservable<A> => {\n const obs = createRootObservable<A>(\n { initialValue: Optional.some(value) },\n () => ({}),\n );\n\n obs.complete();\n\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n return obs as InitializedRootObservable<A>;\n};\n"],"names":[],"mappings":";;;;AAiCO,MAAM,IAAA,GAAO,CAAW,KAAA,KAA2C;AACxE,EAAA,MAAM,GAAA,GAAM,oBAAA;AAAA,IACV,EAAE,YAAA,EAAc,QAAA,CAAS,IAAA,CAAK,KAAK,CAAA,EAAE;AAAA,IACrC,OAAO,EAAC;AAAA,GACV;AAEA,EAAA,GAAA,CAAI,QAAA,EAAS;AAGb,EAAA,OAAO,GAAA;AACT;;;;"}
1
+ {"version":3,"file":"just.mjs","sourceRoot":"","sources":["../../../src/core/create/just.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAW,KAAQ,EAAgC,EAAE;IACvE,MAAM,GAAG,GAAG,oBAAoB,CAC9B,EAAE,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EACtC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CACX,CAAC;IAEF,GAAG,CAAC,QAAQ,EAAE,CAAC;IAEf,oEAAoE;IACpE,OAAO,GAAmC,CAAC;AAC7C,CAAC,CAAC"}
@@ -1,20 +1,16 @@
1
- import { Optional, Arr } from 'ts-data-forge';
2
- import '../utils/id-maker.mjs';
3
- import { createRootObservable } from '../base/create-root-observable.mjs';
4
-
5
- function source(...args) {
6
- return createRootObservable(
7
- {
8
- initialValue: Arr.isNonEmpty(args) ? Optional.some(args[0]) : Optional.none
9
- },
10
- ({ startUpdate, isCompleted }) => ({
11
- next: (nextValue) => {
12
- if (isCompleted()) return;
13
- startUpdate(nextValue);
14
- }
15
- })
16
- );
1
+ import { Arr, Optional } from 'ts-data-forge';
2
+ import { createRootObservable } from '../base/index.mjs';
3
+ export function source(...args) {
4
+ return createRootObservable({
5
+ initialValue: Arr.isNonEmpty(args)
6
+ ? Optional.some(args[0])
7
+ : Optional.none,
8
+ }, ({ startUpdate, isCompleted }) => ({
9
+ next: (nextValue) => {
10
+ if (isCompleted())
11
+ return;
12
+ startUpdate(nextValue);
13
+ },
14
+ }));
17
15
  }
18
-
19
- export { source };
20
- //# sourceMappingURL=source.mjs.map
16
+ //# sourceMappingURL=source.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"source.mjs","sources":["../../../src/core/create/source.mts"],"sourcesContent":["import { Arr, Optional } from 'ts-data-forge';\nimport { createRootObservable } from '../base/index.mjs';\nimport {\n type InitializedSourceObservable,\n type SourceObservable,\n} from '../types/index.mjs';\n\n/**\n * Creates a new Observable source that can manually emit values.\n * This is the primary way to create root observables that start reactive chains.\n *\n * @template A - The type of values emitted by the source\n * @returns A SourceObservable that can emit values via `.next()` method\n *\n * @example\n * ```ts\n * // Timeline:\n * //\n * // count$ 1 2 3 ...\n * //\n * // Explanation:\n * // - source creates a new observable that you can manually emit values to\n * // - Use .next() to emit values\n * // - Foundation for building custom observables\n *\n * const count$ = source<number>();\n *\n * const valueHistory: number[] = [];\n *\n * count$.subscribe((value) => {\n * valueHistory.push(value);\n * });\n *\n * count$.next(1); // logs: 1\n *\n * assert.deepStrictEqual(valueHistory, [1]);\n *\n * count$.next(2); // logs: 2\n *\n * assert.deepStrictEqual(valueHistory, [1, 2]);\n *\n * count$.next(3); // logs: 3\n *\n * assert.deepStrictEqual(valueHistory, [1, 2, 3]);\n * ```\n */\nexport function source<const A>(\n initialValue: A,\n): InitializedSourceObservable<A>;\n\nexport function source<const A>(): SourceObservable<A>;\n\nexport function source<const A>(...args: readonly A[]): SourceObservable<A> {\n return createRootObservable<A, Readonly<{ next: (nextValue: A) => void }>>(\n {\n initialValue: Arr.isNonEmpty(args)\n ? Optional.some(args[0])\n : Optional.none,\n },\n ({ startUpdate, isCompleted }) => ({\n next: (nextValue: A) => {\n if (isCompleted()) return;\n\n startUpdate(nextValue);\n },\n }),\n );\n}\n"],"names":[],"mappings":";;;;AAoDO,SAAS,UAAmB,IAAA,EAAyC;AAC1E,EAAA,OAAO,oBAAA;AAAA,IACL;AAAA,MACE,YAAA,EAAc,GAAA,CAAI,UAAA,CAAW,IAAI,CAAA,GAC7B,QAAA,CAAS,IAAA,CAAK,IAAA,CAAK,CAAC,CAAC,CAAA,GACrB,QAAA,CAAS;AAAA,KACf;AAAA,IACA,CAAC,EAAE,WAAA,EAAa,WAAA,EAAY,MAAO;AAAA,MACjC,IAAA,EAAM,CAAC,SAAA,KAAiB;AACtB,QAAA,IAAI,aAAY,EAAG;AAEnB,QAAA,WAAA,CAAY,SAAS,CAAA;AAAA,MACvB;AAAA,KACF;AAAA,GACF;AACF;;;;"}
1
+ {"version":3,"file":"source.mjs","sourceRoot":"","sources":["../../../src/core/create/source.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAmDzD,MAAM,UAAU,MAAM,CAAU,GAAG,IAAkB;IACnD,OAAO,oBAAoB,CACzB;QACE,YAAY,EAAE,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;YAChC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACxB,CAAC,CAAC,QAAQ,CAAC,IAAI;KAClB,EACD,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;QACjC,IAAI,EAAE,CAAC,SAAY,EAAE,EAAE;YACrB,IAAI,WAAW,EAAE;gBAAE,OAAO;YAE1B,WAAW,CAAC,SAAS,CAAC,CAAC;QACzB,CAAC;KACF,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -1,40 +1,69 @@
1
1
  import { Optional } from 'ts-data-forge';
2
- import '../utils/id-maker.mjs';
3
- import { createRootObservable } from '../base/create-root-observable.mjs';
4
-
5
- const timer = (milliSeconds, options) => {
6
- let mut_timerId = void 0;
7
- let mut_isStarted = false;
8
- const resetTimer = () => {
9
- if (mut_timerId !== void 0) {
10
- clearTimeout(mut_timerId);
11
- }
12
- };
13
- const observable = createRootObservable(
14
- { initialValue: Optional.none, onComplete: resetTimer },
15
- ({ startUpdate, isCompleted, complete }) => ({
16
- start: () => {
17
- if (mut_isStarted) {
18
- console.warn("cannot start twice");
19
- return;
20
- }
21
- mut_isStarted = true;
22
- if (isCompleted()) {
23
- console.warn("cannot restart stopped TimerObservable");
24
- return;
2
+ import { createRootObservable } from '../base/index.mjs';
3
+
4
+
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
+ export const timer = (milliSeconds, options) => {
40
+ let mut_timerId = undefined;
41
+ let mut_isStarted = false;
42
+ const resetTimer = () => {
43
+ if (mut_timerId !== undefined) {
44
+ clearTimeout(mut_timerId);
25
45
  }
26
- mut_timerId = setTimeout(() => {
27
- startUpdate(0);
28
- complete();
29
- }, milliSeconds);
30
- }
31
- })
32
- );
33
- if (!(options?.startManually ?? false)) {
34
- observable.start();
35
- }
36
- return observable;
46
+ };
47
+ const observable = createRootObservable({ initialValue: Optional.none, onComplete: resetTimer }, ({ startUpdate, isCompleted, complete }) => ({
48
+ start: () => {
49
+ if (mut_isStarted) {
50
+ console.warn('cannot start twice');
51
+ return;
52
+ }
53
+ mut_isStarted = true;
54
+ if (isCompleted()) {
55
+ console.warn('cannot restart stopped TimerObservable');
56
+ return;
57
+ }
58
+ mut_timerId = setTimeout(() => {
59
+ startUpdate(0);
60
+ complete();
61
+ }, milliSeconds);
62
+ },
63
+ }));
64
+ if (!(options?.startManually ?? false)) {
65
+ observable.start();
66
+ }
67
+ return observable;
37
68
  };
38
-
39
- export { timer };
40
- //# sourceMappingURL=timer.mjs.map
69
+ //# sourceMappingURL=timer.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"timer.mjs","sources":["../../../src/core/create/timer.mts"],"sourcesContent":["import { Optional } from 'ts-data-forge';\nimport { createRootObservable } from '../base/index.mjs';\nimport { type TimerId, type TimerObservable } from '../types/index.mjs';\n\n/**\n * Creates an observable that emits 0 after a specified delay and then completes.\n *\n * @param milliSeconds - The delay in milliseconds before emission\n * @param startManually - If true, waits for manual start (default: false)\n * @returns An observable that emits after delay\n *\n * @example\n * ```ts\n * // Timeline:\n * //\n * // Time(ms) 0 ... 1000\n * // delayed$ X (emits and completes)\n * //\n * // Explanation:\n * // - timer emits once after the specified delay, then completes\n * // - Useful for delayed actions or timeouts\n *\n * const delayed$ = timer(100);\n *\n * const valueHistory: number[] = [];\n *\n * await new Promise<void>((resolve) => {\n * delayed$.subscribe(\n * () => {\n * valueHistory.push(1);\n * },\n * () => {\n * resolve();\n * },\n * );\n * });\n *\n * assert.deepStrictEqual(valueHistory, [1]);\n * ```\n */\nexport const timer = (\n milliSeconds: number,\n options?: Readonly<{\n startManually?: boolean;\n }>,\n): TimerObservable => {\n let mut_timerId: TimerId | undefined = undefined;\n\n let mut_isStarted = false;\n\n const resetTimer = (): void => {\n if (mut_timerId !== undefined) {\n clearTimeout(mut_timerId);\n }\n };\n\n const observable = createRootObservable<0, Readonly<{ start: () => void }>>(\n { initialValue: Optional.none, onComplete: resetTimer },\n ({ startUpdate, isCompleted, complete }) => ({\n start: () => {\n if (mut_isStarted) {\n console.warn('cannot start twice');\n\n return;\n }\n\n mut_isStarted = true;\n\n if (isCompleted()) {\n console.warn('cannot restart stopped TimerObservable');\n\n return;\n }\n\n mut_timerId = setTimeout(() => {\n startUpdate(0);\n\n complete();\n }, milliSeconds);\n },\n }),\n );\n\n if (!(options?.startManually ?? false)) {\n observable.start();\n }\n\n return observable;\n};\n"],"names":[],"mappings":";;;;AAwCO,MAAM,KAAA,GAAQ,CACnB,YAAA,EACA,OAAA,KAGoB;AACpB,EAAA,IAAI,WAAA,GAAmC,MAAA;AAEvC,EAAA,IAAI,aAAA,GAAgB,KAAA;AAEpB,EAAA,MAAM,aAAa,MAAY;AAC7B,IAAA,IAAI,gBAAgB,MAAA,EAAW;AAC7B,MAAA,YAAA,CAAa,WAAW,CAAA;AAAA,IAC1B;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,UAAA,GAAa,oBAAA;AAAA,IACjB,EAAE,YAAA,EAAc,QAAA,CAAS,IAAA,EAAM,YAAY,UAAA,EAAW;AAAA,IACtD,CAAC,EAAE,WAAA,EAAa,WAAA,EAAa,UAAS,MAAO;AAAA,MAC3C,OAAO,MAAM;AACX,QAAA,IAAI,aAAA,EAAe;AACjB,UAAA,OAAA,CAAQ,KAAK,oBAAoB,CAAA;AAEjC,UAAA;AAAA,QACF;AAEA,QAAA,aAAA,GAAgB,IAAA;AAEhB,QAAA,IAAI,aAAY,EAAG;AACjB,UAAA,OAAA,CAAQ,KAAK,wCAAwC,CAAA;AAErD,UAAA;AAAA,QACF;AAEA,QAAA,WAAA,GAAc,WAAW,MAAM;AAC7B,UAAA,WAAA,CAAY,CAAC,CAAA;AAEb,UAAA,QAAA,EAAS;AAAA,QACX,GAAG,YAAY,CAAA;AAAA,MACjB;AAAA,KACF;AAAA,GACF;AAEA,EAAA,IAAI,EAAE,OAAA,EAAS,aAAA,IAAiB,KAAA,CAAA,EAAQ;AACtC,IAAA,UAAA,CAAW,KAAA,EAAM;AAAA,EACnB;AAEA,EAAA,OAAO,UAAA;AACT;;;;"}
1
+ {"version":3,"file":"timer.mjs","sourceRoot":"","sources":["../../../src/core/create/timer.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CACnB,YAAoB,EACpB,OAEE,EACe,EAAE;IACnB,IAAI,WAAW,GAAwB,SAAS,CAAC;IAEjD,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,MAAM,UAAU,GAAG,GAAS,EAAE;QAC5B,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,YAAY,CAAC,WAAW,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,oBAAoB,CACrC,EAAE,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,EACvD,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3C,KAAK,EAAE,GAAG,EAAE;YACV,IAAI,aAAa,EAAE,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBAEnC,OAAO;YACT,CAAC;YAED,aAAa,GAAG,IAAI,CAAC;YAErB,IAAI,WAAW,EAAE,EAAE,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;gBAEvD,OAAO;YACT,CAAC;YAED,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,WAAW,CAAC,CAAC,CAAC,CAAC;gBAEf,QAAQ,EAAE,CAAC;YACb,CAAC,EAAE,YAAY,CAAC,CAAC;QACnB,CAAC;KACF,CAAC,CACH,CAAC;IAEF,IAAI,CAAC,CAAC,OAAO,EAAE,aAAa,IAAI,KAAK,CAAC,EAAE,CAAC;QACvC,UAAU,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC"}
@@ -1,41 +1,6 @@
1
- export { combine, combineLatest } from './combine/combine.mjs';
2
- export { merge } from './combine/merge.mjs';
3
- export { zip } from './combine/zip.mjs';
4
- export { counter } from './create/counter.mjs';
5
- export { fromAbortablePromise } from './create/from-abortable-promise.mjs';
6
- export { fromPromise } from './create/from-promise.mjs';
7
- export { fromSubscribable } from './create/from-subscribable.mjs';
8
- export { just } from './create/just.mjs';
9
- export { source } from './create/source.mjs';
10
- export { timer } from './create/timer.mjs';
11
- export { audit } from './operators/audit.mjs';
12
- export { debounce } from './operators/debounce.mjs';
13
- export { filter } from './operators/filter.mjs';
14
- export { map } from './operators/map.mjs';
15
- export { flatMap, mergeMap } from './operators/merge-map.mjs';
16
- export { pairwise } from './operators/pairwise.mjs';
17
- export { scan } from './operators/scan.mjs';
18
- export { distinctUntilChanged, skipIfNoChange } from './operators/skip-if-no-change.mjs';
19
- export { skipUntil } from './operators/skip-until.mjs';
20
- export { skipWhile } from './operators/skip-while.mjs';
21
- export { switchMap } from './operators/switch-map.mjs';
22
- export { takeUntil } from './operators/take-until.mjs';
23
- export { takeWhile } from './operators/take-while.mjs';
24
- export { throttle } from './operators/throttle.mjs';
25
- export { withBuffered, withBufferedFrom } from './operators/with-buffered-from.mjs';
26
- export { withCurrentValueFrom, withLatestFrom } from './operators/with-current-value-from.mjs';
27
- export { withInitialValue } from './operators/with-initial-value.mjs';
28
- export { attachIndex, withIndex } from './predefined/operators/attach-index.mjs';
29
- export { mapOptional } from './predefined/operators/map-optional.mjs';
30
- export { mapResultErr } from './predefined/operators/map-result-err.mjs';
31
- export { mapResultOk } from './predefined/operators/map-result-ok.mjs';
32
- export { mapTo } from './predefined/operators/map-to.mjs';
33
- export { getKey, pluck } from './predefined/operators/pluck.mjs';
34
- export { skip } from './predefined/operators/skip.mjs';
35
- export { take } from './predefined/operators/take.mjs';
36
- export { unwrapOptional } from './predefined/operators/unwrap-optional.mjs';
37
- export { unwrapResultErr } from './predefined/operators/unwrap-result-err.mjs';
38
- export { unwrapResultOk } from './predefined/operators/unwrap-result-ok.mjs';
39
- import 'ts-data-forge';
40
- export { isChildObservable, isManagerObservable, isRootObservable } from './types/observable.mjs';
41
- //# sourceMappingURL=index.mjs.map
1
+ export * from './combine/index.mjs';
2
+ export * from './create/index.mjs';
3
+ export * from './operators/index.mjs';
4
+ export * from './predefined/index.mjs';
5
+ export * from './types/index.mjs';
6
+ //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/core/index.mts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC"}
@@ -1,42 +1,129 @@
1
1
  import { Optional } from 'ts-data-forge';
2
- import { createAsyncChildObservable } from '../base/create-child-observable.mjs';
3
- import '../utils/id-maker.mjs';
4
-
5
- const audit = (milliSeconds) => (
6
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion
7
- ((parentObservable) => createAuditObservable(
8
- parentObservable,
9
- milliSeconds
10
- ))
11
- );
2
+ import { createAsyncChildObservable } from '../base/index.mjs';
3
+
4
+
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
+
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
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+
80
+
81
+
82
+
83
+
84
+
85
+
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+
96
+
97
+ export const audit = (milliSeconds) =>
98
+
99
+ ((parentObservable) => createAuditObservable(parentObservable, milliSeconds));
12
100
  const createAuditObservable = (parentObservable, milliSeconds) => {
13
- let mut_timerId = void 0;
14
- let mut_isSkipping = false;
15
- const resetTimer = () => {
16
- if (mut_timerId !== void 0) {
17
- clearTimeout(mut_timerId);
18
- }
19
- };
20
- return createAsyncChildObservable(
21
- {
22
- parents: [parentObservable],
23
- initialValue: parentObservable.getSnapshot(),
24
- onComplete: resetTimer
25
- },
26
- ({ startUpdate }) => (updateToken) => {
27
- if (mut_isSkipping || parentObservable.updateToken !== updateToken || Optional.isNone(parentObservable.getSnapshot())) {
28
- return;
29
- }
30
- mut_isSkipping = true;
31
- mut_timerId = setTimeout(() => {
32
- const sn = parentObservable.getSnapshot();
33
- if (Optional.isNone(sn)) return;
34
- startUpdate(sn.value);
35
- mut_isSkipping = false;
36
- }, milliSeconds);
37
- }
38
- );
39
- };
101
+ let mut_timerId = undefined;
102
+ let mut_isSkipping = false;
103
+ const resetTimer = () => {
104
+ if (mut_timerId !== undefined) {
105
+ clearTimeout(mut_timerId);
106
+ }
107
+ };
108
+ return createAsyncChildObservable({
109
+ parents: [parentObservable],
110
+ initialValue: parentObservable.getSnapshot(),
111
+ onComplete: resetTimer,
112
+ }, ({ startUpdate }) => (updateToken) => {
113
+ if (mut_isSkipping ||
114
+ parentObservable.updateToken !== updateToken ||
115
+ Optional.isNone(parentObservable.getSnapshot())) {
116
+ return;
117
+ }
40
118
 
41
- export { audit };
42
- //# sourceMappingURL=audit.mjs.map
119
+ mut_isSkipping = true;
120
+ mut_timerId = setTimeout(() => {
121
+ const sn = parentObservable.getSnapshot();
122
+ if (Optional.isNone(sn))
123
+ return;
124
+ startUpdate(sn.value);
125
+ mut_isSkipping = false;
126
+ }, milliSeconds);
127
+ });
128
+ };
129
+ //# sourceMappingURL=audit.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"audit.mjs","sources":["../../../src/core/operators/audit.mts"],"sourcesContent":["import { Optional } from 'ts-data-forge';\nimport { createAsyncChildObservable } from '../base/index.mjs';\nimport {\n type AuditOperatorObservable,\n type KeepInitialValueOperator,\n type Observable,\n type TimerId,\n} from '../types/index.mjs';\n\n/**\n * Ignores source values for duration milliseconds, then emits the most recent value from the source Observable, then repeats this process.\n *\n * Unlike `throttle` which emits the first value, `audit` emits the last value.\n *\n * @template A - The type of values from the source\n * @param milliSeconds - The audit time window in milliseconds\n * @returns An operator that audits emissions from the observable\n *\n * @example\n * ```ts\n * // Timeline (250ms audit):\n * //\n * // Time(x50ms) 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0\n * //\n * // input$ 0 2 3 9 10 11 12 13 14\n * // |- 250ms -> |- 250ms -> |- 250ms -> |- 250ms ->\n * // audited$ 2 3 11 14 (emitted at end of window)\n * //\n * // Explanation:\n * // - audit emits the LAST value received during each time window\n * // - Unlike throttle (which emits the FIRST value), audit emits the LAST\n * // - Useful when you want the most recent value after a burst of events\n *\n * const input$ = source<number>();\n *\n * const audited$ = input$.pipe(audit(250));\n *\n * const valueHistory: number[] = [];\n *\n * audited$.subscribe((value) => {\n * valueHistory.push(value);\n * });\n *\n * const sleep = (ms: number): Promise<void> =>\n * new Promise((resolve) => {\n * setTimeout(resolve, ms);\n * });\n *\n * input$.next(0);\n *\n * await sleep(200);\n *\n * input$.next(2);\n *\n * assert.deepStrictEqual(valueHistory, []);\n *\n * await sleep(100);\n *\n * assert.deepStrictEqual(valueHistory, [2]);\n *\n * input$.next(3);\n *\n * await sleep(300);\n *\n * assert.deepStrictEqual(valueHistory, [2, 3]);\n *\n * await sleep(300);\n *\n * input$.next(9);\n *\n * await sleep(100);\n *\n * input$.next(10);\n *\n * await sleep(100);\n *\n * input$.next(11);\n *\n * assert.deepStrictEqual(valueHistory, [2, 3]);\n *\n * await sleep(100);\n *\n * assert.deepStrictEqual(valueHistory, [2, 3, 11]);\n *\n * input$.next(12);\n *\n * await sleep(100);\n *\n * input$.next(13);\n *\n * assert.deepStrictEqual(valueHistory, [2, 3, 11]);\n *\n * await sleep(100);\n *\n * input$.next(14);\n *\n * assert.deepStrictEqual(valueHistory, [2, 3, 11]);\n *\n * await sleep(100);\n *\n * assert.deepStrictEqual(valueHistory, [2, 3, 11, 14]);\n * ```\n */\nexport const audit = <A,>(\n milliSeconds: number,\n): KeepInitialValueOperator<A, A> =>\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n ((parentObservable) =>\n createAuditObservable(\n parentObservable,\n milliSeconds,\n )) as KeepInitialValueOperator<A, A>;\n\nconst createAuditObservable = <A,>(\n parentObservable: Observable<A>,\n milliSeconds: number,\n): AuditOperatorObservable<A> => {\n let mut_timerId: TimerId | undefined = undefined;\n\n let mut_isSkipping = false;\n\n const resetTimer = (): void => {\n if (mut_timerId !== undefined) {\n clearTimeout(mut_timerId);\n }\n };\n\n return createAsyncChildObservable(\n {\n parents: [parentObservable],\n initialValue: parentObservable.getSnapshot(),\n onComplete: resetTimer,\n },\n ({ startUpdate }) =>\n (updateToken) => {\n if (\n mut_isSkipping ||\n parentObservable.updateToken !== updateToken ||\n Optional.isNone(parentObservable.getSnapshot())\n ) {\n return; // skip update\n }\n\n // set timer\n mut_isSkipping = true;\n\n mut_timerId = setTimeout(() => {\n const sn = parentObservable.getSnapshot();\n\n if (Optional.isNone(sn)) return;\n\n startUpdate(sn.value);\n\n mut_isSkipping = false;\n }, milliSeconds);\n },\n );\n};\n"],"names":[],"mappings":";;;;AAuGO,MAAM,QAAQ,CACnB,YAAA;AAAA;AAAA,GAGC,CAAC,gBAAA,KACA,qBAAA;AAAA,IACE,gBAAA;AAAA,IACA;AAAA,GACF;AAAA;AAEJ,MAAM,qBAAA,GAAwB,CAC5B,gBAAA,EACA,YAAA,KAC+B;AAC/B,EAAA,IAAI,WAAA,GAAmC,MAAA;AAEvC,EAAA,IAAI,cAAA,GAAiB,KAAA;AAErB,EAAA,MAAM,aAAa,MAAY;AAC7B,IAAA,IAAI,gBAAgB,MAAA,EAAW;AAC7B,MAAA,YAAA,CAAa,WAAW,CAAA;AAAA,IAC1B;AAAA,EACF,CAAA;AAEA,EAAA,OAAO,0BAAA;AAAA,IACL;AAAA,MACE,OAAA,EAAS,CAAC,gBAAgB,CAAA;AAAA,MAC1B,YAAA,EAAc,iBAAiB,WAAA,EAAY;AAAA,MAC3C,UAAA,EAAY;AAAA,KACd;AAAA,IACA,CAAC,EAAE,WAAA,EAAY,KACb,CAAC,WAAA,KAAgB;AACf,MAAA,IACE,cAAA,IACA,iBAAiB,WAAA,KAAgB,WAAA,IACjC,SAAS,MAAA,CAAO,gBAAA,CAAiB,WAAA,EAAa,CAAA,EAC9C;AACA,QAAA;AAAA,MACF;AAGA,MAAA,cAAA,GAAiB,IAAA;AAEjB,MAAA,WAAA,GAAc,WAAW,MAAM;AAC7B,QAAA,MAAM,EAAA,GAAK,iBAAiB,WAAA,EAAY;AAExC,QAAA,IAAI,QAAA,CAAS,MAAA,CAAO,EAAE,CAAA,EAAG;AAEzB,QAAA,WAAA,CAAY,GAAG,KAAK,CAAA;AAEpB,QAAA,cAAA,GAAiB,KAAA;AAAA,MACnB,GAAG,YAAY,CAAA;AAAA,IACjB;AAAA,GACJ;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"audit.mjs","sourceRoot":"","sources":["../../../src/core/operators/audit.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAQ/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6FG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CACnB,YAAoB,EACY,EAAE;AAClC,oEAAoE;AACpE,CAAC,CAAC,gBAAgB,EAAE,EAAE,CACpB,qBAAqB,CACnB,gBAAgB,EAChB,YAAY,CACb,CAAmC,CAAC;AAEzC,MAAM,qBAAqB,GAAG,CAC5B,gBAA+B,EAC/B,YAAoB,EACQ,EAAE;IAC9B,IAAI,WAAW,GAAwB,SAAS,CAAC;IAEjD,IAAI,cAAc,GAAG,KAAK,CAAC;IAE3B,MAAM,UAAU,GAAG,GAAS,EAAE;QAC5B,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,YAAY,CAAC,WAAW,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,0BAA0B,CAC/B;QACE,OAAO,EAAE,CAAC,gBAAgB,CAAC;QAC3B,YAAY,EAAE,gBAAgB,CAAC,WAAW,EAAE;QAC5C,UAAU,EAAE,UAAU;KACvB,EACD,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAClB,CAAC,WAAW,EAAE,EAAE;QACd,IACE,cAAc;YACd,gBAAgB,CAAC,WAAW,KAAK,WAAW;YAC5C,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,EAC/C,CAAC;YACD,OAAO,CAAC,cAAc;QACxB,CAAC;QAED,YAAY;QACZ,cAAc,GAAG,IAAI,CAAC;QAEtB,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,MAAM,EAAE,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC;YAE1C,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAAE,OAAO;YAEhC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YAEtB,cAAc,GAAG,KAAK,CAAC;QACzB,CAAC,EAAE,YAAY,CAAC,CAAC;IACnB,CAAC,CACJ,CAAC;AACJ,CAAC,CAAC"}