@oimdb/core 4.0.0 → 4.1.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 +154 -32
- package/README.md +342 -453
- package/dist/index.cjs +1825 -1990
- package/dist/index.d.cts +619 -543
- package/dist/index.d.ts +619 -543
- package/dist/index.js +1778 -1945
- package/llms.txt +741 -860
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -10,27 +10,26 @@ interface IOIMEffectService {
|
|
|
10
10
|
setPositionInSubscribedSlot(effect: TOIMEffect, edge: number, positionInSlot: number): void;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
type
|
|
14
|
-
readonly
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
type TOIMIndexableSlot<TKey = unknown> = TOIMKeyedSlot<TKey> & {
|
|
18
|
-
readonly indexKeys: unknown[] | undefined;
|
|
13
|
+
type TOIMSlotEditable<TSlot> = {
|
|
14
|
+
-readonly [K in keyof TSlot]: TSlot[K];
|
|
19
15
|
};
|
|
20
16
|
|
|
21
17
|
interface IOIMSlotOwner {
|
|
22
18
|
holdSlot(slot: TOIMSlot): void;
|
|
23
19
|
unholdSlot(slot: TOIMSlot): void;
|
|
24
20
|
releaseSlotIfUnheld(slot: TOIMSlot): void;
|
|
21
|
+
unsafeMutateSlot(slot: TOIMSlot, mutateSlot: (slotEditable: TOIMSlotEditable<TOIMSlot>) => void): void;
|
|
25
22
|
subscribeToSlot(slot: TOIMSlot, effect: TOIMEffect, edge: number): number;
|
|
26
23
|
unsubscribeFromSlot(slot: TOIMSlot, positionInSlot: number, effect: TOIMEffect): boolean;
|
|
24
|
+
onSlotFirstSubscribed(slot: TOIMSlot): void;
|
|
25
|
+
onSlotLastUnsubscribed(slot: TOIMSlot): void;
|
|
27
26
|
}
|
|
28
27
|
|
|
29
28
|
interface IOIMComputedValueService<TValue = unknown> {
|
|
30
|
-
getValueForSlot(computedSlot:
|
|
29
|
+
getValueForSlot(computedSlot: TOIMComputedContentSlot<TValue>): TValue;
|
|
31
30
|
}
|
|
32
31
|
|
|
33
|
-
type
|
|
32
|
+
type TOIMComputedContentSlot<TValue = unknown> = TOIMSlot & Readonly<TOIMDerivation> & {
|
|
34
33
|
readonly owner: IOIMSlotOwner;
|
|
35
34
|
readonly computedValueService: IOIMComputedValueService<TValue>;
|
|
36
35
|
readonly value: TValue;
|
|
@@ -42,7 +41,7 @@ type TOIMComputedSlot<TValue = unknown, TKey = unknown> = TOIMIndexableSlot<TKey
|
|
|
42
41
|
|
|
43
42
|
type TOIMComputedSources = {
|
|
44
43
|
readonly sourceSlots: readonly TOIMSlot[];
|
|
45
|
-
readonly sourceComputeds: readonly
|
|
44
|
+
readonly sourceComputeds: readonly TOIMComputedContentSlot[];
|
|
46
45
|
};
|
|
47
46
|
|
|
48
47
|
type TOIMDerivation = TOIMComputedSources & {
|
|
@@ -84,8 +83,9 @@ type TOIMColumnReaders = {
|
|
|
84
83
|
readonly columnGroups: TOIMColumnGroup[];
|
|
85
84
|
};
|
|
86
85
|
|
|
87
|
-
type TOIMStoreSlot<TStore = unknown, TSlot extends TOIMSlot = TOIMSlot, TPatch = unknown> = {
|
|
86
|
+
type TOIMStoreSlot<TStore = unknown, TSlot extends TOIMSlot = TOIMSlot, TPatch = unknown, TSlotService = unknown> = {
|
|
88
87
|
readonly store: TStore;
|
|
88
|
+
readonly slotService: TSlotService;
|
|
89
89
|
readonly channelSlot: TOIMChannelSlot;
|
|
90
90
|
readonly contentChangeListeners: IOIMContentChangeListener<TSlot, TPatch>[] | undefined;
|
|
91
91
|
readonly contentChangeListenerReadColumnNames: (readonly string[] | undefined)[] | undefined;
|
|
@@ -96,10 +96,10 @@ type TOIMStoreSlot<TStore = unknown, TSlot extends TOIMSlot = TOIMSlot, TPatch =
|
|
|
96
96
|
readonly columnGroupSlotCountsByKey: Map<string, number> | undefined;
|
|
97
97
|
readonly columnReadersByColumnName: Map<string, TOIMColumnReaders> | undefined;
|
|
98
98
|
readonly anyColumnSlotCount: number;
|
|
99
|
-
readonly
|
|
100
|
-
readonly
|
|
101
|
-
readonly
|
|
102
|
-
readonly
|
|
99
|
+
readonly batchDepth: number;
|
|
100
|
+
readonly batchSlotChannelQueue: OIMChannelQueue<TSlot> | undefined;
|
|
101
|
+
readonly batchPatchChannelQueue: OIMChannelQueue<TPatch | undefined> | undefined;
|
|
102
|
+
readonly batchChangedColumnsChannelQueue: OIMChannelQueue<readonly string[] | undefined> | undefined;
|
|
103
103
|
readonly arrivedBucketMemberSlotChannelQueues: OIMChannelQueue<TOIMSlot>[] | undefined;
|
|
104
104
|
readonly departedBucketMemberSlotChannelQueues: OIMChannelQueue<TOIMSlot>[] | undefined;
|
|
105
105
|
readonly removedAtChannelQueues: OIMChannelQueue<number>[] | undefined;
|
|
@@ -117,10 +117,6 @@ type TOIMStoreSlot<TStore = unknown, TSlot extends TOIMSlot = TOIMSlot, TPatch =
|
|
|
117
117
|
readonly isDisposed: boolean;
|
|
118
118
|
};
|
|
119
119
|
|
|
120
|
-
interface IOIMSubframeCloseListener {
|
|
121
|
-
onStoreSlotSubframeClosed(storeSlot: TOIMStoreSlot): void;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
120
|
type TOIMUnusedSlotCollectorSlot = {
|
|
125
121
|
readonly unusedSlotChannelQueue: OIMChannelQueue<TOIMSlot>;
|
|
126
122
|
openDepth: number;
|
|
@@ -129,32 +125,84 @@ type TOIMUnusedSlotCollectorSlot = {
|
|
|
129
125
|
|
|
130
126
|
type TOIMTimer = (run: () => void, inMs: number) => TOIMDisposer;
|
|
131
127
|
|
|
128
|
+
interface IOIMErrorPolicy {
|
|
129
|
+
onErrorCaught(error: unknown): void;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
type TOIMSlotWheelOptions = {
|
|
133
|
+
getNowMs: () => number;
|
|
134
|
+
timer: TOIMTimer;
|
|
135
|
+
errorPolicy: IOIMErrorPolicy;
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
type TOIMSlotReleaseWheelOptions = TOIMSlotWheelOptions & {
|
|
139
|
+
getReleaseDueMs: (slot: TOIMSlot) => number;
|
|
140
|
+
setReleaseDueMs: (slot: TOIMSlot, releaseDueMs: number) => void;
|
|
141
|
+
releaseScheduledSlotFlag: number;
|
|
142
|
+
};
|
|
143
|
+
|
|
132
144
|
type TOIMFlushSchedulerSlot = {
|
|
133
145
|
readonly timer: TOIMTimer | undefined;
|
|
134
146
|
scheduledCallback: (() => void) | undefined;
|
|
135
147
|
timerDisposer: TOIMDisposer | undefined;
|
|
136
148
|
};
|
|
137
149
|
|
|
138
|
-
interface
|
|
139
|
-
|
|
150
|
+
interface IOIMFlushSchedulerListener<TFlushSchedulerSlot extends TOIMFlushSchedulerSlot> {
|
|
151
|
+
onSchedulerTimerFired(flushSchedulerSlot: TFlushSchedulerSlot): void;
|
|
140
152
|
}
|
|
141
153
|
|
|
142
|
-
|
|
154
|
+
declare abstract class OIMSlotWheel implements TOIMFlushSchedulerSlot, IOIMFlushSchedulerListener<OIMSlotWheel> {
|
|
155
|
+
readonly timer: TOIMTimer;
|
|
156
|
+
scheduledCallback: (() => void) | undefined;
|
|
157
|
+
timerDisposer: TOIMDisposer | undefined;
|
|
143
158
|
readonly getNowMs: () => number;
|
|
144
|
-
readonly errorPolicy
|
|
145
|
-
scheduledUntilMs
|
|
146
|
-
readonly slotsBySliceNumber
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
159
|
+
private readonly errorPolicy;
|
|
160
|
+
private scheduledUntilMs;
|
|
161
|
+
private readonly slotsBySliceNumber;
|
|
162
|
+
private lastFiledSliceNumber;
|
|
163
|
+
private lastFiledSliceSlots;
|
|
164
|
+
private floorSliceNumber;
|
|
165
|
+
private nextSliceNumber;
|
|
166
|
+
private nextSliceNumberNeedsRescan;
|
|
167
|
+
constructor(options: TOIMSlotWheelOptions);
|
|
168
|
+
getNextSliceNumber(): number | undefined;
|
|
169
|
+
sweepUpToSliceNumber(upToSliceNumber: number): void;
|
|
170
|
+
flush(): void;
|
|
171
|
+
cancelAllSlots(): void;
|
|
172
|
+
protected fileSlot(sliceNumber: number, slot: TOIMSlot): void;
|
|
173
|
+
protected scheduleNextSweep(): void;
|
|
174
|
+
private cancelSlotWheelSchedule;
|
|
175
|
+
onSchedulerTimerFired(): void;
|
|
176
|
+
protected getSweptSliceNumberAt(nowMs: number): number;
|
|
177
|
+
protected abstract onSlotDue(slot: TOIMSlot, nowMs: number): void;
|
|
178
|
+
protected onSlotDropped(_slot: TOIMSlot): void;
|
|
179
|
+
protected onSweepFinished(): void;
|
|
180
|
+
private lowerNextSliceNumber;
|
|
181
|
+
private sweepSlice;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
declare class OIMSlotReleaseWheel extends OIMSlotWheel {
|
|
185
|
+
readonly getReleaseDueMs: (slot: TOIMSlot) => number;
|
|
186
|
+
private readonly setReleaseDueMs;
|
|
187
|
+
private readonly releaseScheduledSlotFlag;
|
|
188
|
+
constructor(options: TOIMSlotReleaseWheelOptions);
|
|
189
|
+
markSlotReleaseDue(slot: TOIMSlot, keepMs: number): number;
|
|
190
|
+
markSlotReleaseDueNow(slot: TOIMSlot): void;
|
|
191
|
+
scheduleSlotRelease(slot: TOIMSlot, nowMs: number): void;
|
|
192
|
+
isSlotReleasable(slot: TOIMSlot): boolean;
|
|
193
|
+
cancelSlotRelease(slot: TOIMSlot): void;
|
|
194
|
+
isSlotReleaseScheduled(slot: TOIMSlot): boolean;
|
|
195
|
+
protected onSlotDue(slot: TOIMSlot, nowMs: number): void;
|
|
196
|
+
protected onSlotDropped(slot: TOIMSlot): void;
|
|
197
|
+
private fileReleaseSlot;
|
|
198
|
+
}
|
|
152
199
|
|
|
153
200
|
type TOIMCollectorSlot = {
|
|
154
201
|
readonly unusedSlotCollectorSlot: TOIMUnusedSlotCollectorSlot;
|
|
155
|
-
readonly
|
|
156
|
-
|
|
157
|
-
|
|
202
|
+
readonly slotWheelOptions: TOIMSlotWheelOptions;
|
|
203
|
+
afterIdleSlotReleaseWheel: OIMSlotReleaseWheel | undefined;
|
|
204
|
+
afterWriteSlotReleaseWheel: OIMSlotReleaseWheel | undefined;
|
|
205
|
+
afterUnholdSlotReleaseWheel: OIMSlotReleaseWheel | undefined;
|
|
158
206
|
};
|
|
159
207
|
|
|
160
208
|
type TOIMChannelClock = {
|
|
@@ -178,15 +226,8 @@ type TOIMChannelSlot = TOIMFlushSchedulerSlot & {
|
|
|
178
226
|
readonly effectChannelQueue: OIMChannelQueue<TOIMEffect>;
|
|
179
227
|
readonly afterEachFlush: Set<() => void>;
|
|
180
228
|
readonly afterEachFrameHandlerChannelQueue: OIMChannelQueue<() => void>;
|
|
181
|
-
readonly subframeStoreSlotChannelQueues: OIMChannelQueue<TOIMStoreSlot>[];
|
|
182
|
-
readonly changedStoreSlotChannelQueue: OIMChannelQueue<TOIMStoreSlot>;
|
|
183
|
-
readonly changedStoreSlotOwnerChannelQueue: OIMChannelQueue<IOIMSubframeCloseListener>;
|
|
184
229
|
commandsStoreSlotChannelQueue: OIMChannelQueue<TOIMStoreSlot> | undefined;
|
|
185
230
|
changedColumnNames: string[] | undefined;
|
|
186
|
-
subframesOpen: number;
|
|
187
|
-
contentSubframeDepth: number;
|
|
188
|
-
subframeDeliveryDepth: number;
|
|
189
|
-
flushRequestedInSubframe: boolean;
|
|
190
231
|
flushRequested: boolean;
|
|
191
232
|
isFlushing: boolean;
|
|
192
233
|
dropped: boolean;
|
|
@@ -228,36 +269,64 @@ interface IOIMStoreSlotListener {
|
|
|
228
269
|
onStoreSlotCreated<TStore, TSlot extends TOIMSlot, TPatch>(storeSlot: TOIMStoreSlot<TStore, TSlot, TPatch>): void;
|
|
229
270
|
}
|
|
230
271
|
|
|
231
|
-
declare class
|
|
232
|
-
static readonly INSTANCE:
|
|
272
|
+
declare class OIMNoStoreSlotListener implements IOIMStoreSlotListener {
|
|
273
|
+
static readonly INSTANCE: OIMNoStoreSlotListener;
|
|
233
274
|
onStoreSlotCreated(): void;
|
|
234
275
|
}
|
|
235
276
|
|
|
277
|
+
interface IOIMSlotSubscriptionListener {
|
|
278
|
+
onSlotFirstSubscribed(slot: TOIMSlot): void;
|
|
279
|
+
onSlotLastUnsubscribed(slot: TOIMSlot): void;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
declare class OIMNoSlotSubscriptionListener implements IOIMSlotSubscriptionListener {
|
|
283
|
+
static readonly INSTANCE: OIMNoSlotSubscriptionListener;
|
|
284
|
+
onSlotFirstSubscribed(): void;
|
|
285
|
+
onSlotLastUnsubscribed(): void;
|
|
286
|
+
}
|
|
287
|
+
|
|
236
288
|
declare function oimIsSlotEmpty(slot: TOIMSlot): boolean;
|
|
237
289
|
|
|
238
290
|
declare function oimIsSlotReleased(slot: TOIMSlot): boolean;
|
|
239
291
|
|
|
240
|
-
type
|
|
292
|
+
type TOIMKeyedSlot<TKey extends NonNullable<unknown> = NonNullable<unknown>> = TOIMSlot & {
|
|
293
|
+
readonly key: TKey;
|
|
294
|
+
};
|
|
295
|
+
|
|
296
|
+
type TOIMIndexableSlot<TKey extends NonNullable<unknown> = NonNullable<unknown>> = TOIMKeyedSlot<TKey> & {
|
|
297
|
+
readonly indexKeys: unknown[] | undefined;
|
|
298
|
+
};
|
|
299
|
+
|
|
300
|
+
type TOIMEntityContentSlot<TEntity extends object = object> = TOIMSlot & {
|
|
241
301
|
readonly entity: TEntity | undefined;
|
|
242
302
|
readonly data: unknown[] | undefined;
|
|
243
303
|
};
|
|
244
304
|
|
|
305
|
+
type TOIMEntitySlot<TEntity extends object = object, TKey extends NonNullable<unknown> = NonNullable<unknown>> = TOIMEntityContentSlot<TEntity> & TOIMIndexableSlot<TKey>;
|
|
306
|
+
|
|
245
307
|
type TOIMColumnSlot = TOIMSlot & {
|
|
246
308
|
readonly carrierSlot: TOIMSlot;
|
|
247
309
|
readonly key: string;
|
|
248
310
|
};
|
|
249
311
|
|
|
312
|
+
type TOIMComputedSlot<TValue = unknown, TKey extends NonNullable<unknown> = NonNullable<unknown>> = TOIMComputedContentSlot<TValue> & TOIMIndexableSlot<TKey>;
|
|
313
|
+
|
|
250
314
|
type TOIMComputedColumnSlot = TOIMComputedSlot<unknown, string>;
|
|
251
315
|
|
|
252
|
-
interface
|
|
316
|
+
interface IOIMSlotFilingService<TSlot extends TOIMSlot = TOIMSlot, TStore = unknown> {
|
|
253
317
|
createStore(): TStore;
|
|
318
|
+
fileSlot(store: TStore, slot: TSlot): void;
|
|
319
|
+
unfileSlot(store: TStore, slot: TSlot): void;
|
|
320
|
+
getSlots(store: TStore): IterableIterator<TSlot>;
|
|
321
|
+
getSlotCount(store: TStore): number;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
interface IOIMSlotStoreService<TKey extends NonNullable<unknown>, TSlot extends TOIMKeyedSlot<TKey> = TOIMKeyedSlot<TKey>, TStore = unknown> extends IOIMSlotFilingService<TSlot, TStore> {
|
|
254
325
|
ownKey<TOwnedKey extends TKey>(key: TOwnedKey): TOwnedKey;
|
|
255
326
|
isSameKey(key: TKey, otherKey: TKey): boolean;
|
|
256
327
|
get(store: TStore, key: TKey): TSlot | undefined;
|
|
257
328
|
set(store: TStore, key: TKey, slot: TSlot): void;
|
|
258
329
|
remove(store: TStore, key: TKey): void;
|
|
259
|
-
getSlots(store: TStore): IterableIterator<TSlot>;
|
|
260
|
-
getSlotCount(store: TStore): number;
|
|
261
330
|
}
|
|
262
331
|
|
|
263
332
|
declare class OIMSlotOwner implements IOIMSlotOwner {
|
|
@@ -266,12 +335,15 @@ declare class OIMSlotOwner implements IOIMSlotOwner {
|
|
|
266
335
|
subscribeToSlot(slot: TOIMSlot, effect: TOIMEffect, edge: number): number;
|
|
267
336
|
unsubscribeFromSlot(slot: TOIMSlot, positionInSlot: number, effect: TOIMEffect): boolean;
|
|
268
337
|
releaseSlotIfUnheld(_slot: TOIMSlot): void;
|
|
338
|
+
unsafeMutateSlot(slot: TOIMSlot, mutateSlot: (slotEditable: TOIMSlotEditable<TOIMSlot>) => void): void;
|
|
339
|
+
onSlotFirstSubscribed(_slot: TOIMSlot): void;
|
|
340
|
+
onSlotLastUnsubscribed(_slot: TOIMSlot): void;
|
|
269
341
|
protected onSlotIdle(_slot: TOIMSlot): void;
|
|
270
342
|
protected onSlotUnheld(_slot: TOIMSlot): void;
|
|
271
343
|
protected assertNotReleased(slot: TOIMSlot): void;
|
|
272
344
|
}
|
|
273
345
|
|
|
274
|
-
declare abstract class
|
|
346
|
+
declare abstract class OIMColumnSlotOwner<TCarrierSlot extends TOIMSlot, TColumnSlot extends TOIMKeyedSlot<string>> extends OIMSlotOwner {
|
|
275
347
|
protected readonly columnSlotStoreService: IOIMSlotStoreService<string, TColumnSlot>;
|
|
276
348
|
protected constructor(columnSlotStoreService: IOIMSlotStoreService<string, TColumnSlot>);
|
|
277
349
|
protected abstract createColumnSlot(carrierSlot: TCarrierSlot, key: string): TColumnSlot;
|
|
@@ -284,6 +356,8 @@ declare abstract class OIMColumnOwner<TCarrierSlot extends TOIMSlot, TColumnSlot
|
|
|
284
356
|
holdColumn(carrierSlot: TCarrierSlot, key: string): TColumnSlot;
|
|
285
357
|
isAnyColumnReferenced(storeSlot: TOIMStoreSlot, changedColumns: readonly string[]): boolean;
|
|
286
358
|
releaseSlotIfUnheld(slot: TOIMSlot): void;
|
|
359
|
+
onSlotFirstSubscribed(slot: TOIMSlot): void;
|
|
360
|
+
onSlotLastUnsubscribed(slot: TOIMSlot): void;
|
|
287
361
|
protected getColumnGroupsByKeyOf(carrierSlot: TCarrierSlot): Map<string, TOIMColumnGroup> | undefined;
|
|
288
362
|
protected getColumnReadersOf(carrierSlot: TCarrierSlot): Map<string, TOIMColumnReaders> | undefined;
|
|
289
363
|
private getColumnIfFiled;
|
|
@@ -292,7 +366,7 @@ declare abstract class OIMColumnOwner<TCarrierSlot extends TOIMSlot, TColumnSlot
|
|
|
292
366
|
private fileColumnSlot;
|
|
293
367
|
}
|
|
294
368
|
|
|
295
|
-
type
|
|
369
|
+
type TOIMColumnSlotOwnerOptions<TColumnSlot extends TOIMKeyedSlot<string>, TColumnName extends string = string> = {
|
|
296
370
|
columnSlotStoreService: IOIMSlotStoreService<string, TColumnSlot>;
|
|
297
371
|
columnNames?: undefined;
|
|
298
372
|
} | {
|
|
@@ -300,8 +374,8 @@ type TOIMColumnOwnerOptions<TColumnSlot extends TOIMKeyedSlot<string>, TColumnNa
|
|
|
300
374
|
columnSlotStoreService?: undefined;
|
|
301
375
|
};
|
|
302
376
|
|
|
303
|
-
declare class
|
|
304
|
-
constructor(options:
|
|
377
|
+
declare class OIMPushColumnSlotOwner extends OIMColumnSlotOwner<TOIMSlot, TOIMColumnSlot> {
|
|
378
|
+
constructor(options: TOIMColumnSlotOwnerOptions<TOIMColumnSlot>);
|
|
305
379
|
protected createColumnSlot(carrierSlot: TOIMSlot, key: string): TOIMColumnSlot;
|
|
306
380
|
protected carrierSlotOf(columnSlot: TOIMColumnSlot): TOIMSlot;
|
|
307
381
|
markColumnsChanged(carrierSlot: TOIMSlot, patch: object | undefined, changedColumns: readonly string[] | undefined, channelSlot: TOIMChannelSlot): void;
|
|
@@ -310,20 +384,16 @@ declare class OIMColumnOwnerPushDriven extends OIMColumnOwner<TOIMSlot, TOIMColu
|
|
|
310
384
|
private markValueColumnsChanged;
|
|
311
385
|
}
|
|
312
386
|
|
|
313
|
-
declare class
|
|
314
|
-
constructor(options:
|
|
387
|
+
declare class OIMPullColumnSlotOwner extends OIMColumnSlotOwner<TOIMComputedContentSlot, TOIMComputedColumnSlot> implements IOIMComputedValueService {
|
|
388
|
+
constructor(options: TOIMColumnSlotOwnerOptions<TOIMComputedColumnSlot>);
|
|
315
389
|
private readonly deriveColumnSlotValue;
|
|
316
|
-
getValueForSlot(computedSlot:
|
|
317
|
-
protected createColumnSlot(carrierSlot:
|
|
318
|
-
protected carrierSlotOf(columnSlot: TOIMComputedColumnSlot):
|
|
390
|
+
getValueForSlot(computedSlot: TOIMComputedContentSlot): unknown;
|
|
391
|
+
protected createColumnSlot(carrierSlot: TOIMComputedContentSlot, key: string): TOIMComputedColumnSlot;
|
|
392
|
+
protected carrierSlotOf(columnSlot: TOIMComputedColumnSlot): TOIMComputedContentSlot;
|
|
319
393
|
private deriveColumnValue;
|
|
320
394
|
private deriveColumnValues;
|
|
321
395
|
}
|
|
322
396
|
|
|
323
|
-
type TOIMSlotEditable<TSlot> = {
|
|
324
|
-
-readonly [K in keyof TSlot]: TSlot[K];
|
|
325
|
-
};
|
|
326
|
-
|
|
327
397
|
interface IOIMSlotStamp<TSlot> {
|
|
328
398
|
stamp(slotEditable: TOIMSlotEditable<TSlot>): void;
|
|
329
399
|
}
|
|
@@ -344,18 +414,18 @@ type TOIMOrderedListCommand = {
|
|
|
344
414
|
slots: readonly TOIMSlot[];
|
|
345
415
|
};
|
|
346
416
|
|
|
347
|
-
type
|
|
417
|
+
type TOIMBucketContentSlot<TSlots = unknown> = TOIMSlot & {
|
|
348
418
|
readonly owner: IOIMSlotOwner;
|
|
349
|
-
readonly storeSlot: TOIMStoreSlot<unknown,
|
|
419
|
+
readonly storeSlot: TOIMStoreSlot<unknown, TOIMBucketContentSlot<TSlots>>;
|
|
350
420
|
readonly bucketSlotsStore: TSlots;
|
|
351
421
|
readonly commands: readonly TOIMOrderedListCommand[] | undefined;
|
|
352
422
|
readonly isWholeListRecorded: boolean;
|
|
353
423
|
readonly commandsStartedAtRevision: number;
|
|
354
424
|
readonly commandsStartedAtEpoch: number;
|
|
355
|
-
readonly wasEmptyBeforeChange: boolean | undefined;
|
|
356
|
-
readonly isChangedAgainInSubframe: boolean;
|
|
357
425
|
};
|
|
358
426
|
|
|
427
|
+
type TOIMBucketSlot<TSlots = unknown, TKey extends NonNullable<unknown> = NonNullable<unknown>> = TOIMBucketContentSlot<TSlots> & TOIMIndexableSlot<TKey>;
|
|
428
|
+
|
|
359
429
|
type TOIMSameValueGuard<TValue = unknown> = (prevValue: TValue, nextValue: TValue) => boolean;
|
|
360
430
|
|
|
361
431
|
declare function oimSameValueZeroGuard(prevValue: unknown, nextValue: unknown): boolean;
|
|
@@ -373,12 +443,12 @@ declare function oimUnholdSlotsIfAlive(slots: readonly TOIMSlot[]): void;
|
|
|
373
443
|
type TOIMChannelScheduler = (flush: () => void) => void;
|
|
374
444
|
|
|
375
445
|
interface IOIMEntityWriter {
|
|
376
|
-
readonly fillEntity: (slot:
|
|
377
|
-
readonly putEntity: (slot:
|
|
378
|
-
readonly patchEntity: (slot:
|
|
379
|
-
readonly patchColumn: (slot:
|
|
380
|
-
readonly deleteColumns: (slot:
|
|
381
|
-
readonly clearEntity: (slot:
|
|
446
|
+
readonly fillEntity: (slot: TOIMEntityContentSlot, entity: object) => void;
|
|
447
|
+
readonly putEntity: (slot: TOIMEntityContentSlot, entity: object, changedColumnNames: string[] | undefined) => boolean;
|
|
448
|
+
readonly patchEntity: (slot: TOIMEntityContentSlot, patch: object, changedColumnNames: string[] | undefined) => boolean;
|
|
449
|
+
readonly patchColumn: (slot: TOIMEntityContentSlot, columnName: string, value: unknown, changedColumnNames: string[] | undefined) => boolean;
|
|
450
|
+
readonly deleteColumns: (slot: TOIMEntityContentSlot, names: readonly string[]) => readonly string[];
|
|
451
|
+
readonly clearEntity: (slot: TOIMEntityContentSlot) => void;
|
|
382
452
|
}
|
|
383
453
|
|
|
384
454
|
type TOIMEntityColumnName<TEntity extends object> = [
|
|
@@ -387,23 +457,11 @@ type TOIMEntityColumnName<TEntity extends object> = [
|
|
|
387
457
|
|
|
388
458
|
type TOIMEntityColumnValue<TEntity extends object, TColumnName> = object extends TEntity ? unknown : TColumnName extends keyof TEntity ? TEntity[TColumnName] : never;
|
|
389
459
|
|
|
390
|
-
declare
|
|
391
|
-
abstract flush(flushSchedulerSlot: TFlushSchedulerSlot): void;
|
|
392
|
-
protected onSchedulerTimerFired(flushSchedulerSlot: TFlushSchedulerSlot): void;
|
|
393
|
-
protected isScheduled(flushSchedulerSlot: TFlushSchedulerSlot): boolean;
|
|
394
|
-
protected schedule(flushSchedulerSlot: TFlushSchedulerSlot, delayMs: number): void;
|
|
395
|
-
protected cancelSchedule(flushSchedulerSlot: TFlushSchedulerSlot): void;
|
|
396
|
-
}
|
|
397
|
-
|
|
398
|
-
declare class OIMChannelService extends OIMFlushSchedulerService<TOIMChannelSlot> {
|
|
460
|
+
declare class OIMChannelService implements IOIMFlushSchedulerListener<TOIMChannelSlot> {
|
|
399
461
|
static readonly INSTANCE: OIMChannelService;
|
|
400
462
|
scheduleEffectRun(channelSlot: TOIMChannelSlot, effect: TOIMEffect): void;
|
|
401
463
|
isRefusingWrites(channelSlot: TOIMChannelSlot): boolean;
|
|
402
464
|
assertNotFlushing(channelSlot: TOIMChannelSlot): void;
|
|
403
|
-
isSubframeOpen(channelSlot: TOIMChannelSlot): boolean;
|
|
404
|
-
listChangedStoreSlot(channelSlot: TOIMChannelSlot, storeSlot: TOIMStoreSlot, subframeCloseListener: IOIMSubframeCloseListener): void;
|
|
405
|
-
openSubframe(channelSlot: TOIMChannelSlot): void;
|
|
406
|
-
closeSubframe(channelSlot: TOIMChannelSlot): void;
|
|
407
465
|
subscribeAfterEachFrame(channelSlot: TOIMChannelSlot, handler: () => void): TOIMDisposer;
|
|
408
466
|
subscribeAfterEachFlush(channelSlot: TOIMChannelSlot, handler: () => void): TOIMDisposer;
|
|
409
467
|
subscribeOnceAfterFrame(channelSlot: TOIMChannelSlot, handler: () => void): TOIMDisposer;
|
|
@@ -412,6 +470,7 @@ declare class OIMChannelService extends OIMFlushSchedulerService<TOIMChannelSlot
|
|
|
412
470
|
writeWithoutFlushCheck(channelSlot: TOIMChannelSlot, slot: TOIMSlot): void;
|
|
413
471
|
private requestFlush;
|
|
414
472
|
dropChannelSlot(channelSlot: TOIMChannelSlot): void;
|
|
473
|
+
onSchedulerTimerFired(channelSlot: TOIMChannelSlot): void;
|
|
415
474
|
flush(channelSlot: TOIMChannelSlot): void;
|
|
416
475
|
private runFrame;
|
|
417
476
|
private dispatchAfterEachFrame;
|
|
@@ -432,18 +491,18 @@ interface IOIMChannelMap {
|
|
|
432
491
|
readonly defaultChannelSlot: TOIMChannelSlot;
|
|
433
492
|
}
|
|
434
493
|
|
|
435
|
-
type
|
|
494
|
+
type TOIMLogAndContinueErrorPolicyOptions = {
|
|
436
495
|
onError?: ((error: unknown) => void) | undefined;
|
|
437
496
|
};
|
|
438
497
|
|
|
439
|
-
declare class
|
|
440
|
-
static readonly INSTANCE:
|
|
498
|
+
declare class OIMLogAndContinueErrorPolicy implements IOIMErrorPolicy {
|
|
499
|
+
static readonly INSTANCE: OIMLogAndContinueErrorPolicy;
|
|
441
500
|
private readonly onError;
|
|
442
|
-
constructor(options?:
|
|
501
|
+
constructor(options?: TOIMLogAndContinueErrorPolicyOptions);
|
|
443
502
|
onErrorCaught(error: unknown): void;
|
|
444
503
|
}
|
|
445
504
|
|
|
446
|
-
declare class
|
|
505
|
+
declare class OIMThrowAtOnceErrorPolicy implements IOIMErrorPolicy {
|
|
447
506
|
onErrorCaught(error: unknown): void;
|
|
448
507
|
}
|
|
449
508
|
|
|
@@ -454,11 +513,11 @@ declare class OIMEffectSourceTracker {
|
|
|
454
513
|
private trackedAllRootSlots;
|
|
455
514
|
private isTrackedAllRootSlotsChanged;
|
|
456
515
|
readSourceSlot<TSlot extends TOIMSlot>(slot: TSlot): TSlot;
|
|
457
|
-
readSourceComputedValue<TValue>(computedSlot:
|
|
516
|
+
readSourceComputedValue<TValue>(computedSlot: TOIMComputedContentSlot<TValue>): TValue;
|
|
458
517
|
openSourceTracking(): void;
|
|
459
518
|
closeSourceTracking(): boolean;
|
|
460
519
|
getTrackedSourceSlots(): readonly TOIMSlot[];
|
|
461
|
-
getTrackedSourceComputeds(): readonly
|
|
520
|
+
getTrackedSourceComputeds(): readonly TOIMComputedContentSlot[];
|
|
462
521
|
getTrackedAllRootSlots(): readonly TOIMSlot[];
|
|
463
522
|
commitTrackedSources(): void;
|
|
464
523
|
private trackAllRootSlots;
|
|
@@ -468,9 +527,9 @@ type TOIMEffectBodyWithSourceTracking = (effectSourceTracker: OIMEffectSourceTra
|
|
|
468
527
|
|
|
469
528
|
declare class OIMEffectService implements IOIMEffectService {
|
|
470
529
|
static readonly INSTANCE: OIMEffectService;
|
|
471
|
-
createEffect(channelMap: IOIMChannelMap, sourceSlots: readonly TOIMSlot[], sourceComputeds: readonly
|
|
472
|
-
subscribeEffect(channelMap: IOIMChannelMap, sourceSlots: readonly TOIMSlot[], sourceComputeds: readonly
|
|
473
|
-
createEffectImmediate(channelMap: IOIMChannelMap, sourceSlots: readonly TOIMSlot[], sourceComputeds: readonly
|
|
530
|
+
createEffect(channelMap: IOIMChannelMap, sourceSlots: readonly TOIMSlot[], sourceComputeds: readonly TOIMComputedContentSlot[], body: TOIMEffectBody): TOIMEffect;
|
|
531
|
+
subscribeEffect(channelMap: IOIMChannelMap, sourceSlots: readonly TOIMSlot[], sourceComputeds: readonly TOIMComputedContentSlot[], body: TOIMEffectBody): TOIMDisposer;
|
|
532
|
+
createEffectImmediate(channelMap: IOIMChannelMap, sourceSlots: readonly TOIMSlot[], sourceComputeds: readonly TOIMComputedContentSlot[], body: TOIMEffectBody): TOIMEffect;
|
|
474
533
|
createEffectWithSourceTracking(channelMap: IOIMChannelMap, effectBodyWithSourceTracking: TOIMEffectBodyWithSourceTracking): TOIMEffect;
|
|
475
534
|
markEffectRunScheduled(effect: TOIMEffect, isSourceCheckOwed: boolean): boolean;
|
|
476
535
|
runScheduledEffect(effect: TOIMEffect): void;
|
|
@@ -485,19 +544,52 @@ declare class OIMEffectService implements IOIMEffectService {
|
|
|
485
544
|
private unsubscribeFrom;
|
|
486
545
|
}
|
|
487
546
|
|
|
488
|
-
type TOIMComputedValueServiceOptions<
|
|
489
|
-
derive?: ((computedSlot:
|
|
547
|
+
type TOIMComputedValueServiceOptions<TValue, TComputedSlot extends TOIMComputedContentSlot<TValue>> = {
|
|
548
|
+
derive?: ((computedSlot: TComputedSlot) => TValue) | undefined;
|
|
490
549
|
sameValueGuard?: TOIMSameValueGuard<TValue> | undefined;
|
|
491
550
|
};
|
|
492
551
|
|
|
493
|
-
declare class OIMComputedValueService<
|
|
552
|
+
declare class OIMComputedValueService<TValue, TComputedSlot extends TOIMComputedContentSlot<TValue> = TOIMComputedContentSlot<TValue>> implements IOIMComputedValueService<TValue> {
|
|
494
553
|
private readonly derive;
|
|
495
554
|
private readonly sameValueGuard;
|
|
496
|
-
constructor(options: TOIMComputedValueServiceOptions<
|
|
497
|
-
getValueForSlot(computedSlot:
|
|
555
|
+
constructor(options: TOIMComputedValueServiceOptions<TValue, TComputedSlot>);
|
|
556
|
+
getValueForSlot(computedSlot: TComputedSlot): TValue;
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
interface IOIMSlotContentService<TSlot extends TOIMSlot, TSlotOwnerService extends IOIMSlotOwner = IOIMSlotOwner> {
|
|
560
|
+
isSlotEmpty(slot: TSlot): boolean;
|
|
561
|
+
releaseSlotContent(slot: TSlot, slotOwnerService: TSlotOwnerService): void;
|
|
562
|
+
hasReference(slot: TSlot): boolean;
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
interface IOIMKeyedSlotCreator<TKey extends NonNullable<unknown>, TSlot extends TOIMKeyedSlot> {
|
|
566
|
+
createSlot(key: TKey, storeSlot: TOIMStoreSlot, slotOwner: IOIMSlotOwner): TSlot;
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
interface IOIMSingleSlotCreator<TSlot extends TOIMSlot> {
|
|
570
|
+
createSingleSlot(storeSlot: TOIMStoreSlot, slotOwner: IOIMSlotOwner): TSlot;
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
type TOIMSlotContentComputedServiceOptions<TValue, TComputedSlot extends TOIMComputedContentSlot<TValue>> = {
|
|
574
|
+
computedValueService: OIMComputedValueService<TValue, TComputedSlot>;
|
|
575
|
+
createSources?: ((computedSlot: TComputedSlot) => Partial<TOIMComputedSources>) | undefined;
|
|
576
|
+
initialValue?: TValue | undefined;
|
|
577
|
+
};
|
|
578
|
+
|
|
579
|
+
declare class OIMSlotContentComputedService<TValue, TComputedSlot extends TOIMComputedContentSlot<TValue> = TOIMComputedContentSlot<TValue>> implements IOIMSlotContentService<TComputedSlot>, IOIMKeyedSlotCreator<NonNullable<unknown>, TOIMComputedSlot<TValue>>, IOIMSingleSlotCreator<TOIMComputedContentSlot<TValue>> {
|
|
580
|
+
private readonly computedValueService;
|
|
581
|
+
private readonly createSources;
|
|
582
|
+
private readonly initialValue;
|
|
583
|
+
constructor(options: TOIMSlotContentComputedServiceOptions<TValue, TComputedSlot>);
|
|
584
|
+
createSlot<TKey extends NonNullable<unknown>>(key: TKey, storeSlot: TOIMStoreSlot, slotOwner: IOIMSlotOwner): TComputedSlot & TOIMComputedSlot<TValue, TKey>;
|
|
585
|
+
createSingleSlot(storeSlot: TOIMStoreSlot, slotOwner: IOIMSlotOwner): TOIMComputedContentSlot<TValue>;
|
|
586
|
+
isSlotEmpty(): boolean;
|
|
587
|
+
releaseSlotContent(computedSlot: TComputedSlot): void;
|
|
588
|
+
hasReference(): boolean;
|
|
589
|
+
private attachSources;
|
|
498
590
|
}
|
|
499
591
|
|
|
500
|
-
declare function oimRefreshSourceComputeds(sourceComputeds: readonly
|
|
592
|
+
declare function oimRefreshSourceComputeds(sourceComputeds: readonly TOIMComputedContentSlot[]): void;
|
|
501
593
|
|
|
502
594
|
interface IOIMSlotReleasePolicy {
|
|
503
595
|
readonly releasesWrittenSlots: boolean;
|
|
@@ -510,40 +602,27 @@ interface IOIMSlotReleasePolicy {
|
|
|
510
602
|
cancelSlotRelease(slot: TOIMSlot): void;
|
|
511
603
|
}
|
|
512
604
|
|
|
513
|
-
|
|
514
|
-
createSlot(key: TKey, storeSlot: TOIMStoreSlot | undefined, slotOwnerService: TSlotOwnerService): TSlot;
|
|
515
|
-
isSlotEmpty(slot: TSlot): boolean;
|
|
516
|
-
releaseSlotContent(slot: TSlot, slotOwnerService: TSlotOwnerService): void;
|
|
517
|
-
hasReference(slot: TSlot): boolean;
|
|
518
|
-
}
|
|
519
|
-
|
|
520
|
-
interface IOIMSlotContentFlushStrategy<TSlot extends TOIMSlot, TSlotOwnerService extends IOIMSlotOwner = IOIMSlotOwner> {
|
|
521
|
-
onSubframeClosed(storeSlot: TOIMStoreSlot<unknown, TSlot>, slotOwnerService: TSlotOwnerService): void;
|
|
522
|
-
}
|
|
523
|
-
|
|
524
|
-
type TOIMSlotOwnerServiceOptions<TKey, TSlot extends TOIMKeyedSlot<TKey>, TStore, TColumnName extends string, TColumnSlot extends TOIMKeyedSlot<string>, TColumnOwner extends OIMColumnOwner<TOIMSlot, TColumnSlot>, TPatch> = {
|
|
605
|
+
type TOIMSlotOwnerServiceOptions<TSlot extends TOIMSlot, TStore, TColumnName extends string, TColumnSlot extends TOIMKeyedSlot<string>, TColumnSlotOwner extends OIMColumnSlotOwner<TOIMSlot, TColumnSlot>, TPatch> = {
|
|
525
606
|
slotStamp?: IOIMSlotStamp<TSlot> | undefined;
|
|
526
607
|
slotReleasePolicy?: IOIMSlotReleasePolicy | undefined;
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
608
|
+
slotSubscriptionListener?: IOIMSlotSubscriptionListener | undefined;
|
|
609
|
+
slotFilingService: IOIMSlotFilingService<TSlot, TStore>;
|
|
610
|
+
slotContentService: IOIMSlotContentService<TSlot, OIMSlotOwnerService<TSlot, TStore, TColumnName, TColumnSlot, TColumnSlotOwner, TPatch>>;
|
|
611
|
+
columnSlotOwnerOptions: TOIMColumnSlotOwnerOptions<TColumnSlot, TColumnName>;
|
|
612
|
+
createColumnSlotOwner: (columnSlotOwnerOptions: TOIMColumnSlotOwnerOptions<TColumnSlot, TColumnName>) => TColumnSlotOwner;
|
|
532
613
|
};
|
|
533
614
|
|
|
534
|
-
declare class OIMSlotOwnerService<
|
|
535
|
-
private readonly
|
|
536
|
-
private readonly
|
|
615
|
+
declare class OIMSlotOwnerService<TSlot extends TOIMSlot, TStore, TColumnName extends string, TColumnSlot extends TOIMKeyedSlot<string>, TColumnSlotOwner extends OIMColumnSlotOwner<TOIMSlot, TColumnSlot>, TPatch = unknown> extends OIMSlotOwner {
|
|
616
|
+
private readonly slotContentService;
|
|
617
|
+
private readonly slotFilingService;
|
|
537
618
|
private readonly slotStamp;
|
|
538
619
|
private readonly slotReleasePolicy;
|
|
539
620
|
private readonly releasesWrittenSlots;
|
|
540
621
|
private readonly schedulesReleaseOnWrite;
|
|
541
|
-
readonly
|
|
542
|
-
private readonly
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
onStoreSlotSubframeClosed(storeSlot: TOIMStoreSlot): void;
|
|
546
|
-
createSlot(key: TKey, storeSlot: TOIMStoreSlot | undefined): TSlot;
|
|
622
|
+
readonly settlesWrittenSlots: boolean;
|
|
623
|
+
private readonly slotSubscriptionListener;
|
|
624
|
+
readonly columnSlotOwner: TColumnSlotOwner;
|
|
625
|
+
constructor(options: TOIMSlotOwnerServiceOptions<TSlot, TStore, TColumnName, TColumnSlot, TColumnSlotOwner, TPatch>);
|
|
547
626
|
isSlotEmpty(slot: TSlot): boolean;
|
|
548
627
|
hasColumnSlots(slot: TOIMSlot): boolean;
|
|
549
628
|
hasContentChangeListeners(slot: TOIMSlot): boolean;
|
|
@@ -554,19 +633,27 @@ declare class OIMSlotOwnerService<TKey, TSlot extends TOIMKeyedSlot<TKey>, TStor
|
|
|
554
633
|
releaseSlotIfUnheldAfterListeners(slot: TSlot): void;
|
|
555
634
|
releaseWrittenSlotIfUnheld(slot: TSlot): void;
|
|
556
635
|
assertWritable(slot: TOIMSlot): void;
|
|
557
|
-
fileSlot(
|
|
636
|
+
fileSlot(slot: TSlot): void;
|
|
558
637
|
writeSlotToChannelAndSettle(slot: TSlot, wasEmpty: boolean): void;
|
|
559
638
|
settleEmptiness(slot: TSlot, isEmpty: boolean): void;
|
|
560
639
|
markEmptiness(slot: TSlot, isEmpty: boolean): void;
|
|
561
640
|
private settleWrite;
|
|
562
641
|
private scheduleSlotRelease;
|
|
563
642
|
protected onSlotIdle(slot: TSlot): void;
|
|
643
|
+
onSlotFirstSubscribed(slot: TOIMSlot): void;
|
|
644
|
+
onSlotLastUnsubscribed(slot: TOIMSlot): void;
|
|
564
645
|
protected onSlotUnheld(slot: TSlot): void;
|
|
565
646
|
releaseSlotIfUnheld(slot: TOIMSlot): void;
|
|
566
647
|
private isReleasable;
|
|
567
648
|
private releaseSlot;
|
|
568
649
|
}
|
|
569
650
|
|
|
651
|
+
interface IOIMSlotContentWriter<TSlot extends TOIMSlot, TContent> {
|
|
652
|
+
insertSlotContent(slot: TSlot, content: TContent, changedSlots?: TSlot[]): void;
|
|
653
|
+
writeSlotContent(slot: TSlot, content: TContent): boolean;
|
|
654
|
+
clearSlotContent(slot: TSlot): void;
|
|
655
|
+
}
|
|
656
|
+
|
|
570
657
|
declare class OIMContentChangeListenerService {
|
|
571
658
|
static readonly INSTANCE: OIMContentChangeListenerService;
|
|
572
659
|
addContentChangeListener<TSlot extends TOIMSlot, TPatch>(storeSlot: TOIMStoreSlot<unknown, TSlot, TPatch>, listener: IOIMContentChangeListener<TSlot, TPatch>, readColumnNames: readonly string[] | undefined): void;
|
|
@@ -577,17 +664,16 @@ declare class OIMContentChangeListenerService {
|
|
|
577
664
|
removeReadAnyColumn(storeSlot: TOIMStoreSlot): void;
|
|
578
665
|
}
|
|
579
666
|
|
|
580
|
-
interface
|
|
667
|
+
interface IOIMSlotEmptinessPolicy<TSlot> {
|
|
581
668
|
isEmpty(slot: TSlot): boolean;
|
|
582
669
|
}
|
|
583
670
|
|
|
584
|
-
type TOIMSlotContentEntityServiceOptions<TEntity extends object
|
|
585
|
-
keyOf: (entity: TEntity) => TKey;
|
|
671
|
+
type TOIMSlotContentEntityServiceOptions<TEntity extends object> = {
|
|
586
672
|
entityWriter: IOIMEntityWriter;
|
|
587
|
-
|
|
673
|
+
slotEmptinessPolicy: IOIMSlotEmptinessPolicy<TOIMEntityContentSlot<TEntity>>;
|
|
588
674
|
};
|
|
589
675
|
|
|
590
|
-
type TOIMEntitySlotOwnerService<TEntity extends object,
|
|
676
|
+
type TOIMEntitySlotOwnerService<TEntity extends object, TEntitySlot extends TOIMEntityContentSlot<TEntity> = TOIMEntitySlot<TEntity>, TStore = unknown, TColumnName extends string = string> = OIMSlotOwnerService<TEntitySlot, TStore, TColumnName, TOIMColumnSlot, OIMPushColumnSlotOwner, Partial<TEntity>>;
|
|
591
677
|
|
|
592
678
|
declare class OIMUnusedSlotCollectorService {
|
|
593
679
|
static readonly INSTANCE: OIMUnusedSlotCollectorService;
|
|
@@ -608,9 +694,9 @@ type TOIMCollectorSlotOptions = {
|
|
|
608
694
|
|
|
609
695
|
declare function createOIMCollectorSlot(options: TOIMCollectorSlotOptions): TOIMCollectorSlot;
|
|
610
696
|
|
|
611
|
-
declare
|
|
612
|
-
|
|
613
|
-
|
|
697
|
+
declare class OIMColumnSlotService<TSlot extends TOIMSlot, TColumnName extends string, TColumnSlot extends TOIMKeyedSlot<string>, TColumnSlotOwner extends OIMColumnSlotOwner<TOIMSlot, TColumnSlot>> {
|
|
698
|
+
private readonly columnSlotOwner;
|
|
699
|
+
constructor(columnSlotOwner: TColumnSlotOwner);
|
|
614
700
|
getColumn(slot: TSlot, columnName: TColumnName): TColumnSlot;
|
|
615
701
|
holdColumn(slot: TSlot, columnName: TColumnName): TColumnSlot;
|
|
616
702
|
getAnyColumn(slot: TSlot): TColumnSlot;
|
|
@@ -620,21 +706,23 @@ declare abstract class OIMSlotColumnService<TSlot extends TOIMSlot, TColumnName
|
|
|
620
706
|
unholdColumn(columnSlot: TColumnSlot): void;
|
|
621
707
|
}
|
|
622
708
|
|
|
623
|
-
type TOIMSlotCollectionServiceOptions<TKey
|
|
624
|
-
slotOwnerService: OIMSlotOwnerService<TKey, TSlot, TStore, TColumnName, TColumnSlot, TColumnOwner, TPatch>;
|
|
709
|
+
type TOIMSlotCollectionServiceOptions<TKey extends NonNullable<unknown>, TSlot extends TOIMKeyedSlot<TKey>, TStore, TSlotContentService, TColumnName extends string = string, TColumnSlot extends TOIMKeyedSlot<string> = TOIMKeyedSlot<string>, TColumnSlotOwner extends OIMColumnSlotOwner<TOIMSlot, TColumnSlot> = OIMColumnSlotOwner<TOIMSlot, TColumnSlot>, TPatch = unknown> = Omit<TOIMSlotOwnerServiceOptions<TSlot, TStore, TColumnName, TColumnSlot, TColumnSlotOwner, TPatch>, 'slotFilingService' | 'slotContentService'> & {
|
|
625
710
|
slotStoreService: IOIMSlotStoreService<TKey, TSlot, TStore>;
|
|
626
|
-
slotContentService: TSlotContentService
|
|
711
|
+
slotContentService: TSlotContentService & IOIMSlotContentService<TSlot> & IOIMKeyedSlotCreator<TKey, TSlot>;
|
|
627
712
|
storeSlotListener?: IOIMStoreSlotListener | undefined;
|
|
628
713
|
};
|
|
629
714
|
|
|
630
|
-
declare class OIMSlotCollectionService<TKey
|
|
715
|
+
declare class OIMSlotCollectionService<TKey extends NonNullable<unknown>, TSlot extends TOIMKeyedSlot<TKey>, TStore, TSlotContentService, TColumnName extends string = string, TColumnSlot extends TOIMKeyedSlot<string> = TOIMKeyedSlot<string>, TColumnSlotOwner extends OIMColumnSlotOwner<TOIMSlot, TColumnSlot> = OIMColumnSlotOwner<TOIMSlot, TColumnSlot>, TPatch = unknown> {
|
|
631
716
|
readonly slotContentService: TSlotContentService;
|
|
632
|
-
|
|
633
|
-
|
|
717
|
+
readonly columnSlotService: OIMColumnSlotService<TSlot, TColumnName, TColumnSlot, TColumnSlotOwner>;
|
|
718
|
+
protected readonly slotOwnerService: OIMSlotOwnerService<TSlot, TStore, TColumnName, TColumnSlot, TColumnSlotOwner, TPatch>;
|
|
719
|
+
protected readonly slotStoreService: IOIMSlotStoreService<TKey, TSlot, TStore>;
|
|
720
|
+
protected readonly keyedSlotCreator: IOIMKeyedSlotCreator<TKey, TSlot>;
|
|
634
721
|
private readonly storeSlotListener;
|
|
635
|
-
constructor(options: TOIMSlotCollectionServiceOptions<TKey, TSlot, TStore, TSlotContentService, TColumnName, TColumnSlot,
|
|
636
|
-
|
|
637
|
-
|
|
722
|
+
constructor(options: TOIMSlotCollectionServiceOptions<TKey, TSlot, TStore, TSlotContentService, TColumnName, TColumnSlot, TColumnSlotOwner, TPatch>);
|
|
723
|
+
get slotOwner(): IOIMSlotOwner;
|
|
724
|
+
createStoreSlot(channelMap: IOIMChannelMap): TOIMStoreSlot<TStore, TSlot, TPatch, this>;
|
|
725
|
+
createStoreSlotFrom(sourceStoreSlot: TOIMStoreSlot): TOIMStoreSlot<TStore, TSlot, TPatch, this>;
|
|
638
726
|
protected createStoreSlotWith<TStoreSlot extends TOIMStoreSlot<TStore, TSlot, TPatch>>(createStoreSlotLiteral: (store: TStore) => TStoreSlot): TStoreSlot;
|
|
639
727
|
findSlotByKey(storeSlot: TOIMStoreSlot<TStore, TSlot, TPatch>, key: TKey): TSlot | undefined;
|
|
640
728
|
hasSlotContentByKey(storeSlot: TOIMStoreSlot<TStore, TSlot, TPatch>, key: TKey): boolean;
|
|
@@ -643,36 +731,43 @@ declare class OIMSlotCollectionService<TKey, TSlot extends TOIMKeyedSlot<TKey>,
|
|
|
643
731
|
getSlots(storeSlot: TOIMStoreSlot<TStore, TSlot, TPatch>): IterableIterator<TSlot>;
|
|
644
732
|
getSlotCount(storeSlot: TOIMStoreSlot<TStore, TSlot, TPatch>): number;
|
|
645
733
|
isSameKey(key: TKey, otherKey: TKey): boolean;
|
|
734
|
+
openBatch(storeSlot: TOIMStoreSlot<TStore, TSlot, TPatch>): void;
|
|
735
|
+
closeBatch(storeSlot: TOIMStoreSlot<TStore, TSlot, TPatch>): void;
|
|
736
|
+
writeInBatch<TResult>(storeSlot: TOIMStoreSlot<TStore, TSlot, TPatch>, write: () => TResult): TResult;
|
|
646
737
|
protected onSlotMinted(_storeSlot: TOIMStoreSlot<TStore, TSlot, TPatch>, _slot: TSlot): void;
|
|
647
738
|
private mintSlotByKey;
|
|
648
739
|
}
|
|
649
740
|
|
|
650
|
-
declare class
|
|
651
|
-
|
|
741
|
+
declare class OIMWritableSlotCollectionService<TKey extends NonNullable<unknown>, TSlot extends TOIMKeyedSlot<TKey>, TStore, TContent, TSlotContentService extends IOIMSlotContentWriter<TSlot, TContent> & IOIMSlotContentService<TSlot> & IOIMKeyedSlotCreator<TKey, TSlot>, TColumnName extends string = string, TColumnSlot extends TOIMKeyedSlot<string> = TOIMKeyedSlot<string>, TColumnSlotOwner extends OIMColumnSlotOwner<TOIMSlot, TColumnSlot> = OIMColumnSlotOwner<TOIMSlot, TColumnSlot>, TPatch = unknown> extends OIMSlotCollectionService<TKey, TSlot, TStore, TSlotContentService, TColumnName, TColumnSlot, TColumnSlotOwner, TPatch> {
|
|
742
|
+
writeSlotContentByKey(storeSlot: TOIMStoreSlot<TStore, TSlot, TPatch>, key: TKey, content: TContent, changedSlots?: TSlot[]): TSlot;
|
|
743
|
+
}
|
|
744
|
+
|
|
745
|
+
declare class OIMSingleSlotStoreService<TSlot extends TOIMSlot> implements IOIMSlotFilingService<TSlot, TOIMSingleSlotStore<TSlot>> {
|
|
746
|
+
static readonly INSTANCE: OIMSingleSlotStoreService<TOIMSlot>;
|
|
652
747
|
createStore(): TOIMSingleSlotStore<TSlot>;
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
set(store: TOIMSingleSlotStore<TSlot>, _key: void, slot: TSlot): void;
|
|
657
|
-
remove(store: TOIMSingleSlotStore<TSlot>): void;
|
|
748
|
+
getSingleSlot(store: TOIMSingleSlotStore<TSlot>): TSlot | undefined;
|
|
749
|
+
fileSlot(store: TOIMSingleSlotStore<TSlot>, slot: TSlot): void;
|
|
750
|
+
unfileSlot(store: TOIMSingleSlotStore<TSlot>): void;
|
|
658
751
|
getSlots(store: TOIMSingleSlotStore<TSlot>): IterableIterator<TSlot>;
|
|
659
752
|
getSlotCount(store: TOIMSingleSlotStore<TSlot>): number;
|
|
660
753
|
}
|
|
661
754
|
|
|
662
|
-
type TOIMSingleSlotServiceOptions<TSlot extends
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
slotContentService: TSlotContentService;
|
|
755
|
+
type TOIMSingleSlotServiceOptions<TSlot extends TOIMSlot, TSlotContentService, TColumnName extends string = string, TColumnSlot extends TOIMKeyedSlot<string> = TOIMKeyedSlot<string>, TColumnSlotOwner extends OIMColumnSlotOwner<TOIMSlot, TColumnSlot> = OIMColumnSlotOwner<TOIMSlot, TColumnSlot>, TPatch = unknown> = Omit<TOIMSlotOwnerServiceOptions<TSlot, TOIMSingleSlotStore<TSlot>, TColumnName, TColumnSlot, TColumnSlotOwner, TPatch>, 'slotFilingService' | 'slotContentService'> & {
|
|
756
|
+
slotStoreService: OIMSingleSlotStoreService<TSlot>;
|
|
757
|
+
slotContentService: TSlotContentService & IOIMSlotContentService<TSlot> & IOIMSingleSlotCreator<TSlot>;
|
|
666
758
|
storeSlotListener?: IOIMStoreSlotListener | undefined;
|
|
667
759
|
};
|
|
668
760
|
|
|
669
|
-
declare class OIMSingleSlotService<TSlot extends
|
|
761
|
+
declare class OIMSingleSlotService<TSlot extends TOIMSlot, TSlotContentService, TColumnName extends string = string, TColumnSlot extends TOIMKeyedSlot<string> = TOIMKeyedSlot<string>, TColumnSlotOwner extends OIMColumnSlotOwner<TOIMSlot, TColumnSlot> = OIMColumnSlotOwner<TOIMSlot, TColumnSlot>, TPatch = unknown> {
|
|
670
762
|
readonly slotContentService: TSlotContentService;
|
|
671
|
-
|
|
672
|
-
|
|
763
|
+
readonly columnSlotService: OIMColumnSlotService<TSlot, TColumnName, TColumnSlot, TColumnSlotOwner>;
|
|
764
|
+
protected readonly slotOwnerService: OIMSlotOwnerService<TSlot, TOIMSingleSlotStore<TSlot>, TColumnName, TColumnSlot, TColumnSlotOwner, TPatch>;
|
|
765
|
+
protected readonly slotStoreService: OIMSingleSlotStoreService<TSlot>;
|
|
766
|
+
protected readonly singleSlotCreator: IOIMSingleSlotCreator<TSlot>;
|
|
673
767
|
private readonly storeSlotListener;
|
|
674
|
-
constructor(options: TOIMSingleSlotServiceOptions<TSlot, TSlotContentService, TColumnName, TColumnSlot,
|
|
675
|
-
|
|
768
|
+
constructor(options: TOIMSingleSlotServiceOptions<TSlot, TSlotContentService, TColumnName, TColumnSlot, TColumnSlotOwner, TPatch>);
|
|
769
|
+
get slotOwner(): IOIMSlotOwner;
|
|
770
|
+
createStoreSlot(channelMap: IOIMChannelMap): TOIMStoreSlot<TOIMSingleSlotStore<TSlot>, TSlot, TPatch, this>;
|
|
676
771
|
findSingleSlot(storeSlot: TOIMStoreSlot<TOIMSingleSlotStore<TSlot>, TSlot, TPatch>): TSlot | undefined;
|
|
677
772
|
hasSingleSlotContent(storeSlot: TOIMStoreSlot<TOIMSingleSlotStore<TSlot>, TSlot, TPatch>): boolean;
|
|
678
773
|
getSingleSlot(storeSlot: TOIMStoreSlot<TOIMSingleSlotStore<TSlot>, TSlot, TPatch>): TSlot;
|
|
@@ -680,64 +775,45 @@ declare class OIMSingleSlotService<TSlot extends TOIMKeyedSlot<void>, TSlotConte
|
|
|
680
775
|
private mintSingleSlot;
|
|
681
776
|
}
|
|
682
777
|
|
|
683
|
-
declare class
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
778
|
+
declare class OIMWritableSingleSlotService<TSlot extends TOIMSlot, TContent, TSlotContentService extends IOIMSlotContentWriter<TSlot, TContent> & IOIMSlotContentService<TSlot> & IOIMSingleSlotCreator<TSlot>, TColumnName extends string = string, TColumnSlot extends TOIMKeyedSlot<string> = TOIMKeyedSlot<string>, TColumnSlotOwner extends OIMColumnSlotOwner<TOIMSlot, TColumnSlot> = OIMColumnSlotOwner<TOIMSlot, TColumnSlot>, TPatch = unknown> extends OIMSingleSlotService<TSlot, TSlotContentService, TColumnName, TColumnSlot, TColumnSlotOwner, TPatch> {
|
|
779
|
+
writeSingleSlotContent(storeSlot: TOIMStoreSlot<TOIMSingleSlotStore<TSlot>, TSlot, TPatch>, content: TContent, changedSlots?: TSlot[]): TSlot;
|
|
780
|
+
clearSingleSlotContent(storeSlot: TOIMStoreSlot<TOIMSingleSlotStore<TSlot>, TSlot, TPatch>): void;
|
|
781
|
+
}
|
|
782
|
+
|
|
783
|
+
declare class OIMSlotContentEntityService<TEntity extends object, TKey extends NonNullable<unknown> = TOIMStoreKey, TColumnName extends string = string> implements IOIMSlotContentWriter<TOIMEntityContentSlot<TEntity>, TEntity>, IOIMSlotContentService<TOIMEntityContentSlot<TEntity>>, IOIMKeyedSlotCreator<TKey, TOIMEntitySlot<TEntity, TKey>>, IOIMSingleSlotCreator<TOIMEntityContentSlot<TEntity>> {
|
|
687
784
|
private readonly entityWriter;
|
|
688
|
-
private readonly
|
|
689
|
-
private readonly
|
|
690
|
-
constructor(options: TOIMSlotContentEntityServiceOptions<TEntity
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
private fillEntitiesUnderKeys;
|
|
699
|
-
clearAllEntities(storeSlot: TOIMStoreSlot<TStore, TOIMEntitySlot<TEntity, TKey>>): void;
|
|
700
|
-
private fillEachEntity;
|
|
785
|
+
private readonly slotEmptinessPolicy;
|
|
786
|
+
private readonly isSlotEmptinessCustom;
|
|
787
|
+
constructor(options: TOIMSlotContentEntityServiceOptions<TEntity>);
|
|
788
|
+
createSlot(key: TKey, storeSlot: TOIMStoreSlot, slotOwner: IOIMSlotOwner): TOIMEntitySlot<TEntity, TKey>;
|
|
789
|
+
createSingleSlot(storeSlot: TOIMStoreSlot, slotOwner: IOIMSlotOwner): TOIMEntityContentSlot<TEntity>;
|
|
790
|
+
isSlotEmpty(entitySlot: TOIMEntityContentSlot<TEntity>): boolean;
|
|
791
|
+
hasReference(): boolean;
|
|
792
|
+
private updatesEmptinessOnColumnWriteOf;
|
|
793
|
+
private slotOwnerServiceOf;
|
|
794
|
+
insertSlotContent(entitySlot: TOIMEntityContentSlot<TEntity>, entity: TEntity, changedEntitySlots?: TOIMEntityContentSlot<TEntity>[]): void;
|
|
701
795
|
private insertEntityOnFastPath;
|
|
702
|
-
private
|
|
703
|
-
|
|
704
|
-
updateEntity(entitySlot:
|
|
705
|
-
updateEntityColumn<TColumn extends keyof TEntity & string
|
|
706
|
-
deleteEntityColumns(entitySlot:
|
|
707
|
-
markEntityChanged(entitySlot:
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
private updateEntityInSubframe;
|
|
796
|
+
private insertEntityOffFastPath;
|
|
797
|
+
writeSlotContent(entitySlot: TOIMEntityContentSlot<TEntity>, entity: TEntity): boolean;
|
|
798
|
+
updateEntity<TEntitySlot extends TOIMEntityContentSlot<TEntity>>(entitySlot: TEntitySlot, patch: Partial<TEntity>): TEntitySlot;
|
|
799
|
+
updateEntityColumn<TColumn extends keyof TEntity & string, TEntitySlot extends TOIMEntityContentSlot<TEntity>>(entitySlot: TEntitySlot, columnName: TColumn, value: TEntity[TColumn]): TEntitySlot;
|
|
800
|
+
deleteEntityColumns<TEntitySlot extends TOIMEntityContentSlot<TEntity>>(entitySlot: TEntitySlot, columnNames: readonly TOIMEntityColumnName<TEntity>[]): TEntitySlot;
|
|
801
|
+
markEntityChanged(entitySlot: TOIMEntityContentSlot<TEntity>, changedColumns?: readonly (keyof TEntity & string)[]): void;
|
|
802
|
+
clearSlotContent(entitySlot: TOIMEntityContentSlot<TEntity>): void;
|
|
803
|
+
private updateEntityOffFastPath;
|
|
711
804
|
private updateEntityColumnOffFastPath;
|
|
712
|
-
private
|
|
805
|
+
private updateEntityColumnAndDispatch;
|
|
713
806
|
private dispatchPatchWritten;
|
|
714
807
|
private writeSlotToChannelAndReleaseIfUnheld;
|
|
715
808
|
private dispatchContentChangeAndReleaseIfUnheld;
|
|
716
|
-
|
|
717
|
-
private fillSlotContent;
|
|
718
|
-
private withdrawSlotContent;
|
|
719
|
-
private clearSlotContent;
|
|
809
|
+
releaseSlotContent(entitySlot: TOIMEntityContentSlot<TEntity>): void;
|
|
720
810
|
private isOnFastPath;
|
|
721
811
|
private hasChangedColumnReaders;
|
|
722
812
|
private updateEntitySlotEmptiness;
|
|
723
|
-
private
|
|
813
|
+
private writeEntityToSlot;
|
|
724
814
|
private dispatchColumnsChanged;
|
|
725
815
|
}
|
|
726
816
|
|
|
727
|
-
declare function createOIMSlotCollectionService<TKey, TSlot extends TOIMKeyedSlot<TKey>, TStore, TSlotContentService extends object, TColumnName extends string = string, TPatch = unknown>(options: {
|
|
728
|
-
slotContentService: TSlotContentService & {
|
|
729
|
-
readonly slotOwner: IOIMSlotOwner;
|
|
730
|
-
readonly slotStoreService: IOIMSlotStoreService<TKey, TSlot, TStore>;
|
|
731
|
-
};
|
|
732
|
-
}): OIMSlotCollectionService<TKey, TSlot, TStore, TSlotContentService, TColumnName, TOIMColumnSlot, OIMColumnOwnerPushDriven, TPatch>;
|
|
733
|
-
|
|
734
|
-
declare function createOIMSingleSlotService<TSlot extends TOIMKeyedSlot<void>, TSlotContentService extends {
|
|
735
|
-
readonly slotOwner: IOIMSlotOwner;
|
|
736
|
-
readonly slotStoreService: IOIMSlotStoreService<void, TSlot, TOIMSingleSlotStore<TSlot>>;
|
|
737
|
-
}, TColumnName extends string = string, TPatch = unknown>(options: {
|
|
738
|
-
slotContentService: TSlotContentService;
|
|
739
|
-
}): OIMSingleSlotService<TSlot, TSlotContentService, TColumnName, TOIMColumnSlot, OIMColumnOwnerPushDriven, TPatch>;
|
|
740
|
-
|
|
741
817
|
interface IOIMIndexKeysService {
|
|
742
818
|
createPositions(): TOIMIndexKeysPositions;
|
|
743
819
|
allocatePosition(positions: TOIMIndexKeysPositions): number;
|
|
@@ -770,202 +846,217 @@ declare class OIMDB implements IOIMChannelMap {
|
|
|
770
846
|
flush(): void;
|
|
771
847
|
}
|
|
772
848
|
|
|
773
|
-
type
|
|
774
|
-
|
|
775
|
-
|
|
849
|
+
type TOIMSlotContentServiceKey<TSlotContentService> = TSlotContentService extends {
|
|
850
|
+
createSlot(key: infer TKey, ...rest: never[]): unknown;
|
|
851
|
+
} ? Extract<TKey, NonNullable<unknown>> : never;
|
|
852
|
+
|
|
853
|
+
type TOIMSlotContentServiceSlot<TSlotContentService> = TSlotContentService extends {
|
|
854
|
+
createSlot(...args: never[]): infer TSlot;
|
|
855
|
+
} ? Extract<TSlot, TOIMKeyedSlot<TOIMSlotContentServiceKey<TSlotContentService>>> : never;
|
|
856
|
+
|
|
857
|
+
type TOIMSlotContentServiceContent<TSlotContentService> = TSlotContentService extends {
|
|
858
|
+
writeSlotContent(slot: never, content: infer TContent): boolean;
|
|
859
|
+
} ? TContent : never;
|
|
860
|
+
|
|
861
|
+
type TOIMSlotContentServicePatch<TSlotContentService> = TOIMSlotContentServiceContent<TSlotContentService> extends readonly unknown[] ? TOIMSlotContentServiceContent<TSlotContentService> : Partial<TOIMSlotContentServiceContent<TSlotContentService>>;
|
|
862
|
+
|
|
863
|
+
declare function createOIMSlotCollectionService<TSlotContentService extends object, TStore = Map<TOIMSlotContentServiceKey<TSlotContentService>, TOIMSlotContentServiceSlot<TSlotContentService>>, TColumnName extends string = string>(db: OIMDB, options: {
|
|
864
|
+
slotContentService: TSlotContentService & IOIMKeyedSlotCreator<TOIMSlotContentServiceKey<TSlotContentService>, TOIMSlotContentServiceSlot<TSlotContentService>> & IOIMSlotContentWriter<TOIMSlotContentServiceSlot<TSlotContentService>, TOIMSlotContentServiceContent<TSlotContentService>> & IOIMSlotContentService<TOIMSlotContentServiceSlot<TSlotContentService>>;
|
|
776
865
|
slotReleasePolicy?: IOIMSlotReleasePolicy | undefined;
|
|
866
|
+
slotSubscriptionListener?: IOIMSlotSubscriptionListener | undefined;
|
|
777
867
|
columnSlotStoreService?: IOIMSlotStoreService<string, TOIMColumnSlot> | undefined;
|
|
778
868
|
columnNames?: readonly TColumnName[] | undefined;
|
|
779
|
-
}
|
|
869
|
+
} & (TOIMSlotContentServiceKey<TSlotContentService> extends readonly unknown[] ? {
|
|
870
|
+
slotStoreService: IOIMSlotStoreService<TOIMSlotContentServiceKey<TSlotContentService>, TOIMSlotContentServiceSlot<TSlotContentService>, TStore>;
|
|
871
|
+
} : {
|
|
872
|
+
slotStoreService?: IOIMSlotStoreService<TOIMSlotContentServiceKey<TSlotContentService>, TOIMSlotContentServiceSlot<TSlotContentService>, TStore> | undefined;
|
|
873
|
+
})): OIMWritableSlotCollectionService<TOIMSlotContentServiceKey<TSlotContentService>, TOIMSlotContentServiceSlot<TSlotContentService>, TStore, TOIMSlotContentServiceContent<TSlotContentService>, TSlotContentService & IOIMKeyedSlotCreator<TOIMSlotContentServiceKey<TSlotContentService>, TOIMSlotContentServiceSlot<TSlotContentService>> & IOIMSlotContentWriter<TOIMSlotContentServiceSlot<TSlotContentService>, TOIMSlotContentServiceContent<TSlotContentService>> & IOIMSlotContentService<TOIMSlotContentServiceSlot<TSlotContentService>>, TColumnName, TOIMColumnSlot, OIMPushColumnSlotOwner, TOIMSlotContentServicePatch<TSlotContentService>>;
|
|
780
874
|
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
}): OIMSlotContentEntityService<TEntity, void, TOIMSingleSlotStore<TOIMEntitySlot<TEntity, void>>, TColumnName>;
|
|
785
|
-
declare function createOIMSlotContentEntityService<TEntity extends object, TColumnName extends TOIMEntityColumnName<TEntity> = TOIMEntityColumnName<TEntity>, TKey extends TOIMStoreKey = TOIMStoreKey>(db: OIMDB, options: TOIMSlotContentEntityServiceFactoryOptions<TEntity, TKey, TColumnName> & {
|
|
786
|
-
keyOf: (entity: TEntity) => TKey;
|
|
787
|
-
slotStoreService?: undefined;
|
|
788
|
-
}): OIMSlotContentEntityService<TEntity, TKey, Map<TKey, TOIMEntitySlot<TEntity, TKey>>, TColumnName>;
|
|
789
|
-
declare function createOIMSlotContentEntityService<TEntity extends object, TColumnName extends TOIMEntityColumnName<TEntity> = TOIMEntityColumnName<TEntity>, TKey extends TOIMStoreKey | readonly unknown[] = TOIMStoreKey, TStore = Map<TKey, TOIMEntitySlot<TEntity, TKey>>>(db: OIMDB, options: TOIMSlotContentEntityServiceFactoryOptions<TEntity, TKey, TColumnName> & {
|
|
790
|
-
keyOf: (entity: TEntity) => TKey;
|
|
791
|
-
slotStoreService: IOIMSlotStoreService<TKey, TOIMEntitySlot<TEntity, TKey>, TStore>;
|
|
792
|
-
}): OIMSlotContentEntityService<TEntity, TKey, TStore, TColumnName>;
|
|
875
|
+
type TOIMSlotContentServiceSingleSlot<TSlotContentService> = TSlotContentService extends {
|
|
876
|
+
createSingleSlot(...args: never[]): infer TSlot;
|
|
877
|
+
} ? Extract<TSlot, TOIMSlot> : never;
|
|
793
878
|
|
|
794
|
-
declare function
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
}): OIMSlotCollectionService<TKey, TOIMEntitySlot<TEntity, TKey>, TStore, OIMSlotContentEntityService<TEntity, TKey, TStore, TColumnName>, TColumnName, TOIMColumnSlot, OIMColumnOwnerPushDriven, Partial<TEntity>>;
|
|
879
|
+
declare function createOIMSingleSlotService<TSlotContentService extends object, TColumnName extends string = string>(db: OIMDB, options: {
|
|
880
|
+
slotContentService: TSlotContentService & IOIMSingleSlotCreator<TOIMSlotContentServiceSingleSlot<TSlotContentService>> & IOIMSlotContentWriter<TOIMSlotContentServiceSingleSlot<TSlotContentService>, TOIMSlotContentServiceContent<TSlotContentService>> & IOIMSlotContentService<TOIMSlotContentServiceSingleSlot<TSlotContentService>>;
|
|
881
|
+
slotReleasePolicy?: IOIMSlotReleasePolicy | undefined;
|
|
882
|
+
slotSubscriptionListener?: IOIMSlotSubscriptionListener | undefined;
|
|
883
|
+
columnSlotStoreService?: IOIMSlotStoreService<string, TOIMColumnSlot> | undefined;
|
|
884
|
+
columnNames?: readonly TColumnName[] | undefined;
|
|
885
|
+
}): OIMWritableSingleSlotService<TOIMSlotContentServiceSingleSlot<TSlotContentService>, TOIMSlotContentServiceContent<TSlotContentService>, TSlotContentService & IOIMSingleSlotCreator<TOIMSlotContentServiceSingleSlot<TSlotContentService>> & IOIMSlotContentWriter<TOIMSlotContentServiceSingleSlot<TSlotContentService>, TOIMSlotContentServiceContent<TSlotContentService>> & IOIMSlotContentService<TOIMSlotContentServiceSingleSlot<TSlotContentService>>, TColumnName, TOIMColumnSlot, OIMPushColumnSlotOwner>;
|
|
802
886
|
|
|
803
|
-
declare function
|
|
887
|
+
declare function createOIMSlotContentEntityService<TEntity extends object, TKey extends NonNullable<unknown> = TOIMStoreKey, TColumnName extends TOIMEntityColumnName<TEntity> = TOIMEntityColumnName<TEntity>>(db: OIMDB, options?: {
|
|
888
|
+
entityWriter?: IOIMEntityWriter | undefined;
|
|
889
|
+
slotEmptinessPolicy?: IOIMSlotEmptinessPolicy<TOIMEntityContentSlot<TEntity>> | undefined;
|
|
890
|
+
}): OIMSlotContentEntityService<TEntity, TKey, TColumnName>;
|
|
804
891
|
|
|
805
892
|
interface IOIMBucketCommands {
|
|
806
|
-
recordInsert(bucketSlot:
|
|
807
|
-
recordRemove(bucketSlot:
|
|
808
|
-
recordMove(bucketSlot:
|
|
809
|
-
recordWholeList(bucketSlot:
|
|
893
|
+
recordInsert(bucketSlot: TOIMBucketContentSlot<unknown>, index: number, bucketMemberSlot: TOIMSlot, bucketMemberSlotCount: number): void;
|
|
894
|
+
recordRemove(bucketSlot: TOIMBucketContentSlot<unknown>, index: number, count: number, bucketMemberSlotCount: number): void;
|
|
895
|
+
recordMove(bucketSlot: TOIMBucketContentSlot<unknown>, from: number, to: number, bucketMemberSlotCount: number): void;
|
|
896
|
+
recordWholeList(bucketSlot: TOIMBucketContentSlot<unknown>): void;
|
|
810
897
|
}
|
|
811
898
|
|
|
812
|
-
type TOIMBucketSlotOwnerService<TSlots, TBucketMemberSlot extends TOIMSlot = TOIMSlot,
|
|
899
|
+
type TOIMBucketSlotOwnerService<TSlots, TBucketMemberSlot extends TOIMSlot = TOIMSlot, TBucketSlot extends TOIMBucketContentSlot<TSlots> = TOIMBucketContentSlot<TSlots>, TStore = unknown> = OIMSlotOwnerService<TBucketSlot, TStore, string, TOIMColumnSlot, OIMPushColumnSlotOwner, readonly TBucketMemberSlot[]>;
|
|
813
900
|
|
|
814
901
|
type TOIMSlotContentBucketServiceOptions = {
|
|
815
902
|
bucketCommands?: IOIMBucketCommands | undefined;
|
|
816
903
|
};
|
|
817
904
|
|
|
818
|
-
declare abstract class OIMSlotContentBucketService<TBucketMemberSlot extends TOIMSlot, TSlots> {
|
|
905
|
+
declare abstract class OIMSlotContentBucketService<TBucketMemberSlot extends TOIMSlot, TSlots, TKey extends NonNullable<unknown> = TOIMStoreKey> implements IOIMSlotContentService<TOIMBucketContentSlot<TSlots>, TOIMBucketSlotOwnerService<TSlots>>, IOIMKeyedSlotCreator<TKey, TOIMBucketSlot<TSlots, TKey>>, IOIMSingleSlotCreator<TOIMBucketContentSlot<TSlots>>, IOIMSlotContentWriter<TOIMBucketContentSlot<TSlots>, readonly TBucketMemberSlot[]> {
|
|
819
906
|
protected readonly bucketCommands: IOIMBucketCommands;
|
|
820
|
-
private readonly slotContentStrategy;
|
|
821
907
|
protected constructor(options: TOIMSlotContentBucketServiceOptions);
|
|
822
|
-
createSlotOwnerService<TKey, TStore>(slotOwnerServiceOptions: Omit<TOIMSlotOwnerServiceOptions<TKey, TOIMBucketSlot<TSlots, TKey>, TStore, string, TOIMColumnSlot, OIMColumnOwnerPushDriven, readonly TBucketMemberSlot[]>, 'slotContentStrategy' | 'slotContentFlushStrategy'>): TOIMBucketSlotOwnerService<TSlots, TBucketMemberSlot, TKey, TStore>;
|
|
823
908
|
protected abstract createBucketMemberSlotsStore(): TSlots;
|
|
824
|
-
protected abstract addSlot(bucketSlot:
|
|
825
|
-
protected abstract removeSlot(bucketSlot:
|
|
826
|
-
protected abstract removeSlots(bucketSlot:
|
|
827
|
-
protected abstract reconcileSlots(bucketSlot:
|
|
828
|
-
protected abstract drainSlots(bucketSlot:
|
|
829
|
-
abstract hasBucketMemberSlot(bucketSlot:
|
|
830
|
-
abstract getBucketMemberSlotCount(bucketSlot:
|
|
831
|
-
abstract getBucketMemberSlots(bucketSlot:
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
909
|
+
protected abstract addSlot(bucketSlot: TOIMBucketContentSlot<TSlots>, bucketMemberSlot: TBucketMemberSlot): boolean;
|
|
910
|
+
protected abstract removeSlot(bucketSlot: TOIMBucketContentSlot<TSlots>, bucketMemberSlot: TBucketMemberSlot): number;
|
|
911
|
+
protected abstract removeSlots(bucketSlot: TOIMBucketContentSlot<TSlots>, bucketMemberSlots: readonly TBucketMemberSlot[], removedChannelQueue: OIMChannelQueue<TOIMSlot>, removedAtChannelQueue: OIMChannelQueue<number>): void;
|
|
912
|
+
protected abstract reconcileSlots(bucketSlot: TOIMBucketContentSlot<TSlots>, bucketMemberSlots: readonly TBucketMemberSlot[], arrivedChannelQueue: OIMChannelQueue<TOIMSlot>, departedChannelQueue: OIMChannelQueue<TOIMSlot>): void;
|
|
913
|
+
protected abstract drainSlots(bucketSlot: TOIMBucketContentSlot<TSlots>, departedChannelQueue: OIMChannelQueue<TOIMSlot>): void;
|
|
914
|
+
abstract hasBucketMemberSlot(bucketSlot: TOIMBucketContentSlot<TSlots>, bucketMemberSlot: TBucketMemberSlot): boolean;
|
|
915
|
+
abstract getBucketMemberSlotCount(bucketSlot: TOIMBucketContentSlot<TSlots>): number;
|
|
916
|
+
abstract getBucketMemberSlots(bucketSlot: TOIMBucketContentSlot<TSlots>): Iterable<TBucketMemberSlot>;
|
|
917
|
+
getBucketMemberSlotsMissingFrom(bucketSlot: TOIMBucketContentSlot<TSlots>, bucketMemberSlots: readonly TBucketMemberSlot[]): TBucketMemberSlot[];
|
|
918
|
+
createSlot(key: TKey, storeSlot: TOIMStoreSlot, slotOwner: IOIMSlotOwner): TOIMBucketSlot<TSlots, TKey>;
|
|
919
|
+
createSingleSlot(storeSlot: TOIMStoreSlot, slotOwner: IOIMSlotOwner): TOIMBucketContentSlot<TSlots>;
|
|
920
|
+
isSlotEmpty(bucketSlot: TOIMBucketContentSlot<TSlots>): boolean;
|
|
921
|
+
hasReference(): boolean;
|
|
922
|
+
releaseSlotContent(bucketSlot: TOIMBucketContentSlot<TSlots>, slotOwnerService: TOIMBucketSlotOwnerService<TSlots>): void;
|
|
923
|
+
markContentChanged(bucketSlot: TOIMBucketContentSlot<TSlots>): void;
|
|
924
|
+
markBucketColumnsChanged(bucketSlot: TOIMBucketContentSlot<TSlots>, patch: object | undefined, changedColumns: readonly string[] | undefined): void;
|
|
925
|
+
addBucketMemberSlot(bucketSlot: TOIMBucketContentSlot<TSlots>, bucketMemberSlot: TBucketMemberSlot): void;
|
|
926
|
+
removeBucketMemberSlot(bucketSlot: TOIMBucketContentSlot<TSlots>, bucketMemberSlot: TBucketMemberSlot): void;
|
|
927
|
+
addBucketMemberSlots(bucketSlot: TOIMBucketContentSlot<TSlots>, bucketMemberSlots: readonly TBucketMemberSlot[]): void;
|
|
928
|
+
removeBucketMemberSlots(bucketSlot: TOIMBucketContentSlot<TSlots>, bucketMemberSlots: readonly TBucketMemberSlot[]): void;
|
|
929
|
+
insertSlotContent(bucketSlot: TOIMBucketContentSlot<TSlots>, bucketMemberSlots: readonly TBucketMemberSlot[], changedBucketSlots?: TOIMBucketContentSlot<TSlots>[]): void;
|
|
930
|
+
writeSlotContent(bucketSlot: TOIMBucketContentSlot<TSlots>, bucketMemberSlots: readonly TBucketMemberSlot[]): boolean;
|
|
931
|
+
clearSlotContent(bucketSlot: TOIMBucketContentSlot<TSlots>): void;
|
|
932
|
+
fillBucketMemberSlots(bucketSlot: TOIMBucketContentSlot<TSlots>, bucketMemberSlots: readonly TBucketMemberSlot[]): void;
|
|
933
|
+
protected markBucketSlotChanged(bucketSlot: TOIMBucketContentSlot<TSlots>): void;
|
|
934
|
+
protected letGoOfRemovedBucketMemberSlot(bucketSlot: TOIMBucketContentSlot<TSlots>, bucketMemberSlot: TOIMSlot, at: number): void;
|
|
848
935
|
protected assertBucketMemberSlotNotReleased(bucketMemberSlot: TOIMSlot): void;
|
|
849
936
|
private assertBucketMemberSlotsNotReleased;
|
|
850
|
-
private
|
|
937
|
+
private addBucketMemberSlotUnannounced;
|
|
851
938
|
private reconcileBucketMemberSlots;
|
|
852
939
|
private drainBucketMemberSlots;
|
|
853
940
|
private unholdAllBucketMemberSlots;
|
|
854
|
-
private writeChangedBucketSlot;
|
|
855
|
-
private flushChangedBucketSlot;
|
|
856
941
|
}
|
|
857
942
|
|
|
858
943
|
type TOIMBucketSlotsSetStore<TBucketMemberSlot extends TOIMSlot = TOIMSlot> = Set<TBucketMemberSlot>;
|
|
859
944
|
|
|
860
|
-
declare class
|
|
945
|
+
declare class OIMSlotContentSetBucketService<TBucketMemberSlot extends TOIMSlot = TOIMSlot, TKey extends NonNullable<unknown> = TOIMStoreKey> extends OIMSlotContentBucketService<TBucketMemberSlot, TOIMBucketSlotsSetStore<TBucketMemberSlot>, TKey> {
|
|
861
946
|
constructor(options?: TOIMSlotContentBucketServiceOptions);
|
|
862
947
|
protected createBucketMemberSlotsStore(): TOIMBucketSlotsSetStore<TBucketMemberSlot>;
|
|
863
|
-
protected addSlot(bucketSlot:
|
|
864
|
-
protected removeSlot(bucketSlot:
|
|
865
|
-
protected removeSlots(bucketSlot:
|
|
866
|
-
protected reconcileSlots(bucketSlot:
|
|
867
|
-
protected drainSlots(bucketSlot:
|
|
868
|
-
hasBucketMemberSlot(bucketSlot:
|
|
869
|
-
getBucketMemberSlotCount(bucketSlot:
|
|
870
|
-
getBucketMemberSlots(bucketSlot:
|
|
948
|
+
protected addSlot(bucketSlot: TOIMBucketContentSlot<TOIMBucketSlotsSetStore<TBucketMemberSlot>>, bucketMemberSlot: TBucketMemberSlot): boolean;
|
|
949
|
+
protected removeSlot(bucketSlot: TOIMBucketContentSlot<TOIMBucketSlotsSetStore<TBucketMemberSlot>>, bucketMemberSlot: TBucketMemberSlot): number;
|
|
950
|
+
protected removeSlots(bucketSlot: TOIMBucketContentSlot<TOIMBucketSlotsSetStore<TBucketMemberSlot>>, bucketMemberSlots: readonly TBucketMemberSlot[], removedChannelQueue: OIMChannelQueue<TOIMSlot>, removedAtChannelQueue: OIMChannelQueue<number>): void;
|
|
951
|
+
protected reconcileSlots(bucketSlot: TOIMBucketContentSlot<TOIMBucketSlotsSetStore<TBucketMemberSlot>>, bucketMemberSlots: readonly TBucketMemberSlot[], arrivedChannelQueue: OIMChannelQueue<TOIMSlot>, departedChannelQueue: OIMChannelQueue<TOIMSlot>): void;
|
|
952
|
+
protected drainSlots(bucketSlot: TOIMBucketContentSlot<TOIMBucketSlotsSetStore<TBucketMemberSlot>>, departedChannelQueue: OIMChannelQueue<TOIMSlot>): void;
|
|
953
|
+
hasBucketMemberSlot(bucketSlot: TOIMBucketContentSlot<TOIMBucketSlotsSetStore<TBucketMemberSlot>>, bucketMemberSlot: TBucketMemberSlot): boolean;
|
|
954
|
+
getBucketMemberSlotCount(bucketSlot: TOIMBucketContentSlot<TOIMBucketSlotsSetStore<TBucketMemberSlot>>): number;
|
|
955
|
+
getBucketMemberSlots(bucketSlot: TOIMBucketContentSlot<TOIMBucketSlotsSetStore<TBucketMemberSlot>>): Iterable<TBucketMemberSlot>;
|
|
871
956
|
}
|
|
872
957
|
|
|
873
958
|
type TOIMBucketSlotsArrayStore<TBucketMemberSlot extends TOIMSlot = TOIMSlot> = {
|
|
874
959
|
bucketMemberSlots: TBucketMemberSlot[];
|
|
960
|
+
uniqueBucketMemberSlots: Set<TBucketMemberSlot> | undefined;
|
|
961
|
+
sortedCount: number;
|
|
875
962
|
};
|
|
876
963
|
|
|
877
|
-
interface
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
hasBucketMemberSlot(bucketSlot: TOIMBucketSlot<TSlots>, bucketMemberSlot: TBucketMemberSlot): boolean;
|
|
895
|
-
getBucketMemberSlotCount(bucketSlot: TOIMBucketSlot<TSlots>): number;
|
|
896
|
-
getBucketMemberSlots(bucketSlot: TOIMBucketSlot<TSlots>): Iterable<TBucketMemberSlot>;
|
|
897
|
-
getBucketMemberSlotAt(bucketSlot: TOIMBucketSlot<TSlots>, at: number): TBucketMemberSlot | undefined;
|
|
898
|
-
getBucketMemberSlotPosition(bucketSlot: TOIMBucketSlot<TSlots>, bucketMemberSlot: TBucketMemberSlot): number;
|
|
899
|
-
private emptyBucketMemberSlotsStore;
|
|
900
|
-
}
|
|
901
|
-
|
|
902
|
-
declare class OIMSlotContentBucketServiceArrayDriven<TBucketMemberSlot extends TOIMSlot = TOIMSlot, TSlots extends TOIMBucketSlotsArrayStore<TBucketMemberSlot> = TOIMBucketSlotsArrayStore<TBucketMemberSlot>> extends OIMSlotContentBucketServiceArrayBased<TBucketMemberSlot, TSlots> {
|
|
903
|
-
protected readonly bucketArrayMembership: IOIMBucketArrayMembership<TBucketMemberSlot, TSlots>;
|
|
904
|
-
constructor(options?: TOIMSlotContentBucketServiceOptions & {
|
|
905
|
-
bucketArrayMembership?: IOIMBucketArrayMembership<TBucketMemberSlot, TSlots> | undefined;
|
|
906
|
-
});
|
|
907
|
-
protected createBucketMemberSlotsStore(): TSlots;
|
|
908
|
-
insertBucketMemberSlotAt(bucketSlot: TOIMBucketSlot<TSlots>, at: number, bucketMemberSlot: TBucketMemberSlot): void;
|
|
909
|
-
removeBucketMemberSlotAt(bucketSlot: TOIMBucketSlot<TSlots>, at: number): TBucketMemberSlot | undefined;
|
|
910
|
-
removeBucketMemberSlotRange(bucketSlot: TOIMBucketSlot<TSlots>, at: number, count: number): readonly TBucketMemberSlot[];
|
|
911
|
-
moveBucketMemberSlotToPosition(bucketSlot: TOIMBucketSlot<TSlots>, from: number, to: number): TBucketMemberSlot | undefined;
|
|
912
|
-
moveBucketMemberSlotRangeToPosition(bucketSlot: TOIMBucketSlot<TSlots>, from: number, count: number, to: number): void;
|
|
913
|
-
}
|
|
914
|
-
|
|
915
|
-
type TOIMBucketSlotsSortedArrayStore<TBucketMemberSlot extends TOIMSlot = TOIMSlot> = TOIMBucketSlotsArrayStore<TBucketMemberSlot> & {
|
|
916
|
-
sortedCount: number;
|
|
964
|
+
interface IOIMBucketMemberSlotsArrayService<TBucketMemberSlot extends TOIMSlot = TOIMSlot> {
|
|
965
|
+
createBucketSlotsArrayStore(): TOIMBucketSlotsArrayStore<TBucketMemberSlot>;
|
|
966
|
+
hasBucketMemberSlot(bucketSlotsArrayStore: TOIMBucketSlotsArrayStore<TBucketMemberSlot>, bucketMemberSlot: TBucketMemberSlot): boolean;
|
|
967
|
+
appendBucketMemberSlot(bucketSlotsArrayStore: TOIMBucketSlotsArrayStore<TBucketMemberSlot>, bucketMemberSlot: TBucketMemberSlot): boolean;
|
|
968
|
+
insertBucketMemberSlotAt(bucketSlotsArrayStore: TOIMBucketSlotsArrayStore<TBucketMemberSlot>, at: number, bucketMemberSlot: TBucketMemberSlot): number;
|
|
969
|
+
removeBucketMemberSlot(bucketSlotsArrayStore: TOIMBucketSlotsArrayStore<TBucketMemberSlot>, bucketMemberSlot: TBucketMemberSlot): number;
|
|
970
|
+
removeBucketMemberSlotAt(bucketSlotsArrayStore: TOIMBucketSlotsArrayStore<TBucketMemberSlot>, at: number): TBucketMemberSlot;
|
|
971
|
+
removeBucketMemberSlotRange(bucketSlotsArrayStore: TOIMBucketSlotsArrayStore<TBucketMemberSlot>, at: number, count: number): TBucketMemberSlot[];
|
|
972
|
+
removeBucketMemberSlots(bucketSlotsArrayStore: TOIMBucketSlotsArrayStore<TBucketMemberSlot>, bucketMemberSlots: readonly TBucketMemberSlot[], removedChannelQueue: OIMChannelQueue<TOIMSlot>, removedAtChannelQueue: OIMChannelQueue<number>): void;
|
|
973
|
+
moveBucketMemberSlotRange(bucketSlotsArrayStore: TOIMBucketSlotsArrayStore<TBucketMemberSlot>, from: number, count: number, landing: number): boolean;
|
|
974
|
+
sortBucketMemberSlots(bucketSlotsArrayStore: TOIMBucketSlotsArrayStore<TBucketMemberSlot>, compareBucketMemberSlots: (left: TBucketMemberSlot, right: TBucketMemberSlot) => number): void;
|
|
975
|
+
isSameBucketMemberSlotSequence(bucketSlotsArrayStore: TOIMBucketSlotsArrayStore<TBucketMemberSlot>, bucketMemberSlots: readonly TBucketMemberSlot[]): boolean;
|
|
976
|
+
clearBucketMemberSlots(bucketSlotsArrayStore: TOIMBucketSlotsArrayStore<TBucketMemberSlot>): void;
|
|
977
|
+
}
|
|
978
|
+
|
|
979
|
+
type TOIMSlotContentArrayBucketServiceOptions<TBucketMemberSlot extends TOIMSlot = TOIMSlot> = TOIMSlotContentBucketServiceOptions & {
|
|
980
|
+
bucketMemberSlotsArrayService?: IOIMBucketMemberSlotsArrayService<TBucketMemberSlot> | undefined;
|
|
917
981
|
};
|
|
918
982
|
|
|
919
|
-
|
|
983
|
+
declare abstract class OIMSlotContentArrayBucketService<TBucketMemberSlot extends TOIMSlot, TKey extends NonNullable<unknown> = TOIMStoreKey> extends OIMSlotContentBucketService<TBucketMemberSlot, TOIMBucketSlotsArrayStore<TBucketMemberSlot>, TKey> {
|
|
984
|
+
protected readonly bucketMemberSlotsArrayService: IOIMBucketMemberSlotsArrayService<TBucketMemberSlot>;
|
|
985
|
+
protected constructor(options: TOIMSlotContentArrayBucketServiceOptions<TBucketMemberSlot>);
|
|
986
|
+
protected createBucketMemberSlotsStore(): TOIMBucketSlotsArrayStore<TBucketMemberSlot>;
|
|
987
|
+
protected addSlot(bucketSlot: TOIMBucketContentSlot<TOIMBucketSlotsArrayStore<TBucketMemberSlot>>, bucketMemberSlot: TBucketMemberSlot): boolean;
|
|
988
|
+
protected removeSlot(bucketSlot: TOIMBucketContentSlot<TOIMBucketSlotsArrayStore<TBucketMemberSlot>>, bucketMemberSlot: TBucketMemberSlot): number;
|
|
989
|
+
protected removeSlots(bucketSlot: TOIMBucketContentSlot<TOIMBucketSlotsArrayStore<TBucketMemberSlot>>, bucketMemberSlots: readonly TBucketMemberSlot[], removedChannelQueue: OIMChannelQueue<TOIMSlot>, removedAtChannelQueue: OIMChannelQueue<number>): void;
|
|
990
|
+
protected reconcileSlots(bucketSlot: TOIMBucketContentSlot<TOIMBucketSlotsArrayStore<TBucketMemberSlot>>, bucketMemberSlots: readonly TBucketMemberSlot[], arrivedChannelQueue: OIMChannelQueue<TOIMSlot>, departedChannelQueue: OIMChannelQueue<TOIMSlot>): void;
|
|
991
|
+
protected drainSlots(bucketSlot: TOIMBucketContentSlot<TOIMBucketSlotsArrayStore<TBucketMemberSlot>>, departedChannelQueue: OIMChannelQueue<TOIMSlot>): void;
|
|
992
|
+
hasBucketMemberSlot(bucketSlot: TOIMBucketContentSlot<TOIMBucketSlotsArrayStore<TBucketMemberSlot>>, bucketMemberSlot: TBucketMemberSlot): boolean;
|
|
993
|
+
getBucketMemberSlotCount(bucketSlot: TOIMBucketContentSlot<TOIMBucketSlotsArrayStore<TBucketMemberSlot>>): number;
|
|
994
|
+
getBucketMemberSlots(bucketSlot: TOIMBucketContentSlot<TOIMBucketSlotsArrayStore<TBucketMemberSlot>>): Iterable<TBucketMemberSlot>;
|
|
995
|
+
getBucketMemberSlotAt(bucketSlot: TOIMBucketContentSlot<TOIMBucketSlotsArrayStore<TBucketMemberSlot>>, at: number): TBucketMemberSlot | undefined;
|
|
996
|
+
getBucketMemberSlotPosition(bucketSlot: TOIMBucketContentSlot<TOIMBucketSlotsArrayStore<TBucketMemberSlot>>, bucketMemberSlot: TBucketMemberSlot): number;
|
|
997
|
+
}
|
|
998
|
+
|
|
999
|
+
declare class OIMSlotContentPositionalArrayBucketService<TBucketMemberSlot extends TOIMSlot = TOIMSlot, TKey extends NonNullable<unknown> = TOIMStoreKey> extends OIMSlotContentArrayBucketService<TBucketMemberSlot, TKey> {
|
|
1000
|
+
constructor(options?: TOIMSlotContentArrayBucketServiceOptions<TBucketMemberSlot>);
|
|
1001
|
+
insertBucketMemberSlotAt(bucketSlot: TOIMBucketContentSlot<TOIMBucketSlotsArrayStore<TBucketMemberSlot>>, at: number, bucketMemberSlot: TBucketMemberSlot): void;
|
|
1002
|
+
removeBucketMemberSlotAt(bucketSlot: TOIMBucketContentSlot<TOIMBucketSlotsArrayStore<TBucketMemberSlot>>, at: number): TBucketMemberSlot | undefined;
|
|
1003
|
+
removeBucketMemberSlotRange(bucketSlot: TOIMBucketContentSlot<TOIMBucketSlotsArrayStore<TBucketMemberSlot>>, at: number, count: number): readonly TBucketMemberSlot[];
|
|
1004
|
+
moveBucketMemberSlotToPosition(bucketSlot: TOIMBucketContentSlot<TOIMBucketSlotsArrayStore<TBucketMemberSlot>>, from: number, to: number): TBucketMemberSlot | undefined;
|
|
1005
|
+
moveBucketMemberSlotRangeToPosition(bucketSlot: TOIMBucketContentSlot<TOIMBucketSlotsArrayStore<TBucketMemberSlot>>, from: number, count: number, to: number): void;
|
|
1006
|
+
}
|
|
1007
|
+
|
|
1008
|
+
declare class OIMBucketMemberSlotsArrayService<TBucketMemberSlot extends TOIMSlot = TOIMSlot> implements IOIMBucketMemberSlotsArrayService<TBucketMemberSlot> {
|
|
1009
|
+
static readonly INSTANCE: OIMBucketMemberSlotsArrayService<TOIMSlot>;
|
|
1010
|
+
createBucketSlotsArrayStore(): TOIMBucketSlotsArrayStore<TBucketMemberSlot>;
|
|
1011
|
+
hasBucketMemberSlot(bucketSlotsArrayStore: TOIMBucketSlotsArrayStore<TBucketMemberSlot>, bucketMemberSlot: TBucketMemberSlot): boolean;
|
|
1012
|
+
appendBucketMemberSlot(bucketSlotsArrayStore: TOIMBucketSlotsArrayStore<TBucketMemberSlot>, bucketMemberSlot: TBucketMemberSlot): boolean;
|
|
1013
|
+
insertBucketMemberSlotAt(bucketSlotsArrayStore: TOIMBucketSlotsArrayStore<TBucketMemberSlot>, at: number, bucketMemberSlot: TBucketMemberSlot): number;
|
|
1014
|
+
removeBucketMemberSlot(bucketSlotsArrayStore: TOIMBucketSlotsArrayStore<TBucketMemberSlot>, bucketMemberSlot: TBucketMemberSlot): number;
|
|
1015
|
+
removeBucketMemberSlotAt(bucketSlotsArrayStore: TOIMBucketSlotsArrayStore<TBucketMemberSlot>, at: number): TBucketMemberSlot;
|
|
1016
|
+
removeBucketMemberSlotRange(bucketSlotsArrayStore: TOIMBucketSlotsArrayStore<TBucketMemberSlot>, at: number, count: number): TBucketMemberSlot[];
|
|
1017
|
+
removeBucketMemberSlots(bucketSlotsArrayStore: TOIMBucketSlotsArrayStore<TBucketMemberSlot>, bucketMemberSlots: readonly TBucketMemberSlot[], removedChannelQueue: OIMChannelQueue<TOIMSlot>, removedAtChannelQueue: OIMChannelQueue<number>): void;
|
|
1018
|
+
moveBucketMemberSlotRange(bucketSlotsArrayStore: TOIMBucketSlotsArrayStore<TBucketMemberSlot>, from: number, count: number, landing: number): boolean;
|
|
1019
|
+
sortBucketMemberSlots(bucketSlotsArrayStore: TOIMBucketSlotsArrayStore<TBucketMemberSlot>, compareBucketMemberSlots: (left: TBucketMemberSlot, right: TBucketMemberSlot) => number): void;
|
|
1020
|
+
isSameBucketMemberSlotSequence(bucketSlotsArrayStore: TOIMBucketSlotsArrayStore<TBucketMemberSlot>, bucketMemberSlots: readonly TBucketMemberSlot[]): boolean;
|
|
1021
|
+
clearBucketMemberSlots(bucketSlotsArrayStore: TOIMBucketSlotsArrayStore<TBucketMemberSlot>): void;
|
|
1022
|
+
}
|
|
1023
|
+
|
|
1024
|
+
declare class OIMBucketUniqueMemberSlotsArrayService<TBucketMemberSlot extends TOIMSlot = TOIMSlot> extends OIMBucketMemberSlotsArrayService<TBucketMemberSlot> {
|
|
1025
|
+
static readonly INSTANCE: OIMBucketUniqueMemberSlotsArrayService<TOIMSlot>;
|
|
1026
|
+
createBucketSlotsArrayStore(): TOIMBucketSlotsArrayStore<TBucketMemberSlot>;
|
|
1027
|
+
hasBucketMemberSlot(bucketSlotsArrayStore: TOIMBucketSlotsArrayStore<TBucketMemberSlot>, bucketMemberSlot: TBucketMemberSlot): boolean;
|
|
1028
|
+
appendBucketMemberSlot(bucketSlotsArrayStore: TOIMBucketSlotsArrayStore<TBucketMemberSlot>, bucketMemberSlot: TBucketMemberSlot): boolean;
|
|
1029
|
+
insertBucketMemberSlotAt(bucketSlotsArrayStore: TOIMBucketSlotsArrayStore<TBucketMemberSlot>, at: number, bucketMemberSlot: TBucketMemberSlot): number;
|
|
1030
|
+
removeBucketMemberSlot(bucketSlotsArrayStore: TOIMBucketSlotsArrayStore<TBucketMemberSlot>, bucketMemberSlot: TBucketMemberSlot): number;
|
|
1031
|
+
removeBucketMemberSlotAt(bucketSlotsArrayStore: TOIMBucketSlotsArrayStore<TBucketMemberSlot>, at: number): TBucketMemberSlot;
|
|
1032
|
+
removeBucketMemberSlotRange(bucketSlotsArrayStore: TOIMBucketSlotsArrayStore<TBucketMemberSlot>, at: number, count: number): TBucketMemberSlot[];
|
|
1033
|
+
removeBucketMemberSlots(bucketSlotsArrayStore: TOIMBucketSlotsArrayStore<TBucketMemberSlot>, bucketMemberSlots: readonly TBucketMemberSlot[], removedChannelQueue: OIMChannelQueue<TOIMSlot>, removedAtChannelQueue: OIMChannelQueue<number>): void;
|
|
1034
|
+
isSameBucketMemberSlotSequence(bucketSlotsArrayStore: TOIMBucketSlotsArrayStore<TBucketMemberSlot>, bucketMemberSlots: readonly TBucketMemberSlot[]): boolean;
|
|
1035
|
+
clearBucketMemberSlots(bucketSlotsArrayStore: TOIMBucketSlotsArrayStore<TBucketMemberSlot>): void;
|
|
1036
|
+
}
|
|
1037
|
+
|
|
1038
|
+
type TOIMSlotContentSortedArrayBucketServiceOptions<TBucketMemberSlot extends TOIMSlot = TOIMSlot> = TOIMSlotContentArrayBucketServiceOptions<TBucketMemberSlot> & {
|
|
920
1039
|
compareBucketMemberSlots: (left: TBucketMemberSlot, right: TBucketMemberSlot) => number;
|
|
921
1040
|
};
|
|
922
1041
|
|
|
923
|
-
declare class
|
|
1042
|
+
declare class OIMSlotContentSortedArrayBucketService<TBucketMemberSlot extends TOIMSlot = TOIMSlot, TKey extends NonNullable<unknown> = TOIMStoreKey> extends OIMSlotContentArrayBucketService<TBucketMemberSlot, TKey> {
|
|
924
1043
|
private readonly compareBucketMemberSlots;
|
|
925
|
-
constructor(options:
|
|
926
|
-
protected
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
getBucketMemberSlotAt(bucketSlot: TOIMBucketSlot<TOIMBucketSlotsSortedArrayStore<TBucketMemberSlot>>, at: number): TBucketMemberSlot | undefined;
|
|
933
|
-
getBucketMemberSlotPosition(bucketSlot: TOIMBucketSlot<TOIMBucketSlotsSortedArrayStore<TBucketMemberSlot>>, bucketMemberSlot: TBucketMemberSlot): number;
|
|
934
|
-
repositionBucketMemberSlot(bucketSlot: TOIMBucketSlot<TOIMBucketSlotsSortedArrayStore<TBucketMemberSlot>>, bucketMemberSlot: TBucketMemberSlot): void;
|
|
935
|
-
private settle;
|
|
936
|
-
}
|
|
937
|
-
|
|
938
|
-
type TOIMBucketCollectionFactoryArguments<TKey, TBucketSlot, TStore, TOptions extends {
|
|
939
|
-
bucketSlotStoreService?: unknown;
|
|
940
|
-
}> = [
|
|
941
|
-
TKey
|
|
942
|
-
] extends [readonly unknown[]] ? [bucketCollectionFactoryOptions: TOptions & Required<Pick<TOptions, 'bucketSlotStoreService'>>] : [TStore] extends [Map<TKey, TBucketSlot>] ? [bucketCollectionFactoryOptions?: TOptions] : [bucketCollectionFactoryOptions: TOptions & Required<Pick<TOptions, 'bucketSlotStoreService'>>];
|
|
943
|
-
|
|
944
|
-
declare function createOIMBucketService<TBucketMemberSlot extends TOIMSlot = TOIMEntitySlot, TKey extends TOIMStoreKey | readonly unknown[] = TOIMStoreKey, TSlots = TOIMBucketSlotsArrayStore<TBucketMemberSlot>, TSlotContentService extends OIMSlotContentBucketService<TBucketMemberSlot, TSlots> = OIMSlotContentBucketServiceArrayDriven<TBucketMemberSlot> & OIMSlotContentBucketService<TBucketMemberSlot, TSlots>, TStore = Map<TKey, TOIMBucketSlot<TSlots, TKey>>>(db: OIMDB, ...[options]: TOIMBucketCollectionFactoryArguments<TKey, TOIMBucketSlot<TSlots, TKey>, TStore, {
|
|
945
|
-
slotContentService?: (TSlotContentService & OIMSlotContentBucketService<TBucketMemberSlot, TSlots>) | undefined;
|
|
946
|
-
bucketSlotStoreService?: IOIMSlotStoreService<TKey, TOIMBucketSlot<TSlots, TKey>, TStore> | undefined;
|
|
947
|
-
maxCommandsPerSlot?: number | undefined;
|
|
948
|
-
slotReleasePolicy?: IOIMSlotReleasePolicy | undefined;
|
|
949
|
-
columnSlotStoreService?: IOIMSlotStoreService<string, TOIMColumnSlot> | undefined;
|
|
950
|
-
columnNames?: readonly string[] | undefined;
|
|
951
|
-
}>): OIMSlotCollectionService<TKey, TOIMBucketSlot<TSlots, TKey>, TStore, TSlotContentService, string, TOIMColumnSlot, OIMColumnOwnerPushDriven, readonly TBucketMemberSlot[]>;
|
|
952
|
-
|
|
953
|
-
declare function createOIMSingleBucketService<TBucketMemberSlot extends TOIMSlot = TOIMEntitySlot, TSlots = TOIMBucketSlotsArrayStore<TBucketMemberSlot>, TSlotContentService extends OIMSlotContentBucketService<TBucketMemberSlot, TSlots> = OIMSlotContentBucketServiceArrayDriven<TBucketMemberSlot> & OIMSlotContentBucketService<TBucketMemberSlot, TSlots>>(db: OIMDB, options?: {
|
|
954
|
-
slotContentService?: (TSlotContentService & OIMSlotContentBucketService<TBucketMemberSlot, TSlots>) | undefined;
|
|
955
|
-
maxCommandsPerSlot?: number | undefined;
|
|
956
|
-
slotReleasePolicy?: IOIMSlotReleasePolicy | undefined;
|
|
957
|
-
columnSlotStoreService?: IOIMSlotStoreService<string, TOIMColumnSlot> | undefined;
|
|
958
|
-
columnNames?: readonly string[] | undefined;
|
|
959
|
-
}): OIMSingleSlotService<TOIMBucketSlot<TSlots, void>, TSlotContentService, string, TOIMColumnSlot, OIMColumnOwnerPushDriven, readonly TBucketMemberSlot[]>;
|
|
1044
|
+
constructor(options: TOIMSlotContentSortedArrayBucketServiceOptions<TBucketMemberSlot>);
|
|
1045
|
+
protected drainSlots(bucketSlot: TOIMBucketContentSlot<TOIMBucketSlotsArrayStore<TBucketMemberSlot>>, departedChannelQueue: OIMChannelQueue<TOIMSlot>): void;
|
|
1046
|
+
getBucketMemberSlots(bucketSlot: TOIMBucketContentSlot<TOIMBucketSlotsArrayStore<TBucketMemberSlot>>): Iterable<TBucketMemberSlot>;
|
|
1047
|
+
getBucketMemberSlotAt(bucketSlot: TOIMBucketContentSlot<TOIMBucketSlotsArrayStore<TBucketMemberSlot>>, at: number): TBucketMemberSlot | undefined;
|
|
1048
|
+
getBucketMemberSlotPosition(bucketSlot: TOIMBucketContentSlot<TOIMBucketSlotsArrayStore<TBucketMemberSlot>>, bucketMemberSlot: TBucketMemberSlot): number;
|
|
1049
|
+
repositionBucketMemberSlot(bucketSlot: TOIMBucketContentSlot<TOIMBucketSlotsArrayStore<TBucketMemberSlot>>, bucketMemberSlot: TBucketMemberSlot): void;
|
|
1050
|
+
}
|
|
960
1051
|
|
|
961
1052
|
declare class OIMDefaults {
|
|
962
1053
|
static readonly COLUMN_SLOT_STORE_SERVICE: OIMDefaultValue<IOIMSlotStoreService<string, TOIMColumnSlot, unknown>>;
|
|
963
1054
|
static readonly COMPUTED_COLUMN_SLOT_STORE_SERVICE: OIMDefaultValue<IOIMSlotStoreService<string, TOIMComputedColumnSlot, unknown>>;
|
|
964
|
-
static readonly KEY_TREE_WALK_SCALAR: OIMDefaultValue<
|
|
965
|
-
static readonly KEY_TREE_WALK_COMPOSITE: OIMDefaultValue<
|
|
1055
|
+
static readonly KEY_TREE_WALK_SCALAR: OIMDefaultValue<OIMScalarKeyTreeWalk>;
|
|
1056
|
+
static readonly KEY_TREE_WALK_COMPOSITE: OIMDefaultValue<OIMCompositeKeyTreeWalk>;
|
|
966
1057
|
static readonly STANDALONE_SLOT_OWNER: OIMDefaultValue<OIMSlotOwner>;
|
|
967
1058
|
static readonly ENTITY_WRITER: OIMDefaultValue<IOIMEntityWriter>;
|
|
968
|
-
static readonly ENTITY_SLOT_EMPTINESS: OIMDefaultValue<
|
|
1059
|
+
static readonly ENTITY_SLOT_EMPTINESS: OIMDefaultValue<IOIMSlotEmptinessPolicy<TOIMEntityContentSlot>>;
|
|
969
1060
|
static readonly INDEX_KEYS_SERVICE: OIMDefaultValue<IOIMIndexKeysService>;
|
|
970
1061
|
static readonly STORE_SLOT_LISTENER: OIMDefaultValue<IOIMStoreSlotListener>;
|
|
971
1062
|
}
|
|
@@ -981,50 +1072,72 @@ declare class OIMDefaultValue<TValue> {
|
|
|
981
1072
|
private assertNoLateOverride;
|
|
982
1073
|
}
|
|
983
1074
|
|
|
984
|
-
|
|
985
|
-
readonly
|
|
986
|
-
|
|
1075
|
+
declare class OIMFlushSchedulerService {
|
|
1076
|
+
static readonly INSTANCE: OIMFlushSchedulerService;
|
|
1077
|
+
isScheduled(flushSchedulerSlot: TOIMFlushSchedulerSlot): boolean;
|
|
1078
|
+
schedule<TFlushSchedulerSlot extends TOIMFlushSchedulerSlot>(flushSchedulerSlot: TFlushSchedulerSlot, delayMs: number, flushSchedulerListener: IOIMFlushSchedulerListener<TFlushSchedulerSlot>): void;
|
|
1079
|
+
cancelSchedule(flushSchedulerSlot: TOIMFlushSchedulerSlot): void;
|
|
1080
|
+
}
|
|
1081
|
+
|
|
1082
|
+
type TOIMComputedStoreSlot<TStore = unknown, TValue = unknown, TComputedSlot extends TOIMComputedContentSlot<TValue> = TOIMComputedContentSlot<TValue>> = TOIMStoreSlot<TStore, TComputedSlot> & {
|
|
1083
|
+
readonly derive: ((computedSlot: TComputedSlot) => TValue) | undefined;
|
|
1084
|
+
readonly createSources: ((computedSlot: TComputedSlot) => Partial<TOIMComputedSources>) | undefined;
|
|
987
1085
|
};
|
|
988
1086
|
|
|
989
|
-
type
|
|
990
|
-
|
|
991
|
-
columnOwnerOptions: TOIMColumnOwnerOptions<TOIMComputedColumnSlot, Extract<keyof TValue, string>>;
|
|
1087
|
+
type TOIMComputedDerivationOptions<TValue, TComputedSlot extends TOIMComputedContentSlot<TValue>> = {
|
|
1088
|
+
columnSlotOwnerOptions: TOIMColumnSlotOwnerOptions<TOIMComputedColumnSlot, Extract<keyof TValue, string>>;
|
|
992
1089
|
slotReleasePolicy: IOIMSlotReleasePolicy;
|
|
993
1090
|
storeSlotListener: IOIMStoreSlotListener;
|
|
994
|
-
createSources?: ((
|
|
995
|
-
derive?: ((computedSlot:
|
|
1091
|
+
createSources?: ((computedSlot: TComputedSlot) => Partial<TOIMComputedSources>) | undefined;
|
|
1092
|
+
derive?: ((computedSlot: TComputedSlot) => TValue) | undefined;
|
|
996
1093
|
sameValueGuard?: TOIMSameValueGuard<TValue> | undefined;
|
|
997
1094
|
initialValue?: TValue | undefined;
|
|
998
1095
|
};
|
|
999
1096
|
|
|
1000
|
-
|
|
1001
|
-
|
|
1097
|
+
type TOIMComputedServiceOptions<TKey extends NonNullable<unknown>, TValue, TComputedStore> = TOIMComputedDerivationOptions<TValue, TOIMComputedSlot<TValue, TKey>> & {
|
|
1098
|
+
computedSlotStoreService: IOIMSlotStoreService<TKey, TOIMComputedSlot<TValue, TKey>, TComputedStore>;
|
|
1099
|
+
};
|
|
1100
|
+
|
|
1101
|
+
declare class OIMComputedService<TKey extends NonNullable<unknown>, TValue, TComputedStore> {
|
|
1102
|
+
readonly computedCollectionService: OIMSlotCollectionService<TKey, TOIMComputedSlot<TValue, TKey>, TComputedStore, OIMSlotContentComputedService<TValue, TOIMComputedSlot<TValue, TKey>>, Extract<keyof TValue, string>, TOIMComputedColumnSlot, OIMPullColumnSlotOwner>;
|
|
1002
1103
|
private readonly hasDerive;
|
|
1003
1104
|
private readonly hasCreateSources;
|
|
1004
1105
|
constructor(options: TOIMComputedServiceOptions<TKey, TValue, TComputedStore>);
|
|
1005
|
-
createComputedStoreSlot(channelMap: IOIMChannelMap, derive?: ((computedSlot: TOIMComputedSlot<TValue, TKey>) => TValue) | undefined, createSources?: ((
|
|
1006
|
-
private assertDeriveAndCreateSources;
|
|
1106
|
+
createComputedStoreSlot(channelMap: IOIMChannelMap, derive?: ((computedSlot: TOIMComputedSlot<TValue, TKey>) => TValue) | undefined, createSources?: ((computedSlot: TOIMComputedSlot<TValue, TKey>) => Partial<TOIMComputedSources>) | undefined): TOIMComputedStoreSlot<TComputedStore, TValue, TOIMComputedSlot<TValue, TKey>>;
|
|
1007
1107
|
}
|
|
1008
1108
|
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
declare function createOIMComputedService<TKey, TValue, TComputedStore = TOIMDefaultSlotStore<TKey, TOIMComputedSlot<TValue, TKey>>>(options: {
|
|
1012
|
-
createSources?: ((key: TKey, storeSlot: TOIMStoreSlot | undefined) => Partial<TOIMComputedSources>) | undefined;
|
|
1109
|
+
declare function createOIMComputedService<TKey extends NonNullable<unknown>, TValue, TComputedStore = Map<TKey, TOIMComputedSlot<TValue, TKey>>>(options: {
|
|
1110
|
+
createSources?: ((computedSlot: TOIMComputedSlot<TValue, TKey>) => Partial<TOIMComputedSources>) | undefined;
|
|
1013
1111
|
derive?: ((computedSlot: TOIMComputedSlot<TValue, TKey>) => TValue) | undefined;
|
|
1014
1112
|
sameValueGuard?: TOIMSameValueGuard<TValue> | undefined;
|
|
1015
1113
|
initialValue?: TValue | undefined;
|
|
1016
1114
|
slotReleasePolicy?: IOIMSlotReleasePolicy | undefined;
|
|
1017
1115
|
columnSlotStoreService?: IOIMSlotStoreService<string, TOIMComputedColumnSlot> | undefined;
|
|
1018
1116
|
columnNames?: readonly Extract<keyof TValue, string>[] | undefined;
|
|
1019
|
-
} & ([TComputedStore] extends [Map<TKey, TOIMComputedSlot<TValue, TKey>>] ? {
|
|
1020
1117
|
computedSlotStoreService?: IOIMSlotStoreService<TKey, TOIMComputedSlot<TValue, TKey>, TComputedStore> | undefined;
|
|
1021
|
-
}
|
|
1022
|
-
computedSlotStoreService: IOIMSlotStoreService<TKey, TOIMComputedSlot<TValue, TKey>, TComputedStore>;
|
|
1023
|
-
})): OIMComputedService<TKey, TValue, TComputedStore>;
|
|
1118
|
+
}): OIMComputedService<TKey, TValue, TComputedStore>;
|
|
1024
1119
|
|
|
1025
|
-
|
|
1120
|
+
declare class OIMSingleComputedService<TValue> {
|
|
1121
|
+
readonly computedSingleSlotService: OIMSingleSlotService<TOIMComputedContentSlot<TValue>, OIMSlotContentComputedService<TValue>, Extract<keyof TValue, string>, TOIMComputedColumnSlot, OIMPullColumnSlotOwner>;
|
|
1122
|
+
private readonly hasDerive;
|
|
1123
|
+
private readonly hasCreateSources;
|
|
1124
|
+
constructor(options: TOIMComputedDerivationOptions<TValue, TOIMComputedContentSlot<TValue>>);
|
|
1125
|
+
createComputedStoreSlot(channelMap: IOIMChannelMap, derive?: ((computedSlot: TOIMComputedContentSlot<TValue>) => TValue) | undefined, createSources?: ((computedSlot: TOIMComputedContentSlot<TValue>) => Partial<TOIMComputedSources>) | undefined): TOIMComputedStoreSlot<TOIMSingleSlotStore<TOIMComputedContentSlot<TValue>>, TValue>;
|
|
1126
|
+
}
|
|
1026
1127
|
|
|
1027
|
-
|
|
1128
|
+
declare function createOIMSingleComputedService<TValue>(options?: {
|
|
1129
|
+
createSources?: ((computedSlot: TOIMComputedContentSlot<TValue>) => Partial<TOIMComputedSources>) | undefined;
|
|
1130
|
+
derive?: ((computedSlot: TOIMComputedContentSlot<TValue>) => TValue) | undefined;
|
|
1131
|
+
sameValueGuard?: TOIMSameValueGuard<TValue> | undefined;
|
|
1132
|
+
initialValue?: TValue | undefined;
|
|
1133
|
+
slotReleasePolicy?: IOIMSlotReleasePolicy | undefined;
|
|
1134
|
+
columnSlotStoreService?: IOIMSlotStoreService<string, TOIMComputedColumnSlot> | undefined;
|
|
1135
|
+
columnNames?: readonly Extract<keyof TValue, string>[] | undefined;
|
|
1136
|
+
}): OIMSingleComputedService<TValue>;
|
|
1137
|
+
|
|
1138
|
+
type TOIMSortedComputedSlot<TEntity extends object, TKey extends NonNullable<unknown>> = TOIMComputedSlot<readonly TOIMEntitySlot<TEntity>[], TKey>;
|
|
1139
|
+
|
|
1140
|
+
type TOIMIndexStoreSlot<TStore = unknown, TBucketSlot extends TOIMSlot = TOIMSlot, TBucketPatch = unknown, TSourceSlot extends TOIMSlot = TOIMSlot, TSourcePatch = unknown, TKey = unknown, TSourceStore = unknown, TSlotService = unknown> = TOIMStoreSlot<TStore, TBucketSlot, TBucketPatch, TSlotService> & {
|
|
1028
1141
|
readonly sourceStoreSlot: TOIMStoreSlot<TSourceStore, TSourceSlot, TSourcePatch>;
|
|
1029
1142
|
readonly indexKeysPosition: number;
|
|
1030
1143
|
readonly contentChangeListener: IOIMContentChangeListener<TSourceSlot, TSourcePatch>;
|
|
@@ -1034,21 +1147,21 @@ type TOIMIndexStoreSlot<TStore = unknown, TBucketSlot extends TOIMSlot = TOIMSlo
|
|
|
1034
1147
|
readonly isDisposed: boolean;
|
|
1035
1148
|
};
|
|
1036
1149
|
|
|
1037
|
-
type
|
|
1150
|
+
type TOIMSlotCollectionIndexServiceOptions<TKey extends NonNullable<unknown>, TEntity extends object, TBucketSlot extends TOIMKeyedSlot<TKey>, TStore, TSlotContentService, TSourceKey extends NonNullable<unknown>, TSourceStore> = TOIMSlotCollectionServiceOptions<TKey, TBucketSlot, TStore, TSlotContentService, string, TOIMColumnSlot, OIMPushColumnSlotOwner, readonly TOIMEntitySlot<TEntity>[]> & {
|
|
1038
1151
|
keyOf: (entity: TEntity) => TKey;
|
|
1039
1152
|
columns?: readonly string[] | undefined;
|
|
1040
1153
|
sourceSlotCollectionService: Pick<OIMSlotCollectionService<TSourceKey, TOIMEntitySlot<TEntity, TSourceKey>, TSourceStore, unknown>, 'getSlots'>;
|
|
1041
1154
|
indexKeysService: IOIMIndexKeysService;
|
|
1042
1155
|
};
|
|
1043
1156
|
|
|
1044
|
-
declare class
|
|
1157
|
+
declare class OIMSlotCollectionIndexService<TKey extends NonNullable<unknown>, TEntity extends object, TSlots, TSourceKey extends NonNullable<unknown> = NonNullable<unknown>, TSourceStore = unknown, TSlotContentService extends OIMSlotContentBucketService<TOIMEntitySlot<TEntity>, TSlots, TKey> = OIMSlotContentBucketService<TOIMEntitySlot<TEntity>, TSlots, TKey>, TBucketSlot extends TOIMBucketSlot<TSlots, TKey> = TOIMBucketSlot<TSlots, TKey>, TStore = Map<TKey, TBucketSlot>> extends OIMSlotCollectionService<TKey, TBucketSlot, TStore, Pick<TSlotContentService, Extract<keyof TSlotContentService, 'getBucketMemberSlots' | 'getBucketMemberSlotCount' | 'hasBucketMemberSlot' | 'getBucketMemberSlotAt' | 'getBucketMemberSlotPosition'>>, string, TOIMColumnSlot, OIMPushColumnSlotOwner, readonly TOIMEntitySlot<TEntity>[]> {
|
|
1045
1158
|
protected readonly slotContentBucketService: TSlotContentService;
|
|
1046
1159
|
private readonly keyOf;
|
|
1047
1160
|
private readonly keyColumns;
|
|
1048
1161
|
private readonly sourceSlotCollectionService;
|
|
1049
1162
|
private readonly indexKeysService;
|
|
1050
|
-
constructor(options:
|
|
1051
|
-
createIndexStoreSlot(sourceStoreSlot: TOIMStoreSlot<TSourceStore, TOIMEntitySlot<TEntity, TSourceKey>, Partial<TEntity>>): TOIMIndexStoreSlot<TStore, TBucketSlot, readonly TOIMEntitySlot<TEntity>[], TOIMEntitySlot<TEntity, TSourceKey>, Partial<TEntity>, TKey, TSourceStore>;
|
|
1163
|
+
constructor(options: TOIMSlotCollectionIndexServiceOptions<TKey, TEntity, TBucketSlot, TStore, TSlotContentService, TSourceKey, TSourceStore>);
|
|
1164
|
+
createIndexStoreSlot(sourceStoreSlot: TOIMStoreSlot<TSourceStore, TOIMEntitySlot<TEntity, TSourceKey>, Partial<TEntity>>): TOIMIndexStoreSlot<TStore, TBucketSlot, readonly TOIMEntitySlot<TEntity>[], TOIMEntitySlot<TEntity, TSourceKey>, Partial<TEntity>, TKey, TSourceStore, this>;
|
|
1052
1165
|
disposeIndexStoreSlot(indexStoreSlot: TOIMIndexStoreSlot<TStore, TBucketSlot, readonly TOIMEntitySlot<TEntity>[], TOIMEntitySlot<TEntity, TSourceKey>, Partial<TEntity>, TKey, TSourceStore>): void;
|
|
1053
1166
|
getSlotByKey(storeSlot: TOIMStoreSlot<TStore, TBucketSlot, readonly TOIMEntitySlot<TEntity>[]>, key: TKey): TBucketSlot;
|
|
1054
1167
|
holdSlotByKey(storeSlot: TOIMStoreSlot<TStore, TBucketSlot, readonly TOIMEntitySlot<TEntity>[]>, key: TKey): TBucketSlot;
|
|
@@ -1071,12 +1184,13 @@ declare class OIMIndexService<TKey, TEntity extends object, TSlots, TSourceKey =
|
|
|
1071
1184
|
private isBucketColumnChanged;
|
|
1072
1185
|
private updateIndexKeyForSlot;
|
|
1073
1186
|
private updateIndexKeysForSlots;
|
|
1187
|
+
private groupUnderMintedBucketKey;
|
|
1074
1188
|
private decideIndexKeyForSlot;
|
|
1075
1189
|
private collectSourceSlotsForKey;
|
|
1076
1190
|
private setIndexKeyForSlots;
|
|
1077
1191
|
}
|
|
1078
1192
|
|
|
1079
|
-
type
|
|
1193
|
+
type TOIMSlotCollectionIndexServiceStoreSlot<TKey extends NonNullable<unknown>, TEntity extends object, TSlots, TSourceKey extends NonNullable<unknown>, TSourceStore> = Parameters<OIMSlotCollectionIndexService<TKey, TEntity, TSlots, TSourceKey, TSourceStore>['getBucketColumnByKey']>[0];
|
|
1080
1194
|
|
|
1081
1195
|
type TOIMSortableColumnName<TEntity extends object> = {
|
|
1082
1196
|
[TColumn in keyof TEntity]-?: NonNullable<TEntity[TColumn]> extends string | number | bigint ? TColumn : never;
|
|
@@ -1087,8 +1201,8 @@ type TOIMSortColumn<TEntity extends object> = {
|
|
|
1087
1201
|
direction: 'asc' | 'desc';
|
|
1088
1202
|
};
|
|
1089
1203
|
|
|
1090
|
-
type
|
|
1091
|
-
indexService:
|
|
1204
|
+
type TOIMSortedComputedServiceOptions<TKey extends NonNullable<unknown>, TEntity extends object, TSlots, TSourceKey extends NonNullable<unknown>, TSourceStore, TComputedStore> = {
|
|
1205
|
+
indexService: OIMSlotCollectionIndexService<TKey, TEntity, TSlots, TSourceKey, TSourceStore>;
|
|
1092
1206
|
computedSlotStoreService: IOIMSlotStoreService<TKey, TOIMComputedSlot<readonly TOIMEntitySlot<TEntity>[], TKey>, TComputedStore>;
|
|
1093
1207
|
columnSlotStoreService: IOIMSlotStoreService<string, TOIMComputedColumnSlot>;
|
|
1094
1208
|
sortColumns?: readonly TOIMSortColumn<TEntity>[] | undefined;
|
|
@@ -1097,49 +1211,45 @@ type TOIMComputedServiceSortedOptions<TKey, TEntity extends object, TSlots, TSou
|
|
|
1097
1211
|
storeSlotListener: IOIMStoreSlotListener;
|
|
1098
1212
|
};
|
|
1099
1213
|
|
|
1100
|
-
declare class
|
|
1101
|
-
readonly computedCollectionService: OIMSlotCollectionService<TKey, TOIMSortedComputedSlot<TEntity, TKey>, TComputedStore,
|
|
1102
|
-
constructor(options:
|
|
1103
|
-
createSortedStoreSlot(indexStoreSlot:
|
|
1214
|
+
declare class OIMSortedComputedService<TKey extends NonNullable<unknown>, TEntity extends object, TSlots, TSourceKey extends NonNullable<unknown>, TSourceStore, TComputedStore> {
|
|
1215
|
+
readonly computedCollectionService: OIMSlotCollectionService<TKey, TOIMSortedComputedSlot<TEntity, TKey>, TComputedStore, OIMSlotContentComputedService<readonly TOIMEntitySlot<TEntity>[], TOIMSortedComputedSlot<TEntity, TKey>>, string, TOIMComputedColumnSlot, OIMPullColumnSlotOwner>;
|
|
1216
|
+
constructor(options: TOIMSortedComputedServiceOptions<TKey, TEntity, TSlots, TSourceKey, TSourceStore, TComputedStore>);
|
|
1217
|
+
createSortedStoreSlot(indexStoreSlot: TOIMSlotCollectionIndexServiceStoreSlot<TKey, TEntity, TSlots, TSourceKey, TSourceStore>): TOIMStoreSlot<TComputedStore, TOIMSortedComputedSlot<TEntity, TKey>>;
|
|
1104
1218
|
}
|
|
1105
1219
|
|
|
1106
|
-
|
|
1107
|
-
|
|
1220
|
+
type TOIMDefaultSlotStore<TKey, TSlot> = Map<TKey, TSlot>;
|
|
1221
|
+
|
|
1222
|
+
declare function createOIMSortedComputedService<TKey extends NonNullable<unknown>, TEntity extends object, TSlots, TSourceKey extends NonNullable<unknown>, TSourceStore, TComputedStore = TOIMDefaultSlotStore<TKey, TOIMComputedSlot<readonly TOIMEntitySlot<TEntity>[], TKey>>>(options: {
|
|
1223
|
+
indexService: OIMSlotCollectionIndexService<TKey, TEntity, TSlots, TSourceKey, TSourceStore>;
|
|
1108
1224
|
sortColumns?: readonly TOIMSortColumn<TEntity>[] | undefined;
|
|
1109
1225
|
comparator?: ((left: TEntity, right: TEntity) => number) | undefined;
|
|
1110
1226
|
slotReleasePolicy?: IOIMSlotReleasePolicy | undefined;
|
|
1111
1227
|
columnSlotStoreService?: IOIMSlotStoreService<string, TOIMComputedColumnSlot> | undefined;
|
|
1112
|
-
} & ([TComputedStore] extends [Map<TKey, TOIMComputedSlot<readonly TOIMEntitySlot<TEntity>[], TKey>>] ? {
|
|
1113
1228
|
computedSlotStoreService?: IOIMSlotStoreService<TKey, TOIMComputedSlot<readonly TOIMEntitySlot<TEntity>[], TKey>, TComputedStore> | undefined;
|
|
1114
|
-
}
|
|
1115
|
-
computedSlotStoreService: IOIMSlotStoreService<TKey, TOIMComputedSlot<readonly TOIMEntitySlot<TEntity>[], TKey>, TComputedStore>;
|
|
1116
|
-
})): OIMComputedServiceSorted<TKey, TEntity, TSlots, TSourceKey, TSourceStore, TComputedStore>;
|
|
1229
|
+
}): OIMSortedComputedService<TKey, TEntity, TSlots, TSourceKey, TSourceStore, TComputedStore>;
|
|
1117
1230
|
|
|
1118
|
-
type
|
|
1119
|
-
bucketCollectionService: OIMSlotCollectionService<TKey, TOIMBucketSlot<TSlots, TKey>, TBucketStore, OIMSlotContentBucketService<TBucketMemberSlot, TSlots>, string, TOIMColumnSlot,
|
|
1231
|
+
type TOIMBucketMemoComputedServiceOptions<TKey extends NonNullable<unknown>, TBucketMemberSlot extends TOIMSlot, TSlots, TBucketStore, TComputedStore> = {
|
|
1232
|
+
bucketCollectionService: OIMSlotCollectionService<TKey, TOIMBucketSlot<TSlots, TKey>, TBucketStore, OIMSlotContentBucketService<TBucketMemberSlot, TSlots>, string, TOIMColumnSlot, OIMPushColumnSlotOwner, readonly TBucketMemberSlot[]>;
|
|
1120
1233
|
computedSlotStoreService: IOIMSlotStoreService<TKey, TOIMComputedSlot<readonly TBucketMemberSlot[], TKey>, TComputedStore>;
|
|
1121
1234
|
columnSlotStoreService: IOIMSlotStoreService<string, TOIMComputedColumnSlot>;
|
|
1122
1235
|
slotReleasePolicy: IOIMSlotReleasePolicy;
|
|
1123
1236
|
storeSlotListener: IOIMStoreSlotListener;
|
|
1124
1237
|
};
|
|
1125
1238
|
|
|
1126
|
-
type TOIMBucketMemoComputedSlot<TBucketMemberSlot extends TOIMSlot, TKey
|
|
1239
|
+
type TOIMBucketMemoComputedSlot<TBucketMemberSlot extends TOIMSlot, TKey extends NonNullable<unknown>> = TOIMComputedSlot<readonly TBucketMemberSlot[], TKey>;
|
|
1127
1240
|
|
|
1128
|
-
declare class
|
|
1129
|
-
readonly computedCollectionService: OIMSlotCollectionService<TKey, TOIMBucketMemoComputedSlot<TBucketMemberSlot, TKey>, TComputedStore,
|
|
1130
|
-
constructor(options:
|
|
1241
|
+
declare class OIMBucketMemoComputedService<TKey extends NonNullable<unknown>, TBucketMemberSlot extends TOIMSlot, TSlots, TBucketStore, TComputedStore> {
|
|
1242
|
+
readonly computedCollectionService: OIMSlotCollectionService<TKey, TOIMBucketMemoComputedSlot<TBucketMemberSlot, TKey>, TComputedStore, OIMSlotContentComputedService<readonly TBucketMemberSlot[], TOIMBucketMemoComputedSlot<TBucketMemberSlot, TKey>>, string, TOIMComputedColumnSlot, OIMPullColumnSlotOwner>;
|
|
1243
|
+
constructor(options: TOIMBucketMemoComputedServiceOptions<TKey, TBucketMemberSlot, TSlots, TBucketStore, TComputedStore>);
|
|
1131
1244
|
createBucketMemoStoreSlot(bucketStoreSlot: TOIMStoreSlot<TBucketStore, TOIMBucketSlot<TSlots, TKey>, readonly TBucketMemberSlot[]>): TOIMStoreSlot<TComputedStore, TOIMBucketMemoComputedSlot<TBucketMemberSlot, TKey>>;
|
|
1132
1245
|
}
|
|
1133
1246
|
|
|
1134
|
-
declare function
|
|
1135
|
-
bucketCollectionService: OIMSlotCollectionService<TKey, TOIMBucketSlot<TSlots, TKey>, TBucketStore, OIMSlotContentBucketService<TBucketMemberSlot, TSlots>, string, TOIMColumnSlot,
|
|
1247
|
+
declare function createOIMBucketMemoComputedService<TKey extends NonNullable<unknown>, TBucketMemberSlot extends TOIMSlot, TSlots, TBucketStore, TComputedStore = TOIMDefaultSlotStore<TKey, TOIMComputedSlot<readonly TBucketMemberSlot[], TKey>>>(options: {
|
|
1248
|
+
bucketCollectionService: OIMSlotCollectionService<TKey, TOIMBucketSlot<TSlots, TKey>, TBucketStore, OIMSlotContentBucketService<TBucketMemberSlot, TSlots>, string, TOIMColumnSlot, OIMPushColumnSlotOwner, readonly TBucketMemberSlot[]>;
|
|
1136
1249
|
slotReleasePolicy?: IOIMSlotReleasePolicy | undefined;
|
|
1137
1250
|
columnSlotStoreService?: IOIMSlotStoreService<string, TOIMComputedColumnSlot> | undefined;
|
|
1138
|
-
} & ([TComputedStore] extends [Map<TKey, TOIMComputedSlot<readonly TBucketMemberSlot[], TKey>>] ? {
|
|
1139
1251
|
computedSlotStoreService?: IOIMSlotStoreService<TKey, TOIMComputedSlot<readonly TBucketMemberSlot[], TKey>, TComputedStore> | undefined;
|
|
1140
|
-
}
|
|
1141
|
-
computedSlotStoreService: IOIMSlotStoreService<TKey, TOIMComputedSlot<readonly TBucketMemberSlot[], TKey>, TComputedStore>;
|
|
1142
|
-
})): OIMComputedServiceBucketMemo<TKey, TBucketMemberSlot, TSlots, TBucketStore, TComputedStore>;
|
|
1252
|
+
}): OIMBucketMemoComputedService<TKey, TBucketMemberSlot, TSlots, TBucketStore, TComputedStore>;
|
|
1143
1253
|
|
|
1144
1254
|
type TOIMBucketCommandsOptions = {
|
|
1145
1255
|
maxCommandsPerSlot?: number | undefined;
|
|
@@ -1148,26 +1258,27 @@ type TOIMBucketCommandsOptions = {
|
|
|
1148
1258
|
declare class OIMBucketCommands implements IOIMBucketCommands {
|
|
1149
1259
|
private readonly maxCommandsPerSlot;
|
|
1150
1260
|
constructor(options: TOIMBucketCommandsOptions);
|
|
1151
|
-
recordInsert(bucketSlot:
|
|
1152
|
-
recordRemove(bucketSlot:
|
|
1153
|
-
recordMove(bucketSlot:
|
|
1154
|
-
recordWholeList(bucketSlot:
|
|
1261
|
+
recordInsert(bucketSlot: TOIMBucketContentSlot<unknown>, index: number, bucketMemberSlot: TOIMSlot, bucketMemberSlotCount: number): void;
|
|
1262
|
+
recordRemove(bucketSlot: TOIMBucketContentSlot<unknown>, index: number, count: number, bucketMemberSlotCount: number): void;
|
|
1263
|
+
recordMove(bucketSlot: TOIMBucketContentSlot<unknown>, from: number, to: number, bucketMemberSlotCount: number): void;
|
|
1264
|
+
recordWholeList(bucketSlot: TOIMBucketContentSlot<unknown>): void;
|
|
1155
1265
|
private recordCommand;
|
|
1156
1266
|
}
|
|
1157
1267
|
|
|
1158
|
-
declare class
|
|
1268
|
+
declare class OIMSlotCollectionSortedArrayIndexService<TKey extends NonNullable<unknown>, TEntity extends object, TSourceKey extends NonNullable<unknown> = NonNullable<unknown>, TSourceStore = unknown, TBucketSlot extends TOIMBucketSlot<TOIMBucketSlotsArrayStore<TOIMEntitySlot<TEntity>>, TKey> = TOIMBucketSlot<TOIMBucketSlotsArrayStore<TOIMEntitySlot<TEntity>>, TKey>, TStore = Map<TKey, TBucketSlot>> extends OIMSlotCollectionIndexService<TKey, TEntity, TOIMBucketSlotsArrayStore<TOIMEntitySlot<TEntity>>, TSourceKey, TSourceStore, OIMSlotContentSortedArrayBucketService<TOIMEntitySlot<TEntity>, TKey>, TBucketSlot, TStore> {
|
|
1159
1269
|
private readonly sortColumnNames;
|
|
1160
|
-
constructor(options:
|
|
1270
|
+
constructor(options: TOIMSlotCollectionIndexServiceOptions<TKey, TEntity, TBucketSlot, TStore, OIMSlotContentSortedArrayBucketService<TOIMEntitySlot<TEntity>, TKey>, TSourceKey, TSourceStore> & {
|
|
1161
1271
|
sortColumns: readonly TOIMSortColumn<TEntity>[];
|
|
1162
1272
|
});
|
|
1163
|
-
createIndexStoreSlot(sourceStoreSlot: TOIMStoreSlot<TSourceStore, TOIMEntitySlot<TEntity, TSourceKey>, Partial<TEntity>>): TOIMIndexStoreSlot<TStore, TBucketSlot, readonly TOIMEntitySlot<TEntity>[], TOIMEntitySlot<TEntity, TSourceKey>, Partial<TEntity>, TKey, TSourceStore>;
|
|
1273
|
+
createIndexStoreSlot(sourceStoreSlot: TOIMStoreSlot<TSourceStore, TOIMEntitySlot<TEntity, TSourceKey>, Partial<TEntity>>): TOIMIndexStoreSlot<TStore, TBucketSlot, readonly TOIMEntitySlot<TEntity>[], TOIMEntitySlot<TEntity, TSourceKey>, Partial<TEntity>, TKey, TSourceStore, this>;
|
|
1164
1274
|
protected onBucketColumnsChanged(_indexStoreSlot: TOIMIndexStoreSlot<TStore, TBucketSlot, readonly TOIMEntitySlot<TEntity>[], TOIMEntitySlot<TEntity, TSourceKey>, Partial<TEntity>, TKey, TSourceStore>, bucketSlot: TBucketSlot, entitySlot: TOIMEntitySlot<TEntity, TSourceKey>, changedColumns: readonly string[] | undefined): void;
|
|
1165
1275
|
private isSortColumnChanged;
|
|
1166
1276
|
}
|
|
1167
1277
|
|
|
1168
|
-
type
|
|
1278
|
+
type TOIMSlotCollectionIndexServiceFactoryOptions<TEntity extends object, TSourceKey extends NonNullable<unknown>, TSourceStore> = {
|
|
1169
1279
|
entityService: Pick<OIMSlotCollectionService<TSourceKey, TOIMEntitySlot<TEntity, TSourceKey>, TSourceStore, unknown>, 'getSlots'>;
|
|
1170
1280
|
slotReleasePolicy?: IOIMSlotReleasePolicy | undefined;
|
|
1281
|
+
slotSubscriptionListener?: IOIMSlotSubscriptionListener | undefined;
|
|
1171
1282
|
columnSlotStoreService?: IOIMSlotStoreService<string, TOIMColumnSlot> | undefined;
|
|
1172
1283
|
columnNames?: readonly string[] | undefined;
|
|
1173
1284
|
};
|
|
@@ -1184,34 +1295,19 @@ type TOIMIndexKeyOptions<TKey, TEntity extends object, TColumns extends readonly
|
|
|
1184
1295
|
columns: [TKey] extends [never] ? never : [TKey] extends [TOIMIndexKey<TEntity, TColumns>] ? TColumns : never;
|
|
1185
1296
|
};
|
|
1186
1297
|
|
|
1187
|
-
declare function
|
|
1188
|
-
slotContentService?: (TSlotContentService & OIMSlotContentBucketService<TOIMEntitySlot<TEntity>, TSlots>) | undefined;
|
|
1298
|
+
declare function createOIMSlotCollectionIndexService<TEntity extends object, TSourceKey extends NonNullable<unknown>, const TColumns extends readonly TOIMEntityColumnName<TEntity>[] = readonly TOIMEntityColumnName<TEntity>[], TKey extends TOIMStoreKey = [TOIMIndexKey<TEntity, TColumns>] extends [TOIMStoreKey] ? Extract<TOIMIndexKey<TEntity, TColumns>, TOIMStoreKey> : never, TSourceStore = unknown, TSlots = TOIMBucketSlotsArrayStore<TOIMEntitySlot<TEntity>>, TSlotContentService extends OIMSlotContentBucketService<TOIMEntitySlot<TEntity>, TSlots, TKey> = OIMSlotContentPositionalArrayBucketService<TOIMEntitySlot<TEntity>, TKey> & OIMSlotContentBucketService<TOIMEntitySlot<TEntity>, TSlots, TKey>>(db: OIMDB, options: TOIMSlotCollectionIndexServiceFactoryOptions<TEntity, TSourceKey, TSourceStore> & {
|
|
1299
|
+
slotContentService?: (TSlotContentService & OIMSlotContentBucketService<TOIMEntitySlot<TEntity>, TSlots, TKey>) | undefined;
|
|
1189
1300
|
bucketSlotStoreService?: undefined;
|
|
1190
|
-
} & TOIMIndexKeyOptions<TKey, TEntity, TColumns>):
|
|
1191
|
-
declare function
|
|
1192
|
-
slotContentService?: (TSlotContentService & OIMSlotContentBucketService<TOIMEntitySlot<TEntity>, TSlots>) | undefined;
|
|
1301
|
+
} & TOIMIndexKeyOptions<TKey, TEntity, TColumns>): OIMSlotCollectionIndexService<TKey, TEntity, TSlots, TSourceKey, TSourceStore, TSlotContentService, TOIMBucketSlot<TSlots, TKey>, Map<TKey, TOIMBucketSlot<TSlots, TKey>>>;
|
|
1302
|
+
declare function createOIMSlotCollectionIndexService<TEntity extends object, TSourceKey extends NonNullable<unknown>, const TColumns extends readonly TOIMEntityColumnName<TEntity>[] = readonly TOIMEntityColumnName<TEntity>[], TKey extends TOIMStoreKey | readonly TOIMStoreKey[] = TOIMStoreKey, TSourceStore = unknown, TSlots = TOIMBucketSlotsArrayStore<TOIMEntitySlot<TEntity>>, TSlotContentService extends OIMSlotContentBucketService<TOIMEntitySlot<TEntity>, TSlots, TKey> = OIMSlotContentPositionalArrayBucketService<TOIMEntitySlot<TEntity>, TKey> & OIMSlotContentBucketService<TOIMEntitySlot<TEntity>, TSlots, TKey>, TStore = Map<TKey, TOIMBucketSlot<TSlots, TKey>>>(db: OIMDB, options: TOIMSlotCollectionIndexServiceFactoryOptions<TEntity, TSourceKey, TSourceStore> & {
|
|
1303
|
+
slotContentService?: (TSlotContentService & OIMSlotContentBucketService<TOIMEntitySlot<TEntity>, TSlots, TKey>) | undefined;
|
|
1193
1304
|
bucketSlotStoreService: IOIMSlotStoreService<TKey, TOIMBucketSlot<TSlots, TKey>, TStore>;
|
|
1194
|
-
} & TOIMIndexKeyOptions<TKey, TEntity, TColumns>):
|
|
1195
|
-
|
|
1196
|
-
type TOIMCompositeKeyNode<TAtKey = unknown, TCompositeKeyPart = TOIMEntitySlot> = {
|
|
1197
|
-
childNodes: Map<TCompositeKeyPart, TOIMCompositeKeyNode<TAtKey, TCompositeKeyPart>> | undefined;
|
|
1198
|
-
atThisKey: TAtKey | undefined;
|
|
1199
|
-
};
|
|
1200
|
-
|
|
1201
|
-
type TOIMSlotStoreTree<TSlot, TCompositeKeyPart> = {
|
|
1202
|
-
readonly root: TOIMCompositeKeyNode<TSlot, TCompositeKeyPart>;
|
|
1203
|
-
readonly slots: Set<TSlot>;
|
|
1204
|
-
};
|
|
1205
|
-
|
|
1206
|
-
declare function createOIMIndexServiceByCompositeKey<TEntity extends object, TSourceKey, const TColumns extends readonly TOIMEntityColumnName<TEntity>[] = readonly TOIMEntityColumnName<TEntity>[], TKey extends readonly TOIMStoreKey[] = Extract<TOIMIndexKey<TEntity, TColumns>, readonly TOIMStoreKey[]>, TSourceStore = unknown, TSlots = TOIMBucketSlotsArrayStore<TOIMEntitySlot<TEntity>>, TSlotContentService extends OIMSlotContentBucketService<TOIMEntitySlot<TEntity>, TSlots> = OIMSlotContentBucketServiceArrayDriven<TOIMEntitySlot<TEntity>> & OIMSlotContentBucketService<TOIMEntitySlot<TEntity>, TSlots>>(db: OIMDB, options: TOIMIndexServiceFactoryOptions<TEntity, TSourceKey, TSourceStore> & {
|
|
1207
|
-
columns: [TKey] extends [never] ? never : TColumns;
|
|
1208
|
-
slotContentService?: (TSlotContentService & OIMSlotContentBucketService<TOIMEntitySlot<TEntity>, TSlots>) | undefined;
|
|
1209
|
-
}): OIMIndexService<TKey, TEntity, TSlots, TSourceKey, TSourceStore, TSlotContentService, TOIMBucketSlot<TSlots, TKey>, TOIMSlotStoreTree<TOIMBucketSlot<TSlots, TKey>, TOIMStoreKey>>;
|
|
1305
|
+
} & TOIMIndexKeyOptions<TKey, TEntity, TColumns>): OIMSlotCollectionIndexService<TKey, TEntity, TSlots, TSourceKey, TSourceStore, TSlotContentService, TOIMBucketSlot<TSlots, TKey>, TStore>;
|
|
1210
1306
|
|
|
1211
|
-
declare function
|
|
1307
|
+
declare function createOIMSlotCollectionSortedArrayIndexService<TEntity extends object, TSourceKey extends NonNullable<unknown>, const TColumns extends readonly TOIMEntityColumnName<TEntity>[] = readonly TOIMEntityColumnName<TEntity>[], TKey extends TOIMStoreKey = [TOIMIndexKey<TEntity, TColumns>] extends [TOIMStoreKey] ? Extract<TOIMIndexKey<TEntity, TColumns>, TOIMStoreKey> : never, TSourceStore = unknown, TStore = Map<TKey, TOIMBucketSlot<TOIMBucketSlotsArrayStore<TOIMEntitySlot<TEntity>>, TKey>>>(db: OIMDB, options: TOIMSlotCollectionIndexServiceFactoryOptions<TEntity, TSourceKey, TSourceStore> & {
|
|
1212
1308
|
sortColumns: readonly TOIMSortColumn<TEntity>[];
|
|
1213
|
-
bucketSlotStoreService?: IOIMSlotStoreService<TKey, TOIMBucketSlot<
|
|
1214
|
-
} & TOIMIndexKeyOptions<TKey, TEntity, TColumns>):
|
|
1309
|
+
bucketSlotStoreService?: IOIMSlotStoreService<TKey, TOIMBucketSlot<TOIMBucketSlotsArrayStore<TOIMEntitySlot<TEntity>>, TKey>, TStore> | undefined;
|
|
1310
|
+
} & TOIMIndexKeyOptions<TKey, TEntity, TColumns>): OIMSlotCollectionSortedArrayIndexService<TKey, TEntity, TSourceKey, TSourceStore, TOIMBucketSlot<TOIMBucketSlotsArrayStore<TOIMEntitySlot<TEntity>>, TKey>, TStore>;
|
|
1215
1311
|
|
|
1216
1312
|
type TOIMFactoryOptions<TClassOptions, TFilledByDb extends PropertyKey, TDefaulted extends PropertyKey> = Omit<TClassOptions, TFilledByDb | TDefaulted> & {
|
|
1217
1313
|
[TName in TDefaulted & keyof TClassOptions]?: TClassOptions[TName] | undefined;
|
|
@@ -1227,28 +1323,28 @@ declare abstract class OIMIndexKeysService implements IOIMIndexKeysService {
|
|
|
1227
1323
|
set<TIndexKey>(slot: TOIMIndexableSlot, position: number, indexKey: TIndexKey | undefined): void;
|
|
1228
1324
|
}
|
|
1229
1325
|
|
|
1230
|
-
declare class
|
|
1231
|
-
static readonly INSTANCE:
|
|
1326
|
+
declare class OIMAppendingIndexKeysService extends OIMIndexKeysService {
|
|
1327
|
+
static readonly INSTANCE: OIMAppendingIndexKeysService;
|
|
1232
1328
|
allocatePosition(positions: TOIMIndexKeysPositions): number;
|
|
1233
1329
|
releasePosition(): void;
|
|
1234
1330
|
}
|
|
1235
1331
|
|
|
1236
|
-
declare class
|
|
1332
|
+
declare class OIMReclaimingIndexKeysService extends OIMIndexKeysService {
|
|
1237
1333
|
allocatePosition(positions: TOIMIndexKeysPositions): number;
|
|
1238
1334
|
releasePosition(positions: TOIMIndexKeysPositions, position: number, slots: Iterable<TOIMIndexableSlot>): void;
|
|
1239
1335
|
}
|
|
1240
1336
|
|
|
1241
|
-
type
|
|
1337
|
+
type TOIMEntityInserter = <TEntity extends object>(slot: TOIMEntityContentSlot<TEntity>, entity: TEntity) => void;
|
|
1242
1338
|
|
|
1243
|
-
declare function oimPutEntityColumns(slot:
|
|
1339
|
+
declare function oimPutEntityColumns(slot: TOIMEntityContentSlot, entity: object, sameValueGuard: TOIMSameValueGuard, changedColumnNames: string[] | undefined, targetOf: (entity: Record<string, unknown>) => Record<string, unknown>): Record<string, unknown> | undefined;
|
|
1244
1340
|
|
|
1245
|
-
declare function oimPatchEntityColumns(slot:
|
|
1341
|
+
declare function oimPatchEntityColumns(slot: TOIMEntityContentSlot, patch: object, sameValueGuard: TOIMSameValueGuard, changedColumnNames: string[] | undefined, targetOf: (entity: Record<string, unknown>) => Record<string, unknown>): Record<string, unknown> | undefined;
|
|
1246
1342
|
|
|
1247
|
-
declare function oimPatchEntityColumn(slot:
|
|
1343
|
+
declare function oimPatchEntityColumn(slot: TOIMEntityContentSlot, columnName: string, value: unknown, sameValueGuard: TOIMSameValueGuard, changedColumnNames: string[] | undefined, targetOf: (entity: Record<string, unknown>) => Record<string, unknown>): Record<string, unknown> | undefined;
|
|
1248
1344
|
|
|
1249
1345
|
type TOIMEntityWriterOptions = {
|
|
1250
1346
|
sameValueGuard?: TOIMSameValueGuard | undefined;
|
|
1251
|
-
|
|
1347
|
+
entityInserter?: TOIMEntityInserter | undefined;
|
|
1252
1348
|
putEntityColumns?: typeof oimPutEntityColumns | undefined;
|
|
1253
1349
|
patchEntityColumns?: typeof oimPatchEntityColumns | undefined;
|
|
1254
1350
|
patchEntityColumn?: typeof oimPatchEntityColumn | undefined;
|
|
@@ -1258,11 +1354,11 @@ declare function createOIMEntityWriterInPlace(options?: TOIMEntityWriterOptions)
|
|
|
1258
1354
|
|
|
1259
1355
|
declare function createOIMEntityWriterReplacing(options?: TOIMEntityWriterOptions): IOIMEntityWriter;
|
|
1260
1356
|
|
|
1261
|
-
declare function oimInsertEntityWithoutCopy<TEntity extends object>(slot:
|
|
1357
|
+
declare function oimInsertEntityWithoutCopy<TEntity extends object>(slot: TOIMEntityContentSlot<TEntity>, entity: TEntity): void;
|
|
1262
1358
|
|
|
1263
|
-
declare function oimInsertEntityWithCopy<TEntity extends object>(slot:
|
|
1359
|
+
declare function oimInsertEntityWithCopy<TEntity extends object>(slot: TOIMEntityContentSlot<TEntity>, entity: TEntity): void;
|
|
1264
1360
|
|
|
1265
|
-
declare function oimInsertEntityWithSanitizedCopy<TEntity extends object>(slot:
|
|
1361
|
+
declare function oimInsertEntityWithSanitizedCopy<TEntity extends object>(slot: TOIMEntityContentSlot<TEntity>, entity: TEntity): void;
|
|
1266
1362
|
|
|
1267
1363
|
declare const oimPatchEntityColumnsGuarded: typeof oimPatchEntityColumns;
|
|
1268
1364
|
|
|
@@ -1270,62 +1366,45 @@ declare const oimPatchEntityColumnGuarded: typeof oimPatchEntityColumn;
|
|
|
1270
1366
|
|
|
1271
1367
|
declare const oimPutEntityColumnsGuarded: typeof oimPutEntityColumns;
|
|
1272
1368
|
|
|
1273
|
-
declare
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
cancelSlotRelease(releaseSlotCollectorSlot: TOIMReleaseSlotCollectorSlot, slot: TOIMSlot): void;
|
|
1282
|
-
scheduleNextRelease(releaseSlotCollectorSlot: TOIMReleaseSlotCollectorSlot): void;
|
|
1283
|
-
protected cancelSchedule(releaseSlotCollectorSlot: TOIMReleaseSlotCollectorSlot): void;
|
|
1284
|
-
flush(releaseSlotCollectorSlot: TOIMReleaseSlotCollectorSlot): void;
|
|
1285
|
-
protected onSchedulerTimerFired(releaseSlotCollectorSlot: TOIMReleaseSlotCollectorSlot): void;
|
|
1286
|
-
cancelAllSlotReleases(releaseSlotCollectorSlot: TOIMReleaseSlotCollectorSlot): void;
|
|
1287
|
-
}
|
|
1288
|
-
|
|
1289
|
-
declare function createOIMReleaseSlotCollectorSlot(options: TOIMCollectorSlotOptions): TOIMReleaseSlotCollectorSlot;
|
|
1290
|
-
|
|
1291
|
-
declare class OIMReleaseSlotQueueService {
|
|
1292
|
-
static readonly INSTANCE: OIMReleaseSlotQueueService;
|
|
1293
|
-
scheduleSlotRelease(releaseSlotCollectorSlot: TOIMReleaseSlotCollectorSlot, releaseSlotCollectorService: OIMReleaseSlotCollectorService, slot: TOIMSlot, nowMs: number): void;
|
|
1294
|
-
cancelSlotRelease(releaseSlotCollectorSlot: TOIMReleaseSlotCollectorSlot, slot: TOIMSlot): void;
|
|
1295
|
-
getNextReleaseSliceNumber(releaseSlotCollectorSlot: TOIMReleaseSlotCollectorSlot): number | undefined;
|
|
1296
|
-
cancelAllSlotReleases(releaseSlotCollectorSlot: TOIMReleaseSlotCollectorSlot): void;
|
|
1297
|
-
isSlotReleaseScheduled(releaseSlotCollectorSlot: TOIMReleaseSlotCollectorSlot, slot: TOIMSlot): boolean;
|
|
1298
|
-
releaseDueUpToSliceNumber(releaseSlotCollectorSlot: TOIMReleaseSlotCollectorSlot, releaseSlotCollectorService: OIMReleaseSlotCollectorService, upToSliceNumber: number): void;
|
|
1299
|
-
private releaseSlice;
|
|
1300
|
-
private removeFromSliceNumber;
|
|
1301
|
-
private updateNextSliceNumber;
|
|
1302
|
-
private invalidateNextSliceNumber;
|
|
1303
|
-
private addToSliceNumber;
|
|
1304
|
-
}
|
|
1305
|
-
|
|
1306
|
-
declare class OIMReleaseSlotCollectorServiceAfterIdle extends OIMReleaseSlotCollectorService {
|
|
1307
|
-
static readonly INSTANCE: OIMReleaseSlotCollectorServiceAfterIdle;
|
|
1308
|
-
readonly getReleaseDueMs: (slot: TOIMSlot) => number;
|
|
1309
|
-
protected readonly setReleaseDueMs: (slot: TOIMSlot, releaseDueMs: number) => void;
|
|
1310
|
-
getReleaseSlotCollectorSlot(collectorSlot: TOIMCollectorSlot): TOIMReleaseSlotCollectorSlot;
|
|
1369
|
+
declare function oimMintAfterWriteSlotReleaseWheel(collectorSlot: TOIMCollectorSlot): OIMSlotReleaseWheel;
|
|
1370
|
+
|
|
1371
|
+
declare function oimMintAfterIdleSlotReleaseWheel(collectorSlot: TOIMCollectorSlot): OIMSlotReleaseWheel;
|
|
1372
|
+
|
|
1373
|
+
declare function oimMintAfterUnholdSlotReleaseWheel(collectorSlot: TOIMCollectorSlot): OIMSlotReleaseWheel;
|
|
1374
|
+
|
|
1375
|
+
interface IOIMSlotRefetchListener {
|
|
1376
|
+
onSlotsRefetchDue(slots: readonly TOIMSlot[]): void;
|
|
1311
1377
|
}
|
|
1312
1378
|
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1379
|
+
type TOIMSlotRefetchWheelOptions = Partial<TOIMSlotWheelOptions> & {
|
|
1380
|
+
slotRefetchListener: IOIMSlotRefetchListener;
|
|
1381
|
+
};
|
|
1382
|
+
|
|
1383
|
+
declare class OIMSlotRefetchWheel extends OIMSlotWheel {
|
|
1384
|
+
private readonly slotRefetchListener;
|
|
1385
|
+
private readonly refetchDueSlots;
|
|
1386
|
+
constructor(options: TOIMSlotRefetchWheelOptions);
|
|
1387
|
+
scheduleSlotRefetchAt(slot: TOIMSlot, atMs: number): void;
|
|
1388
|
+
protected getSweptSliceNumberAt(nowMs: number): number;
|
|
1389
|
+
protected onSlotDue(slot: TOIMSlot): void;
|
|
1390
|
+
protected onSweepFinished(): void;
|
|
1391
|
+
}
|
|
1392
|
+
|
|
1393
|
+
interface IOIMSlotReleaseDueFramePolicy {
|
|
1394
|
+
isSlotReleaseDueFrameOpen(): boolean;
|
|
1318
1395
|
}
|
|
1319
1396
|
|
|
1320
|
-
type
|
|
1397
|
+
type TOIMSlotAfterWriteReleasePolicyOptions = {
|
|
1321
1398
|
keepAfterWriteMs: number;
|
|
1399
|
+
slotReleaseDueFramePolicy?: IOIMSlotReleaseDueFramePolicy;
|
|
1322
1400
|
};
|
|
1323
1401
|
|
|
1324
|
-
declare class
|
|
1402
|
+
declare class OIMSlotAfterWriteReleasePolicy implements IOIMSlotReleasePolicy {
|
|
1325
1403
|
readonly releasesWrittenSlots = true;
|
|
1326
1404
|
readonly schedulesReleaseOnWrite = true;
|
|
1327
1405
|
private readonly keepAfterWriteMs;
|
|
1328
|
-
|
|
1406
|
+
private readonly slotReleaseDueFramePolicy;
|
|
1407
|
+
constructor(options: TOIMSlotAfterWriteReleasePolicyOptions);
|
|
1329
1408
|
onSlotWritten(slot: TOIMSlot): void;
|
|
1330
1409
|
onSlotIdle(slot: TOIMSlot): boolean;
|
|
1331
1410
|
onSlotUnheld(): void;
|
|
@@ -1334,15 +1413,28 @@ declare class OIMSlotReleasePolicyAfterWrite implements IOIMSlotReleasePolicy {
|
|
|
1334
1413
|
cancelSlotRelease(slot: TOIMSlot): void;
|
|
1335
1414
|
}
|
|
1336
1415
|
|
|
1337
|
-
|
|
1416
|
+
declare class OIMSlotReleaseAutoDueFramePolicy implements IOIMSlotReleaseDueFramePolicy {
|
|
1417
|
+
static readonly INSTANCE: OIMSlotReleaseAutoDueFramePolicy;
|
|
1418
|
+
isSlotReleaseDueFrameOpen(): boolean;
|
|
1419
|
+
}
|
|
1420
|
+
|
|
1421
|
+
declare class OIMSlotReleaseManualDueFramePolicy implements IOIMSlotReleaseDueFramePolicy {
|
|
1422
|
+
private slotReleaseDueFrameDepth;
|
|
1423
|
+
isSlotReleaseDueFrameOpen(): boolean;
|
|
1424
|
+
openSlotReleaseDueFrame(): void;
|
|
1425
|
+
closeSlotReleaseDueFrame(): void;
|
|
1426
|
+
writeInSlotReleaseDueFrame(write: () => void): void;
|
|
1427
|
+
}
|
|
1428
|
+
|
|
1429
|
+
type TOIMSlotAfterIdleReleasePolicyOptions = {
|
|
1338
1430
|
keepAfterIdleMs: number;
|
|
1339
1431
|
};
|
|
1340
1432
|
|
|
1341
|
-
declare class
|
|
1433
|
+
declare class OIMSlotAfterIdleReleasePolicy implements IOIMSlotReleasePolicy {
|
|
1342
1434
|
readonly releasesWrittenSlots = true;
|
|
1343
1435
|
readonly schedulesReleaseOnWrite = true;
|
|
1344
1436
|
private readonly keepAfterIdleMs;
|
|
1345
|
-
constructor(options:
|
|
1437
|
+
constructor(options: TOIMSlotAfterIdleReleasePolicyOptions);
|
|
1346
1438
|
onSlotWritten(): void;
|
|
1347
1439
|
onSlotIdle(slot: TOIMSlot): boolean;
|
|
1348
1440
|
onSlotUnheld(): void;
|
|
@@ -1351,8 +1443,8 @@ declare class OIMSlotReleasePolicyAfterIdle implements IOIMSlotReleasePolicy {
|
|
|
1351
1443
|
cancelSlotRelease(slot: TOIMSlot): void;
|
|
1352
1444
|
}
|
|
1353
1445
|
|
|
1354
|
-
declare class
|
|
1355
|
-
static readonly INSTANCE:
|
|
1446
|
+
declare class OIMSlotAtUnholdReleasePolicy implements IOIMSlotReleasePolicy {
|
|
1447
|
+
static readonly INSTANCE: OIMSlotAtUnholdReleasePolicy;
|
|
1356
1448
|
readonly releasesWrittenSlots = true;
|
|
1357
1449
|
readonly schedulesReleaseOnWrite = false;
|
|
1358
1450
|
onSlotWritten(): void;
|
|
@@ -1363,8 +1455,8 @@ declare class OIMSlotReleasePolicyAtUnhold implements IOIMSlotReleasePolicy {
|
|
|
1363
1455
|
cancelSlotRelease(): void;
|
|
1364
1456
|
}
|
|
1365
1457
|
|
|
1366
|
-
declare class
|
|
1367
|
-
static readonly INSTANCE:
|
|
1458
|
+
declare class OIMSlotAtEmptyReleasePolicy implements IOIMSlotReleasePolicy {
|
|
1459
|
+
static readonly INSTANCE: OIMSlotAtEmptyReleasePolicy;
|
|
1368
1460
|
readonly releasesWrittenSlots = false;
|
|
1369
1461
|
readonly schedulesReleaseOnWrite = false;
|
|
1370
1462
|
onSlotWritten(): void;
|
|
@@ -1375,8 +1467,8 @@ declare class OIMSlotReleasePolicyAtEmpty implements IOIMSlotReleasePolicy {
|
|
|
1375
1467
|
cancelSlotRelease(): void;
|
|
1376
1468
|
}
|
|
1377
1469
|
|
|
1378
|
-
declare class
|
|
1379
|
-
static readonly INSTANCE:
|
|
1470
|
+
declare class OIMSlotNeverReleasePolicy implements IOIMSlotReleasePolicy {
|
|
1471
|
+
static readonly INSTANCE: OIMSlotNeverReleasePolicy;
|
|
1380
1472
|
readonly releasesWrittenSlots = false;
|
|
1381
1473
|
readonly schedulesReleaseOnWrite = false;
|
|
1382
1474
|
onSlotWritten(): void;
|
|
@@ -1387,15 +1479,15 @@ declare class OIMSlotReleasePolicyNever implements IOIMSlotReleasePolicy {
|
|
|
1387
1479
|
cancelSlotRelease(): void;
|
|
1388
1480
|
}
|
|
1389
1481
|
|
|
1390
|
-
type
|
|
1482
|
+
type TOIMSlotAfterUnholdReleasePolicyOptions = {
|
|
1391
1483
|
keepAfterUnholdMs: number;
|
|
1392
1484
|
};
|
|
1393
1485
|
|
|
1394
|
-
declare class
|
|
1486
|
+
declare class OIMSlotAfterUnholdReleasePolicy implements IOIMSlotReleasePolicy {
|
|
1395
1487
|
readonly releasesWrittenSlots = true;
|
|
1396
1488
|
readonly schedulesReleaseOnWrite = false;
|
|
1397
1489
|
private readonly keepAfterUnholdMs;
|
|
1398
|
-
constructor(options:
|
|
1490
|
+
constructor(options: TOIMSlotAfterUnholdReleasePolicyOptions);
|
|
1399
1491
|
onSlotWritten(): void;
|
|
1400
1492
|
onSlotIdle(): boolean;
|
|
1401
1493
|
onSlotUnheld(slot: TOIMSlot): void;
|
|
@@ -1404,14 +1496,7 @@ declare class OIMSlotReleasePolicyAfterUnhold implements IOIMSlotReleasePolicy {
|
|
|
1404
1496
|
cancelSlotRelease(slot: TOIMSlot): void;
|
|
1405
1497
|
}
|
|
1406
1498
|
|
|
1407
|
-
declare class
|
|
1408
|
-
static readonly INSTANCE: OIMReleaseSlotCollectorServiceAfterUnhold;
|
|
1409
|
-
readonly getReleaseDueMs: (slot: TOIMSlot) => number;
|
|
1410
|
-
protected readonly setReleaseDueMs: (slot: TOIMSlot, releaseDueMs: number) => void;
|
|
1411
|
-
getReleaseSlotCollectorSlot(collectorSlot: TOIMCollectorSlot): TOIMReleaseSlotCollectorSlot;
|
|
1412
|
-
}
|
|
1413
|
-
|
|
1414
|
-
declare class OIMSlotReleasePolicyEarliest implements IOIMSlotReleasePolicy {
|
|
1499
|
+
declare class OIMSlotEarliestReleasePolicy implements IOIMSlotReleasePolicy {
|
|
1415
1500
|
readonly releasesWrittenSlots: boolean;
|
|
1416
1501
|
readonly schedulesReleaseOnWrite: boolean;
|
|
1417
1502
|
private readonly slotReleasePolicies;
|
|
@@ -1429,25 +1514,37 @@ declare const oimSliceOfMs: (ms: number) => number;
|
|
|
1429
1514
|
|
|
1430
1515
|
declare const OIM_SLICE_LENGTH_MS = 1024;
|
|
1431
1516
|
|
|
1432
|
-
declare class
|
|
1433
|
-
static readonly INSTANCE:
|
|
1517
|
+
declare class OIMSlotMapStoreService<TSlot extends TOIMKeyedSlot<TKey>, TKey extends NonNullable<unknown> = TSlot extends TOIMKeyedSlot<infer TSlotKey> ? TSlotKey : TOIMStoreKey> implements IOIMSlotStoreService<TKey, TSlot, Map<TKey, TSlot>> {
|
|
1518
|
+
static readonly INSTANCE: OIMSlotMapStoreService<TOIMKeyedSlot, {}>;
|
|
1434
1519
|
createStore(): Map<TKey, TSlot>;
|
|
1435
1520
|
ownKey<TOwnedKey extends TKey>(key: TOwnedKey): TOwnedKey;
|
|
1436
1521
|
isSameKey(key: TKey, otherKey: TKey): boolean;
|
|
1437
1522
|
get(store: Map<TKey, TSlot>, key: TKey): TSlot | undefined;
|
|
1438
1523
|
set(store: Map<TKey, TSlot>, key: TKey, slot: TSlot): void;
|
|
1439
1524
|
remove(store: Map<TKey, TSlot>, key: TKey): void;
|
|
1525
|
+
fileSlot(store: Map<TKey, TSlot>, slot: TSlot): void;
|
|
1526
|
+
unfileSlot(store: Map<TKey, TSlot>, slot: TSlot): void;
|
|
1440
1527
|
getSlots(store: Map<TKey, TSlot>): IterableIterator<TSlot>;
|
|
1441
1528
|
getSlotCount(store: Map<TKey, TSlot>): number;
|
|
1442
1529
|
}
|
|
1443
1530
|
|
|
1531
|
+
type TOIMCompositeKeyNode<TAtKey = unknown, TCompositeKeyPart = TOIMEntitySlot> = {
|
|
1532
|
+
childNodes: Map<TCompositeKeyPart, TOIMCompositeKeyNode<TAtKey, TCompositeKeyPart>> | undefined;
|
|
1533
|
+
atThisKey: TAtKey | undefined;
|
|
1534
|
+
};
|
|
1535
|
+
|
|
1444
1536
|
interface IOIMKeyTreeWalk<TCompositeKeyPart> {
|
|
1445
1537
|
mintNodeAt<TAtKey>(rootCompositeKeyNode: TOIMCompositeKeyNode<TAtKey, TCompositeKeyPart>, compositeKey: readonly TCompositeKeyPart[]): TOIMCompositeKeyNode<TAtKey, TCompositeKeyPart>;
|
|
1446
1538
|
nodeAt<TAtKey>(rootCompositeKeyNode: TOIMCompositeKeyNode<TAtKey, TCompositeKeyPart>, compositeKey: readonly TCompositeKeyPart[]): TOIMCompositeKeyNode<TAtKey, TCompositeKeyPart> | undefined;
|
|
1447
1539
|
deleteKey<TAtKey>(rootCompositeKeyNode: TOIMCompositeKeyNode<TAtKey, TCompositeKeyPart>, compositeKey: readonly TCompositeKeyPart[]): TAtKey | undefined;
|
|
1448
1540
|
}
|
|
1449
1541
|
|
|
1450
|
-
|
|
1542
|
+
type TOIMSlotStoreTree<TSlot, TCompositeKeyPart> = {
|
|
1543
|
+
readonly root: TOIMCompositeKeyNode<TSlot, TCompositeKeyPart>;
|
|
1544
|
+
readonly slots: Set<TSlot>;
|
|
1545
|
+
};
|
|
1546
|
+
|
|
1547
|
+
declare class OIMSlotTreeStoreService<TCompositeKeyPart, TSlot extends TOIMKeyedSlot<readonly TCompositeKeyPart[]>> implements IOIMSlotStoreService<readonly TCompositeKeyPart[], TSlot, TOIMSlotStoreTree<TSlot, TCompositeKeyPart>> {
|
|
1451
1548
|
private readonly keyTreeWalk;
|
|
1452
1549
|
constructor(keyTreeWalk: IOIMKeyTreeWalk<TCompositeKeyPart>);
|
|
1453
1550
|
createStore(): TOIMSlotStoreTree<TSlot, TCompositeKeyPart>;
|
|
@@ -1456,6 +1553,8 @@ declare class OIMSlotStoreServiceTreeDriven<TCompositeKeyPart, TSlot extends TOI
|
|
|
1456
1553
|
get(slotStoreTree: TOIMSlotStoreTree<TSlot, TCompositeKeyPart>, compositeKey: readonly TCompositeKeyPart[]): TSlot | undefined;
|
|
1457
1554
|
set(slotStoreTree: TOIMSlotStoreTree<TSlot, TCompositeKeyPart>, compositeKey: readonly TCompositeKeyPart[], slot: TSlot): void;
|
|
1458
1555
|
remove(slotStoreTree: TOIMSlotStoreTree<TSlot, TCompositeKeyPart>, compositeKey: readonly TCompositeKeyPart[]): void;
|
|
1556
|
+
fileSlot(slotStoreTree: TOIMSlotStoreTree<TSlot, TCompositeKeyPart>, slot: TSlot): void;
|
|
1557
|
+
unfileSlot(slotStoreTree: TOIMSlotStoreTree<TSlot, TCompositeKeyPart>, slot: TSlot): void;
|
|
1459
1558
|
getSlots(slotStoreTree: TOIMSlotStoreTree<TSlot, TCompositeKeyPart>): IterableIterator<TSlot>;
|
|
1460
1559
|
getSlotCount(slotStoreTree: TOIMSlotStoreTree<TSlot, TCompositeKeyPart>): number;
|
|
1461
1560
|
}
|
|
@@ -1468,41 +1567,18 @@ declare abstract class OIMKeyTreeWalk<TCompositeKeyPart> implements IOIMKeyTreeW
|
|
|
1468
1567
|
deleteKey<TAtKey>(rootCompositeKeyNode: TOIMCompositeKeyNode<TAtKey, TCompositeKeyPart>, compositeKey: readonly TCompositeKeyPart[]): TAtKey | undefined;
|
|
1469
1568
|
}
|
|
1470
1569
|
|
|
1471
|
-
declare class
|
|
1472
|
-
static readonly INSTANCE:
|
|
1570
|
+
declare class OIMCompositeKeyTreeWalk extends OIMKeyTreeWalk<TOIMEntitySlot> {
|
|
1571
|
+
static readonly INSTANCE: OIMCompositeKeyTreeWalk;
|
|
1473
1572
|
protected holdCompositeKeyPart(entitySlot: TOIMEntitySlot): void;
|
|
1474
1573
|
protected unholdCompositeKeyPart(entitySlot: TOIMEntitySlot): void;
|
|
1475
1574
|
}
|
|
1476
1575
|
|
|
1477
|
-
declare class
|
|
1478
|
-
static readonly INSTANCE:
|
|
1576
|
+
declare class OIMScalarKeyTreeWalk extends OIMKeyTreeWalk<TOIMStoreKey> {
|
|
1577
|
+
static readonly INSTANCE: OIMScalarKeyTreeWalk;
|
|
1479
1578
|
protected holdCompositeKeyPart(): void;
|
|
1480
1579
|
protected unholdCompositeKeyPart(): void;
|
|
1481
1580
|
}
|
|
1482
1581
|
|
|
1483
|
-
type TOIMBucketSlotsArrayUniqueStore<TBucketMemberSlot extends TOIMSlot = TOIMSlot> = TOIMBucketSlotsArrayStore<TBucketMemberSlot> & {
|
|
1484
|
-
uniqueBucketMemberSlots: Set<TBucketMemberSlot>;
|
|
1485
|
-
};
|
|
1486
|
-
|
|
1487
|
-
declare class OIMBucketArrayMembershipNonUnique<TBucketMemberSlot extends TOIMSlot = TOIMSlot> implements IOIMBucketArrayMembership<TBucketMemberSlot, TOIMBucketSlotsArrayStore<TBucketMemberSlot>> {
|
|
1488
|
-
static readonly INSTANCE: OIMBucketArrayMembershipNonUnique<TOIMSlot>;
|
|
1489
|
-
createStore(): TOIMBucketSlotsArrayStore<TBucketMemberSlot>;
|
|
1490
|
-
addSlot(): boolean;
|
|
1491
|
-
removeSlot(): boolean;
|
|
1492
|
-
hasSlot(bucketSlotsArrayStore: TOIMBucketSlotsArrayStore<TBucketMemberSlot>, bucketMemberSlot: TBucketMemberSlot): boolean;
|
|
1493
|
-
clearSlots(): void;
|
|
1494
|
-
containsTheSameSequence(bucketSlotsArrayStore: TOIMBucketSlotsArrayStore<TBucketMemberSlot>, bucketMemberSlots: readonly TBucketMemberSlot[]): boolean;
|
|
1495
|
-
}
|
|
1496
|
-
|
|
1497
|
-
declare class OIMBucketArrayMembershipUnique<TBucketMemberSlot extends TOIMSlot = TOIMSlot> implements IOIMBucketArrayMembership<TBucketMemberSlot, TOIMBucketSlotsArrayUniqueStore<TBucketMemberSlot>> {
|
|
1498
|
-
createStore(): TOIMBucketSlotsArrayUniqueStore<TBucketMemberSlot>;
|
|
1499
|
-
addSlot(bucketSlotsArrayUniqueStore: TOIMBucketSlotsArrayUniqueStore<TBucketMemberSlot>, bucketMemberSlot: TBucketMemberSlot): boolean;
|
|
1500
|
-
removeSlot(bucketSlotsArrayUniqueStore: TOIMBucketSlotsArrayUniqueStore<TBucketMemberSlot>, bucketMemberSlot: TBucketMemberSlot): boolean;
|
|
1501
|
-
hasSlot(bucketSlotsArrayUniqueStore: TOIMBucketSlotsArrayUniqueStore<TBucketMemberSlot>, bucketMemberSlot: TBucketMemberSlot): boolean;
|
|
1502
|
-
clearSlots(bucketSlotsArrayUniqueStore: TOIMBucketSlotsArrayUniqueStore<TBucketMemberSlot>): void;
|
|
1503
|
-
containsTheSameSequence(bucketSlotsArrayUniqueStore: TOIMBucketSlotsArrayUniqueStore<TBucketMemberSlot>, bucketMemberSlots: readonly TBucketMemberSlot[]): boolean;
|
|
1504
|
-
}
|
|
1505
|
-
|
|
1506
1582
|
declare const OIM_NOTHING_WAS_INSERTED = -1;
|
|
1507
1583
|
|
|
1508
1584
|
declare const OIM_NOTHING_WAS_REMOVED = -1;
|
|
@@ -1513,4 +1589,4 @@ declare const OIM_REMOVED_WITHOUT_A_POSITION = -2;
|
|
|
1513
1589
|
|
|
1514
1590
|
declare function oimOrderedListCommandsOfTransition(prev: readonly TOIMSlot[], next: readonly TOIMSlot[], maxCommandsPerSlot?: number): TOIMOrderedListCommand[];
|
|
1515
1591
|
|
|
1516
|
-
export { type
|
|
1592
|
+
export { type IOIMBucketCommands, type IOIMBucketMemberSlotsArrayService, type IOIMChannelMap, type IOIMComputedValueService, type IOIMContentChangeListener, type IOIMEffectService, type IOIMEntityWriter, type IOIMErrorPolicy, type IOIMFlushSchedulerListener, type IOIMIndexKeysService, type IOIMKeyTreeWalk, type IOIMKeyedSlotCreator, type IOIMSingleSlotCreator, type IOIMSlotContentService, type IOIMSlotContentWriter, type IOIMSlotEmptinessPolicy, type IOIMSlotFilingService, type IOIMSlotOwner, type IOIMSlotRefetchListener, type IOIMSlotReleaseDueFramePolicy, type IOIMSlotReleasePolicy, type IOIMSlotStamp, type IOIMSlotStoreService, type IOIMSlotSubscriptionListener, type IOIMStoreSlotListener, OIMAppendingIndexKeysService, OIMBucketCommands, OIMBucketMemberSlotsArrayService, OIMBucketMemoComputedService, OIMBucketUniqueMemberSlotsArrayService, type OIMChannelQueue, OIMChannelService, OIMColumnSlotOwner, OIMColumnSlotService, OIMCompositeKeyTreeWalk, OIMComputedService, OIMComputedValueService, OIMContentChangeListenerService, OIMDB, OIMDefaultValue, OIMDefaults, OIMEffectService, type OIMEffectSourceTracker, OIMFlushSchedulerService, OIMIndexKeysService, OIMKeyTreeWalk, OIMLogAndContinueErrorPolicy, OIMNoSlotSubscriptionListener, OIMNoStoreSlotListener, OIMPullColumnSlotOwner, type OIMPushColumnSlotOwner, OIMReclaimingIndexKeysService, OIMScalarKeyTreeWalk, OIMSingleComputedService, OIMSingleSlotService, OIMSingleSlotStoreService, OIMSlotAfterIdleReleasePolicy, OIMSlotAfterUnholdReleasePolicy, OIMSlotAfterWriteReleasePolicy, OIMSlotAtEmptyReleasePolicy, OIMSlotAtUnholdReleasePolicy, OIMSlotCollectionIndexService, OIMSlotCollectionService, OIMSlotCollectionSortedArrayIndexService, OIMSlotContentArrayBucketService, OIMSlotContentBucketService, type OIMSlotContentComputedService, OIMSlotContentEntityService, OIMSlotContentPositionalArrayBucketService, OIMSlotContentSetBucketService, OIMSlotContentSortedArrayBucketService, OIMSlotEarliestReleasePolicy, OIMSlotMapStoreService, OIMSlotNeverReleasePolicy, OIMSlotOwner, type OIMSlotOwnerService, OIMSlotRefetchWheel, OIMSlotReleaseAutoDueFramePolicy, OIMSlotReleaseManualDueFramePolicy, OIMSlotReleaseWheel, OIMSlotTreeStoreService, OIMSlotWheel, OIMSortedComputedService, OIMThrowAtOnceErrorPolicy, OIMUnusedSlotCollectorService, OIMWritableSingleSlotService, OIMWritableSlotCollectionService, OIM_FROZEN_EMPTY_SLOTS, OIM_NOTHING_WAS_INSERTED, OIM_NOTHING_WAS_REMOVED, OIM_REMOVED_WITHOUT_A_POSITION, OIM_SLICE_LENGTH_MS, type TOIMBucketCommandsOptions, type TOIMBucketContentSlot, type TOIMBucketMemoComputedServiceOptions, type TOIMBucketMemoComputedSlot, type TOIMBucketSlot, type TOIMBucketSlotOwnerService, type TOIMBucketSlotsArrayStore, type TOIMBucketSlotsSetStore, type TOIMChannelClock, type TOIMChannelFrame, type TOIMChannelScheduler, type TOIMChannelSlot, type TOIMChannelSlotOptions, type TOIMCollectorSlot, type TOIMCollectorSlotOptions, type TOIMColumnGroup, type TOIMColumnReaders, type TOIMColumnSlot, type TOIMColumnSlotOwnerOptions, type TOIMCompositeKeyNode, type TOIMComputedColumnSlot, type TOIMComputedContentSlot, type TOIMComputedDerivationOptions, type TOIMComputedServiceOptions, type TOIMComputedSlot, type TOIMComputedSources, type TOIMComputedStoreSlot, type TOIMComputedValueServiceOptions, type TOIMDBOptions, type TOIMDefaultSlotStore, type TOIMDerivation, type TOIMDisposer, type TOIMEffect, type TOIMEffectBody, type TOIMEffectBodyWithSourceTracking, type TOIMEntityColumnName, type TOIMEntityColumnValue, type TOIMEntityContentSlot, type TOIMEntityInserter, type TOIMEntitySlot, type TOIMEntitySlotOwnerService, type TOIMEntityWriterOptions, type TOIMFactoryOptions, type TOIMFlushSchedulerSlot, type TOIMIndexKey, type TOIMIndexKeyOptions, type TOIMIndexKeysPositions, type TOIMIndexStoreSlot, type TOIMIndexableSlot, type TOIMKeyedSlot, type TOIMLogAndContinueErrorPolicyOptions, type TOIMOrderedListCommand, type TOIMSameValueGuard, type TOIMSingleSlotServiceOptions, type TOIMSingleSlotStore, type TOIMSingleSlotStoreSlot, type TOIMSlot, type TOIMSlotAfterIdleReleasePolicyOptions, type TOIMSlotAfterUnholdReleasePolicyOptions, type TOIMSlotAfterWriteReleasePolicyOptions, type TOIMSlotCollectionIndexServiceFactoryOptions, type TOIMSlotCollectionIndexServiceOptions, type TOIMSlotCollectionIndexServiceStoreSlot, type TOIMSlotCollectionServiceOptions, type TOIMSlotContentArrayBucketServiceOptions, type TOIMSlotContentBucketServiceOptions, type TOIMSlotContentComputedServiceOptions, type TOIMSlotContentEntityServiceOptions, type TOIMSlotContentServiceContent, type TOIMSlotContentServiceKey, type TOIMSlotContentServicePatch, type TOIMSlotContentServiceSingleSlot, type TOIMSlotContentServiceSlot, type TOIMSlotContentSortedArrayBucketServiceOptions, type TOIMSlotEditable, type TOIMSlotOwnerServiceOptions, type TOIMSlotRefetchWheelOptions, type TOIMSlotReleaseWheelOptions, type TOIMSlotStoreTree, type TOIMSlotWheelOptions, type TOIMSortColumn, type TOIMSortableColumnName, type TOIMSortedComputedServiceOptions, type TOIMSortedComputedSlot, type TOIMStoreKey, type TOIMStoreSlot, type TOIMTimer, type TOIMUnusedSlotCollectorSlot, createOIMBucketMemoComputedService, createOIMChannelSlot, createOIMCollectorSlot, createOIMComputedService, createOIMEntityWriterInPlace, createOIMEntityWriterReplacing, createOIMSingleComputedService, createOIMSingleSlotService, createOIMSlotCollectionIndexService, createOIMSlotCollectionService, createOIMSlotCollectionSortedArrayIndexService, createOIMSlotContentEntityService, createOIMSortedComputedService, createOIMUnusedSlotCollectorSlot, oimColumnsComparator, oimHoldSlots, oimInsertEntityWithCopy, oimInsertEntityWithSanitizedCopy, oimInsertEntityWithoutCopy, oimIsAnySlotChangedAfter, oimIsSlotEmpty, oimIsSlotReleased, oimMintAfterIdleSlotReleaseWheel, oimMintAfterUnholdSlotReleaseWheel, oimMintAfterWriteSlotReleaseWheel, oimOrderedListCommandsOfTransition, oimPatchEntityColumn, oimPatchEntityColumnGuarded, oimPatchEntityColumns, oimPatchEntityColumnsGuarded, oimPutEntityColumns, oimPutEntityColumnsGuarded, oimRefreshSourceComputeds, oimSameKeySequence, oimSameSlotSequence, oimSameValueZeroGuard, oimSliceOfMs, oimUnholdSlotsIfAlive };
|