@soulcraft/brainy 0.28.0 → 0.30.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/README.md +71 -0
- package/dist/brainy.js +90220 -0
- package/dist/brainy.min.js +12511 -0
- package/dist/brainyData.d.ts +53 -0
- package/dist/coreTypes.d.ts +75 -0
- package/dist/hnsw/hnswIndex.d.ts +15 -0
- package/dist/hnsw/hnswIndex.d.ts.map +1 -1
- package/dist/statistics/statisticsManager.d.ts +121 -0
- package/dist/storage/adapters/baseStorageAdapter.d.ts +46 -0
- package/dist/storage/adapters/baseStorageAdapter.d.ts.map +1 -1
- package/dist/storage/adapters/memoryStorage.d.ts +41 -0
- package/dist/storage/adapters/memoryStorage.d.ts.map +1 -1
- package/dist/storage/baseStorage.d.ts +46 -0
- package/dist/storage/baseStorage.d.ts.map +1 -1
- package/dist/storage/fileSystemStorage.d.ts +73 -0
- package/dist/storage/fileSystemStorage.d.ts.map +1 -0
- package/dist/storage/opfsStorage.d.ts +236 -0
- package/dist/storage/opfsStorage.d.ts.map +1 -0
- package/dist/storage/s3CompatibleStorage.d.ts +157 -0
- package/dist/storage/s3CompatibleStorage.d.ts.map +1 -0
- package/dist/types/paginationTypes.d.ts +111 -0
- package/dist/types/paginationTypes.d.ts.map +1 -0
- package/dist/unified.js +782 -86
- package/dist/unified.min.js +1 -1
- package/dist/utils/environmentDetection.d.ts +47 -0
- package/dist/utils/environmentDetection.d.ts.map +1 -0
- package/dist/utils/logger.d.ts +99 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/version.d.ts +5 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/package.json +15 -8
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OPFS (Origin Private File System) Storage Adapter
|
|
3
|
+
* Provides persistent storage for the vector database using the Origin Private File System API
|
|
4
|
+
*/
|
|
5
|
+
import { GraphVerb, HNSWNoun, StorageAdapter } from '../coreTypes.js';
|
|
6
|
+
import '../types/fileSystemTypes.js';
|
|
7
|
+
declare global {
|
|
8
|
+
interface FileSystemDirectoryHandle {
|
|
9
|
+
entries(): AsyncIterableIterator<[string, FileSystemHandle]>;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
type HNSWNode = HNSWNoun;
|
|
13
|
+
type Edge = GraphVerb;
|
|
14
|
+
export declare class OPFSStorage implements StorageAdapter {
|
|
15
|
+
private rootDir;
|
|
16
|
+
private nounsDir;
|
|
17
|
+
private verbsDir;
|
|
18
|
+
private metadataDir;
|
|
19
|
+
private isInitialized;
|
|
20
|
+
private isAvailable;
|
|
21
|
+
private isPersistentRequested;
|
|
22
|
+
private isPersistentGranted;
|
|
23
|
+
constructor();
|
|
24
|
+
/**
|
|
25
|
+
* Initialize the storage adapter
|
|
26
|
+
*/
|
|
27
|
+
init(): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Check if OPFS is available in the current environment
|
|
30
|
+
*/
|
|
31
|
+
isOPFSAvailable(): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Request persistent storage permission from the user
|
|
34
|
+
* @returns Promise that resolves to true if permission was granted, false otherwise
|
|
35
|
+
*/
|
|
36
|
+
requestPersistentStorage(): Promise<boolean>;
|
|
37
|
+
/**
|
|
38
|
+
* Check if persistent storage is granted
|
|
39
|
+
* @returns Promise that resolves to true if persistent storage is granted, false otherwise
|
|
40
|
+
*/
|
|
41
|
+
isPersistent(): Promise<boolean>;
|
|
42
|
+
/**
|
|
43
|
+
* Save a noun to storage
|
|
44
|
+
*/
|
|
45
|
+
saveNoun(noun: HNSWNoun): Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Get a noun from storage
|
|
48
|
+
*/
|
|
49
|
+
getNoun(id: string): Promise<HNSWNoun | null>;
|
|
50
|
+
/**
|
|
51
|
+
* Get nouns by noun type
|
|
52
|
+
* @param nounType The noun type to filter by
|
|
53
|
+
* @returns Promise that resolves to an array of nouns of the specified noun type
|
|
54
|
+
*/
|
|
55
|
+
getNounsByNounType(nounType: string): Promise<HNSWNoun[]>;
|
|
56
|
+
/**
|
|
57
|
+
* Get all nouns from storage
|
|
58
|
+
*/
|
|
59
|
+
getAllNouns(): Promise<HNSWNoun[]>;
|
|
60
|
+
/**
|
|
61
|
+
* Delete a noun from storage
|
|
62
|
+
*/
|
|
63
|
+
deleteNoun(id: string): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Save a verb to storage
|
|
66
|
+
*/
|
|
67
|
+
saveVerb(verb: GraphVerb): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* Get a verb from storage
|
|
70
|
+
*/
|
|
71
|
+
getVerb(id: string): Promise<GraphVerb | null>;
|
|
72
|
+
/**
|
|
73
|
+
* Get all edges from storage
|
|
74
|
+
*/
|
|
75
|
+
getAllEdges(): Promise<Edge[]>;
|
|
76
|
+
/**
|
|
77
|
+
* Get all verbs from storage (alias for getAllEdges)
|
|
78
|
+
*/
|
|
79
|
+
getAllVerbs(): Promise<GraphVerb[]>;
|
|
80
|
+
/**
|
|
81
|
+
* Delete an edge from storage
|
|
82
|
+
*/
|
|
83
|
+
deleteEdge(id: string): Promise<void>;
|
|
84
|
+
/**
|
|
85
|
+
* Delete a verb from storage (alias for deleteEdge)
|
|
86
|
+
*/
|
|
87
|
+
deleteVerb(id: string): Promise<void>;
|
|
88
|
+
/**
|
|
89
|
+
* Get edges by source node ID
|
|
90
|
+
*/
|
|
91
|
+
getEdgesBySource(sourceId: string): Promise<Edge[]>;
|
|
92
|
+
/**
|
|
93
|
+
* Get verbs by source node ID (alias for getEdgesBySource)
|
|
94
|
+
*/
|
|
95
|
+
getVerbsBySource(sourceId: string): Promise<GraphVerb[]>;
|
|
96
|
+
/**
|
|
97
|
+
* Get edges by target node ID
|
|
98
|
+
*/
|
|
99
|
+
getEdgesByTarget(targetId: string): Promise<Edge[]>;
|
|
100
|
+
/**
|
|
101
|
+
* Get verbs by target node ID (alias for getEdgesByTarget)
|
|
102
|
+
*/
|
|
103
|
+
getVerbsByTarget(targetId: string): Promise<GraphVerb[]>;
|
|
104
|
+
/**
|
|
105
|
+
* Get edges by type
|
|
106
|
+
*/
|
|
107
|
+
getEdgesByType(type: string): Promise<Edge[]>;
|
|
108
|
+
/**
|
|
109
|
+
* Get verbs by type (alias for getEdgesByType)
|
|
110
|
+
*/
|
|
111
|
+
getVerbsByType(type: string): Promise<GraphVerb[]>;
|
|
112
|
+
/**
|
|
113
|
+
* Save metadata for a node
|
|
114
|
+
*/
|
|
115
|
+
saveMetadata(id: string, metadata: any): Promise<void>;
|
|
116
|
+
/**
|
|
117
|
+
* Get metadata for a node
|
|
118
|
+
*/
|
|
119
|
+
getMetadata(id: string): Promise<any | null>;
|
|
120
|
+
/**
|
|
121
|
+
* Clear all data from storage
|
|
122
|
+
*/
|
|
123
|
+
clear(): Promise<void>;
|
|
124
|
+
/**
|
|
125
|
+
* Ensure the storage adapter is initialized
|
|
126
|
+
*/
|
|
127
|
+
private ensureInitialized;
|
|
128
|
+
/**
|
|
129
|
+
* Convert a Map to a plain object for serialization
|
|
130
|
+
*/
|
|
131
|
+
private mapToObject;
|
|
132
|
+
/**
|
|
133
|
+
* Get the directory for a node - now all nouns use the same directory
|
|
134
|
+
*/
|
|
135
|
+
private getNodeDirectory;
|
|
136
|
+
/**
|
|
137
|
+
* Get information about storage usage and capacity
|
|
138
|
+
*/
|
|
139
|
+
getStorageStatus(): Promise<{
|
|
140
|
+
type: string;
|
|
141
|
+
used: number;
|
|
142
|
+
quota: number | null;
|
|
143
|
+
details?: Record<string, any>;
|
|
144
|
+
}>;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* In-memory storage adapter for environments where OPFS is not available
|
|
148
|
+
*/
|
|
149
|
+
export declare class MemoryStorage implements StorageAdapter {
|
|
150
|
+
private nouns;
|
|
151
|
+
private verbs;
|
|
152
|
+
private metadata;
|
|
153
|
+
constructor();
|
|
154
|
+
saveNoun(noun: HNSWNoun): Promise<void>;
|
|
155
|
+
getNoun(id: string): Promise<HNSWNoun | null>;
|
|
156
|
+
getAllNouns(): Promise<HNSWNoun[]>;
|
|
157
|
+
getNounsByNounType(nounType: string): Promise<HNSWNoun[]>;
|
|
158
|
+
deleteNoun(id: string): Promise<void>;
|
|
159
|
+
saveVerb(verb: GraphVerb): Promise<void>;
|
|
160
|
+
getVerb(id: string): Promise<GraphVerb | null>;
|
|
161
|
+
getAllVerbs(): Promise<GraphVerb[]>;
|
|
162
|
+
getVerbsBySource(sourceId: string): Promise<GraphVerb[]>;
|
|
163
|
+
getVerbsByTarget(targetId: string): Promise<GraphVerb[]>;
|
|
164
|
+
getVerbsByType(type: string): Promise<GraphVerb[]>;
|
|
165
|
+
deleteVerb(id: string): Promise<void>;
|
|
166
|
+
init(): Promise<void>;
|
|
167
|
+
/**
|
|
168
|
+
* Get the noun type for a node from its metadata
|
|
169
|
+
*/
|
|
170
|
+
private getNounType;
|
|
171
|
+
saveNode(node: HNSWNode): Promise<void>;
|
|
172
|
+
getNode(id: string): Promise<HNSWNode | null>;
|
|
173
|
+
/**
|
|
174
|
+
* Get nodes by noun type
|
|
175
|
+
* @param nounType The noun type to filter by
|
|
176
|
+
* @returns Promise that resolves to an array of nodes of the specified noun type
|
|
177
|
+
*/
|
|
178
|
+
getNodesByNounType(nounType: string): Promise<HNSWNode[]>;
|
|
179
|
+
getAllNodes(): Promise<HNSWNode[]>;
|
|
180
|
+
deleteNode(id: string): Promise<void>;
|
|
181
|
+
saveMetadata(id: string, metadata: any): Promise<void>;
|
|
182
|
+
getMetadata(id: string): Promise<any | null>;
|
|
183
|
+
saveEdge(edge: Edge): Promise<void>;
|
|
184
|
+
getEdge(id: string): Promise<Edge | null>;
|
|
185
|
+
getAllEdges(): Promise<Edge[]>;
|
|
186
|
+
getEdgesBySource(sourceId: string): Promise<Edge[]>;
|
|
187
|
+
getEdgesByTarget(targetId: string): Promise<Edge[]>;
|
|
188
|
+
getEdgesByType(type: string): Promise<Edge[]>;
|
|
189
|
+
deleteEdge(id: string): Promise<void>;
|
|
190
|
+
clear(): Promise<void>;
|
|
191
|
+
/**
|
|
192
|
+
* Get information about storage usage and capacity
|
|
193
|
+
*/
|
|
194
|
+
getStorageStatus(): Promise<{
|
|
195
|
+
type: string;
|
|
196
|
+
used: number;
|
|
197
|
+
quota: number | null;
|
|
198
|
+
details?: Record<string, any>;
|
|
199
|
+
}>;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Factory function to create the appropriate storage adapter based on the environment
|
|
203
|
+
* @param options Configuration options for storage
|
|
204
|
+
* @returns Promise that resolves to a StorageAdapter instance
|
|
205
|
+
*/
|
|
206
|
+
export declare function createStorage(options?: {
|
|
207
|
+
requestPersistentStorage?: boolean;
|
|
208
|
+
r2Storage?: {
|
|
209
|
+
bucketName?: string;
|
|
210
|
+
accountId?: string;
|
|
211
|
+
accessKeyId?: string;
|
|
212
|
+
secretAccessKey?: string;
|
|
213
|
+
};
|
|
214
|
+
s3Storage?: {
|
|
215
|
+
bucketName?: string;
|
|
216
|
+
accessKeyId?: string;
|
|
217
|
+
secretAccessKey?: string;
|
|
218
|
+
region?: string;
|
|
219
|
+
};
|
|
220
|
+
gcsStorage?: {
|
|
221
|
+
bucketName?: string;
|
|
222
|
+
accessKeyId?: string;
|
|
223
|
+
secretAccessKey?: string;
|
|
224
|
+
endpoint?: string;
|
|
225
|
+
};
|
|
226
|
+
customS3Storage?: {
|
|
227
|
+
bucketName?: string;
|
|
228
|
+
accessKeyId?: string;
|
|
229
|
+
secretAccessKey?: string;
|
|
230
|
+
endpoint?: string;
|
|
231
|
+
region?: string;
|
|
232
|
+
};
|
|
233
|
+
forceFileSystemStorage?: boolean;
|
|
234
|
+
forceMemoryStorage?: boolean;
|
|
235
|
+
}): Promise<StorageAdapter>;
|
|
236
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opfsStorage.d.ts","sourceRoot":"","sources":["../../src/storage/opfsStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { GraphVerb, HNSWNoun, StorageAdapter } from '../coreTypes.js';
|
|
2
|
+
type HNSWNode = HNSWNoun;
|
|
3
|
+
type Edge = GraphVerb;
|
|
4
|
+
export { S3CompatibleStorage as R2Storage };
|
|
5
|
+
/**
|
|
6
|
+
* S3-compatible storage adapter for server environments
|
|
7
|
+
* Uses the AWS S3 client to interact with S3-compatible storage services
|
|
8
|
+
* including Amazon S3, Cloudflare R2, and Google Cloud Storage
|
|
9
|
+
*
|
|
10
|
+
* To use this adapter with Cloudflare R2, you need to provide:
|
|
11
|
+
* - bucketName: Your bucket name
|
|
12
|
+
* - accountId: Your Cloudflare account ID
|
|
13
|
+
* - accessKeyId: R2 access key ID
|
|
14
|
+
* - secretAccessKey: R2 secret access key
|
|
15
|
+
* - serviceType: 'r2'
|
|
16
|
+
*
|
|
17
|
+
* To use this adapter with Amazon S3, you need to provide:
|
|
18
|
+
* - bucketName: Your S3 bucket name
|
|
19
|
+
* - accessKeyId: AWS access key ID
|
|
20
|
+
* - secretAccessKey: AWS secret access key
|
|
21
|
+
* - region: AWS region (e.g., 'us-east-1')
|
|
22
|
+
* - serviceType: 's3'
|
|
23
|
+
*
|
|
24
|
+
* To use this adapter with Google Cloud Storage, you need to provide:
|
|
25
|
+
* - bucketName: Your GCS bucket name
|
|
26
|
+
* - accessKeyId: HMAC access key
|
|
27
|
+
* - secretAccessKey: HMAC secret
|
|
28
|
+
* - endpoint: GCS endpoint (e.g., 'https://storage.googleapis.com')
|
|
29
|
+
* - serviceType: 'gcs'
|
|
30
|
+
*
|
|
31
|
+
* For other S3-compatible services, provide:
|
|
32
|
+
* - bucketName: Your bucket name
|
|
33
|
+
* - accessKeyId: Access key ID
|
|
34
|
+
* - secretAccessKey: Secret access key
|
|
35
|
+
* - endpoint: Service endpoint URL
|
|
36
|
+
* - region: Region (if required)
|
|
37
|
+
* - serviceType: 'custom'
|
|
38
|
+
*/
|
|
39
|
+
export declare class S3CompatibleStorage implements StorageAdapter {
|
|
40
|
+
private bucketName;
|
|
41
|
+
private accessKeyId;
|
|
42
|
+
private secretAccessKey;
|
|
43
|
+
private endpoint?;
|
|
44
|
+
private region?;
|
|
45
|
+
private accountId?;
|
|
46
|
+
private serviceType;
|
|
47
|
+
private s3Client;
|
|
48
|
+
private isInitialized;
|
|
49
|
+
saveNoun(noun: HNSWNoun): Promise<void>;
|
|
50
|
+
getNoun(id: string): Promise<HNSWNoun | null>;
|
|
51
|
+
getAllNouns(): Promise<HNSWNoun[]>;
|
|
52
|
+
getNounsByNounType(nounType: string): Promise<HNSWNoun[]>;
|
|
53
|
+
deleteNoun(id: string): Promise<void>;
|
|
54
|
+
saveVerb(verb: GraphVerb): Promise<void>;
|
|
55
|
+
getVerb(id: string): Promise<GraphVerb | null>;
|
|
56
|
+
getAllVerbs(): Promise<GraphVerb[]>;
|
|
57
|
+
getVerbsBySource(sourceId: string): Promise<GraphVerb[]>;
|
|
58
|
+
getVerbsByTarget(targetId: string): Promise<GraphVerb[]>;
|
|
59
|
+
getVerbsByType(type: string): Promise<GraphVerb[]>;
|
|
60
|
+
deleteVerb(id: string): Promise<void>;
|
|
61
|
+
constructor(options: {
|
|
62
|
+
bucketName: string;
|
|
63
|
+
accessKeyId: string;
|
|
64
|
+
secretAccessKey: string;
|
|
65
|
+
serviceType: 'r2' | 's3' | 'gcs' | 'custom';
|
|
66
|
+
accountId?: string;
|
|
67
|
+
region?: string;
|
|
68
|
+
endpoint?: string;
|
|
69
|
+
});
|
|
70
|
+
/**
|
|
71
|
+
* Initialize the storage adapter
|
|
72
|
+
*/
|
|
73
|
+
init(): Promise<void>;
|
|
74
|
+
/**
|
|
75
|
+
* Save a node to storage
|
|
76
|
+
*/
|
|
77
|
+
saveNode(node: HNSWNode): Promise<void>;
|
|
78
|
+
/**
|
|
79
|
+
* Get a node from storage
|
|
80
|
+
*/
|
|
81
|
+
getNode(id: string): Promise<HNSWNode | null>;
|
|
82
|
+
/**
|
|
83
|
+
* Get nodes by noun type
|
|
84
|
+
* @param nounType The noun type to filter by
|
|
85
|
+
* @returns Promise that resolves to an array of nodes of the specified noun type
|
|
86
|
+
*/
|
|
87
|
+
getNodesByNounType(nounType: string): Promise<HNSWNode[]>;
|
|
88
|
+
/**
|
|
89
|
+
* Get all nodes from storage
|
|
90
|
+
*/
|
|
91
|
+
getAllNodes(): Promise<HNSWNode[]>;
|
|
92
|
+
/**
|
|
93
|
+
* Delete a node from storage
|
|
94
|
+
*/
|
|
95
|
+
deleteNode(id: string): Promise<void>;
|
|
96
|
+
/**
|
|
97
|
+
* Save an edge to storage
|
|
98
|
+
*/
|
|
99
|
+
saveEdge(edge: Edge): Promise<void>;
|
|
100
|
+
/**
|
|
101
|
+
* Get an edge from storage
|
|
102
|
+
*/
|
|
103
|
+
getEdge(id: string): Promise<Edge | null>;
|
|
104
|
+
/**
|
|
105
|
+
* Get all edges from storage
|
|
106
|
+
*/
|
|
107
|
+
getAllEdges(): Promise<Edge[]>;
|
|
108
|
+
/**
|
|
109
|
+
* Get edges by source node ID
|
|
110
|
+
*/
|
|
111
|
+
getEdgesBySource(sourceId: string): Promise<Edge[]>;
|
|
112
|
+
/**
|
|
113
|
+
* Get edges by target node ID
|
|
114
|
+
*/
|
|
115
|
+
getEdgesByTarget(targetId: string): Promise<Edge[]>;
|
|
116
|
+
/**
|
|
117
|
+
* Get edges by type
|
|
118
|
+
*/
|
|
119
|
+
getEdgesByType(type: string): Promise<Edge[]>;
|
|
120
|
+
/**
|
|
121
|
+
* Delete an edge from storage
|
|
122
|
+
*/
|
|
123
|
+
deleteEdge(id: string): Promise<void>;
|
|
124
|
+
/**
|
|
125
|
+
* Save metadata to storage
|
|
126
|
+
*/
|
|
127
|
+
saveMetadata(id: string, metadata: any): Promise<void>;
|
|
128
|
+
/**
|
|
129
|
+
* Get metadata from storage
|
|
130
|
+
*/
|
|
131
|
+
getMetadata(id: string): Promise<any | null>;
|
|
132
|
+
/**
|
|
133
|
+
* Clear all data from storage
|
|
134
|
+
*/
|
|
135
|
+
clear(): Promise<void>;
|
|
136
|
+
/**
|
|
137
|
+
* Get information about storage usage and capacity
|
|
138
|
+
*/
|
|
139
|
+
getStorageStatus(): Promise<{
|
|
140
|
+
type: string;
|
|
141
|
+
used: number;
|
|
142
|
+
quota: number | null;
|
|
143
|
+
details?: Record<string, any>;
|
|
144
|
+
}>;
|
|
145
|
+
/**
|
|
146
|
+
* Ensure the storage adapter is initialized
|
|
147
|
+
*/
|
|
148
|
+
private ensureInitialized;
|
|
149
|
+
/**
|
|
150
|
+
* Get the appropriate prefix for a node - now all nouns use the same prefix
|
|
151
|
+
*/
|
|
152
|
+
private getNodePrefix;
|
|
153
|
+
/**
|
|
154
|
+
* Convert a Map to a plain object for serialization
|
|
155
|
+
*/
|
|
156
|
+
private mapToObject;
|
|
157
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3CompatibleStorage.d.ts","sourceRoot":"","sources":["../../src/storage/s3CompatibleStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for pagination and filtering in data retrieval operations
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Pagination options for data retrieval
|
|
6
|
+
*/
|
|
7
|
+
export interface PaginationOptions {
|
|
8
|
+
/**
|
|
9
|
+
* The number of items to skip (for offset-based pagination)
|
|
10
|
+
*/
|
|
11
|
+
offset?: number;
|
|
12
|
+
/**
|
|
13
|
+
* The maximum number of items to return
|
|
14
|
+
*/
|
|
15
|
+
limit?: number;
|
|
16
|
+
/**
|
|
17
|
+
* Token for cursor-based pagination (for continuing from a previous page)
|
|
18
|
+
*/
|
|
19
|
+
cursor?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Filter options for noun retrieval
|
|
23
|
+
*/
|
|
24
|
+
export interface NounFilterOptions {
|
|
25
|
+
/**
|
|
26
|
+
* Filter by noun type
|
|
27
|
+
*/
|
|
28
|
+
nounType?: string | string[];
|
|
29
|
+
/**
|
|
30
|
+
* Filter by service
|
|
31
|
+
*/
|
|
32
|
+
service?: string | string[];
|
|
33
|
+
/**
|
|
34
|
+
* Filter by metadata fields (key-value pairs)
|
|
35
|
+
*/
|
|
36
|
+
metadata?: Record<string, any>;
|
|
37
|
+
/**
|
|
38
|
+
* Filter by creation date range
|
|
39
|
+
*/
|
|
40
|
+
createdAt?: {
|
|
41
|
+
from?: Date | number;
|
|
42
|
+
to?: Date | number;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Filter by update date range
|
|
46
|
+
*/
|
|
47
|
+
updatedAt?: {
|
|
48
|
+
from?: Date | number;
|
|
49
|
+
to?: Date | number;
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Filter options for verb retrieval
|
|
54
|
+
*/
|
|
55
|
+
export interface VerbFilterOptions {
|
|
56
|
+
/**
|
|
57
|
+
* Filter by verb type
|
|
58
|
+
*/
|
|
59
|
+
verbType?: string | string[];
|
|
60
|
+
/**
|
|
61
|
+
* Filter by source noun ID
|
|
62
|
+
*/
|
|
63
|
+
sourceId?: string | string[];
|
|
64
|
+
/**
|
|
65
|
+
* Filter by target noun ID
|
|
66
|
+
*/
|
|
67
|
+
targetId?: string | string[];
|
|
68
|
+
/**
|
|
69
|
+
* Filter by service
|
|
70
|
+
*/
|
|
71
|
+
service?: string | string[];
|
|
72
|
+
/**
|
|
73
|
+
* Filter by metadata fields (key-value pairs)
|
|
74
|
+
*/
|
|
75
|
+
metadata?: Record<string, any>;
|
|
76
|
+
/**
|
|
77
|
+
* Filter by creation date range
|
|
78
|
+
*/
|
|
79
|
+
createdAt?: {
|
|
80
|
+
from?: Date | number;
|
|
81
|
+
to?: Date | number;
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Filter by update date range
|
|
85
|
+
*/
|
|
86
|
+
updatedAt?: {
|
|
87
|
+
from?: Date | number;
|
|
88
|
+
to?: Date | number;
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Result of a paginated query
|
|
93
|
+
*/
|
|
94
|
+
export interface PaginatedResult<T> {
|
|
95
|
+
/**
|
|
96
|
+
* The items for the current page
|
|
97
|
+
*/
|
|
98
|
+
items: T[];
|
|
99
|
+
/**
|
|
100
|
+
* The total number of items matching the query (may be estimated)
|
|
101
|
+
*/
|
|
102
|
+
totalCount?: number;
|
|
103
|
+
/**
|
|
104
|
+
* Whether there are more items available
|
|
105
|
+
*/
|
|
106
|
+
hasMore: boolean;
|
|
107
|
+
/**
|
|
108
|
+
* Cursor for fetching the next page (for cursor-based pagination)
|
|
109
|
+
*/
|
|
110
|
+
nextCursor?: string;
|
|
111
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paginationTypes.d.ts","sourceRoot":"","sources":["../../src/types/paginationTypes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE7B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE5B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE/B;;OAEG;IACH,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;QACrB,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;KACpB,CAAC;IAEF;;OAEG;IACH,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;QACrB,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;KACpB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE7B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE5B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE/B;;OAEG;IACH,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;QACrB,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;KACpB,CAAC;IAEF;;OAEG;IACH,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;QACrB,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;KACpB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC;;OAEG;IACH,KAAK,EAAE,CAAC,EAAE,CAAC;IAEX;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
|