@thi.ng/rstream 9.2.9 → 9.2.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Change Log
2
2
 
3
- - **Last updated**: 2025-01-29T16:25:48Z
3
+ - **Last updated**: 2025-02-19T20:59:58Z
4
4
  - **Generator**: [thi.ng/monopub](https://thi.ng/monopub)
5
5
 
6
6
  All notable changes to this project will be documented in this file.
package/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
  [![Mastodon Follow](https://img.shields.io/mastodon/follow/109331703950160316?domain=https%3A%2F%2Fmastodon.thi.ng&style=social)](https://mastodon.thi.ng/@toxi)
8
8
 
9
9
  > [!NOTE]
10
- > This is one of 201 standalone projects, maintained as part
10
+ > This is one of 202 standalone projects, maintained as part
11
11
  > of the [@thi.ng/umbrella](https://github.com/thi-ng/umbrella/) monorepo
12
12
  > and anti-framework.
13
13
  >
package/api.d.ts CHANGED
@@ -139,7 +139,7 @@ export interface ISubscribable<A> extends IDeref<Maybe<A>>, IID<string> {
139
139
  * attached to the returned wrapped sub will also only receive those
140
140
  * transformed values.
141
141
  *
142
- * @see {@link ITransformable}
142
+ * See {@link ITransformable}
143
143
  *
144
144
  * @param sub -
145
145
  * @param opts -
package/forkjoin.d.ts CHANGED
@@ -7,97 +7,92 @@ export interface ForkJoinOpts<IN, MSG, RES, OUT> extends Partial<CommonOpts> {
7
7
  */
8
8
  src: ITransformable<IN>;
9
9
  /**
10
- * Transformation function prepare (e.g. chunk) work for a single
11
- * worker. Receives worker `id` [0 .. numWorkers), `numWorkers` and
12
- * current input value to be processed. Only the results of this
13
- * function are sent to the worker and therefore the function must
14
- * return a type compatible with the configured worker instance.
10
+ * Transformation function prepare (e.g. chunk) work for a single worker.
11
+ * Receives worker `id` `[0,numWorkers)`, `numWorkers` and current input
12
+ * value to be processed. Only the results of this function are sent to the
13
+ * worker and therefore the function must return a type compatible with the
14
+ * configured worker instance.
15
15
  *
16
- * For example, such a function might extract slices from a large
17
- * input array, one per worker. The given worker ID and worker count
18
- * can be used to create non-overlapping chunks to evenly spread the
19
- * workload...
16
+ * For example, such a function might extract slices from a large input
17
+ * array, one per worker. The given worker ID and worker count can be used
18
+ * to create non-overlapping chunks to evenly spread the workload...
20
19
  *
21
20
  * Also see: {@link forkBuffer}
22
21
  */
23
22
  fork: Fn3<number, number, IN, MSG>;
24
23
  /**
25
- * Join function. Receives array of worker results (in worker ID
26
- * order) and is responsible to transform these into the final
27
- * result / output type.
24
+ * Join function. Receives array of worker results (in worker ID order) and
25
+ * is responsible to transform these into the final result / output type.
28
26
  */
29
27
  join: Fn<RES[], OUT>;
30
28
  /**
31
- * Optional function to extract transferables from `fork` result
32
- * values (i.e. payloads sent to each worker), e.g. ArrayBuffers. See:
29
+ * Optional function to extract transferables from `fork` result values
30
+ * (i.e. payloads sent to each worker), e.g. ArrayBuffers. See:
33
31
  * https://developer.mozilla.org/en-US/docs/Web/API/Worker/postMessage
34
32
  */
35
33
  transferables?: Fn<MSG, any[]>;
36
34
  /**
37
- * An existing `Worker` instance, a JS source code `Blob` or an URL
38
- * string. In the latter two cases, a worker is created
39
- * automatically using `makeWorker()`.
35
+ * An existing `Worker` instance, a JS source code `Blob` or an URL string.
36
+ * In the latter two cases, a worker is created automatically using
37
+ * `makeWorker()`.
40
38
  */
41
39
  worker: WorkerSource;
42
40
  /**
43
41
  * Optional max number of workers to use. Defaults to
44
- * `navigator.hardwareConcurrency` (or if unavailable, then 4 as
45
- * fallback). If setting this higher, be aware of browser limits and
46
- * potential resulting crashes!
42
+ * `navigator.hardwareConcurrency` (or if unavailable, then 4 as fallback).
43
+ * If setting this higher, be aware of browser limits and potential
44
+ * resulting crashes!
47
45
  *
48
46
  * If using multiple `forkJoin`s concurrently, it's the user's
49
- * responsibility to ensure that the total number of workers won't
50
- * exceed the browser limit (Chome/FF ~20).
47
+ * responsibility to ensure that the total number of workers won't exceed
48
+ * the browser limit (Chome/FF ~20).
51
49
  */
52
50
  numWorkers?: number;
53
51
  /**
54
- * If true, the workers will be terminated and restarted for each
55
- * new input stream value. This is useful to avoid executing
56
- * extraneous work and ensures only the most rececent stream value
57
- * is being processed.
52
+ * If true, the workers will be terminated and restarted for each new input
53
+ * stream value. This is useful to avoid executing extraneous work and
54
+ * ensures only the most rececent stream value is being processed.
58
55
  *
59
- * IMPORTANT: Please note that `forkJoin` does NOT handle
60
- * backpressure at all. If `interrupt` is false, it's the user's
61
- * responsibility to ensure that the input stream does NOT operate
62
- * on a higher frequency than workers can produce results or else
63
- * undefined behavior WILL occur!
56
+ * IMPORTANT: Please note that `forkJoin` does NOT handle backpressure at
57
+ * all. If `interrupt` is false, it's the user's responsibility to ensure
58
+ * that the input stream does NOT operate on a higher frequency than workers
59
+ * can produce results or else undefined behavior WILL occur!
64
60
  *
65
61
  * Default: false
66
62
  */
67
63
  interrupt?: boolean;
68
64
  /**
69
- * If given and greater than zero, all workers will be terminated
70
- * after given period (in millis) after the parent stream is done.
71
- * If used, this value MUST be higher than the expected processing
72
- * time of the worker jobs, in order to guarantee that the last
73
- * values are processed fully.
65
+ * If given and greater than zero, all workers will be terminated after
66
+ * given period (in millis) after the parent stream is done. If used, this
67
+ * value MUST be higher than the expected processing time of the worker
68
+ * jobs, in order to guarantee that the last values are processed fully.
74
69
  *
75
70
  * Default: 1000
76
71
  */
77
72
  terminate?: number;
78
73
  /**
79
- * If greater than 0, then each labeled input will cache upto the
80
- * stated number of input values, even if other inputs have not yet
81
- * produced new values. Once the limit is reached, `partitionSync()`
82
- * will throw an `IllegalState` error.
74
+ * If greater than 0, then each labeled input will cache upto the stated
75
+ * number of input values, even if other inputs have not yet produced new
76
+ * values. Once the limit is reached, `partitionSync()` will throw an
77
+ * `IllegalState` error.
83
78
  *
84
- * Enabling this option will cause the same behavior as if `reset`
85
- * is enabled (regardless of the actual configured `reset` setting).
86
- * I.e. new results are only produced when ALL required inputs have
87
- * available values...
79
+ * Enabling this option will cause the same behavior as if `reset` is
80
+ * enabled (regardless of the actual configured `reset` setting). I.e. new
81
+ * results are only produced when ALL required inputs have available
82
+ * values...
88
83
  */
89
84
  backPressure?: number;
90
85
  }
91
86
  /**
92
- * Returns a {@link StreamSync} instance which creates & attaches
93
- * multiple subscriptions to given `src` input stream, processes each
94
- * received value in parallel via web workers, then recombines partial
95
- * results and passes the resulting transformed value downstream.
87
+ * Returns a {@link StreamSync} instance which creates & attaches multiple
88
+ * subscriptions to given `src` input stream, processes each received value in
89
+ * parallel via web workers, then recombines partial results and passes the
90
+ * resulting transformed value downstream.
96
91
  *
97
92
  * @remarks
98
- * See {@link ForkJoinOpts} for further details & behavior options and
99
- * the {@link forkBuffer} and {@link joinBuffer} helpers for array-based
100
- * value processing (most likely use case).
93
+ * See {@link ForkJoinOpts} for further details & behavior options and the
94
+ * {@link forkBuffer} and {@link joinBuffer} helpers for array-based value
95
+ * processing (most likely use case).
101
96
  *
102
97
  * @param src - input stream
103
98
  * @param opts -
@@ -112,21 +107,20 @@ export type Sliceable<T> = ArrayLike<T> & {
112
107
  *
113
108
  * @remarks
114
109
  * The returned function is meant to be used as `fork` function in a
115
- * {@link ForkJoinOpts} config and extracts a workload slice of the
116
- * original buffer for a single worker. The HOF itself takes a minimum
117
- * chunk size as optional parameter (default: 1).
110
+ * {@link ForkJoinOpts} config and extracts a workload slice of the original
111
+ * buffer for a single worker. The HOF itself takes a minimum chunk size as
112
+ * optional parameter (default: 1).
118
113
  *
119
- * **Note:** Depending on the configured `minChunkSize` and the size of
120
- * the input buffer to be partitioned, the returned fork function might
121
- * produce empty sub-arrays for some workers, iff the configured number
122
- * of workers exceeds the resulting number of chunks / input values.
123
- * E.g. If the number of workers = 8, buffer size = 10 and min chunk
124
- * size = 2, then the last 3 (i.e. 8 - 10 / 2) workers will only receive
125
- * empty workloads.
114
+ * **Note:** Depending on the configured `minChunkSize` and the size of the
115
+ * input buffer to be partitioned, the returned fork function might produce
116
+ * empty sub-arrays for some workers, iff the configured number of workers
117
+ * exceeds the resulting number of chunks / input values. E.g. If the number of
118
+ * workers = 8, buffer size = 10 and min chunk size = 2, then the last 3 (i.e. 8
119
+ * - 10 / 2) workers will only receive empty workloads.
126
120
  *
127
- * More generally, if the input buffer size is not equally distributable
128
- * over the given number of workers, the last worker(s) might receive a
129
- * larger, smaller or empty chunk.
121
+ * More generally, if the input buffer size is not equally distributable over
122
+ * the given number of workers, the last worker(s) might receive a larger,
123
+ * smaller or empty chunk.
130
124
  *
131
125
  * Also see {@link forkJoin} and {@link joinBuffer}.
132
126
  *
@@ -153,15 +147,15 @@ export declare const forkBuffer: (minChunkSize?: number) => <T extends Sliceable
153
147
  *
154
148
  * @remarks
155
149
  * The returned function is meant to be used as `join` function in a
156
- * {@link ForkJoinOpts} config, receives the processed result chunks
157
- * from all workers (ordered by worker ID) and concatenates them back
158
- * into a single result array.
150
+ * {@link ForkJoinOpts} config, receives the processed result chunks from all
151
+ * workers (ordered by worker ID) and concatenates them back into a single
152
+ * result array.
159
153
  *
160
- * The optional `fn` arg can be used to pick the actual result chunk
161
- * from each worker result. This is useful if the worker result type is
162
- * not an array and includes other data points (e.g. execution metrics
163
- * etc.). If `fn` is not given, it defaults to the identity function
164
- * (i.e. each worker's result is assumed to be an array).
154
+ * The optional `fn` arg can be used to pick the actual result chunk from each
155
+ * worker result. This is useful if the worker result type is not an array and
156
+ * includes other data points (e.g. execution metrics etc.). If `fn` is not
157
+ * given, it defaults to the identity function (i.e. each worker's result is
158
+ * assumed to be an array).
165
159
  *
166
160
  * Also see {@link forkJoin} and {@link forkBuffer}.
167
161
  *
package/merge.d.ts CHANGED
@@ -42,7 +42,7 @@ export interface StreamMergeOpts<A, B> extends TransformableOpts<A, B> {
42
42
  *
43
43
  * @example
44
44
  * Use the
45
- * [`labeled()`](https://docs.thi.ng/umbrella/transducers/functions/labeled.html)
45
+ * [`labeled`](https://docs.thi.ng/umbrella/transducers/functions/labeled.html)
46
46
  * transducer for each input to create a stream of labeled values and
47
47
  * track their provenance:
48
48
  *
@@ -70,7 +70,7 @@ export interface StreamMergeOpts<A, B> extends TransformableOpts<A, B> {
70
70
  */
71
71
  export declare const merge: <A, B>(opts?: Partial<StreamMergeOpts<A, B>>) => StreamMerge<A, B>;
72
72
  /**
73
- * @see {@link merge} for reference & examples.
73
+ * See {@link merge} for reference & examples.
74
74
  */
75
75
  export declare class StreamMerge<A, B> extends Subscription<A, B> {
76
76
  sources: Map<ISubscribable<A>, ISubscription<A, any>>;
package/metastream.d.ts CHANGED
@@ -108,7 +108,7 @@ export interface MetaStreamOpts extends CommonOpts {
108
108
  */
109
109
  export declare const metaStream: <A, B>(factory: Fn<A, Nullable<ISubscription<B, B>>>, opts?: Partial<MetaStreamOpts>) => MetaStream<A, B>;
110
110
  /**
111
- * @see {@link metaStream} for reference & examples.
111
+ * See {@link metaStream} for reference & examples.
112
112
  */
113
113
  export declare class MetaStream<A, B> extends Subscription<A, B> {
114
114
  factory: Fn<A, Nullable<ISubscription<B, B>>>;
package/object.d.ts CHANGED
@@ -6,13 +6,13 @@ export type KeyStreams<T, K extends Keys<T>> = {
6
6
  };
7
7
  export interface StreamObjOpts<T, K extends Keys<T>> extends CommonOpts {
8
8
  /**
9
- * Array of selected `keys` (else selects all by default) for which
10
- * to create streams.
9
+ * Array of selected `keys` (else selects all by default) for which to
10
+ * create streams.
11
11
  */
12
12
  keys: K[];
13
13
  /**
14
- * If true (default), all created streams will be seeded with key
15
- * values from the source object.
14
+ * If true (default), all created streams will be seeded with key values
15
+ * from the source object.
16
16
  *
17
17
  * @defaultValue true
18
18
  */
@@ -23,7 +23,7 @@ export interface StreamObjOpts<T, K extends Keys<T>> extends CommonOpts {
23
23
  defaults: Partial<T>;
24
24
  /**
25
25
  * If true, attaches
26
- * [`dedupe()`](https://docs.thi.ng/umbrella/transducers/functions/dedupe.html)
26
+ * [`dedupe`](https://docs.thi.ng/umbrella/transducers/functions/dedupe.html)
27
27
  * transducer to each key's value stream to avoid obsolete downstream
28
28
  * propagation when a key's value hasn't actually changed.
29
29
  *
@@ -31,8 +31,8 @@ export interface StreamObjOpts<T, K extends Keys<T>> extends CommonOpts {
31
31
  */
32
32
  dedupe: boolean;
33
33
  /**
34
- * Generic equality predicate to be used for `dedupe` (`===` by
35
- * default). Ignored if `dedupe` option is false.
34
+ * Generic equality predicate to be used for `dedupe` (`===` by default).
35
+ * Ignored if `dedupe` option is false.
36
36
  */
37
37
  equiv: Predicate2<any>;
38
38
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thi.ng/rstream",
3
- "version": "9.2.9",
3
+ "version": "9.2.11",
4
4
  "description": "Reactive streams & subscription primitives for constructing dataflow graphs / pipelines",
5
5
  "type": "module",
6
6
  "module": "./index.js",
@@ -43,18 +43,18 @@
43
43
  "tool:tangle": "../../node_modules/.bin/tangle src/**/*.ts"
44
44
  },
45
45
  "dependencies": {
46
- "@thi.ng/api": "^8.11.19",
47
- "@thi.ng/arrays": "^2.10.14",
48
- "@thi.ng/associative": "^7.0.23",
49
- "@thi.ng/atom": "^5.3.20",
50
- "@thi.ng/checks": "^3.6.22",
51
- "@thi.ng/errors": "^2.5.25",
52
- "@thi.ng/logger": "^3.1.0",
53
- "@thi.ng/transducers": "^9.2.17"
46
+ "@thi.ng/api": "^8.11.21",
47
+ "@thi.ng/arrays": "^2.10.16",
48
+ "@thi.ng/associative": "^7.0.25",
49
+ "@thi.ng/atom": "^5.3.22",
50
+ "@thi.ng/checks": "^3.6.24",
51
+ "@thi.ng/errors": "^2.5.27",
52
+ "@thi.ng/logger": "^3.1.2",
53
+ "@thi.ng/transducers": "^9.2.19"
54
54
  },
55
55
  "devDependencies": {
56
- "esbuild": "^0.24.2",
57
- "typedoc": "^0.27.6",
56
+ "esbuild": "^0.25.0",
57
+ "typedoc": "^0.27.7",
58
58
  "typescript": "^5.7.3"
59
59
  },
60
60
  "keywords": [
@@ -221,5 +221,5 @@
221
221
  ],
222
222
  "year": 2017
223
223
  },
224
- "gitHead": "dcc1dbfa6eae31ac65e12843987b94d4a7edc144\n"
224
+ "gitHead": "bee617702ac61d093465b967f8f973dc566faa6b\n"
225
225
  }
package/pubsub.d.ts CHANGED
@@ -5,19 +5,18 @@ import type { ISubscriber, ISubscription, TransformableOpts, WithErrorHandlerOpt
5
5
  import { Subscription } from "./subscription.js";
6
6
  export interface PubSubOpts<A, B, T> {
7
7
  /**
8
- * Topic function. Incoming values will be routed to topic
9
- * subscriptions using this function's return value.
8
+ * Topic function. Incoming values will be routed to topic subscriptions
9
+ * using this function's return value.
10
10
  */
11
11
  topic: Fn<B, T>;
12
12
  /**
13
- * Optional transformer for incoming values. If given, `xform` will
14
- * be applied first and the transformed value passed to the
15
- * `topic` fn.
13
+ * Optional transformer for incoming values. If given, `xform` will be
14
+ * applied first and the transformed value passed to the `topic` fn.
16
15
  */
17
16
  xform?: Transducer<A, B>;
18
17
  /**
19
- * Equivalence check for topic values. Should return truthy result
20
- * if given topics are considered equal.
18
+ * Equivalence check for topic values. Should return truthy result if given
19
+ * topics are considered equal.
21
20
  */
22
21
  equiv?: Predicate2<T>;
23
22
  /**
@@ -34,9 +33,9 @@ export interface PubSubOpts<A, B, T> {
34
33
  * `undefined`. If the latter is returned, the incoming value will not be
35
34
  * processed further. Complex topics (e.g objects / arrays) are allowed and
36
35
  * they're matched against registered topics using
37
- * [`equiv()`](https://docs.thi.ng/umbrella/equiv/functions/equiv.html) by
38
- * default (but customizable via `equiv` option). Each topic can have any number
39
- * of subscribers.
36
+ * [`equiv`](https://docs.thi.ng/umbrella/equiv/functions/equiv.html) by default
37
+ * (but customizable via `equiv` option). Each topic can have any number of
38
+ * subscribers.
40
39
  *
41
40
  * If a `xform` transducer is given, it is always applied prior to passing the
42
41
  * input to the topic function. I.e. in this case the topic function will
@@ -54,7 +53,7 @@ export interface PubSubOpts<A, B, T> {
54
53
  */
55
54
  export declare const pubsub: <A, B = A, T = any>(opts: PubSubOpts<A, B, T>) => PubSub<A, B, T>;
56
55
  /**
57
- * @see {@link pubsub} for reference & examples.
56
+ * See {@link pubsub} for reference & examples.
58
57
  */
59
58
  export declare class PubSub<A, B = A, T = any> extends Subscription<A, B> {
60
59
  topicfn: Fn<B, T>;
package/raf.d.ts CHANGED
@@ -3,7 +3,7 @@ export interface FromRAFOpts extends CommonOpts {
3
3
  /**
4
4
  * Browser only. If true (default: false), passes the timestamps received
5
5
  * via `requestAnimationFrame()` as stream values. If false, a simple
6
- * counter [0..∞) will be emitted.
6
+ * counter `[0,∞)` will be emitted.
7
7
  *
8
8
  * @defaultValue false
9
9
  */
package/stream.d.ts CHANGED
@@ -68,7 +68,7 @@ export declare function stream<T>(src: StreamSource<T>, opts?: Partial<WithError
68
68
  */
69
69
  export declare const reactive: <T>(val: T, opts?: Partial<CommonOpts>) => Stream<T>;
70
70
  /**
71
- * @see {@link stream} & {@link reactive} for reference & examples.
71
+ * See {@link stream} & {@link reactive} for reference & examples.
72
72
  */
73
73
  export declare class Stream<T> extends Subscription<T, T> implements IStream<T> {
74
74
  src?: StreamSource<T>;
package/subscription.d.ts CHANGED
@@ -83,7 +83,7 @@ export declare class Subscription<A, B> implements ISubscription<A, B> {
83
83
  * Creates a new child subscription using given transducers and optional
84
84
  * subscription ID. Supports up to 4 transducers and if more than one
85
85
  * transducer is given, composes them in left-to-right order using
86
- * [`comp()`](https://docs.thi.ng/umbrella/transducers/functions/comp.html).
86
+ * [`comp`](https://docs.thi.ng/umbrella/transducers/functions/comp.html).
87
87
  *
88
88
  * Shorthand for `subscribe(comp(xf1, xf2,...), id)`
89
89
  */
@@ -94,7 +94,7 @@ export declare class Subscription<A, B> implements ISubscription<A, B> {
94
94
  transform<C>(opts: WithTransform<B, C> & Partial<WithErrorHandlerOpts>): ISubscription<B, C>;
95
95
  /**
96
96
  * Syntax sugar for {@link Subscription.transform} when using a single
97
- * [`map()`](https://docs.thi.ng/umbrella/transducers/functions/map.html)
97
+ * [`map`](https://docs.thi.ng/umbrella/transducers/functions/map.html)
98
98
  * transducer only. The given function `fn` is used as `map`'s
99
99
  * transformation fn.
100
100
  *
package/subscription.js CHANGED
@@ -87,7 +87,7 @@ class Subscription {
87
87
  }
88
88
  /**
89
89
  * Syntax sugar for {@link Subscription.transform} when using a single
90
- * [`map()`](https://docs.thi.ng/umbrella/transducers/functions/map.html)
90
+ * [`map`](https://docs.thi.ng/umbrella/transducers/functions/map.html)
91
91
  * transducer only. The given function `fn` is used as `map`'s
92
92
  * transformation fn.
93
93
  *
package/sync.d.ts CHANGED
@@ -87,7 +87,7 @@ export interface StreamSyncOpts<A extends IObjectOf<ISubscribable<any>>, B = Syn
87
87
  * option to `false`.
88
88
  *
89
89
  * The synchronization is done via the
90
- * [`partitionSync()`](https://docs.thi.ng/umbrella/transducers/functions/partitionSync-1.html)
90
+ * [`partitionSync`](https://docs.thi.ng/umbrella/transducers/functions/partitionSync-1.html)
91
91
  * transducer from the [`thi.ng/transducers`](https://thi.ng/transducers)
92
92
  * package. See this function's docs for further details.
93
93
  *
@@ -119,7 +119,7 @@ export interface StreamSyncOpts<A extends IObjectOf<ISubscribable<any>>, B = Syn
119
119
  */
120
120
  export declare const sync: <A extends IObjectOf<ISubscribable<any>>, B = SyncTuple<A>>(opts: Partial<StreamSyncOpts<A, B>>) => StreamSync<A, B>;
121
121
  /**
122
- * @see {@link sync} for reference & examples.
122
+ * See {@link sync} for reference & examples.
123
123
  */
124
124
  export declare class StreamSync<A extends IObjectOf<ISubscribable<any>>, B = SyncTuple<A>> extends Subscription<any, B> {
125
125
  /**
package/tunnel.d.ts CHANGED
@@ -58,7 +58,7 @@ export interface TunnelOpts<A> {
58
58
  */
59
59
  export declare const tunnel: <A, B>(opts: TunnelOpts<A>) => Tunnel<A, B>;
60
60
  /**
61
- * @see {@link tunnel} for reference & examples.
61
+ * See {@link tunnel} for reference & examples.
62
62
  */
63
63
  export declare class Tunnel<A, B> extends Subscription<A, B> {
64
64
  workers: Worker[];
package/view.d.ts CHANGED
@@ -53,7 +53,7 @@ export declare const fromViewUnsafe: <T>(atom: ReadonlyAtom<any>, opts: FromView
53
53
  * Views are readonly and more lightweight versions of [thi.ng/atom
54
54
  * cursors](https://docs.thi.ng/umbrella/atom/classes/Cursor.html). The view
55
55
  * checks for value changes with given `equiv` predicate (default:
56
- * [`equiv()`](https://docs.thi.ng/umbrella/equiv/functions/equiv.html)). If the
56
+ * [`equiv`](https://docs.thi.ng/umbrella/equiv/functions/equiv.html)). If the
57
57
  * predicate returns a falsy result (i.e. there's a new value), the new value is
58
58
  * emitted on the stream. The first value emitted is always the (possibly
59
59
  * transformed) current value at the stream's start time (i.e. when the first
@@ -65,8 +65,8 @@ export declare const fromViewUnsafe: <T>(atom: ReadonlyAtom<any>, opts: FromView
65
65
  * When the stream is cancelled the view is destroyed as well.
66
66
  *
67
67
  * Also see
68
- * [`defView()`](https://docs.thi.ng/umbrella/atom/functions/defView.html),
69
- * [`defViewUnsafe()`](https://docs.thi.ng/umbrella/atom/functions/defViewUnsafe.html)
68
+ * [`defView`](https://docs.thi.ng/umbrella/atom/functions/defView.html),
69
+ * [`defViewUnsafe`](https://docs.thi.ng/umbrella/atom/functions/defViewUnsafe.html)
70
70
  *
71
71
  * @example
72
72
  * ```ts tangle:../export/from-view.ts