@openrfid/core 0.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/LICENSE +23 -0
- package/dist/index.d.mts +407 -0
- package/dist/index.d.ts +407 -0
- package/dist/index.js +787 -0
- package/dist/index.mjs +742 -0
- package/package.json +45 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,407 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenRFID Simulator - The Open Source RFID Reader Simulator for Developers.
|
|
3
|
+
* Copyright (c) 2026 RFID Software India Private Limited - https://rfidsoftwares.com
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the MIT License.
|
|
6
|
+
* For RFID software, enterprise tools, and hardware drivers, visit https://rfidsoftwares.com
|
|
7
|
+
*/
|
|
8
|
+
declare enum ComponentState {
|
|
9
|
+
UNINITIALIZED = "UNINITIALIZED",
|
|
10
|
+
INITIALIZED = "INITIALIZED",
|
|
11
|
+
RUNNING = "RUNNING",
|
|
12
|
+
STOPPED = "STOPPED",
|
|
13
|
+
DISPOSED = "DISPOSED",
|
|
14
|
+
ERROR = "ERROR"
|
|
15
|
+
}
|
|
16
|
+
interface ILifecycle {
|
|
17
|
+
state: ComponentState;
|
|
18
|
+
initialize(): Promise<void>;
|
|
19
|
+
start(): Promise<void>;
|
|
20
|
+
stop(): Promise<void>;
|
|
21
|
+
dispose(): Promise<void>;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* OpenRFID Simulator - The Open Source RFID Reader Simulator for Developers.
|
|
26
|
+
* Copyright (c) 2026 RFID Software India Private Limited - https://rfidsoftwares.com
|
|
27
|
+
*
|
|
28
|
+
* Licensed under the MIT License.
|
|
29
|
+
* For RFID software, enterprise tools, and hardware drivers, visit https://rfidsoftwares.com
|
|
30
|
+
*/
|
|
31
|
+
interface EventMap {
|
|
32
|
+
ReaderConnected: {
|
|
33
|
+
readerId: string;
|
|
34
|
+
name: string;
|
|
35
|
+
ip: string;
|
|
36
|
+
port: number;
|
|
37
|
+
};
|
|
38
|
+
ReaderDisconnected: {
|
|
39
|
+
readerId: string;
|
|
40
|
+
reason?: string;
|
|
41
|
+
};
|
|
42
|
+
TagDetected: {
|
|
43
|
+
readerId: string;
|
|
44
|
+
antennaId: number;
|
|
45
|
+
epc: string;
|
|
46
|
+
tid?: string;
|
|
47
|
+
rssi: number;
|
|
48
|
+
timestamp: number;
|
|
49
|
+
protocol?: string;
|
|
50
|
+
};
|
|
51
|
+
TagRemoved: {
|
|
52
|
+
epc: string;
|
|
53
|
+
readerId: string;
|
|
54
|
+
timestamp: number;
|
|
55
|
+
};
|
|
56
|
+
TagMoved: {
|
|
57
|
+
epc: string;
|
|
58
|
+
fromZone?: string;
|
|
59
|
+
toZone?: string;
|
|
60
|
+
timestamp: number;
|
|
61
|
+
};
|
|
62
|
+
ReaderError: {
|
|
63
|
+
readerId: string;
|
|
64
|
+
error: string;
|
|
65
|
+
code?: string;
|
|
66
|
+
};
|
|
67
|
+
MQTTPublished: {
|
|
68
|
+
topic: string;
|
|
69
|
+
payload: string;
|
|
70
|
+
qos: number;
|
|
71
|
+
};
|
|
72
|
+
HTTPRequestReceived: {
|
|
73
|
+
method: string;
|
|
74
|
+
path: string;
|
|
75
|
+
statusCode: number;
|
|
76
|
+
};
|
|
77
|
+
SystemLog: {
|
|
78
|
+
level: 'debug' | 'info' | 'warn' | 'error';
|
|
79
|
+
message: string;
|
|
80
|
+
data?: any;
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
type EventHandler<T = any> = (payload: T) => void | Promise<void>;
|
|
84
|
+
declare class EventBus {
|
|
85
|
+
private listeners;
|
|
86
|
+
on<K extends keyof EventMap>(event: K, handler: EventHandler<EventMap[K]>): () => void;
|
|
87
|
+
off<K extends keyof EventMap>(event: K, handler: EventHandler<EventMap[K]>): void;
|
|
88
|
+
emit<K extends keyof EventMap>(event: K, payload: EventMap[K]): Promise<void>;
|
|
89
|
+
removeAllListeners(event?: keyof EventMap): void;
|
|
90
|
+
listenerCount(event: keyof EventMap): number;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* OpenRFID Simulator - The Open Source RFID Reader Simulator for Developers.
|
|
95
|
+
* Copyright (c) 2026 RFID Software India Private Limited - https://rfidsoftwares.com
|
|
96
|
+
*
|
|
97
|
+
* Licensed under the MIT License.
|
|
98
|
+
* For RFID software, enterprise tools, and hardware drivers, visit https://rfidsoftwares.com
|
|
99
|
+
*/
|
|
100
|
+
type Factory<T> = (container: Container) => T;
|
|
101
|
+
declare class Container {
|
|
102
|
+
private services;
|
|
103
|
+
register<T>(key: string, factory: Factory<T>, singleton?: boolean): void;
|
|
104
|
+
registerInstance<T>(key: string, instance: T): void;
|
|
105
|
+
resolve<T>(key: string): T;
|
|
106
|
+
has(key: string): boolean;
|
|
107
|
+
reset(): void;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* OpenRFID Simulator - The Open Source RFID Reader Simulator for Developers.
|
|
112
|
+
* Copyright (c) 2026 RFID Software India Private Limited - https://rfidsoftwares.com
|
|
113
|
+
*
|
|
114
|
+
* Licensed under the MIT License.
|
|
115
|
+
* For RFID software, enterprise tools, and hardware drivers, visit https://rfidsoftwares.com
|
|
116
|
+
*/
|
|
117
|
+
interface AppConfig {
|
|
118
|
+
server: {
|
|
119
|
+
port: number;
|
|
120
|
+
host: string;
|
|
121
|
+
};
|
|
122
|
+
mqtt: {
|
|
123
|
+
enabled: boolean;
|
|
124
|
+
brokerUrl: string;
|
|
125
|
+
topicPrefix: string;
|
|
126
|
+
};
|
|
127
|
+
websocket: {
|
|
128
|
+
port: number;
|
|
129
|
+
};
|
|
130
|
+
storage: {
|
|
131
|
+
dbPath: string;
|
|
132
|
+
memoryEventLimit: number;
|
|
133
|
+
eventWarningThreshold: number;
|
|
134
|
+
autoTrimEnabled: boolean;
|
|
135
|
+
};
|
|
136
|
+
simulator: {
|
|
137
|
+
defaultReadIntervalMs: number;
|
|
138
|
+
defaultRssi: number;
|
|
139
|
+
};
|
|
140
|
+
[key: string]: any;
|
|
141
|
+
}
|
|
142
|
+
declare const defaultConfig: AppConfig;
|
|
143
|
+
type DeepPartial<T> = {
|
|
144
|
+
[P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
|
|
145
|
+
};
|
|
146
|
+
declare class ConfigManager {
|
|
147
|
+
private config;
|
|
148
|
+
private listeners;
|
|
149
|
+
constructor(initialConfig?: DeepPartial<AppConfig>);
|
|
150
|
+
get<T = any>(path: string): T;
|
|
151
|
+
set(path: string, value: any): void;
|
|
152
|
+
getAll(): AppConfig;
|
|
153
|
+
onChange(listener: (config: AppConfig) => void): () => void;
|
|
154
|
+
private notify;
|
|
155
|
+
private deepMerge;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* OpenRFID Simulator - The Open Source RFID Reader Simulator for Developers.
|
|
160
|
+
* Copyright (c) 2026 RFID Software India Private Limited - https://rfidsoftwares.com
|
|
161
|
+
*
|
|
162
|
+
* Licensed under the MIT License.
|
|
163
|
+
* For RFID software, enterprise tools, and hardware drivers, visit https://rfidsoftwares.com
|
|
164
|
+
*/
|
|
165
|
+
type LogLevel = 'debug' | 'info' | 'warn' | 'error';
|
|
166
|
+
interface LogEntry {
|
|
167
|
+
timestamp: string;
|
|
168
|
+
level: LogLevel;
|
|
169
|
+
context?: string;
|
|
170
|
+
message: string;
|
|
171
|
+
data?: any;
|
|
172
|
+
}
|
|
173
|
+
declare class Logger {
|
|
174
|
+
private context;
|
|
175
|
+
private minLevel;
|
|
176
|
+
private levelWeights;
|
|
177
|
+
constructor(context?: string, minLevel?: LogLevel);
|
|
178
|
+
debug(message: string, data?: any): void;
|
|
179
|
+
info(message: string, data?: any): void;
|
|
180
|
+
warn(message: string, data?: any): void;
|
|
181
|
+
error(message: string, data?: any): void;
|
|
182
|
+
private log;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* OpenRFID Simulator - The Open Source RFID Reader Simulator for Developers.
|
|
187
|
+
* Copyright (c) 2026 RFID Software India Private Limited - https://rfidsoftwares.com
|
|
188
|
+
*
|
|
189
|
+
* Licensed under the MIT License.
|
|
190
|
+
* For RFID software, enterprise tools, and hardware drivers, visit https://rfidsoftwares.com
|
|
191
|
+
*/
|
|
192
|
+
interface ReaderRecord {
|
|
193
|
+
id: string;
|
|
194
|
+
name: string;
|
|
195
|
+
vendor: string;
|
|
196
|
+
model: string;
|
|
197
|
+
ip: string;
|
|
198
|
+
port: number;
|
|
199
|
+
protocol: string;
|
|
200
|
+
status: string;
|
|
201
|
+
createdAt: string;
|
|
202
|
+
readRate?: number;
|
|
203
|
+
readMode?: 'continuous' | 'periodic';
|
|
204
|
+
readIntervalValue?: number;
|
|
205
|
+
readIntervalUnit?: 'seconds' | 'minutes' | 'hours';
|
|
206
|
+
epcFilterStart?: string;
|
|
207
|
+
epcFilterEnd?: string;
|
|
208
|
+
epcFilterPrefix?: string;
|
|
209
|
+
}
|
|
210
|
+
interface TagRecord {
|
|
211
|
+
id: string;
|
|
212
|
+
epc: string;
|
|
213
|
+
tid?: string;
|
|
214
|
+
userMemory?: string;
|
|
215
|
+
accessPassword?: string;
|
|
216
|
+
killPassword?: string;
|
|
217
|
+
protocol?: string;
|
|
218
|
+
}
|
|
219
|
+
interface EventRecord {
|
|
220
|
+
id: string;
|
|
221
|
+
date: string;
|
|
222
|
+
timestamp: string;
|
|
223
|
+
readerId: string;
|
|
224
|
+
antennaId: number;
|
|
225
|
+
epc: string;
|
|
226
|
+
rssi: number;
|
|
227
|
+
protocol: string;
|
|
228
|
+
payload?: string;
|
|
229
|
+
}
|
|
230
|
+
/** Options for filtering/paginating event queries */
|
|
231
|
+
interface EventQueryOptions {
|
|
232
|
+
date?: string;
|
|
233
|
+
from?: string;
|
|
234
|
+
to?: string;
|
|
235
|
+
readerId?: string;
|
|
236
|
+
epc?: string;
|
|
237
|
+
protocol?: string;
|
|
238
|
+
limit?: number;
|
|
239
|
+
offset?: number;
|
|
240
|
+
}
|
|
241
|
+
/** Storage-level statistics about the event log */
|
|
242
|
+
interface EventStorageStats {
|
|
243
|
+
totalEvents: number;
|
|
244
|
+
totalDays: number;
|
|
245
|
+
oldestEventDate: string | null;
|
|
246
|
+
newestEventDate: string | null;
|
|
247
|
+
eventsByDate: {
|
|
248
|
+
date: string;
|
|
249
|
+
count: number;
|
|
250
|
+
}[];
|
|
251
|
+
}
|
|
252
|
+
interface AntennaRecord {
|
|
253
|
+
id: string;
|
|
254
|
+
readerId: string;
|
|
255
|
+
index: number;
|
|
256
|
+
gain: number;
|
|
257
|
+
power: number;
|
|
258
|
+
frequency: number;
|
|
259
|
+
rssiOffset: number;
|
|
260
|
+
readZone: string;
|
|
261
|
+
enabled: boolean;
|
|
262
|
+
}
|
|
263
|
+
interface IStorageDriver {
|
|
264
|
+
connect(): Promise<void>;
|
|
265
|
+
disconnect(): Promise<void>;
|
|
266
|
+
getReaders(): Promise<ReaderRecord[]>;
|
|
267
|
+
getReaderById(id: string): Promise<ReaderRecord | null>;
|
|
268
|
+
saveReader(reader: ReaderRecord): Promise<void>;
|
|
269
|
+
deleteReader(id: string): Promise<void>;
|
|
270
|
+
saveAntenna(antenna: AntennaRecord): Promise<void>;
|
|
271
|
+
getAntennasByReaderId(readerId: string): Promise<AntennaRecord[]>;
|
|
272
|
+
getTags(): Promise<TagRecord[]>;
|
|
273
|
+
getTagByEpc(epc: string): Promise<TagRecord | null>;
|
|
274
|
+
saveTag(tag: TagRecord): Promise<void>;
|
|
275
|
+
deleteTag(id: string): Promise<void>;
|
|
276
|
+
logEvent(event: EventRecord): Promise<void>;
|
|
277
|
+
getEvents(options?: EventQueryOptions): Promise<EventRecord[]>;
|
|
278
|
+
getEventsByDate(date: string, limit?: number, offset?: number): Promise<EventRecord[]>;
|
|
279
|
+
getEventDates(): Promise<{
|
|
280
|
+
date: string;
|
|
281
|
+
count: number;
|
|
282
|
+
}[]>;
|
|
283
|
+
getEventStats(): Promise<EventStorageStats>;
|
|
284
|
+
getEventCount(options?: Omit<EventQueryOptions, 'limit' | 'offset'>): Promise<number>;
|
|
285
|
+
deleteEventsByDate(date: string): Promise<{
|
|
286
|
+
deleted: number;
|
|
287
|
+
}>;
|
|
288
|
+
clearAllEvents(): Promise<{
|
|
289
|
+
deleted: number;
|
|
290
|
+
}>;
|
|
291
|
+
clearAllData(): Promise<void>;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* OpenRFID Simulator - The Open Source RFID Reader Simulator for Developers.
|
|
296
|
+
* Copyright (c) 2026 RFID Software India Private Limited - https://rfidsoftwares.com
|
|
297
|
+
*
|
|
298
|
+
* Licensed under the MIT License.
|
|
299
|
+
* For RFID software, enterprise tools, and hardware drivers, visit https://rfidsoftwares.com
|
|
300
|
+
*/
|
|
301
|
+
|
|
302
|
+
declare class MemoryStorageDriver implements IStorageDriver {
|
|
303
|
+
private config?;
|
|
304
|
+
private readers;
|
|
305
|
+
private tags;
|
|
306
|
+
private antennas;
|
|
307
|
+
private events;
|
|
308
|
+
private connected;
|
|
309
|
+
private maxEvents;
|
|
310
|
+
private warningThreshold;
|
|
311
|
+
private autoTrim;
|
|
312
|
+
private configUnsubscribe?;
|
|
313
|
+
constructor(config?: ConfigManager | undefined);
|
|
314
|
+
connect(): Promise<void>;
|
|
315
|
+
disconnect(): Promise<void>;
|
|
316
|
+
getReaders(): Promise<ReaderRecord[]>;
|
|
317
|
+
getReaderById(id: string): Promise<ReaderRecord | null>;
|
|
318
|
+
saveReader(reader: ReaderRecord): Promise<void>;
|
|
319
|
+
deleteReader(id: string): Promise<void>;
|
|
320
|
+
saveAntenna(antenna: AntennaRecord): Promise<void>;
|
|
321
|
+
getAntennasByReaderId(readerId: string): Promise<AntennaRecord[]>;
|
|
322
|
+
getTags(): Promise<TagRecord[]>;
|
|
323
|
+
getTagByEpc(epc: string): Promise<TagRecord | null>;
|
|
324
|
+
saveTag(tag: TagRecord): Promise<void>;
|
|
325
|
+
deleteTag(id: string): Promise<void>;
|
|
326
|
+
logEvent(event: EventRecord): Promise<void>;
|
|
327
|
+
getEvents(options?: EventQueryOptions): Promise<EventRecord[]>;
|
|
328
|
+
getEventsByDate(date: string, limit?: number, offset?: number): Promise<EventRecord[]>;
|
|
329
|
+
getEventDates(): Promise<{
|
|
330
|
+
date: string;
|
|
331
|
+
count: number;
|
|
332
|
+
}[]>;
|
|
333
|
+
getEventStats(): Promise<EventStorageStats>;
|
|
334
|
+
getEventCount(options?: Omit<EventQueryOptions, 'limit' | 'offset'>): Promise<number>;
|
|
335
|
+
deleteEventsByDate(date: string): Promise<{
|
|
336
|
+
deleted: number;
|
|
337
|
+
}>;
|
|
338
|
+
clearAllEvents(): Promise<{
|
|
339
|
+
deleted: number;
|
|
340
|
+
}>;
|
|
341
|
+
clearAllData(): Promise<void>;
|
|
342
|
+
getMemoryUsage(): {
|
|
343
|
+
current: number;
|
|
344
|
+
limit: number;
|
|
345
|
+
percent: number;
|
|
346
|
+
isWarning: boolean;
|
|
347
|
+
};
|
|
348
|
+
setMemoryLimit(limit: number): void;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* OpenRFID Simulator - The Open Source RFID Reader Simulator for Developers.
|
|
353
|
+
* Copyright (c) 2026 RFID Software India Private Limited - https://rfidsoftwares.com
|
|
354
|
+
*
|
|
355
|
+
* Licensed under the MIT License.
|
|
356
|
+
* For RFID software, enterprise tools, and hardware drivers, visit https://rfidsoftwares.com
|
|
357
|
+
*/
|
|
358
|
+
|
|
359
|
+
declare class SqliteStorageDriver implements IStorageDriver {
|
|
360
|
+
private dbPath;
|
|
361
|
+
private db;
|
|
362
|
+
constructor(dbPath?: string);
|
|
363
|
+
connect(): Promise<void>;
|
|
364
|
+
disconnect(): Promise<void>;
|
|
365
|
+
private initTables;
|
|
366
|
+
getReaders(): Promise<ReaderRecord[]>;
|
|
367
|
+
getReaderById(id: string): Promise<ReaderRecord | null>;
|
|
368
|
+
saveReader(reader: ReaderRecord): Promise<void>;
|
|
369
|
+
deleteReader(id: string): Promise<void>;
|
|
370
|
+
saveAntenna(antenna: AntennaRecord): Promise<void>;
|
|
371
|
+
getAntennasByReaderId(readerId: string): Promise<AntennaRecord[]>;
|
|
372
|
+
getTags(): Promise<TagRecord[]>;
|
|
373
|
+
getTagByEpc(epc: string): Promise<TagRecord | null>;
|
|
374
|
+
saveTag(tag: TagRecord): Promise<void>;
|
|
375
|
+
deleteTag(id: string): Promise<void>;
|
|
376
|
+
logEvent(event: EventRecord): Promise<void>;
|
|
377
|
+
getEvents(options?: EventQueryOptions): Promise<EventRecord[]>;
|
|
378
|
+
getEventsByDate(date: string, limit?: number, offset?: number): Promise<EventRecord[]>;
|
|
379
|
+
getEventDates(): Promise<{
|
|
380
|
+
date: string;
|
|
381
|
+
count: number;
|
|
382
|
+
}[]>;
|
|
383
|
+
getEventStats(): Promise<EventStorageStats>;
|
|
384
|
+
getEventCount(options?: Omit<EventQueryOptions, 'limit' | 'offset'>): Promise<number>;
|
|
385
|
+
deleteEventsByDate(date: string): Promise<{
|
|
386
|
+
deleted: number;
|
|
387
|
+
}>;
|
|
388
|
+
clearAllEvents(): Promise<{
|
|
389
|
+
deleted: number;
|
|
390
|
+
}>;
|
|
391
|
+
clearAllData(): Promise<void>;
|
|
392
|
+
private checkConnection;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
declare const BRAND: {
|
|
396
|
+
name: string;
|
|
397
|
+
tagline: string;
|
|
398
|
+
organization: string;
|
|
399
|
+
website: string;
|
|
400
|
+
docsUrl: string;
|
|
401
|
+
githubUrl: string;
|
|
402
|
+
license: string;
|
|
403
|
+
copyright: string;
|
|
404
|
+
headerBanner: string;
|
|
405
|
+
};
|
|
406
|
+
|
|
407
|
+
export { type AntennaRecord, type AppConfig, BRAND, ComponentState, ConfigManager, Container, type DeepPartial, EventBus, type EventHandler, type EventMap, type EventQueryOptions, type EventRecord, type EventStorageStats, type Factory, type ILifecycle, type IStorageDriver, type LogEntry, type LogLevel, Logger, MemoryStorageDriver, type ReaderRecord, SqliteStorageDriver, type TagRecord, defaultConfig };
|