@siriux/core 1.0.0 → 1.0.1
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/dist/databases/snowflakeDatabase.d.ts +45 -0
- package/dist/databases/snowflakeDatabase.d.ts.map +1 -0
- package/dist/databases/snowflakeDatabase.js +346 -0
- package/dist/databases/snowflakeDatabase.js.map +1 -0
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -11
- package/dist/index.js.map +1 -1
- package/dist/mock/inMemoryMockDatabase.d.ts +72 -0
- package/dist/mock/inMemoryMockDatabase.d.ts.map +1 -0
- package/dist/mock/inMemoryMockDatabase.js +286 -0
- package/dist/mock/inMemoryMockDatabase.js.map +1 -0
- package/dist/mock/mockDatabase.d.ts +47 -0
- package/dist/mock/mockDatabase.d.ts.map +1 -0
- package/dist/mock/mockDatabase.js +146 -0
- package/dist/mock/mockDatabase.js.map +1 -0
- package/dist/mock/mockDatabaseFactory.d.ts +40 -0
- package/dist/mock/mockDatabaseFactory.d.ts.map +1 -0
- package/dist/mock/mockDatabaseFactory.js +335 -0
- package/dist/mock/mockDatabaseFactory.js.map +1 -0
- package/dist/types/index.d.ts +72 -14
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -1
- package/package.json +16 -10
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// In-memory mock database - no external dependencies required
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.inMemoryMockDatabase = exports.InMemoryMockDatabase = void 0;
|
|
5
|
+
class InMemoryMockDatabase {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.users = new Map();
|
|
8
|
+
this.sessions = new Map();
|
|
9
|
+
this.auditLogs = [];
|
|
10
|
+
this.isInitialized = false;
|
|
11
|
+
}
|
|
12
|
+
async initialize() {
|
|
13
|
+
if (this.isInitialized)
|
|
14
|
+
return;
|
|
15
|
+
try {
|
|
16
|
+
await this.seedData();
|
|
17
|
+
this.isInitialized = true;
|
|
18
|
+
console.log('🗄️ In-memory mock database initialized');
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
console.error('Failed to initialize mock database:', error);
|
|
22
|
+
throw error;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
async seedData() {
|
|
26
|
+
// Mock users (plain text for demo simplicity)
|
|
27
|
+
const mockUsers = [
|
|
28
|
+
{
|
|
29
|
+
id: '1',
|
|
30
|
+
email: 'admin@siriux.dev',
|
|
31
|
+
password: 'admin123',
|
|
32
|
+
firstName: 'Admin',
|
|
33
|
+
lastName: 'User',
|
|
34
|
+
role: 'admin',
|
|
35
|
+
createdAt: new Date().toISOString(),
|
|
36
|
+
updatedAt: new Date().toISOString()
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
id: '2',
|
|
40
|
+
email: 'user@siriux.dev',
|
|
41
|
+
password: 'user123',
|
|
42
|
+
firstName: 'Demo',
|
|
43
|
+
lastName: 'User',
|
|
44
|
+
role: 'user',
|
|
45
|
+
createdAt: new Date().toISOString(),
|
|
46
|
+
updatedAt: new Date().toISOString()
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
id: '3',
|
|
50
|
+
email: 'manager@siriux.dev',
|
|
51
|
+
password: 'manager123',
|
|
52
|
+
firstName: 'Manager',
|
|
53
|
+
lastName: 'User',
|
|
54
|
+
role: 'manager',
|
|
55
|
+
createdAt: new Date().toISOString(),
|
|
56
|
+
updatedAt: new Date().toISOString()
|
|
57
|
+
}
|
|
58
|
+
];
|
|
59
|
+
// Store users in memory
|
|
60
|
+
mockUsers.forEach(user => {
|
|
61
|
+
this.users.set(user.email, user);
|
|
62
|
+
});
|
|
63
|
+
console.log(`👥 Seeded ${mockUsers.length} mock users`);
|
|
64
|
+
}
|
|
65
|
+
// User operations
|
|
66
|
+
async getUserByEmail(email) {
|
|
67
|
+
await this.initialize();
|
|
68
|
+
return this.users.get(email) || null;
|
|
69
|
+
}
|
|
70
|
+
async getUserById(id) {
|
|
71
|
+
await this.initialize();
|
|
72
|
+
for (const user of this.users.values()) {
|
|
73
|
+
if (user.id === id)
|
|
74
|
+
return user;
|
|
75
|
+
}
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
async createUser(userData) {
|
|
79
|
+
await this.initialize();
|
|
80
|
+
const id = Date.now().toString();
|
|
81
|
+
const now = new Date().toISOString();
|
|
82
|
+
const user = {
|
|
83
|
+
id,
|
|
84
|
+
...userData,
|
|
85
|
+
createdAt: now,
|
|
86
|
+
updatedAt: now
|
|
87
|
+
};
|
|
88
|
+
this.users.set(user.email, user);
|
|
89
|
+
// Log the creation
|
|
90
|
+
await this.logAudit({
|
|
91
|
+
userId: user.id,
|
|
92
|
+
action: 'CREATE',
|
|
93
|
+
resource: 'user',
|
|
94
|
+
metadata: JSON.stringify({ email: user.email })
|
|
95
|
+
});
|
|
96
|
+
return user;
|
|
97
|
+
}
|
|
98
|
+
async updateUser(id, updates) {
|
|
99
|
+
await this.initialize();
|
|
100
|
+
for (const [email, user] of this.users.entries()) {
|
|
101
|
+
if (user.id === id) {
|
|
102
|
+
const updatedUser = {
|
|
103
|
+
...user,
|
|
104
|
+
...updates,
|
|
105
|
+
updatedAt: new Date().toISOString()
|
|
106
|
+
};
|
|
107
|
+
this.users.set(email, updatedUser);
|
|
108
|
+
await this.logAudit({
|
|
109
|
+
userId: user.id,
|
|
110
|
+
action: 'UPDATE',
|
|
111
|
+
resource: 'user',
|
|
112
|
+
metadata: JSON.stringify(updates)
|
|
113
|
+
});
|
|
114
|
+
return updatedUser;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
// Session operations
|
|
120
|
+
async createSession(sessionData) {
|
|
121
|
+
await this.initialize();
|
|
122
|
+
const id = Date.now().toString();
|
|
123
|
+
const now = new Date().toISOString();
|
|
124
|
+
const session = {
|
|
125
|
+
id,
|
|
126
|
+
...sessionData,
|
|
127
|
+
createdAt: now
|
|
128
|
+
};
|
|
129
|
+
this.sessions.set(session.accessToken, session);
|
|
130
|
+
await this.logAudit({
|
|
131
|
+
userId: session.userId,
|
|
132
|
+
action: 'CREATE',
|
|
133
|
+
resource: 'session',
|
|
134
|
+
metadata: JSON.stringify({ sessionId: session.id })
|
|
135
|
+
});
|
|
136
|
+
return session;
|
|
137
|
+
}
|
|
138
|
+
async getSessionByToken(accessToken) {
|
|
139
|
+
await this.initialize();
|
|
140
|
+
const session = this.sessions.get(accessToken);
|
|
141
|
+
// Check if expired
|
|
142
|
+
if (session && new Date(session.expiresAt) > new Date()) {
|
|
143
|
+
return session;
|
|
144
|
+
}
|
|
145
|
+
// Clean up expired session
|
|
146
|
+
if (session) {
|
|
147
|
+
this.sessions.delete(accessToken);
|
|
148
|
+
}
|
|
149
|
+
return null;
|
|
150
|
+
}
|
|
151
|
+
async getSessionById(id) {
|
|
152
|
+
await this.initialize();
|
|
153
|
+
for (const session of this.sessions.values()) {
|
|
154
|
+
if (session.id === id)
|
|
155
|
+
return session;
|
|
156
|
+
}
|
|
157
|
+
return null;
|
|
158
|
+
}
|
|
159
|
+
async deleteSession(accessToken) {
|
|
160
|
+
await this.initialize();
|
|
161
|
+
const session = this.sessions.get(accessToken);
|
|
162
|
+
if (session) {
|
|
163
|
+
this.sessions.delete(accessToken);
|
|
164
|
+
await this.logAudit({
|
|
165
|
+
userId: session.userId,
|
|
166
|
+
action: 'DELETE',
|
|
167
|
+
resource: 'session',
|
|
168
|
+
metadata: JSON.stringify({ sessionId: session.id })
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
async deleteExpiredSessions() {
|
|
173
|
+
await this.initialize();
|
|
174
|
+
const now = new Date();
|
|
175
|
+
const expiredSessions = [];
|
|
176
|
+
for (const [token, session] of this.sessions.entries()) {
|
|
177
|
+
if (new Date(session.expiresAt) <= now) {
|
|
178
|
+
expiredSessions.push(token);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
expiredSessions.forEach(token => {
|
|
182
|
+
this.sessions.delete(token);
|
|
183
|
+
});
|
|
184
|
+
if (expiredSessions.length > 0) {
|
|
185
|
+
console.log(`🧹 Cleaned up ${expiredSessions.length} expired sessions`);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
// Audit logging
|
|
189
|
+
async logAudit(entry) {
|
|
190
|
+
await this.initialize();
|
|
191
|
+
const log = {
|
|
192
|
+
id: Date.now().toString(),
|
|
193
|
+
timestamp: new Date().toISOString(),
|
|
194
|
+
...entry
|
|
195
|
+
};
|
|
196
|
+
this.auditLogs.push(log);
|
|
197
|
+
// Keep only last 1000 logs to prevent memory issues
|
|
198
|
+
if (this.auditLogs.length > 1000) {
|
|
199
|
+
this.auditLogs = this.auditLogs.slice(-1000);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
async getAuditLogs(userId, limit = 50) {
|
|
203
|
+
await this.initialize();
|
|
204
|
+
let logs = this.auditLogs;
|
|
205
|
+
if (userId) {
|
|
206
|
+
logs = logs.filter(log => log.userId === userId);
|
|
207
|
+
}
|
|
208
|
+
return logs
|
|
209
|
+
.sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime())
|
|
210
|
+
.slice(0, limit);
|
|
211
|
+
}
|
|
212
|
+
// Search and query operations
|
|
213
|
+
async searchUsers(query) {
|
|
214
|
+
await this.initialize();
|
|
215
|
+
const lowerQuery = query.toLowerCase();
|
|
216
|
+
const results = [];
|
|
217
|
+
for (const user of this.users.values()) {
|
|
218
|
+
if (user.email.toLowerCase().includes(lowerQuery) ||
|
|
219
|
+
user.firstName.toLowerCase().includes(lowerQuery) ||
|
|
220
|
+
user.lastName.toLowerCase().includes(lowerQuery)) {
|
|
221
|
+
results.push(user);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
return results;
|
|
225
|
+
}
|
|
226
|
+
async getUsersByRole(role) {
|
|
227
|
+
await this.initialize();
|
|
228
|
+
const results = [];
|
|
229
|
+
for (const user of this.users.values()) {
|
|
230
|
+
if (user.role === role) {
|
|
231
|
+
results.push(user);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return results;
|
|
235
|
+
}
|
|
236
|
+
// Statistics
|
|
237
|
+
async getStats() {
|
|
238
|
+
await this.initialize();
|
|
239
|
+
const usersByRole = {};
|
|
240
|
+
for (const user of this.users.values()) {
|
|
241
|
+
usersByRole[user.role] = (usersByRole[user.role] || 0) + 1;
|
|
242
|
+
}
|
|
243
|
+
return {
|
|
244
|
+
totalUsers: this.users.size,
|
|
245
|
+
totalSessions: this.sessions.size,
|
|
246
|
+
totalAuditLogs: this.auditLogs.length,
|
|
247
|
+
usersByRole
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
// Cleanup
|
|
251
|
+
async close() {
|
|
252
|
+
this.users.clear();
|
|
253
|
+
this.sessions.clear();
|
|
254
|
+
this.auditLogs = [];
|
|
255
|
+
this.isInitialized = false;
|
|
256
|
+
console.log('🗄️ In-memory mock database closed');
|
|
257
|
+
}
|
|
258
|
+
// Health check
|
|
259
|
+
async healthCheck() {
|
|
260
|
+
await this.initialize();
|
|
261
|
+
const stats = await this.getStats();
|
|
262
|
+
return {
|
|
263
|
+
status: 'healthy',
|
|
264
|
+
timestamp: new Date().toISOString(),
|
|
265
|
+
stats
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
// Reset data (useful for testing)
|
|
269
|
+
async reset() {
|
|
270
|
+
await this.close();
|
|
271
|
+
await this.initialize();
|
|
272
|
+
console.log('🔄 Mock database reset');
|
|
273
|
+
}
|
|
274
|
+
// Export data (for debugging)
|
|
275
|
+
exportData() {
|
|
276
|
+
return {
|
|
277
|
+
users: Array.from(this.users.values()),
|
|
278
|
+
sessions: Array.from(this.sessions.values()),
|
|
279
|
+
auditLogs: this.auditLogs
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
exports.InMemoryMockDatabase = InMemoryMockDatabase;
|
|
284
|
+
// Singleton instance
|
|
285
|
+
exports.inMemoryMockDatabase = new InMemoryMockDatabase();
|
|
286
|
+
//# sourceMappingURL=inMemoryMockDatabase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inMemoryMockDatabase.js","sourceRoot":"","sources":["../../src/mock/inMemoryMockDatabase.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export interface MockUser {
|
|
2
|
+
id: string;
|
|
3
|
+
email: string;
|
|
4
|
+
password: string;
|
|
5
|
+
firstName: string;
|
|
6
|
+
lastName: string;
|
|
7
|
+
role: 'user' | 'admin' | 'manager';
|
|
8
|
+
createdAt: string;
|
|
9
|
+
updatedAt: string;
|
|
10
|
+
}
|
|
11
|
+
export interface MockSession {
|
|
12
|
+
id: string;
|
|
13
|
+
userId: string;
|
|
14
|
+
accessToken: string;
|
|
15
|
+
refreshToken: string;
|
|
16
|
+
expiresAt: string;
|
|
17
|
+
createdAt: string;
|
|
18
|
+
}
|
|
19
|
+
export declare class MockDatabase {
|
|
20
|
+
private users;
|
|
21
|
+
private sessions;
|
|
22
|
+
private auditLogs;
|
|
23
|
+
private isInitialized;
|
|
24
|
+
initialize(): Promise<void>;
|
|
25
|
+
private createTables;
|
|
26
|
+
private seedData;
|
|
27
|
+
getUserByEmail(email: string): Promise<MockUser | null>;
|
|
28
|
+
getUserById(id: string): Promise<MockUser | null>;
|
|
29
|
+
createUser(userData: Omit<MockUser, 'id' | 'createdAt' | 'updatedAt'>): Promise<MockUser>;
|
|
30
|
+
createSession(sessionData: Omit<MockSession, 'id' | 'createdAt'>): Promise<MockSession>;
|
|
31
|
+
getSessionByToken(accessToken: string): Promise<MockSession | null>;
|
|
32
|
+
deleteSession(accessToken: string): Promise<void>;
|
|
33
|
+
logAudit(entry: {
|
|
34
|
+
userId?: string;
|
|
35
|
+
action: string;
|
|
36
|
+
resource: string;
|
|
37
|
+
metadata?: string;
|
|
38
|
+
}): Promise<void>;
|
|
39
|
+
getAuditLogs(userId?: string, limit?: number): Promise<any[]>;
|
|
40
|
+
close(): Promise<void>;
|
|
41
|
+
healthCheck(): Promise<{
|
|
42
|
+
status: string;
|
|
43
|
+
timestamp: string;
|
|
44
|
+
databaseType: string;
|
|
45
|
+
}>;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=mockDatabase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mockDatabase.d.ts","sourceRoot":"","sources":["../../src/mock/mockDatabase.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,QAAQ,CAAuC;IACvD,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,aAAa,CAAS;IAExB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAanB,YAAY;YAKZ,QAAQ;IAyChB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAKvD,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IASjD,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;IAezF,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IAcvF,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAKnE,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjD,QAAQ,CAAC,KAAK,EAAE;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,IAAI,CAAC;IAeX,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAYzD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQtB,WAAW,IAAI,OAAO,CAAC;QAC3B,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CAOH"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// In-memory mock database - no external dependencies required
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.MockDatabase = void 0;
|
|
5
|
+
class MockDatabase {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.users = new Map();
|
|
8
|
+
this.sessions = new Map();
|
|
9
|
+
this.auditLogs = [];
|
|
10
|
+
this.isInitialized = false;
|
|
11
|
+
}
|
|
12
|
+
async initialize() {
|
|
13
|
+
if (this.isInitialized)
|
|
14
|
+
return;
|
|
15
|
+
try {
|
|
16
|
+
await this.createTables();
|
|
17
|
+
await this.seedData();
|
|
18
|
+
this.isInitialized = true;
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
console.error('Failed to initialize mock database:', error);
|
|
22
|
+
throw error;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
async createTables() {
|
|
26
|
+
// In-memory tables are created by the data structure
|
|
27
|
+
console.log('🗄️ Creating in-memory tables...');
|
|
28
|
+
}
|
|
29
|
+
async seedData() {
|
|
30
|
+
const now = new Date().toISOString();
|
|
31
|
+
const mockUsers = [
|
|
32
|
+
{
|
|
33
|
+
id: '1',
|
|
34
|
+
email: 'admin@siriux.dev',
|
|
35
|
+
password: 'admin123',
|
|
36
|
+
firstName: 'Admin',
|
|
37
|
+
lastName: 'User',
|
|
38
|
+
role: 'admin',
|
|
39
|
+
createdAt: now,
|
|
40
|
+
updatedAt: now
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
id: '2',
|
|
44
|
+
email: 'user@siriux.dev',
|
|
45
|
+
password: 'user123',
|
|
46
|
+
firstName: 'Demo',
|
|
47
|
+
lastName: 'User',
|
|
48
|
+
role: 'user',
|
|
49
|
+
createdAt: now,
|
|
50
|
+
updatedAt: now
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
id: '3',
|
|
54
|
+
email: 'manager@siriux.dev',
|
|
55
|
+
password: 'manager123',
|
|
56
|
+
firstName: 'Manager',
|
|
57
|
+
lastName: 'User',
|
|
58
|
+
role: 'manager',
|
|
59
|
+
createdAt: now,
|
|
60
|
+
updatedAt: now
|
|
61
|
+
}
|
|
62
|
+
];
|
|
63
|
+
for (const user of mockUsers) {
|
|
64
|
+
this.users.set(user.email, user);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
async getUserByEmail(email) {
|
|
68
|
+
const user = this.users.get(email);
|
|
69
|
+
return user || null;
|
|
70
|
+
}
|
|
71
|
+
async getUserById(id) {
|
|
72
|
+
for (const user of this.users.values()) {
|
|
73
|
+
if (user.id === id) {
|
|
74
|
+
return user;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
async createUser(userData) {
|
|
80
|
+
const now = new Date().toISOString();
|
|
81
|
+
const id = Date.now().toString();
|
|
82
|
+
const user = {
|
|
83
|
+
id,
|
|
84
|
+
...userData,
|
|
85
|
+
createdAt: now,
|
|
86
|
+
updatedAt: now
|
|
87
|
+
};
|
|
88
|
+
this.users.set(user.email, user);
|
|
89
|
+
return user;
|
|
90
|
+
}
|
|
91
|
+
async createSession(sessionData) {
|
|
92
|
+
const now = new Date().toISOString();
|
|
93
|
+
const id = Date.now().toString();
|
|
94
|
+
const session = {
|
|
95
|
+
id,
|
|
96
|
+
...sessionData,
|
|
97
|
+
createdAt: now
|
|
98
|
+
};
|
|
99
|
+
this.sessions.set(session.accessToken, session);
|
|
100
|
+
return session;
|
|
101
|
+
}
|
|
102
|
+
async getSessionByToken(accessToken) {
|
|
103
|
+
const session = this.sessions.get(accessToken);
|
|
104
|
+
return session || null;
|
|
105
|
+
}
|
|
106
|
+
async deleteSession(accessToken) {
|
|
107
|
+
this.sessions.delete(accessToken);
|
|
108
|
+
}
|
|
109
|
+
async logAudit(entry) {
|
|
110
|
+
const auditEntry = {
|
|
111
|
+
id: Date.now().toString(),
|
|
112
|
+
timestamp: new Date().toISOString(),
|
|
113
|
+
...entry
|
|
114
|
+
};
|
|
115
|
+
this.auditLogs.push(auditEntry);
|
|
116
|
+
// Keep only last 1000 logs
|
|
117
|
+
if (this.auditLogs.length > 1000) {
|
|
118
|
+
this.auditLogs = this.auditLogs.slice(-1000);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
async getAuditLogs(userId, limit = 50) {
|
|
122
|
+
let logs = this.auditLogs;
|
|
123
|
+
if (userId) {
|
|
124
|
+
logs = logs.filter(log => log.userId === userId);
|
|
125
|
+
}
|
|
126
|
+
return logs
|
|
127
|
+
.sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime())
|
|
128
|
+
.slice(0, limit);
|
|
129
|
+
}
|
|
130
|
+
async close() {
|
|
131
|
+
this.users.clear();
|
|
132
|
+
this.sessions.clear();
|
|
133
|
+
this.auditLogs = [];
|
|
134
|
+
this.isInitialized = false;
|
|
135
|
+
console.log('🗄️ In-memory database closed');
|
|
136
|
+
}
|
|
137
|
+
async healthCheck() {
|
|
138
|
+
return {
|
|
139
|
+
status: 'healthy',
|
|
140
|
+
timestamp: new Date().toISOString(),
|
|
141
|
+
databaseType: 'in-memory'
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
exports.MockDatabase = MockDatabase;
|
|
146
|
+
//# sourceMappingURL=mockDatabase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mockDatabase.js","sourceRoot":"","sources":["../../src/mock/mockDatabase.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export declare enum DatabaseType {
|
|
2
|
+
IN_MEMORY = "in-memory",
|
|
3
|
+
SQLITE = "sqlite",
|
|
4
|
+
SNOWFLAKE_MOCK = "snowflake-mock",
|
|
5
|
+
SNOWFLAKE_REAL = "snowflake-real"
|
|
6
|
+
}
|
|
7
|
+
export interface MockDatabaseConfig {
|
|
8
|
+
type: DatabaseType;
|
|
9
|
+
connectionString?: string;
|
|
10
|
+
options?: Record<string, any>;
|
|
11
|
+
}
|
|
12
|
+
export interface MockDatabase {
|
|
13
|
+
initialize(): Promise<void>;
|
|
14
|
+
getUserByEmail(email: string): Promise<any>;
|
|
15
|
+
getUserById(id: string): Promise<any>;
|
|
16
|
+
createUser(userData: any): Promise<any>;
|
|
17
|
+
createSession(data: any): Promise<any>;
|
|
18
|
+
getSessionByToken(token: string): Promise<any>;
|
|
19
|
+
deleteSession(token: string): Promise<void>;
|
|
20
|
+
logAudit(entry: any): Promise<void>;
|
|
21
|
+
getStats(): Promise<any>;
|
|
22
|
+
getAuditLogs(userId?: string): Promise<any[]>;
|
|
23
|
+
reset(): Promise<void>;
|
|
24
|
+
close(): Promise<void>;
|
|
25
|
+
healthCheck(): Promise<any>;
|
|
26
|
+
}
|
|
27
|
+
export declare class MockDatabaseFactory {
|
|
28
|
+
static create(config: MockDatabaseConfig): Promise<MockDatabase>;
|
|
29
|
+
static createWithAutoDetection(): Promise<MockDatabase>;
|
|
30
|
+
static getSupportedTypes(): DatabaseType[];
|
|
31
|
+
static getDatabaseInfo(type: DatabaseType): {
|
|
32
|
+
name: string;
|
|
33
|
+
description: string;
|
|
34
|
+
features: string[];
|
|
35
|
+
useCase: string;
|
|
36
|
+
requiresConfig?: boolean;
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export declare const getDatabaseConfig: () => MockDatabaseConfig;
|
|
40
|
+
//# sourceMappingURL=mockDatabaseFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mockDatabaseFactory.d.ts","sourceRoot":"","sources":["../../src/mock/mockDatabaseFactory.ts"],"names":[],"mappings":"AACA,oBAAY,YAAY;IACtB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;CAClC;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,YAAY,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAGD,MAAM,WAAW,YAAY;IAC3B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5C,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,UAAU,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACvC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/C,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IACzB,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;CAC7B;AA+QD,qBAAa,mBAAmB;WACjB,MAAM,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;WA2BzD,uBAAuB,IAAI,OAAO,CAAC,YAAY,CAAC;IAc7D,MAAM,CAAC,iBAAiB,IAAI,YAAY,EAAE;IAS1C,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG;QAC1C,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B;CA+BF;AAGD,eAAO,MAAM,iBAAiB,QAAO,kBAYpC,CAAC"}
|