@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,45 @@
|
|
|
1
|
+
export interface SnowflakeConfig {
|
|
2
|
+
account: string;
|
|
3
|
+
username: string;
|
|
4
|
+
password: string;
|
|
5
|
+
warehouse: string;
|
|
6
|
+
schema: string;
|
|
7
|
+
database?: string;
|
|
8
|
+
role?: string;
|
|
9
|
+
clientSessionKeepAlive?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface SnowflakeQueryResult {
|
|
12
|
+
rows: any[];
|
|
13
|
+
rowCount: number;
|
|
14
|
+
columns: any[];
|
|
15
|
+
statementId: string;
|
|
16
|
+
}
|
|
17
|
+
export declare class SnowflakeDatabase {
|
|
18
|
+
private config;
|
|
19
|
+
private connection;
|
|
20
|
+
private isConnected;
|
|
21
|
+
constructor(config: SnowflakeConfig);
|
|
22
|
+
initialize(): Promise<void>;
|
|
23
|
+
private connect;
|
|
24
|
+
private initializeSchema;
|
|
25
|
+
private seedDemoData;
|
|
26
|
+
execute(query: string, params?: any[]): Promise<SnowflakeQueryResult>;
|
|
27
|
+
getUserByEmail(email: string): Promise<any>;
|
|
28
|
+
getUserById(id: string): Promise<any>;
|
|
29
|
+
createUser(userData: any): Promise<any>;
|
|
30
|
+
createSession(sessionData: any): Promise<any>;
|
|
31
|
+
getSessionByToken(accessToken: string): Promise<any>;
|
|
32
|
+
deleteSession(accessToken: string): Promise<void>;
|
|
33
|
+
logAudit(entry: any): Promise<void>;
|
|
34
|
+
getAuditLogs(userId?: string, limit?: number): Promise<any[]>;
|
|
35
|
+
getStats(): Promise<any>;
|
|
36
|
+
executeAnalytics(query: string): Promise<any>;
|
|
37
|
+
getTableInfo(tableName: string): Promise<any>;
|
|
38
|
+
getWarehouseInfo(): Promise<any>;
|
|
39
|
+
healthCheck(): Promise<any>;
|
|
40
|
+
close(): Promise<void>;
|
|
41
|
+
reset(): Promise<void>;
|
|
42
|
+
}
|
|
43
|
+
export declare const createSnowflakeDatabase: (config: SnowflakeConfig) => SnowflakeDatabase;
|
|
44
|
+
export declare const getSnowflakeConfig: () => SnowflakeConfig;
|
|
45
|
+
//# sourceMappingURL=snowflakeDatabase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snowflakeDatabase.d.ts","sourceRoot":"","sources":["../../src/databases/snowflakeDatabase.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,GAAG,EAAE,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,EAAE,eAAe;IAI7B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YA+BnB,OAAO;YAaP,gBAAgB;YAgDhB,YAAY;IAuBpB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA0BrE,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAS3C,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IASrC,UAAU,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAYvC,aAAa,CAAC,WAAW,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAW7C,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IASpD,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQjD,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnC,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAiBzD,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC;IAgCxB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAK7C,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAK7C,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC;IAMhC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC;IAsB3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAgB7B;AAGD,eAAO,MAAM,uBAAuB,GAAI,QAAQ,eAAe,KAAG,iBAEjE,CAAC;AAGF,eAAO,MAAM,kBAAkB,QAAO,eAqBrC,CAAC"}
|
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Real Snowflake Database Integration
|
|
3
|
+
// Production-ready Snowflake connector for Siriux
|
|
4
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
5
|
+
if (k2 === undefined) k2 = k;
|
|
6
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
7
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
8
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
9
|
+
}
|
|
10
|
+
Object.defineProperty(o, k2, desc);
|
|
11
|
+
}) : (function(o, m, k, k2) {
|
|
12
|
+
if (k2 === undefined) k2 = k;
|
|
13
|
+
o[k2] = m[k];
|
|
14
|
+
}));
|
|
15
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
16
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
17
|
+
}) : function(o, v) {
|
|
18
|
+
o["default"] = v;
|
|
19
|
+
});
|
|
20
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
21
|
+
var ownKeys = function(o) {
|
|
22
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
23
|
+
var ar = [];
|
|
24
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
25
|
+
return ar;
|
|
26
|
+
};
|
|
27
|
+
return ownKeys(o);
|
|
28
|
+
};
|
|
29
|
+
return function (mod) {
|
|
30
|
+
if (mod && mod.__esModule) return mod;
|
|
31
|
+
var result = {};
|
|
32
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
33
|
+
__setModuleDefault(result, mod);
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
36
|
+
})();
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
exports.getSnowflakeConfig = exports.createSnowflakeDatabase = exports.SnowflakeDatabase = void 0;
|
|
39
|
+
class SnowflakeDatabase {
|
|
40
|
+
constructor(config) {
|
|
41
|
+
this.connection = null;
|
|
42
|
+
this.isConnected = false;
|
|
43
|
+
this.config = config;
|
|
44
|
+
}
|
|
45
|
+
async initialize() {
|
|
46
|
+
try {
|
|
47
|
+
console.log('❄️ Connecting to Snowflake...');
|
|
48
|
+
// Dynamic import to avoid bundle issues
|
|
49
|
+
const snowflake = await Promise.resolve().then(() => __importStar(require('snowflake-sdk')));
|
|
50
|
+
this.connection = snowflake.createConnection({
|
|
51
|
+
account: this.config.account,
|
|
52
|
+
username: this.config.username,
|
|
53
|
+
password: this.config.password,
|
|
54
|
+
warehouse: this.config.warehouse,
|
|
55
|
+
schema: this.config.schema,
|
|
56
|
+
database: this.config.database || 'SIRIUX_DEMO',
|
|
57
|
+
role: this.config.role || 'ACCOUNTADMIN',
|
|
58
|
+
clientSessionKeepAlive: this.config.clientSessionKeepAlive || true
|
|
59
|
+
});
|
|
60
|
+
await this.connect();
|
|
61
|
+
console.log(`✅ Connected to Snowflake: ${this.config.account}.${this.config.warehouse}.${this.config.schema}`);
|
|
62
|
+
// Initialize demo schema if needed
|
|
63
|
+
await this.initializeSchema();
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
console.error('❌ Snowflake connection failed:', error.message);
|
|
67
|
+
throw new Error(`Snowflake connection failed: ${error.message}`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
async connect() {
|
|
71
|
+
return new Promise((resolve, reject) => {
|
|
72
|
+
this.connection.connect((err, conn) => {
|
|
73
|
+
if (err) {
|
|
74
|
+
reject(err);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
this.isConnected = true;
|
|
78
|
+
resolve();
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
async initializeSchema() {
|
|
84
|
+
try {
|
|
85
|
+
// Create demo tables if they don't exist
|
|
86
|
+
await this.execute(`
|
|
87
|
+
CREATE TABLE IF NOT EXISTS USERS (
|
|
88
|
+
ID STRING PRIMARY KEY,
|
|
89
|
+
EMAIL STRING UNIQUE NOT NULL,
|
|
90
|
+
PASSWORD STRING NOT NULL,
|
|
91
|
+
FIRST_NAME STRING,
|
|
92
|
+
LAST_NAME STRING,
|
|
93
|
+
ROLE STRING NOT NULL,
|
|
94
|
+
CREATED_AT TIMESTAMP DEFAULT CURRENT_TIMESTAMP(),
|
|
95
|
+
UPDATED_AT TIMESTAMP DEFAULT CURRENT_TIMESTAMP()
|
|
96
|
+
);
|
|
97
|
+
`);
|
|
98
|
+
await this.execute(`
|
|
99
|
+
CREATE TABLE IF NOT EXISTS SESSIONS (
|
|
100
|
+
ID STRING PRIMARY KEY,
|
|
101
|
+
USER_ID STRING NOT NULL,
|
|
102
|
+
ACCESS_TOKEN STRING NOT NULL,
|
|
103
|
+
REFRESH_TOKEN STRING NOT NULL,
|
|
104
|
+
EXPIRES_AT TIMESTAMP NOT NULL,
|
|
105
|
+
CREATED_AT TIMESTAMP DEFAULT CURRENT_TIMESTAMP(),
|
|
106
|
+
FOREIGN KEY (USER_ID) REFERENCES USERS(ID)
|
|
107
|
+
);
|
|
108
|
+
`);
|
|
109
|
+
await this.execute(`
|
|
110
|
+
CREATE TABLE IF NOT EXISTS AUDIT_LOGS (
|
|
111
|
+
ID STRING PRIMARY KEY,
|
|
112
|
+
USER_ID STRING,
|
|
113
|
+
ACTION STRING NOT NULL,
|
|
114
|
+
RESOURCE STRING NOT NULL,
|
|
115
|
+
METADATA STRING,
|
|
116
|
+
TIMESTAMP TIMESTAMP DEFAULT CURRENT_TIMESTAMP(),
|
|
117
|
+
FOREIGN KEY (USER_ID) REFERENCES USERS(ID)
|
|
118
|
+
);
|
|
119
|
+
`);
|
|
120
|
+
// Seed demo data if tables are empty
|
|
121
|
+
await this.seedDemoData();
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
console.warn('⚠️ Schema initialization failed:', error.message);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
async seedDemoData() {
|
|
128
|
+
try {
|
|
129
|
+
// Check if users table is empty
|
|
130
|
+
const result = await this.execute('SELECT COUNT(*) as count FROM USERS');
|
|
131
|
+
if (result.rows[0].COUNT === 0) {
|
|
132
|
+
console.log('🌱 Seeding demo data...');
|
|
133
|
+
// Insert demo users
|
|
134
|
+
await this.execute(`
|
|
135
|
+
INSERT INTO USERS (ID, EMAIL, PASSWORD, FIRST_NAME, LAST_NAME, ROLE) VALUES
|
|
136
|
+
('1', 'admin@siriux.dev', 'admin123', 'Admin', 'User', 'admin'),
|
|
137
|
+
('2', 'user@siriux.dev', 'user123', 'Demo', 'User', 'user'),
|
|
138
|
+
('3', 'manager@siriux.dev', 'manager123', 'Manager', 'User', 'manager')
|
|
139
|
+
`);
|
|
140
|
+
console.log('✅ Demo data seeded successfully');
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
console.warn('⚠️ Demo data seeding failed:', error.message);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
async execute(query, params) {
|
|
148
|
+
if (!this.isConnected) {
|
|
149
|
+
throw new Error('Not connected to Snowflake');
|
|
150
|
+
}
|
|
151
|
+
return new Promise((resolve, reject) => {
|
|
152
|
+
const statement = this.connection.execute({
|
|
153
|
+
sqlText: query,
|
|
154
|
+
binds: params || [],
|
|
155
|
+
complete: (err, stmt, rows) => {
|
|
156
|
+
if (err) {
|
|
157
|
+
reject(new Error(`Query failed: ${err.message}`));
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
resolve({
|
|
161
|
+
rows: rows || [],
|
|
162
|
+
rowCount: rows ? rows.length : 0,
|
|
163
|
+
columns: stmt.getColumns ? stmt.getColumns() : [],
|
|
164
|
+
statementId: stmt.getStatementId ? stmt.getStatementId() : 'unknown'
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
// User operations
|
|
172
|
+
async getUserByEmail(email) {
|
|
173
|
+
const result = await this.execute('SELECT * FROM USERS WHERE EMAIL = ?', [email]);
|
|
174
|
+
return result.rows.length > 0 ? result.rows[0] : null;
|
|
175
|
+
}
|
|
176
|
+
async getUserById(id) {
|
|
177
|
+
const result = await this.execute('SELECT * FROM USERS WHERE ID = ?', [id]);
|
|
178
|
+
return result.rows.length > 0 ? result.rows[0] : null;
|
|
179
|
+
}
|
|
180
|
+
async createUser(userData) {
|
|
181
|
+
const id = Date.now().toString();
|
|
182
|
+
await this.execute(`
|
|
183
|
+
INSERT INTO USERS (ID, EMAIL, PASSWORD, FIRST_NAME, LAST_NAME, ROLE)
|
|
184
|
+
VALUES (?, ?, ?, ?, ?, ?)
|
|
185
|
+
`, [id, userData.email, userData.password, userData.firstName, userData.lastName, userData.role]);
|
|
186
|
+
return this.getUserById(id);
|
|
187
|
+
}
|
|
188
|
+
// Session operations
|
|
189
|
+
async createSession(sessionData) {
|
|
190
|
+
const id = Date.now().toString();
|
|
191
|
+
await this.execute(`
|
|
192
|
+
INSERT INTO SESSIONS (ID, USER_ID, ACCESS_TOKEN, REFRESH_TOKEN, EXPIRES_AT)
|
|
193
|
+
VALUES (?, ?, ?, ?, ?)
|
|
194
|
+
`, [id, sessionData.userId, sessionData.accessToken, sessionData.refreshToken, sessionData.expiresAt]);
|
|
195
|
+
return { id, ...sessionData };
|
|
196
|
+
}
|
|
197
|
+
async getSessionByToken(accessToken) {
|
|
198
|
+
const result = await this.execute('SELECT * FROM SESSIONS WHERE ACCESS_TOKEN = ? AND EXPIRES_AT > CURRENT_TIMESTAMP()', [accessToken]);
|
|
199
|
+
return result.rows.length > 0 ? result.rows[0] : null;
|
|
200
|
+
}
|
|
201
|
+
async deleteSession(accessToken) {
|
|
202
|
+
await this.execute('DELETE FROM SESSIONS WHERE ACCESS_TOKEN = ?', [accessToken]);
|
|
203
|
+
}
|
|
204
|
+
// Audit logging
|
|
205
|
+
async logAudit(entry) {
|
|
206
|
+
await this.execute(`
|
|
207
|
+
INSERT INTO AUDIT_LOGS (ID, USER_ID, ACTION, RESOURCE, METADATA)
|
|
208
|
+
VALUES (?, ?, ?, ?, ?)
|
|
209
|
+
`, [Date.now().toString(), entry.userId, entry.action, entry.resource, entry.metadata || '{}']);
|
|
210
|
+
}
|
|
211
|
+
async getAuditLogs(userId, limit = 50) {
|
|
212
|
+
let query = 'SELECT * FROM AUDIT_LOGS';
|
|
213
|
+
const params = [];
|
|
214
|
+
if (userId) {
|
|
215
|
+
query += ' WHERE USER_ID = ?';
|
|
216
|
+
params.push(userId);
|
|
217
|
+
}
|
|
218
|
+
query += ' ORDER BY TIMESTAMP DESC LIMIT ?';
|
|
219
|
+
params.push(limit);
|
|
220
|
+
const result = await this.execute(query, params);
|
|
221
|
+
return result.rows;
|
|
222
|
+
}
|
|
223
|
+
// Statistics and analytics
|
|
224
|
+
async getStats() {
|
|
225
|
+
const [userStats, sessionStats, auditStats] = await Promise.all([
|
|
226
|
+
this.execute('SELECT COUNT(*) as total FROM USERS'),
|
|
227
|
+
this.execute('SELECT COUNT(*) as total FROM SESSIONS WHERE EXPIRES_AT > CURRENT_TIMESTAMP()'),
|
|
228
|
+
this.execute('SELECT COUNT(*) as total FROM AUDIT_LOGS')
|
|
229
|
+
]);
|
|
230
|
+
// Get users by role
|
|
231
|
+
const roleStats = await this.execute(`
|
|
232
|
+
SELECT ROLE, COUNT(*) as count
|
|
233
|
+
FROM USERS
|
|
234
|
+
GROUP BY ROLE
|
|
235
|
+
`);
|
|
236
|
+
const usersByRole = {};
|
|
237
|
+
roleStats.rows.forEach((row) => {
|
|
238
|
+
usersByRole[row.ROLE] = row.COUNT;
|
|
239
|
+
});
|
|
240
|
+
return {
|
|
241
|
+
totalUsers: userStats.rows[0].TOTAL,
|
|
242
|
+
totalSessions: sessionStats.rows[0].TOTAL,
|
|
243
|
+
totalAuditLogs: auditStats.rows[0].TOTAL,
|
|
244
|
+
usersByRole,
|
|
245
|
+
databaseType: 'snowflake',
|
|
246
|
+
warehouse: this.config.warehouse,
|
|
247
|
+
schema: this.config.schema,
|
|
248
|
+
database: this.config.database || 'SIRIUX_DEMO'
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
// Advanced features
|
|
252
|
+
async executeAnalytics(query) {
|
|
253
|
+
console.log(`📊 Running analytics query: ${query}`);
|
|
254
|
+
return this.execute(query);
|
|
255
|
+
}
|
|
256
|
+
async getTableInfo(tableName) {
|
|
257
|
+
const result = await this.execute(`DESCRIBE TABLE ${tableName}`);
|
|
258
|
+
return result.rows;
|
|
259
|
+
}
|
|
260
|
+
async getWarehouseInfo() {
|
|
261
|
+
const result = await this.execute('SHOW WAREHOUSES');
|
|
262
|
+
return result.rows;
|
|
263
|
+
}
|
|
264
|
+
// Health check
|
|
265
|
+
async healthCheck() {
|
|
266
|
+
try {
|
|
267
|
+
const result = await this.execute('SELECT CURRENT_TIMESTAMP() as now');
|
|
268
|
+
return {
|
|
269
|
+
status: 'healthy',
|
|
270
|
+
databaseType: 'snowflake',
|
|
271
|
+
warehouse: this.config.warehouse,
|
|
272
|
+
schema: this.config.schema,
|
|
273
|
+
timestamp: result.rows[0].NOW,
|
|
274
|
+
connected: this.isConnected
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
catch (error) {
|
|
278
|
+
return {
|
|
279
|
+
status: 'unhealthy',
|
|
280
|
+
databaseType: 'snowflake',
|
|
281
|
+
error: error.message,
|
|
282
|
+
connected: false
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
// Cleanup
|
|
287
|
+
async close() {
|
|
288
|
+
if (this.connection && this.isConnected) {
|
|
289
|
+
return new Promise((resolve) => {
|
|
290
|
+
this.connection.destroy((err) => {
|
|
291
|
+
if (err) {
|
|
292
|
+
console.error('❌ Error closing Snowflake connection:', err);
|
|
293
|
+
}
|
|
294
|
+
else {
|
|
295
|
+
console.log('✅ Snowflake connection closed');
|
|
296
|
+
}
|
|
297
|
+
this.isConnected = false;
|
|
298
|
+
resolve();
|
|
299
|
+
});
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
// Reset demo data
|
|
304
|
+
async reset() {
|
|
305
|
+
try {
|
|
306
|
+
console.log('🔄 Resetting Snowflake demo data...');
|
|
307
|
+
await this.execute('DELETE FROM AUDIT_LOGS');
|
|
308
|
+
await this.execute('DELETE FROM SESSIONS');
|
|
309
|
+
await this.execute('DELETE FROM USERS');
|
|
310
|
+
await this.seedDemoData();
|
|
311
|
+
console.log('✅ Snowflake demo data reset successfully');
|
|
312
|
+
}
|
|
313
|
+
catch (error) {
|
|
314
|
+
console.error('❌ Reset failed:', error.message);
|
|
315
|
+
throw error;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
exports.SnowflakeDatabase = SnowflakeDatabase;
|
|
320
|
+
// Factory function
|
|
321
|
+
const createSnowflakeDatabase = (config) => {
|
|
322
|
+
return new SnowflakeDatabase(config);
|
|
323
|
+
};
|
|
324
|
+
exports.createSnowflakeDatabase = createSnowflakeDatabase;
|
|
325
|
+
// Environment-based configuration
|
|
326
|
+
const getSnowflakeConfig = () => {
|
|
327
|
+
const config = {
|
|
328
|
+
account: process.env.SNOWFLAKE_ACCOUNT || '',
|
|
329
|
+
username: process.env.SNOWFLAKE_USERNAME || '',
|
|
330
|
+
password: process.env.SNOWFLAKE_PASSWORD || '',
|
|
331
|
+
warehouse: process.env.SNOWFLAKE_WAREHOUSE || 'DEMO_WAREHOUSE',
|
|
332
|
+
schema: process.env.SNOWFLAKE_SCHEMA || 'SIRIUX_DEMO',
|
|
333
|
+
database: process.env.SNOWFLAKE_DATABASE || 'SIRIUX_DEMO',
|
|
334
|
+
role: process.env.SNOWFLAKE_ROLE || 'ACCOUNTADMIN',
|
|
335
|
+
clientSessionKeepAlive: process.env.SNOWFLAKE_KEEP_ALIVE === 'true'
|
|
336
|
+
};
|
|
337
|
+
// Validate required fields
|
|
338
|
+
const required = ['account', 'username', 'password', 'warehouse', 'schema'];
|
|
339
|
+
const missing = required.filter(field => !config[field]);
|
|
340
|
+
if (missing.length > 0) {
|
|
341
|
+
throw new Error(`Missing required Snowflake config: ${missing.join(', ')}`);
|
|
342
|
+
}
|
|
343
|
+
return config;
|
|
344
|
+
};
|
|
345
|
+
exports.getSnowflakeConfig = getSnowflakeConfig;
|
|
346
|
+
//# sourceMappingURL=snowflakeDatabase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snowflakeDatabase.js","sourceRoot":"","sources":["../../src/databases/snowflakeDatabase.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export * from './types';
|
|
2
|
-
export
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
2
|
+
export { MockDatabase, MockUser, MockSession } from './mock/mockDatabase';
|
|
3
|
+
export { MockDatabaseFactory, DatabaseType } from './mock/mockDatabaseFactory';
|
|
4
|
+
export { InMemoryMockDatabase } from './mock/inMemoryMockDatabase';
|
|
5
|
+
export { SnowflakeDatabase, getSnowflakeConfig } from './databases/snowflakeDatabase';
|
|
5
6
|
export declare const SIRIUX_CORE_VERSION = "1.0.0";
|
|
6
7
|
import { SiriuxConfig } from './types';
|
|
7
8
|
export declare const createDefaultConfig: (overrides: Partial<SiriuxConfig>) => SiriuxConfig;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AAGxB,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,mBAAmB,EACnB,YAAY,EACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAGnE,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,+BAA+B,CAAC;AAGvC,eAAO,MAAM,mBAAmB,UAAU,CAAC;AAG3C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,eAAO,MAAM,mBAAmB,GAAI,WAAW,OAAO,CAAC,YAAY,CAAC,KAAG,YAoBtE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -14,17 +14,21 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.createDefaultConfig = exports.SIRIUX_CORE_VERSION = exports.
|
|
18
|
-
// Core
|
|
17
|
+
exports.createDefaultConfig = exports.SIRIUX_CORE_VERSION = exports.getSnowflakeConfig = exports.SnowflakeDatabase = exports.InMemoryMockDatabase = exports.DatabaseType = exports.MockDatabaseFactory = exports.MockDatabase = void 0;
|
|
18
|
+
// Core Siriux contracts and interfaces
|
|
19
19
|
__exportStar(require("./types"), exports);
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
Object.defineProperty(exports, "
|
|
25
|
-
Object.defineProperty(exports, "
|
|
26
|
-
var
|
|
27
|
-
Object.defineProperty(exports, "
|
|
20
|
+
// Re-export mock database functionality
|
|
21
|
+
var mockDatabase_1 = require("./mock/mockDatabase");
|
|
22
|
+
Object.defineProperty(exports, "MockDatabase", { enumerable: true, get: function () { return mockDatabase_1.MockDatabase; } });
|
|
23
|
+
var mockDatabaseFactory_1 = require("./mock/mockDatabaseFactory");
|
|
24
|
+
Object.defineProperty(exports, "MockDatabaseFactory", { enumerable: true, get: function () { return mockDatabaseFactory_1.MockDatabaseFactory; } });
|
|
25
|
+
Object.defineProperty(exports, "DatabaseType", { enumerable: true, get: function () { return mockDatabaseFactory_1.DatabaseType; } });
|
|
26
|
+
var inMemoryMockDatabase_1 = require("./mock/inMemoryMockDatabase");
|
|
27
|
+
Object.defineProperty(exports, "InMemoryMockDatabase", { enumerable: true, get: function () { return inMemoryMockDatabase_1.InMemoryMockDatabase; } });
|
|
28
|
+
// Re-export Snowflake database
|
|
29
|
+
var snowflakeDatabase_1 = require("./databases/snowflakeDatabase");
|
|
30
|
+
Object.defineProperty(exports, "SnowflakeDatabase", { enumerable: true, get: function () { return snowflakeDatabase_1.SnowflakeDatabase; } });
|
|
31
|
+
Object.defineProperty(exports, "getSnowflakeConfig", { enumerable: true, get: function () { return snowflakeDatabase_1.getSnowflakeConfig; } });
|
|
28
32
|
// Version information
|
|
29
33
|
exports.SIRIUX_CORE_VERSION = '1.0.0';
|
|
30
34
|
const createDefaultConfig = (overrides) => {
|
|
@@ -40,7 +44,9 @@ const createDefaultConfig = (overrides) => {
|
|
|
40
44
|
mfa: false,
|
|
41
45
|
sso: false,
|
|
42
46
|
rbac: true,
|
|
43
|
-
emailVerification: true
|
|
47
|
+
emailVerification: true,
|
|
48
|
+
auditLogging: false,
|
|
49
|
+
analytics: false
|
|
44
50
|
}
|
|
45
51
|
};
|
|
46
52
|
return { ...defaultConfig, ...overrides };
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,uCAAuC;AACvC,0CAAwB;AAExB,wCAAwC;AACxC,oDAI6B;AAH3B,4GAAA,YAAY,OAAA;AAId,kEAGoC;AAFlC,0HAAA,mBAAmB,OAAA;AACnB,mHAAA,YAAY,OAAA;AAEd,oEAAmE;AAA1D,4HAAA,oBAAoB,OAAA;AAE7B,+BAA+B;AAC/B,mEAGuC;AAFrC,sHAAA,iBAAiB,OAAA;AACjB,uHAAA,kBAAkB,OAAA;AAGpB,sBAAsB;AACT,QAAA,mBAAmB,GAAG,OAAO,CAAC;AAKpC,MAAM,mBAAmB,GAAG,CAAC,SAAgC,EAAgB,EAAE;IACpF,MAAM,aAAa,GAAiB;QAClC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,2BAA2B;QAChE,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,+BAA+B;QACnF,QAAQ,EAAE;YACR,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,mBAAmB;YAC/B,OAAO,EAAE,EAAE;SACZ;QACD,QAAQ,EAAE;YACR,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,IAAI;YACV,iBAAiB,EAAE,IAAI;YACvB,YAAY,EAAE,KAAK;YACnB,SAAS,EAAE,KAAK;SACjB;KACF,CAAC;IAEF,OAAO,EAAE,GAAG,aAAa,EAAE,GAAG,SAAS,EAAE,CAAC;AAC5C,CAAC,CAAC;AApBW,QAAA,mBAAmB,uBAoB9B"}
|
|
@@ -0,0 +1,72 @@
|
|
|
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 interface MockAuditLog {
|
|
20
|
+
id: string;
|
|
21
|
+
userId?: string;
|
|
22
|
+
action: string;
|
|
23
|
+
resource: string;
|
|
24
|
+
metadata?: string;
|
|
25
|
+
timestamp: string;
|
|
26
|
+
}
|
|
27
|
+
export declare class InMemoryMockDatabase {
|
|
28
|
+
private users;
|
|
29
|
+
private sessions;
|
|
30
|
+
private auditLogs;
|
|
31
|
+
private isInitialized;
|
|
32
|
+
initialize(): Promise<void>;
|
|
33
|
+
private seedData;
|
|
34
|
+
getUserByEmail(email: string): Promise<MockUser | null>;
|
|
35
|
+
getUserById(id: string): Promise<MockUser | null>;
|
|
36
|
+
createUser(userData: Omit<MockUser, 'id' | 'createdAt' | 'updatedAt'>): Promise<MockUser>;
|
|
37
|
+
updateUser(id: string, updates: Partial<MockUser>): Promise<MockUser | null>;
|
|
38
|
+
createSession(sessionData: Omit<MockSession, 'id' | 'createdAt'>): Promise<MockSession>;
|
|
39
|
+
getSessionByToken(accessToken: string): Promise<MockSession | null>;
|
|
40
|
+
getSessionById(id: string): Promise<MockSession | null>;
|
|
41
|
+
deleteSession(accessToken: string): Promise<void>;
|
|
42
|
+
deleteExpiredSessions(): Promise<void>;
|
|
43
|
+
logAudit(entry: {
|
|
44
|
+
userId?: string;
|
|
45
|
+
action: string;
|
|
46
|
+
resource: string;
|
|
47
|
+
metadata?: string;
|
|
48
|
+
}): Promise<void>;
|
|
49
|
+
getAuditLogs(userId?: string, limit?: number): Promise<MockAuditLog[]>;
|
|
50
|
+
searchUsers(query: string): Promise<MockUser[]>;
|
|
51
|
+
getUsersByRole(role: string): Promise<MockUser[]>;
|
|
52
|
+
getStats(): Promise<{
|
|
53
|
+
totalUsers: number;
|
|
54
|
+
totalSessions: number;
|
|
55
|
+
totalAuditLogs: number;
|
|
56
|
+
usersByRole: Record<string, number>;
|
|
57
|
+
}>;
|
|
58
|
+
close(): Promise<void>;
|
|
59
|
+
healthCheck(): Promise<{
|
|
60
|
+
status: string;
|
|
61
|
+
timestamp: string;
|
|
62
|
+
stats: any;
|
|
63
|
+
}>;
|
|
64
|
+
reset(): Promise<void>;
|
|
65
|
+
exportData(): {
|
|
66
|
+
users: MockUser[];
|
|
67
|
+
sessions: MockSession[];
|
|
68
|
+
auditLogs: MockAuditLog[];
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
export declare const inMemoryMockDatabase: InMemoryMockDatabase;
|
|
72
|
+
//# sourceMappingURL=inMemoryMockDatabase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inMemoryMockDatabase.d.ts","sourceRoot":"","sources":["../../src/mock/inMemoryMockDatabase.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,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,QAAQ,CAAuC;IACvD,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,aAAa,CAAS;IAExB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAanB,QAAQ;IA4ChB,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;IAQjD,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;IA0BzF,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IA4B5E,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IAwBvF,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAkBnE,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAUvD,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBjD,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBtC,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;IAiBX,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAelE,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAmB/C,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAejD,QAAQ,IAAI,OAAO,CAAC;QACxB,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACrC,CAAC;IAkBI,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAStB,WAAW,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,CAAC;IAazE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B,UAAU,IAAI;QACZ,KAAK,EAAE,QAAQ,EAAE,CAAC;QAClB,QAAQ,EAAE,WAAW,EAAE,CAAC;QACxB,SAAS,EAAE,YAAY,EAAE,CAAC;KAC3B;CAOF;AAGD,eAAO,MAAM,oBAAoB,sBAA6B,CAAC"}
|