bindra 2.0.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 +56 -0
- package/LICENSE +21 -0
- package/README.md +229 -0
- package/dist/core/Container.d.ts +88 -0
- package/dist/core/Container.d.ts.map +1 -0
- package/dist/core/Container.js +185 -0
- package/dist/core/Container.js.map +1 -0
- package/dist/core/DataSource.d.ts +272 -0
- package/dist/core/DataSource.d.ts.map +1 -0
- package/dist/core/DataSource.js +903 -0
- package/dist/core/DataSource.js.map +1 -0
- package/dist/core/Dispatcher.d.ts +6 -0
- package/dist/core/Dispatcher.d.ts.map +1 -0
- package/dist/core/Dispatcher.js +44 -0
- package/dist/core/Dispatcher.js.map +1 -0
- package/dist/core/EventEmitter.d.ts +11 -0
- package/dist/core/EventEmitter.d.ts.map +1 -0
- package/dist/core/EventEmitter.js +34 -0
- package/dist/core/EventEmitter.js.map +1 -0
- package/dist/core/MiddlewareManager.d.ts +47 -0
- package/dist/core/MiddlewareManager.d.ts.map +1 -0
- package/dist/core/MiddlewareManager.js +86 -0
- package/dist/core/MiddlewareManager.js.map +1 -0
- package/dist/core/Observable.d.ts +12 -0
- package/dist/core/Observable.d.ts.map +1 -0
- package/dist/core/Observable.js +43 -0
- package/dist/core/Observable.js.map +1 -0
- package/dist/core/errors.d.ts +124 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +149 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/validation.d.ts +100 -0
- package/dist/core/validation.d.ts.map +1 -0
- package/dist/core/validation.js +217 -0
- package/dist/core/validation.js.map +1 -0
- package/dist/examples.d.ts +52 -0
- package/dist/examples.d.ts.map +1 -0
- package/dist/examples.js +242 -0
- package/dist/examples.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/performance.d.ts +49 -0
- package/dist/utils/performance.d.ts.map +1 -0
- package/dist/utils/performance.js +94 -0
- package/dist/utils/performance.js.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
import { EventEmitter } from './EventEmitter';
|
|
2
|
+
import { MiddlewareManager } from './MiddlewareManager';
|
|
3
|
+
import { type Signal } from './Observable';
|
|
4
|
+
import { Validator, type FieldConfig } from './validation';
|
|
5
|
+
export interface RetryConfig {
|
|
6
|
+
maxRetries?: number;
|
|
7
|
+
retryDelay?: number;
|
|
8
|
+
backoffMultiplier?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface CacheConfig {
|
|
11
|
+
enabled: boolean;
|
|
12
|
+
ttl?: number;
|
|
13
|
+
maxSize?: number;
|
|
14
|
+
}
|
|
15
|
+
export interface PaginationConfig {
|
|
16
|
+
pageSize: number;
|
|
17
|
+
currentPage: number;
|
|
18
|
+
totalRecords?: number;
|
|
19
|
+
totalPages?: number;
|
|
20
|
+
}
|
|
21
|
+
export interface RealtimeConfig {
|
|
22
|
+
enabled: boolean;
|
|
23
|
+
url?: string;
|
|
24
|
+
reconnect?: boolean;
|
|
25
|
+
reconnectInterval?: number;
|
|
26
|
+
}
|
|
27
|
+
export interface SecurityConfig {
|
|
28
|
+
csrfToken?: string;
|
|
29
|
+
csrfHeader?: string;
|
|
30
|
+
sanitizeFields?: (keyof any)[];
|
|
31
|
+
}
|
|
32
|
+
export interface DataSourceConfig<T extends Record<string, any> = any> {
|
|
33
|
+
url?: string | null;
|
|
34
|
+
data?: T[] | null;
|
|
35
|
+
retry?: RetryConfig;
|
|
36
|
+
fields?: FieldConfig<T>[];
|
|
37
|
+
cache?: CacheConfig;
|
|
38
|
+
pageSize?: number;
|
|
39
|
+
realtime?: RealtimeConfig;
|
|
40
|
+
security?: SecurityConfig;
|
|
41
|
+
}
|
|
42
|
+
export interface Field {
|
|
43
|
+
name: string;
|
|
44
|
+
type: string;
|
|
45
|
+
}
|
|
46
|
+
export interface Permissions {
|
|
47
|
+
allowInsert?: boolean;
|
|
48
|
+
allowUpdate?: boolean;
|
|
49
|
+
allowDelete?: boolean;
|
|
50
|
+
}
|
|
51
|
+
export interface QueryOptions<T = any> {
|
|
52
|
+
filter?: ((record: T) => boolean) | object | null;
|
|
53
|
+
sort?: string | ((a: T, b: T) => number) | null;
|
|
54
|
+
limit?: number | null;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* DataSource - Type-safe reactive data management with CRUD operations
|
|
58
|
+
*
|
|
59
|
+
* @template T - The type of records managed by this DataSource
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```typescript
|
|
63
|
+
* interface User {
|
|
64
|
+
* id: number;
|
|
65
|
+
* name: string;
|
|
66
|
+
* email: string;
|
|
67
|
+
* }
|
|
68
|
+
*
|
|
69
|
+
* const ds = new DataSource<User>({
|
|
70
|
+
* data: [{ id: 1, name: 'Alice', email: 'alice@example.com' }]
|
|
71
|
+
* });
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
export declare class DataSource<T extends Record<string, any> = any> extends EventEmitter {
|
|
75
|
+
url: string | null;
|
|
76
|
+
data: T[] | null;
|
|
77
|
+
fields: Field[];
|
|
78
|
+
fieldConfigs: FieldConfig<T>[];
|
|
79
|
+
validator: Validator<T> | null;
|
|
80
|
+
permissions: Permissions;
|
|
81
|
+
middleware: MiddlewareManager;
|
|
82
|
+
currentIndex: Signal<number>;
|
|
83
|
+
currentRecord: Signal<T | null>;
|
|
84
|
+
isLocal: boolean;
|
|
85
|
+
private retryConfig;
|
|
86
|
+
private cache;
|
|
87
|
+
private cacheConfig;
|
|
88
|
+
pagination: Signal<PaginationConfig>;
|
|
89
|
+
private ws?;
|
|
90
|
+
private realtimeConfig;
|
|
91
|
+
private securityConfig;
|
|
92
|
+
constructor({ url, data, retry, fields, cache, pageSize, realtime, security }?: DataSourceConfig<T>);
|
|
93
|
+
_initRemote(url: string): Promise<void>;
|
|
94
|
+
_initLocal(data: T[]): void;
|
|
95
|
+
/**
|
|
96
|
+
* Create a new record
|
|
97
|
+
*
|
|
98
|
+
* @param record - The record to create (can be partial)
|
|
99
|
+
* @returns Promise resolving to the created record
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* ```typescript
|
|
103
|
+
* const newUser = await ds.create({
|
|
104
|
+
* name: 'Alice',
|
|
105
|
+
* email: 'alice@example.com'
|
|
106
|
+
* });
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
create(record: Partial<T>): Promise<T>;
|
|
110
|
+
/**
|
|
111
|
+
* Update an existing record
|
|
112
|
+
*
|
|
113
|
+
* @param key - The key/id of the record to update
|
|
114
|
+
* @param changes - Partial changes to apply
|
|
115
|
+
* @returns Promise resolving to the updated record
|
|
116
|
+
*/
|
|
117
|
+
update(key: any, changes: Partial<T>): Promise<T>;
|
|
118
|
+
/**
|
|
119
|
+
* Delete a record
|
|
120
|
+
*
|
|
121
|
+
* @param key - The key/id of the record to delete
|
|
122
|
+
* @returns Promise resolving to the deleted record
|
|
123
|
+
*/
|
|
124
|
+
delete(key: any): Promise<T>;
|
|
125
|
+
/**
|
|
126
|
+
* Create multiple records in a single operation
|
|
127
|
+
*
|
|
128
|
+
* @param records - Array of partial records to create
|
|
129
|
+
* @returns Promise resolving to array of created records
|
|
130
|
+
*/
|
|
131
|
+
createBatch(records: Partial<T>[]): Promise<T[]>;
|
|
132
|
+
/**
|
|
133
|
+
* Update multiple records in a single operation
|
|
134
|
+
*
|
|
135
|
+
* @param updates - Array of { key, changes } objects
|
|
136
|
+
* @returns Promise resolving to array of updated records
|
|
137
|
+
*/
|
|
138
|
+
updateBatch(updates: Array<{
|
|
139
|
+
key: any;
|
|
140
|
+
changes: Partial<T>;
|
|
141
|
+
}>): Promise<T[]>;
|
|
142
|
+
/**
|
|
143
|
+
* Delete multiple records in a single operation
|
|
144
|
+
*
|
|
145
|
+
* @param keys - Array of keys/ids to delete
|
|
146
|
+
* @returns Promise resolving to array of deleted records
|
|
147
|
+
*/
|
|
148
|
+
deleteBatch(keys: any[]): Promise<T[]>;
|
|
149
|
+
/**
|
|
150
|
+
* Optimistic update - immediately update UI, rollback on error
|
|
151
|
+
*
|
|
152
|
+
* @param key - The key/id of the record to update
|
|
153
|
+
* @param changes - Partial changes to apply
|
|
154
|
+
* @returns Promise resolving to the updated record
|
|
155
|
+
*/
|
|
156
|
+
updateOptimistic(key: any, changes: Partial<T>): Promise<T>;
|
|
157
|
+
/**
|
|
158
|
+
* Query records with filtering, sorting, and limiting
|
|
159
|
+
*
|
|
160
|
+
* @param options - Query options
|
|
161
|
+
* @returns Promise resolving to array of matching records
|
|
162
|
+
*/
|
|
163
|
+
query({ filter, sort, limit }?: QueryOptions<T>): Promise<T[]>;
|
|
164
|
+
/**
|
|
165
|
+
* Find a record by its key (local mode only)
|
|
166
|
+
*
|
|
167
|
+
* @param key - The key/id to search for
|
|
168
|
+
* @returns The found record or undefined
|
|
169
|
+
*/
|
|
170
|
+
findByKey(key: any): T | undefined;
|
|
171
|
+
/**
|
|
172
|
+
* Fetch with automatic retry and exponential backoff
|
|
173
|
+
*
|
|
174
|
+
* @param url - The URL to fetch
|
|
175
|
+
* @param options - Fetch options
|
|
176
|
+
* @returns Promise resolving to Response
|
|
177
|
+
*/
|
|
178
|
+
private _fetchWithRetry;
|
|
179
|
+
next(): void;
|
|
180
|
+
prev(): void;
|
|
181
|
+
goto(index: number): void;
|
|
182
|
+
private getCacheKey;
|
|
183
|
+
/**
|
|
184
|
+
* Get a record from cache (internal use)
|
|
185
|
+
* @internal
|
|
186
|
+
*/
|
|
187
|
+
getFromCache(key: any): T | null;
|
|
188
|
+
private setCache;
|
|
189
|
+
/**
|
|
190
|
+
* Clear all cached records
|
|
191
|
+
*/
|
|
192
|
+
clearCache(): void;
|
|
193
|
+
/**
|
|
194
|
+
* Invalidate a specific cached record
|
|
195
|
+
*/
|
|
196
|
+
invalidateCache(key: any): void;
|
|
197
|
+
/**
|
|
198
|
+
* Load a specific page of data
|
|
199
|
+
*
|
|
200
|
+
* @param page - Page number (1-indexed)
|
|
201
|
+
* @returns Array of records for the requested page
|
|
202
|
+
*/
|
|
203
|
+
loadPage(page: number): Promise<T[]>;
|
|
204
|
+
/**
|
|
205
|
+
* Load the next page
|
|
206
|
+
*/
|
|
207
|
+
nextPage(): Promise<T[]>;
|
|
208
|
+
/**
|
|
209
|
+
* Load the previous page
|
|
210
|
+
*/
|
|
211
|
+
prevPage(): Promise<T[]>;
|
|
212
|
+
/**
|
|
213
|
+
* Set page size
|
|
214
|
+
*/
|
|
215
|
+
setPageSize(size: number): void;
|
|
216
|
+
/**
|
|
217
|
+
* Connect to WebSocket for real-time updates
|
|
218
|
+
*/
|
|
219
|
+
connectWebSocket(): void;
|
|
220
|
+
/**
|
|
221
|
+
* Handle incoming WebSocket messages
|
|
222
|
+
*/
|
|
223
|
+
private handleRealtimeUpdate;
|
|
224
|
+
/**
|
|
225
|
+
* Disconnect WebSocket
|
|
226
|
+
*/
|
|
227
|
+
disconnectWebSocket(): void;
|
|
228
|
+
/**
|
|
229
|
+
* Send a message through WebSocket
|
|
230
|
+
*/
|
|
231
|
+
sendWebSocketMessage(message: any): void;
|
|
232
|
+
/**
|
|
233
|
+
* Sanitize string to prevent XSS attacks
|
|
234
|
+
*/
|
|
235
|
+
private sanitize;
|
|
236
|
+
/**
|
|
237
|
+
* Sanitize a record's fields that are marked for sanitization
|
|
238
|
+
*/
|
|
239
|
+
private sanitizeRecord;
|
|
240
|
+
/**
|
|
241
|
+
* Get headers with CSRF token if configured
|
|
242
|
+
*/
|
|
243
|
+
private getSecurityHeaders;
|
|
244
|
+
/**
|
|
245
|
+
* Validate a single field
|
|
246
|
+
*
|
|
247
|
+
* @param fieldName - Name of the field to validate
|
|
248
|
+
* @param value - Value to validate
|
|
249
|
+
* @param record - Optional full record for context
|
|
250
|
+
* @returns Error message if invalid, null if valid
|
|
251
|
+
*/
|
|
252
|
+
validateField(fieldName: keyof T, value: any, record?: Partial<T>): Promise<string | null>;
|
|
253
|
+
/**
|
|
254
|
+
* Validate a complete record
|
|
255
|
+
*
|
|
256
|
+
* @param record - Record to validate
|
|
257
|
+
* @returns Object with field errors, or null if valid
|
|
258
|
+
*/
|
|
259
|
+
validateRecord(record: Partial<T>): Promise<Record<string, string> | null>;
|
|
260
|
+
/**
|
|
261
|
+
* Get field configuration by name
|
|
262
|
+
*
|
|
263
|
+
* @param name - Field name
|
|
264
|
+
* @returns Field configuration or undefined
|
|
265
|
+
*/
|
|
266
|
+
getFieldConfig(name: keyof T): FieldConfig<T> | undefined;
|
|
267
|
+
/**
|
|
268
|
+
* Check if validation is enabled
|
|
269
|
+
*/
|
|
270
|
+
hasValidation(): boolean;
|
|
271
|
+
}
|
|
272
|
+
//# sourceMappingURL=DataSource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataSource.d.ts","sourceRoot":"","sources":["../../src/core/DataSource.ts"],"names":[],"mappings":"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"}
|