@abloatai/ablo 0.3.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 +208 -0
- package/LICENSE +201 -0
- package/NOTICE +12 -0
- package/README.md +230 -0
- package/dist/BaseSyncedStore.d.ts +709 -0
- package/dist/BaseSyncedStore.js +1843 -0
- package/dist/Database.d.ts +344 -0
- package/dist/Database.js +1259 -0
- package/dist/LazyReferenceCollection.d.ts +181 -0
- package/dist/LazyReferenceCollection.js +460 -0
- package/dist/Model.d.ts +339 -0
- package/dist/Model.js +715 -0
- package/dist/ModelRegistry.d.ts +200 -0
- package/dist/ModelRegistry.js +535 -0
- package/dist/NetworkMonitor.d.ts +27 -0
- package/dist/NetworkMonitor.js +73 -0
- package/dist/ObjectPool.d.ts +202 -0
- package/dist/ObjectPool.js +1106 -0
- package/dist/SyncClient.d.ts +489 -0
- package/dist/SyncClient.js +1555 -0
- package/dist/SyncEngineContext.d.ts +46 -0
- package/dist/SyncEngineContext.js +74 -0
- package/dist/adapters/alwaysOnline.d.ts +16 -0
- package/dist/adapters/alwaysOnline.js +19 -0
- package/dist/adapters/inMemoryStorage.d.ts +30 -0
- package/dist/adapters/inMemoryStorage.js +94 -0
- package/dist/agent/Agent.d.ts +358 -0
- package/dist/agent/Agent.js +500 -0
- package/dist/agent/index.d.ts +115 -0
- package/dist/agent/index.js +128 -0
- package/dist/agent/session.d.ts +90 -0
- package/dist/agent/session.js +156 -0
- package/dist/agent/types.d.ts +73 -0
- package/dist/agent/types.js +10 -0
- package/dist/ai-sdk/coordination-context.d.ts +51 -0
- package/dist/ai-sdk/coordination-context.js +107 -0
- package/dist/ai-sdk/index.d.ts +68 -0
- package/dist/ai-sdk/index.js +68 -0
- package/dist/ai-sdk/intent-broadcast.d.ts +77 -0
- package/dist/ai-sdk/intent-broadcast.js +72 -0
- package/dist/ai-sdk/wrap.d.ts +67 -0
- package/dist/ai-sdk/wrap.js +45 -0
- package/dist/api/index.d.ts +10 -0
- package/dist/api/index.js +9 -0
- package/dist/auth/index.d.ts +137 -0
- package/dist/auth/index.js +246 -0
- package/dist/client/Ablo.d.ts +835 -0
- package/dist/client/Ablo.js +1440 -0
- package/dist/client/ApiClient.d.ts +200 -0
- package/dist/client/ApiClient.js +659 -0
- package/dist/client/auth.d.ts +79 -0
- package/dist/client/auth.js +81 -0
- package/dist/client/createInternalComponents.d.ts +44 -0
- package/dist/client/createInternalComponents.js +88 -0
- package/dist/client/createModelProxy.d.ts +152 -0
- package/dist/client/createModelProxy.js +199 -0
- package/dist/client/identity.d.ts +63 -0
- package/dist/client/identity.js +156 -0
- package/dist/client/index.d.ts +36 -0
- package/dist/client/index.js +33 -0
- package/dist/client/persistence.d.ts +7 -0
- package/dist/client/persistence.js +11 -0
- package/dist/client/validateAbloOptions.d.ts +42 -0
- package/dist/client/validateAbloOptions.js +43 -0
- package/dist/config/index.d.ts +10 -0
- package/dist/config/index.js +12 -0
- package/dist/context.d.ts +27 -0
- package/dist/context.js +58 -0
- package/dist/core/DatabaseManager.d.ts +108 -0
- package/dist/core/DatabaseManager.js +361 -0
- package/dist/core/QueryProcessor.d.ts +77 -0
- package/dist/core/QueryProcessor.js +262 -0
- package/dist/core/QueryView.d.ts +64 -0
- package/dist/core/QueryView.js +219 -0
- package/dist/core/StoreManager.d.ts +131 -0
- package/dist/core/StoreManager.js +334 -0
- package/dist/core/ViewRegistry.d.ts +20 -0
- package/dist/core/ViewRegistry.js +55 -0
- package/dist/core/index.d.ts +34 -0
- package/dist/core/index.js +59 -0
- package/dist/core/openIDBWithTimeout.d.ts +27 -0
- package/dist/core/openIDBWithTimeout.js +63 -0
- package/dist/core/query-utils.d.ts +37 -0
- package/dist/core/query-utils.js +60 -0
- package/dist/errors.d.ts +235 -0
- package/dist/errors.js +243 -0
- package/dist/index.d.ts +41 -0
- package/dist/index.js +82 -0
- package/dist/interfaces/headless.d.ts +95 -0
- package/dist/interfaces/headless.js +41 -0
- package/dist/interfaces/index.d.ts +321 -0
- package/dist/interfaces/index.js +8 -0
- package/dist/mutators/RecordingTransaction.d.ts +36 -0
- package/dist/mutators/RecordingTransaction.js +216 -0
- package/dist/mutators/Transaction.d.ts +48 -0
- package/dist/mutators/Transaction.js +64 -0
- package/dist/mutators/UndoManager.d.ts +114 -0
- package/dist/mutators/UndoManager.js +143 -0
- package/dist/mutators/defineMutators.d.ts +55 -0
- package/dist/mutators/defineMutators.js +28 -0
- package/dist/policy/index.d.ts +19 -0
- package/dist/policy/index.js +18 -0
- package/dist/policy/types.d.ts +74 -0
- package/dist/policy/types.js +17 -0
- package/dist/principal.d.ts +44 -0
- package/dist/principal.js +49 -0
- package/dist/query/client.d.ts +43 -0
- package/dist/query/client.js +84 -0
- package/dist/query/index.d.ts +6 -0
- package/dist/query/index.js +5 -0
- package/dist/query/types.d.ts +143 -0
- package/dist/query/types.js +36 -0
- package/dist/react/AbloProvider.d.ts +205 -0
- package/dist/react/AbloProvider.js +398 -0
- package/dist/react/ClientSideSuspense.d.ts +36 -0
- package/dist/react/ClientSideSuspense.js +17 -0
- package/dist/react/DefaultFallback.d.ts +24 -0
- package/dist/react/DefaultFallback.js +43 -0
- package/dist/react/SyncGroupProvider.d.ts +19 -0
- package/dist/react/SyncGroupProvider.js +44 -0
- package/dist/react/context.d.ts +161 -0
- package/dist/react/context.js +35 -0
- package/dist/react/index.d.ts +64 -0
- package/dist/react/index.js +73 -0
- package/dist/react/internalContext.d.ts +35 -0
- package/dist/react/internalContext.js +3 -0
- package/dist/react/useAblo.d.ts +72 -0
- package/dist/react/useAblo.js +63 -0
- package/dist/react/useCurrentUserId.d.ts +21 -0
- package/dist/react/useCurrentUserId.js +33 -0
- package/dist/react/useErrorListener.d.ts +20 -0
- package/dist/react/useErrorListener.js +39 -0
- package/dist/react/useIntent.d.ts +29 -0
- package/dist/react/useIntent.js +42 -0
- package/dist/react/useMutate.d.ts +83 -0
- package/dist/react/useMutate.js +122 -0
- package/dist/react/useMutationFailureListener.d.ts +26 -0
- package/dist/react/useMutationFailureListener.js +38 -0
- package/dist/react/useMutators.d.ts +56 -0
- package/dist/react/useMutators.js +66 -0
- package/dist/react/usePresence.d.ts +32 -0
- package/dist/react/usePresence.js +41 -0
- package/dist/react/useQuery.d.ts +123 -0
- package/dist/react/useQuery.js +145 -0
- package/dist/react/useReactive.d.ts +35 -0
- package/dist/react/useReactive.js +111 -0
- package/dist/react/useReader.d.ts +69 -0
- package/dist/react/useReader.js +73 -0
- package/dist/react/useSyncStatus.d.ts +61 -0
- package/dist/react/useSyncStatus.js +76 -0
- package/dist/react/useUndoScope.d.ts +36 -0
- package/dist/react/useUndoScope.js +73 -0
- package/dist/realtime/index.d.ts +10 -0
- package/dist/realtime/index.js +9 -0
- package/dist/schema/field.d.ts +134 -0
- package/dist/schema/field.js +264 -0
- package/dist/schema/index.d.ts +29 -0
- package/dist/schema/index.js +38 -0
- package/dist/schema/model.d.ts +326 -0
- package/dist/schema/model.js +89 -0
- package/dist/schema/queries.d.ts +203 -0
- package/dist/schema/queries.js +145 -0
- package/dist/schema/relation.d.ts +172 -0
- package/dist/schema/relation.js +104 -0
- package/dist/schema/schema.d.ts +259 -0
- package/dist/schema/schema.js +188 -0
- package/dist/schema/sugar.d.ts +129 -0
- package/dist/schema/sugar.js +94 -0
- package/dist/source/index.d.ts +423 -0
- package/dist/source/index.js +320 -0
- package/dist/source/pushQueue.d.ts +112 -0
- package/dist/source/pushQueue.js +249 -0
- package/dist/stores/ObjectStore.d.ts +103 -0
- package/dist/stores/ObjectStore.js +371 -0
- package/dist/stores/ObjectStoreContract.d.ts +39 -0
- package/dist/stores/ObjectStoreContract.js +1 -0
- package/dist/stores/SyncActionStore.d.ts +101 -0
- package/dist/stores/SyncActionStore.js +481 -0
- package/dist/sync/BootstrapHelper.d.ts +127 -0
- package/dist/sync/BootstrapHelper.js +434 -0
- package/dist/sync/ConnectionManager.d.ts +136 -0
- package/dist/sync/ConnectionManager.js +465 -0
- package/dist/sync/HydrationCoordinator.d.ts +137 -0
- package/dist/sync/HydrationCoordinator.js +468 -0
- package/dist/sync/NetworkProbe.d.ts +43 -0
- package/dist/sync/NetworkProbe.js +113 -0
- package/dist/sync/OfflineFlush.d.ts +9 -0
- package/dist/sync/OfflineFlush.js +22 -0
- package/dist/sync/OfflineTransactionStore.d.ts +37 -0
- package/dist/sync/OfflineTransactionStore.js +263 -0
- package/dist/sync/SyncWebSocket.d.ts +663 -0
- package/dist/sync/SyncWebSocket.js +1336 -0
- package/dist/sync/createIntentStream.d.ts +33 -0
- package/dist/sync/createIntentStream.js +243 -0
- package/dist/sync/createPresenceStream.d.ts +46 -0
- package/dist/sync/createPresenceStream.js +192 -0
- package/dist/sync/createSnapshot.d.ts +33 -0
- package/dist/sync/createSnapshot.js +124 -0
- package/dist/sync/participants.d.ts +114 -0
- package/dist/sync/participants.js +336 -0
- package/dist/sync/schemas.d.ts +79 -0
- package/dist/sync/schemas.js +78 -0
- package/dist/testing/fixtures/bootstrap.d.ts +45 -0
- package/dist/testing/fixtures/bootstrap.js +53 -0
- package/dist/testing/fixtures/deltas.d.ts +86 -0
- package/dist/testing/fixtures/deltas.js +139 -0
- package/dist/testing/fixtures/models.d.ts +82 -0
- package/dist/testing/fixtures/models.js +270 -0
- package/dist/testing/helpers/react-wrapper.d.ts +66 -0
- package/dist/testing/helpers/react-wrapper.js +64 -0
- package/dist/testing/helpers/sync-engine-harness.d.ts +55 -0
- package/dist/testing/helpers/sync-engine-harness.js +70 -0
- package/dist/testing/helpers/wait.d.ts +25 -0
- package/dist/testing/helpers/wait.js +44 -0
- package/dist/testing/index.d.ts +21 -0
- package/dist/testing/index.js +32 -0
- package/dist/testing/mocks/MockMutationExecutor.d.ts +65 -0
- package/dist/testing/mocks/MockMutationExecutor.js +139 -0
- package/dist/testing/mocks/MockNetworkMonitor.d.ts +20 -0
- package/dist/testing/mocks/MockNetworkMonitor.js +46 -0
- package/dist/testing/mocks/MockSyncContext.d.ts +64 -0
- package/dist/testing/mocks/MockSyncContext.js +100 -0
- package/dist/testing/mocks/MockSyncStore.d.ts +88 -0
- package/dist/testing/mocks/MockSyncStore.js +171 -0
- package/dist/testing/mocks/MockWebSocket.d.ts +66 -0
- package/dist/testing/mocks/MockWebSocket.js +117 -0
- package/dist/transactions/OptimisticEchoTracker.d.ts +82 -0
- package/dist/transactions/OptimisticEchoTracker.js +104 -0
- package/dist/transactions/TransactionQueue.d.ts +499 -0
- package/dist/transactions/TransactionQueue.js +1895 -0
- package/dist/transactions/index.d.ts +16 -0
- package/dist/transactions/index.js +7 -0
- package/dist/transactions/mutation-error-handler.d.ts +5 -0
- package/dist/transactions/mutation-error-handler.js +39 -0
- package/dist/types/global.d.ts +107 -0
- package/dist/types/global.js +38 -0
- package/dist/types/index.d.ts +241 -0
- package/dist/types/index.js +70 -0
- package/dist/types/streams.d.ts +495 -0
- package/dist/types/streams.js +11 -0
- package/dist/utils/asyncIterator.d.ts +41 -0
- package/dist/utils/asyncIterator.js +142 -0
- package/dist/utils/duration.d.ts +28 -0
- package/dist/utils/duration.js +47 -0
- package/dist/utils/mobx-setup.d.ts +42 -0
- package/dist/utils/mobx-setup.js +381 -0
- package/docs/api-keys.md +24 -0
- package/docs/api.md +230 -0
- package/docs/audit.md +81 -0
- package/docs/capabilities.md +163 -0
- package/docs/client-behavior.md +202 -0
- package/docs/data-sources.md +214 -0
- package/docs/examples/agent-human.md +84 -0
- package/docs/examples/ai-sdk-tool.md +92 -0
- package/docs/examples/existing-python-backend.md +249 -0
- package/docs/examples/nextjs.md +88 -0
- package/docs/examples/server-agent.md +86 -0
- package/docs/guarantees.md +148 -0
- package/docs/index.md +97 -0
- package/docs/integration-guide.md +493 -0
- package/docs/interaction-model.md +140 -0
- package/docs/mcp/claude-code.md +43 -0
- package/docs/mcp/cursor.md +53 -0
- package/docs/mcp/windsurf.md +46 -0
- package/docs/mcp.md +59 -0
- package/docs/quickstart.md +152 -0
- package/docs/react.md +115 -0
- package/docs/roadmap.md +45 -0
- package/examples/README.md +54 -0
- package/examples/data-source/README.md +102 -0
- package/examples/data-source/ablo-driver.ts +89 -0
- package/examples/data-source/customer-server.ts +208 -0
- package/examples/data-source/run.ts +101 -0
- package/examples/data-source/schema.ts +25 -0
- package/examples/quickstart.ts +54 -0
- package/examples/tsconfig.json +16 -0
- package/llms.txt +143 -0
- package/package.json +147 -0
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectPool - In-memory model cache with deduplication
|
|
3
|
+
*
|
|
4
|
+
* Pure memory management without database or registry dependencies.
|
|
5
|
+
* Uses static ModelRegistry for model class lookup only.
|
|
6
|
+
*/
|
|
7
|
+
import { Model } from './Model.js';
|
|
8
|
+
import { ModelRegistry } from './ModelRegistry.js';
|
|
9
|
+
import { ModelScope } from './types/index.js';
|
|
10
|
+
import { ViewRegistry } from './core/ViewRegistry.js';
|
|
11
|
+
import { QueryView, type QueryViewOptions } from './core/QueryView.js';
|
|
12
|
+
/** Constructor type for Model subclasses - uses abstract to handle variance */
|
|
13
|
+
type ModelConstructor<T extends Model> = abstract new (...args: never[]) => T;
|
|
14
|
+
export { ModelScope };
|
|
15
|
+
interface PoolConfig {
|
|
16
|
+
maxSize?: number;
|
|
17
|
+
maxAge?: number;
|
|
18
|
+
gcInterval?: number;
|
|
19
|
+
useWeakRefs?: boolean;
|
|
20
|
+
}
|
|
21
|
+
interface DeltaInfo {
|
|
22
|
+
action?: string;
|
|
23
|
+
syncId?: number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* ObjectPool - Pure in-memory model cache with deduplication
|
|
27
|
+
*/
|
|
28
|
+
export declare class ObjectPool {
|
|
29
|
+
private entries;
|
|
30
|
+
private typeIndex;
|
|
31
|
+
private accessTimes;
|
|
32
|
+
private recentAdditions;
|
|
33
|
+
private deltaHistory;
|
|
34
|
+
private foreignKeyIndexes;
|
|
35
|
+
private foreignKeyConfig;
|
|
36
|
+
private metrics;
|
|
37
|
+
private config;
|
|
38
|
+
private gcTimer?;
|
|
39
|
+
readonly registry: ModelRegistry;
|
|
40
|
+
readonly viewRegistry: ViewRegistry;
|
|
41
|
+
private subscriptions;
|
|
42
|
+
/**
|
|
43
|
+
* Subscribe to updates for a specific model type.
|
|
44
|
+
*/
|
|
45
|
+
subscribe<T extends Model>(modelClass: ModelConstructor<T>, callback: (model: T) => void): () => void;
|
|
46
|
+
private notifySubscribers;
|
|
47
|
+
constructor(config?: PoolConfig, modelRegistry?: ModelRegistry);
|
|
48
|
+
/**
|
|
49
|
+
* 🔧 PRODUCTION FIX: Initialize type indexes for all registered models
|
|
50
|
+
* This prevents the "No type index found" error in production where constructor
|
|
51
|
+
* references are lost due to minification.
|
|
52
|
+
*/
|
|
53
|
+
private initializeTypeIndexes;
|
|
54
|
+
private resolveModel;
|
|
55
|
+
get<T extends Model = Model>(id: string): T | undefined;
|
|
56
|
+
/**
|
|
57
|
+
* Add model with deduplication support
|
|
58
|
+
*/
|
|
59
|
+
add(model: Model, scope?: ModelScope, deltaInfo?: DeltaInfo): void;
|
|
60
|
+
/**
|
|
61
|
+
* Upsert a model - INSERT if new, UPDATE if exists
|
|
62
|
+
*/
|
|
63
|
+
upsert(model: Model, scope?: ModelScope): void;
|
|
64
|
+
/**
|
|
65
|
+
* Batch add models - optimized for hydration
|
|
66
|
+
* All models are added in a single MobX action to minimize reactivity overhead
|
|
67
|
+
*/
|
|
68
|
+
addBatch(models: Model[], scope?: ModelScope): number;
|
|
69
|
+
/**
|
|
70
|
+
* Batch upsert models - optimized for delta processing.
|
|
71
|
+
* All upserts happen in a single MobX action to minimize reactivity overhead.
|
|
72
|
+
*/
|
|
73
|
+
upsertBatch(models: Model[], scope?: ModelScope): void;
|
|
74
|
+
/**
|
|
75
|
+
* Batch remove models by ID - optimized for delta processing.
|
|
76
|
+
* All removals happen in a single MobX action to minimize reactivity overhead.
|
|
77
|
+
* Returns the number of models actually removed.
|
|
78
|
+
*/
|
|
79
|
+
removeBatch(ids: string[]): number;
|
|
80
|
+
/**
|
|
81
|
+
* Read-only accessor for entity IDs by model type.
|
|
82
|
+
* Used by applyBootstrapToPool() and rehydrateFromDatabase() for ghost detection.
|
|
83
|
+
*/
|
|
84
|
+
getIdsByModelType(modelType: string): ReadonlySet<string> | undefined;
|
|
85
|
+
addToArchive(model: Model): void;
|
|
86
|
+
remove(id: string): boolean;
|
|
87
|
+
removeFromArchive(id: string): boolean;
|
|
88
|
+
getByType(modelClass: ModelConstructor<Model>, scope?: ModelScope): Model[];
|
|
89
|
+
/**
|
|
90
|
+
* Get all models of a given type by string name.
|
|
91
|
+
* Used for custom entity types where multiple entity type names share
|
|
92
|
+
* the same CustomEntityModel constructor (getByType can't disambiguate).
|
|
93
|
+
* Reads from the same typeIndex as getByType — MobX tracks the dependency.
|
|
94
|
+
*/
|
|
95
|
+
getByTypeName(modelName: string, scope?: ModelScope): Model[];
|
|
96
|
+
iterateByType(modelClass: ModelConstructor<Model>, scope?: ModelScope): Generator<Model, void, unknown>;
|
|
97
|
+
updateScope(id: string, scope: ModelScope): void;
|
|
98
|
+
/**
|
|
99
|
+
* Create (or update) a model instance locally, given a typename and raw
|
|
100
|
+
* data. Cleaner than `createFromData({ __typename, ...data })` — the
|
|
101
|
+
* typename lives in the arg list, not hidden inside the data object.
|
|
102
|
+
*
|
|
103
|
+
* Used for optimistic local writes: `pool.create('Slide', { id, deckId, ... })`.
|
|
104
|
+
* For hydration from server deltas (where `__typename` already rides on
|
|
105
|
+
* the payload), use `createFromData(data)` directly — that path is kept
|
|
106
|
+
* because the wire format attaches the discriminator to the data itself.
|
|
107
|
+
*/
|
|
108
|
+
create(typename: string, data: Record<string, unknown>): Model | null;
|
|
109
|
+
createFromData(data: Record<string, unknown> & {
|
|
110
|
+
__typename?: string;
|
|
111
|
+
__class?: string;
|
|
112
|
+
modelName?: string;
|
|
113
|
+
id?: string;
|
|
114
|
+
}, ModelClass?: new (data: Record<string, unknown>) => Model): Model | null;
|
|
115
|
+
/**
|
|
116
|
+
* Clear the object pool
|
|
117
|
+
* @param options.preserveObserved - If true, keep models that are being observed by React
|
|
118
|
+
* This prevents React components from holding stale references
|
|
119
|
+
* after bootstrap/rehydration
|
|
120
|
+
*/
|
|
121
|
+
clear(options?: {
|
|
122
|
+
preserveObserved?: boolean;
|
|
123
|
+
}): void;
|
|
124
|
+
has(id: string): boolean;
|
|
125
|
+
/**
|
|
126
|
+
* Touch a model to update its access time (prevents premature GC)
|
|
127
|
+
* Used by LazyReferenceCollection to keep parent models alive during active usage
|
|
128
|
+
*/
|
|
129
|
+
touch(id: string): boolean;
|
|
130
|
+
getAllIds(): string[];
|
|
131
|
+
getAllModels(): Model[];
|
|
132
|
+
get size(): number;
|
|
133
|
+
get hitRate(): number;
|
|
134
|
+
getStats(): {
|
|
135
|
+
size: number;
|
|
136
|
+
hitRate: number;
|
|
137
|
+
metrics: {
|
|
138
|
+
hits: number;
|
|
139
|
+
misses: number;
|
|
140
|
+
evictions: number;
|
|
141
|
+
additions: number;
|
|
142
|
+
duplicatesSkipped: number;
|
|
143
|
+
};
|
|
144
|
+
scopeCounts: {
|
|
145
|
+
live: number;
|
|
146
|
+
archived: number;
|
|
147
|
+
};
|
|
148
|
+
typeCounts: {
|
|
149
|
+
[k: string]: number;
|
|
150
|
+
};
|
|
151
|
+
deltaHistorySize: number;
|
|
152
|
+
recentAdditionsSize: number;
|
|
153
|
+
config: {
|
|
154
|
+
maxSize: number;
|
|
155
|
+
maxAge: number;
|
|
156
|
+
gcInterval: number;
|
|
157
|
+
useWeakRefs: boolean;
|
|
158
|
+
};
|
|
159
|
+
};
|
|
160
|
+
clearDeltaHistory(olderThanMs?: number): void;
|
|
161
|
+
private cleanupTracking;
|
|
162
|
+
private gc;
|
|
163
|
+
private startGC;
|
|
164
|
+
stopGC(): void;
|
|
165
|
+
private evictOldest;
|
|
166
|
+
private isLargeModel;
|
|
167
|
+
/**
|
|
168
|
+
* Register a foreign key field for indexing on a model type.
|
|
169
|
+
* Call once during app initialization (e.g., after model registration).
|
|
170
|
+
*
|
|
171
|
+
* Example: registerForeignKey('SlideLayer', 'slideId')
|
|
172
|
+
* This enables getByForeignKey('SlideLayer', 'slideId', someSlideId) → O(1) lookup
|
|
173
|
+
*/
|
|
174
|
+
registerForeignKey(modelName: string, fieldName: string): void;
|
|
175
|
+
/**
|
|
176
|
+
* Check whether a foreign key index exists for a given typename + field.
|
|
177
|
+
* Used by QueryView to decide whether to use FK-index for initial scan.
|
|
178
|
+
*/
|
|
179
|
+
hasForeignKeyIndex(typename: string, fieldName: string): boolean;
|
|
180
|
+
/**
|
|
181
|
+
* Create a QueryView — an incrementally maintained materialized view.
|
|
182
|
+
* The view registers itself with the ViewRegistry and receives
|
|
183
|
+
* incremental updates when models of the given typename change.
|
|
184
|
+
*/
|
|
185
|
+
createView<T extends Record<string, unknown>>(typename: string, options?: QueryViewOptions<T>): QueryView<T>;
|
|
186
|
+
/**
|
|
187
|
+
* O(1) lookup of models by foreign key value.
|
|
188
|
+
* Returns model instances, filtered to live scope by default.
|
|
189
|
+
*/
|
|
190
|
+
getByForeignKey(modelName: string, fieldName: string, fieldValue: string): Model[];
|
|
191
|
+
/**
|
|
192
|
+
* Add a model to foreign key indexes (called from addToTypeIndex path)
|
|
193
|
+
*/
|
|
194
|
+
private addToForeignKeyIndex;
|
|
195
|
+
/**
|
|
196
|
+
* Remove a model from foreign key indexes (called from removeFromTypeIndex path)
|
|
197
|
+
*/
|
|
198
|
+
private removeFromForeignKeyIndex;
|
|
199
|
+
private addToTypeIndex;
|
|
200
|
+
private removeFromTypeIndex;
|
|
201
|
+
private matchesScope;
|
|
202
|
+
}
|