@msb235/blits 0.4.0 → 0.5.0
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 +262 -0
- package/README.md +2 -1
- package/dist/bare.d.ts +29 -0
- package/dist/bare.js +105 -0
- package/dist/blend.d.ts +34 -0
- package/dist/blend.js +102 -0
- package/dist/book.d.ts +53 -0
- package/dist/book.js +218 -0
- package/dist/chain.d.ts +22 -0
- package/dist/chain.js +150 -0
- package/dist/channels.d.ts +2 -0
- package/dist/channels.js +3 -1
- package/dist/clock.d.ts +50 -3
- package/dist/clock.js +102 -9
- package/dist/clone.d.ts +7 -0
- package/dist/clone.js +57 -0
- package/dist/columns.d.ts +29 -0
- package/dist/columns.js +183 -0
- package/dist/crowd.d.ts +128 -0
- package/dist/crowd.js +354 -0
- package/dist/cue.d.ts +3 -0
- package/dist/cue.js +115 -0
- package/dist/due.d.ts +12 -0
- package/dist/due.js +93 -0
- package/dist/fade.d.ts +19 -0
- package/dist/fade.js +133 -0
- package/dist/fill.d.ts +42 -0
- package/dist/fill.js +381 -0
- package/dist/fold.d.ts +51 -0
- package/dist/fold.js +475 -0
- package/dist/gather.d.ts +24 -0
- package/dist/gather.js +186 -0
- package/dist/handle.d.ts +31 -0
- package/dist/handle.js +56 -0
- package/dist/held.d.ts +14 -0
- package/dist/held.js +117 -0
- package/dist/history.d.ts +22 -0
- package/dist/history.js +149 -0
- package/dist/hosts.d.ts +16 -0
- package/dist/hosts.js +178 -0
- package/dist/index.d.ts +1 -1
- package/dist/keyrows.d.ts +36 -0
- package/dist/keyrows.js +138 -0
- package/dist/lane.d.ts +210 -0
- package/dist/lane.js +187 -0
- package/dist/lanes.d.ts +121 -246
- package/dist/lanes.js +150 -1578
- package/dist/locus.d.ts +40 -0
- package/dist/locus.js +89 -0
- package/dist/marks.d.ts +12 -0
- package/dist/marks.js +80 -0
- package/dist/meet.d.ts +16 -0
- package/dist/meet.js +113 -0
- package/dist/mixer.d.ts +244 -196
- package/dist/mixer.js +242 -2220
- package/dist/motion.d.ts +66 -21
- package/dist/motion.js +325 -165
- package/dist/move.d.ts +9 -0
- package/dist/move.js +190 -0
- package/dist/named.d.ts +12 -0
- package/dist/named.js +39 -0
- package/dist/numbers.d.ts +18 -6
- package/dist/numbers.js +59 -31
- package/dist/owed.d.ts +24 -0
- package/dist/owed.js +51 -0
- package/dist/owner.d.ts +43 -0
- package/dist/owner.js +117 -0
- package/dist/pace.d.ts +40 -0
- package/dist/pace.js +113 -0
- package/dist/patch.d.ts +51 -10
- package/dist/patch.js +140 -45
- package/dist/place.d.ts +20 -0
- package/dist/place.js +196 -0
- package/dist/project.d.ts +4 -0
- package/dist/project.js +233 -0
- package/dist/pull.d.ts +5 -0
- package/dist/pull.js +175 -0
- package/dist/qualify.d.ts +31 -0
- package/dist/qualify.js +345 -0
- package/dist/relink.d.ts +25 -0
- package/dist/relink.js +59 -0
- package/dist/rows.d.ts +33 -0
- package/dist/rows.js +282 -0
- package/dist/sample.d.ts +21 -0
- package/dist/sample.js +232 -0
- package/dist/signals.d.ts +12 -9
- package/dist/signals.js +8 -5
- package/dist/store.d.ts +10 -3
- package/dist/store.js +44 -9
- package/dist/strays.d.ts +21 -0
- package/dist/strays.js +84 -0
- package/dist/tweened.d.ts +11 -0
- package/dist/tweened.js +48 -0
- package/dist/types.d.ts +217 -34
- package/dist/unreached.d.ts +5 -0
- package/dist/unreached.js +24 -0
- package/dist/voice.d.ts +240 -0
- package/dist/voice.js +322 -0
- package/dist/weigh.d.ts +26 -0
- package/dist/weigh.js +89 -0
- package/docs/schema.html +118 -40
- package/package.json +5 -2
package/dist/mixer.d.ts
CHANGED
|
@@ -1,212 +1,260 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { blended, laneRead, shareKept } from './blend.js';
|
|
2
|
+
import type { Book } from './book.js';
|
|
3
|
+
import { aims, chain, linkable } from './chain.js';
|
|
4
|
+
import { type LerpInto } from './channels.js';
|
|
5
|
+
import type { Due } from './due.js';
|
|
6
|
+
import { parting } from './fade.js';
|
|
7
|
+
import { apply, baseFor, clamp, fold, folded, foldLoci, foldWith, influence, isRest, type Key, keyed, linked, owedBy, passes, read, slopeFor, tick } from './fold.js';
|
|
8
|
+
import type { HandleHost } from './handle.js';
|
|
9
|
+
import { held, shownOf, sinceOf, unreachedOf } from './held.js';
|
|
10
|
+
import { Lanes } from './lanes.js';
|
|
11
|
+
import { foldLocus, type LocusScratch } from './locus.js';
|
|
12
|
+
import type { MotionOwner, Motions } from './motion.js';
|
|
13
|
+
import { Pace } from './pace.js';
|
|
14
|
+
import { keep } from './pull.js';
|
|
15
|
+
import { Steps } from './relink.js';
|
|
4
16
|
import { Store } from './store.js';
|
|
5
|
-
import type { Channel, Engine,
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
/** Under `stepMs`, how many intervals have run since `since`; `stepped` is where that lands. */
|
|
26
|
-
ticks: number;
|
|
27
|
-
/** The `now` this subject was last probed at, so twelve probes in a frame step once. */
|
|
28
|
-
probed: number;
|
|
29
|
-
/** The last delta computed this frame, handed back to a repeat probe unchanged. */
|
|
30
|
-
delta: Record<string, unknown> | null;
|
|
31
|
-
/** The phase `delta` was read at, to read it again once its voice's scratch has moved on. */
|
|
32
|
-
phase: number;
|
|
33
|
-
/** The voice's `seeks` when `delta` was read, so a seek later in the frame reads it again. */
|
|
34
|
-
seeks: number;
|
|
35
|
-
/** Stop 0 for a `from: 'current'` voice, taken the first frame this subject is seen. */
|
|
36
|
-
base?: Record<string, unknown>;
|
|
37
|
-
/** The pose's velocity per channel at that moment, units per ms, so the first segment leaves at it. */
|
|
38
|
-
slope?: Record<string, unknown>;
|
|
39
|
-
/** What each stateful signal on this voice keeps for this subject, by the signal. */
|
|
40
|
-
kept: Map<object, unknown>;
|
|
41
|
-
keep: Setting['keep'];
|
|
42
|
-
/** Under `history`, copies of this record by the mix time they were taken, oldest first. */
|
|
43
|
-
snaps?: {
|
|
17
|
+
import type { Booker, BookOptions, Channel, Columns, Engine, Handle, Kit, Marked, Mix, MixOptions, OwnerSpec, Patch, Projection, Sent, Signal, VoiceSpec } from './types.js';
|
|
18
|
+
import { type Subject, type Voice } from './voice.js';
|
|
19
|
+
import { base, capped, fadeOf, horizonFor, ownedBy, ownerBase, prime, weigh, weighOwned } from './weigh.js';
|
|
20
|
+
export declare class Mixer<I, O> implements Mix<I, O> {
|
|
21
|
+
readonly kit: Kit<O>;
|
|
22
|
+
readonly opts: MixOptions;
|
|
23
|
+
cued: Voice<I, O>[];
|
|
24
|
+
/** Under `history`, voices that have left but that a read back may still reach. */
|
|
25
|
+
gone: Voice<I, O>[];
|
|
26
|
+
/** Set on a projection's own mixer: it sends nothing, keeps no history, and reads without committing. */
|
|
27
|
+
projecting: boolean;
|
|
28
|
+
/** Set on a projection reading back: a subject it has nothing on starts from its voice's start. */
|
|
29
|
+
backward: boolean;
|
|
30
|
+
/** True during a sync, so a control change it makes is recorded as showing in that frame. */
|
|
31
|
+
moving: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Under `history` with `inputs`, the host fields patches read, copied each frame they changed. In
|
|
34
|
+
* a projection reading back, the copy in force then.
|
|
35
|
+
*/
|
|
36
|
+
hostLog: {
|
|
44
37
|
at: number;
|
|
45
|
-
|
|
38
|
+
fields: Record<string, unknown>;
|
|
46
39
|
}[];
|
|
47
|
-
/**
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
40
|
+
/**
|
|
41
|
+
* Marks the host announced on a score: `at` in host time, so the mix's rate never moves one, and
|
|
42
|
+
* NaN until the next sync for one announced as now before any sync; `made` is the mix time it was
|
|
43
|
+
* announced, for a read back to know what was known.
|
|
44
|
+
*/
|
|
45
|
+
announced: {
|
|
46
|
+
name: string;
|
|
47
|
+
score: string | undefined;
|
|
48
|
+
tags: readonly string[];
|
|
52
49
|
at: number;
|
|
53
|
-
|
|
50
|
+
made: number;
|
|
51
|
+
order: number;
|
|
54
52
|
}[];
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
hostThen: {
|
|
54
|
+
fields: Record<string, unknown>;
|
|
55
|
+
} | undefined;
|
|
56
|
+
/** Each subject's last two poses and when they were probed, for `from: 'current'`. */
|
|
57
|
+
pose: Store<I, {
|
|
58
|
+
pose: O;
|
|
57
59
|
at: number;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
/** The next voice's record for this subject, in voice order, among those that reach it. */
|
|
63
|
-
next: Subject<unknown> | null;
|
|
60
|
+
prev: O | undefined;
|
|
61
|
+
prevAt: number;
|
|
62
|
+
}>;
|
|
63
|
+
nextId: number;
|
|
64
64
|
/**
|
|
65
|
-
*
|
|
66
|
-
*
|
|
65
|
+
* The mix clock: host time at the mix's rate. Host time is the host's timestamp less every gap
|
|
66
|
+
* `rebase` has taken out, `u` at the last sync.
|
|
67
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
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
readonly patch: Patch<I, O, unknown>;
|
|
106
|
-
readonly fade: FadeSpec;
|
|
107
|
-
start: number;
|
|
108
|
-
state: 'pending' | 'live' | 'held' | 'fading' | 'done';
|
|
109
|
-
rate: number;
|
|
110
|
-
weight: number;
|
|
68
|
+
now: number;
|
|
69
|
+
u: number;
|
|
70
|
+
/** This mix's frame among every mix's: moved by a sync, and by a control change or drop within one. */
|
|
71
|
+
frame: number;
|
|
72
|
+
offset: number;
|
|
73
|
+
/** The mix's own rate; null while it has never been set, when mix time is host time. */
|
|
74
|
+
pace: Pace | null;
|
|
75
|
+
/** Pending voices whose start the host gave, by its host time, kept where the rate puts it. */
|
|
76
|
+
pins: Map<Voice<I, O>, number> | null;
|
|
77
|
+
last: number;
|
|
78
|
+
rebasing: boolean;
|
|
79
|
+
wantsPose: boolean;
|
|
80
|
+
/** The pose `pull` folds a subject into where it cannot read straight from the lanes. */
|
|
81
|
+
scratch: O | undefined;
|
|
82
|
+
/** The last array `pull` read, by position, with each subject's chain head, to skip the lookup. */
|
|
83
|
+
/** Live voices by the earliest mix time `moveTo` would change each, a binary heap. */
|
|
84
|
+
due: Due<I, O>[];
|
|
85
|
+
/** Voices retired since `moveTo` last pruned them, in the order they retired. */
|
|
86
|
+
retired: Voice<I, O>[];
|
|
87
|
+
/** Visit every voice each sync, as before the due queue; for tests that compare the two. */
|
|
88
|
+
walkAll: boolean;
|
|
89
|
+
pulled: I[];
|
|
90
|
+
pulledHeads: (Subject<unknown> | undefined)[];
|
|
91
|
+
/** Each remembered head's lane slot, and the `version` and `relinks` they were all current at. */
|
|
92
|
+
pulledSlots: Int32Array<ArrayBuffer>;
|
|
93
|
+
pulledVersion: number;
|
|
94
|
+
pulledRelinks: number;
|
|
95
|
+
/** Counts chains made stale one subject at a time, which `version` does not. */
|
|
96
|
+
relinks: number;
|
|
97
|
+
/** Read once a sync, so a `reduce` function is not called per voice per subject. */
|
|
98
|
+
reducedNow: boolean;
|
|
99
|
+
/** Something was changed since the last sync, so the next frame may differ from this one. */
|
|
100
|
+
stirred: boolean;
|
|
101
|
+
/** Counts the changes `stir` records, which a frame's record of a probe is current only before. */
|
|
102
|
+
stirs: number;
|
|
103
|
+
/** Records a change to the mix's voices or controls. */
|
|
104
|
+
stir(): void;
|
|
111
105
|
/**
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
*
|
|
106
|
+
* Per subject, the first record of the chain through every live voice that reaches it, or a stub
|
|
107
|
+
* where none does. Relinked when `version` moves, which is whenever the list or a voice's pending
|
|
108
|
+
* state changes.
|
|
115
109
|
*/
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
out: Ramp | null;
|
|
124
|
-
readonly subjects: Store<I, Subject<unknown>>;
|
|
125
|
-
/** The subjects its spec names, or null where it names none. */
|
|
126
|
-
readonly named: ReadonlySet<I> | null;
|
|
127
|
-
/** Kit slot of each channel the patch writes, in `writes` order. */
|
|
128
|
-
readonly slots: number[];
|
|
129
|
-
/** The stops built ahead of time, for a `keys` patch. */
|
|
130
|
-
readonly built: Built | null;
|
|
131
|
-
/** The kit's `lerp` for each channel the patch writes, which keyed stops interpolate through. */
|
|
132
|
-
readonly lerps: Channel<unknown>['lerp'][];
|
|
133
|
-
/** Per keyed channel, the in-place form of the lerp its stops take, where it has one. */
|
|
134
|
-
readonly intos: ReturnType<typeof intosOf> | undefined;
|
|
110
|
+
readonly chains: Store<I, Subject<unknown>>;
|
|
111
|
+
version: number;
|
|
112
|
+
readonly steps: Steps<Voice<I, O>>;
|
|
113
|
+
/** Per subject, the voices whose `subjects` name it, in voice order. */
|
|
114
|
+
named: Store<I, Voice<I, O>[]>;
|
|
115
|
+
/** Voices a subject has been faded out of, which `drop` looks in besides those that reach it. */
|
|
116
|
+
readonly parters: Set<Voice<I, O>>;
|
|
135
117
|
/**
|
|
136
|
-
*
|
|
137
|
-
*
|
|
118
|
+
* Motion patches that may hold state for a subject no voice still reaching it plays, which `drop`
|
|
119
|
+
* frees besides those voices' own: per subject, a patch a voice naming it left while another
|
|
120
|
+
* voice plays on, or that the host retargeted it on; and any patch a voice over every subject
|
|
121
|
+
* left while another plays on. How many live voices play each motion patch says which.
|
|
138
122
|
*/
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
/**
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
|
|
146
|
-
/**
|
|
147
|
-
|
|
148
|
-
/**
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
readonly
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
readonly
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
/**
|
|
174
|
-
|
|
175
|
-
/**
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
123
|
+
readonly strays: Store<I, Motions<I>[]>;
|
|
124
|
+
readonly strayAll: Set<Motions<I>>;
|
|
125
|
+
readonly playing: Map<Motions<I>, number>;
|
|
126
|
+
/** How many voices in the list carry `subjects`. */
|
|
127
|
+
naming: number;
|
|
128
|
+
/** The voices in the list that name no subjects, in voice order. */
|
|
129
|
+
general: Voice<I, O>[];
|
|
130
|
+
/** How many voices in the list carry a locus; with none, a fold allocates nothing. */
|
|
131
|
+
loci: number;
|
|
132
|
+
/** What every motion patch it plays asks for its voice's time, holding this mix weakly. */
|
|
133
|
+
owner: MotionOwner | null;
|
|
134
|
+
/** How many voices in the list are anchored, so a sync with none skips placing them. */
|
|
135
|
+
anchored: number;
|
|
136
|
+
/** Events sent since the last drain, and who is being probed, so `send` knows whose they are. */
|
|
137
|
+
sent: Sent<I, unknown>[];
|
|
138
|
+
sending: {
|
|
139
|
+
voice: Voice<I, O> | null;
|
|
140
|
+
subject: I;
|
|
141
|
+
};
|
|
142
|
+
readonly send: (event: unknown) => void;
|
|
143
|
+
/** The weight `influence` found besides the delta, read by the caller at once. */
|
|
144
|
+
w: number;
|
|
145
|
+
readonly names: Key<O>[];
|
|
146
|
+
readonly channels: Channel<unknown>[];
|
|
147
|
+
/** Slots of the channels that declare bounds, clamped after every fold. */
|
|
148
|
+
readonly bounded: number[];
|
|
149
|
+
/** By slot, a stock array channel's in-place `lerp`. */
|
|
150
|
+
readonly lerpsInto: (LerpInto | undefined)[];
|
|
151
|
+
/** What a fold with a locus in play gathers into, one per depth of folds under way. */
|
|
152
|
+
readonly locusScratch: LocusScratch<I, O>[];
|
|
153
|
+
locusDepth: number;
|
|
154
|
+
readonly slotOf: Map<string, number>;
|
|
155
|
+
readonly lanes: Lanes<I, O> | null;
|
|
156
|
+
handles: HandleHost<I, O> | null;
|
|
157
|
+
/** What `book` made, still booking; null while there is none. */
|
|
158
|
+
bookers: Book<I, O>[] | null;
|
|
159
|
+
/** Every owner still in the mix, null until one is cued. */
|
|
160
|
+
owners: Voice<I, O>[] | null;
|
|
161
|
+
constructor(kit: Kit<O>, opts: MixOptions);
|
|
162
|
+
get reduced(): boolean;
|
|
163
|
+
get band(): {
|
|
164
|
+
on: number;
|
|
165
|
+
off: number;
|
|
166
|
+
};
|
|
167
|
+
cue(spec: VoiceSpec<I, O>): Handle<I>;
|
|
168
|
+
blend(patches: readonly Patch<I, O, unknown>[], by: Signal<I>, spec?: Omit<VoiceSpec<I, O>, 'patch' | 'weight' | 'locus'>): Handle<I>[];
|
|
169
|
+
owns(spec: OwnerSpec<I>): Handle<I>;
|
|
170
|
+
sync(timestamp: number): void;
|
|
171
|
+
book(opts: BookOptions): Booker;
|
|
172
|
+
probe(subject: I, out?: O): O;
|
|
173
|
+
pull(subjects: Iterable<I>, into: Columns<O>): void;
|
|
174
|
+
project(timestamp: number): Projection<I, O>;
|
|
175
|
+
announce(name: string, opts?: {
|
|
176
|
+
at?: number;
|
|
177
|
+
score?: string;
|
|
178
|
+
tags?: readonly string[];
|
|
179
|
+
}): void;
|
|
180
|
+
marks(from: number, to: number): Marked[];
|
|
181
|
+
atRest(subject: I): boolean;
|
|
182
|
+
rests(pose: O): boolean;
|
|
183
|
+
rebase(): void;
|
|
184
|
+
voices(tag?: string): Handle<I>[];
|
|
185
|
+
get live(): boolean;
|
|
186
|
+
get inert(): boolean;
|
|
187
|
+
get rate(): number;
|
|
188
|
+
set rate(r: number);
|
|
189
|
+
ramp(rate: number, over: number): void;
|
|
190
|
+
/** Whether a voice will change no pose from `now` on, short of a change made to it. */
|
|
191
|
+
still(voice: Voice<I, O>, now: number): boolean;
|
|
192
|
+
mute(opts?: {
|
|
193
|
+
over?: number;
|
|
194
|
+
}): void;
|
|
195
|
+
drop(subject: I): void;
|
|
196
|
+
drain<E = unknown>(tag?: string): Sent<I, E>[];
|
|
197
|
+
/** Voices whose stop 0 is mid-computation, so a fold for one cannot re-enter itself. */
|
|
198
|
+
readonly folding: Set<number>;
|
|
199
|
+
linkedLaned: boolean;
|
|
202
200
|
/**
|
|
203
|
-
*
|
|
204
|
-
*
|
|
201
|
+
* Per subject, twice `restsKey` at its last probe plus 1 if the pose rested; null until `atRest`
|
|
202
|
+
* is first asked, when probes start writing it.
|
|
205
203
|
*/
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
204
|
+
restStamps: Store<I, number> | null;
|
|
205
|
+
/** What a probe's record of rest is good for: moved by a new frame, version or relink. */
|
|
206
|
+
private restsEpoch;
|
|
207
|
+
private restsFrame;
|
|
208
|
+
private restsVersion;
|
|
209
|
+
private restsRelinks;
|
|
210
|
+
private restsStirs;
|
|
211
|
+
/** The pose `atRest` folds into where no probe this frame answers. */
|
|
212
|
+
private restScratch;
|
|
213
|
+
private restsLaned;
|
|
214
|
+
private restsKey;
|
|
215
|
+
}
|
|
216
|
+
declare const methods: {
|
|
217
|
+
fold: typeof fold;
|
|
218
|
+
folded: typeof folded;
|
|
219
|
+
linked: typeof linked;
|
|
220
|
+
foldWith: typeof foldWith;
|
|
221
|
+
owedBy: typeof owedBy;
|
|
222
|
+
foldLoci: typeof foldLoci;
|
|
223
|
+
read: typeof read;
|
|
224
|
+
influence: typeof influence;
|
|
225
|
+
keyed: typeof keyed;
|
|
226
|
+
tick: typeof tick;
|
|
227
|
+
apply: typeof apply;
|
|
228
|
+
clamp: typeof clamp;
|
|
229
|
+
passes: typeof passes;
|
|
230
|
+
isRest: typeof isRest;
|
|
231
|
+
baseFor: typeof baseFor;
|
|
232
|
+
slopeFor: typeof slopeFor;
|
|
233
|
+
prime: typeof prime;
|
|
234
|
+
capped: typeof capped;
|
|
235
|
+
horizonFor: typeof horizonFor;
|
|
236
|
+
weigh: typeof weigh;
|
|
237
|
+
weighOwned: typeof weighOwned;
|
|
238
|
+
base: typeof base;
|
|
239
|
+
envelope: typeof fadeOf;
|
|
240
|
+
ownedBy: typeof ownedBy;
|
|
241
|
+
ownerBase: typeof ownerBase;
|
|
242
|
+
blended: typeof blended;
|
|
243
|
+
laneRead: typeof laneRead;
|
|
244
|
+
shareKept: typeof shareKept;
|
|
245
|
+
parting: typeof parting;
|
|
246
|
+
chain: typeof chain;
|
|
247
|
+
linkable: typeof linkable;
|
|
248
|
+
aims: typeof aims;
|
|
249
|
+
held: typeof held;
|
|
250
|
+
unreachedOf: typeof unreachedOf;
|
|
251
|
+
sinceOf: typeof sinceOf;
|
|
252
|
+
shownOf: typeof shownOf;
|
|
253
|
+
keep: typeof keep;
|
|
254
|
+
foldLocus: typeof foldLocus;
|
|
255
|
+
};
|
|
256
|
+
type Methods = typeof methods;
|
|
257
|
+
export interface Mixer<I, O> extends Methods {
|
|
210
258
|
}
|
|
211
259
|
/**
|
|
212
260
|
* The one that ships: every form on the CPU, probed per subject on demand.
|
|
@@ -219,5 +267,5 @@ export declare const mixer: Engine;
|
|
|
219
267
|
*
|
|
220
268
|
* @category mix
|
|
221
269
|
*/
|
|
222
|
-
export declare function mix<I, O>(kit: Kit<O>, opts?: MixOptions): Mix<I, O>;
|
|
270
|
+
export declare function mix<I, O, H = unknown>(kit: Kit<O>, opts?: MixOptions<H>): Mix<I, O, H>;
|
|
223
271
|
export {};
|