@wgtechlabs/nuvex 0.1.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/LICENSE +21 -0
- package/README.md +427 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/cjs/core/client.js +981 -0
- package/dist/cjs/core/client.js.map +1 -0
- package/dist/cjs/core/database.js +297 -0
- package/dist/cjs/core/database.js.map +1 -0
- package/dist/cjs/core/engine.js +1202 -0
- package/dist/cjs/core/engine.js.map +1 -0
- package/dist/cjs/core/index.js +35 -0
- package/dist/cjs/core/index.js.map +1 -0
- package/dist/cjs/index.js +109 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/interfaces/index.js +12 -0
- package/dist/cjs/interfaces/index.js.map +1 -0
- package/dist/cjs/layers/index.js +22 -0
- package/dist/cjs/layers/index.js.map +1 -0
- package/dist/cjs/layers/memory.js +388 -0
- package/dist/cjs/layers/memory.js.map +1 -0
- package/dist/cjs/layers/postgres.js +492 -0
- package/dist/cjs/layers/postgres.js.map +1 -0
- package/dist/cjs/layers/redis.js +388 -0
- package/dist/cjs/layers/redis.js.map +1 -0
- package/dist/cjs/types/index.js +52 -0
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/esm/core/client.js +944 -0
- package/dist/esm/core/client.js.map +1 -0
- package/dist/esm/core/database.js +289 -0
- package/dist/esm/core/database.js.map +1 -0
- package/dist/esm/core/engine.js +1198 -0
- package/dist/esm/core/engine.js.map +1 -0
- package/dist/esm/core/index.js +16 -0
- package/dist/esm/core/index.js.map +1 -0
- package/dist/esm/index.js +87 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/interfaces/index.js +11 -0
- package/dist/esm/interfaces/index.js.map +1 -0
- package/dist/esm/layers/index.js +16 -0
- package/dist/esm/layers/index.js.map +1 -0
- package/dist/esm/layers/memory.js +384 -0
- package/dist/esm/layers/memory.js.map +1 -0
- package/dist/esm/layers/postgres.js +485 -0
- package/dist/esm/layers/postgres.js.map +1 -0
- package/dist/esm/layers/redis.js +384 -0
- package/dist/esm/layers/redis.js.map +1 -0
- package/dist/esm/types/index.js +49 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/types/core/client.d.ts +561 -0
- package/dist/types/core/client.d.ts.map +1 -0
- package/dist/types/core/database.d.ts +130 -0
- package/dist/types/core/database.d.ts.map +1 -0
- package/dist/types/core/engine.d.ts +450 -0
- package/dist/types/core/engine.d.ts.map +1 -0
- package/dist/types/core/index.d.ts +13 -0
- package/dist/types/core/index.d.ts.map +1 -0
- package/dist/types/index.d.ts +85 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/interfaces/index.d.ts +209 -0
- package/dist/types/interfaces/index.d.ts.map +1 -0
- package/dist/types/layers/index.d.ts +16 -0
- package/dist/types/layers/index.d.ts.map +1 -0
- package/dist/types/layers/memory.d.ts +261 -0
- package/dist/types/layers/memory.d.ts.map +1 -0
- package/dist/types/layers/postgres.d.ts +313 -0
- package/dist/types/layers/postgres.d.ts.map +1 -0
- package/dist/types/layers/redis.d.ts +248 -0
- package/dist/types/layers/redis.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +410 -0
- package/dist/types/types/index.d.ts.map +1 -0
- package/package.json +90 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/core/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Nuvex - Database Utilities
|
|
3
|
+
* Next-gen Unified Vault Experience
|
|
4
|
+
*
|
|
5
|
+
* Database schema setup and migration utilities for PostgreSQL storage layer.
|
|
6
|
+
*
|
|
7
|
+
* @author Waren Gonzaga, WG Technology Labs
|
|
8
|
+
* @since 2025
|
|
9
|
+
*/
|
|
10
|
+
/** Create a default console-based logger */
|
|
11
|
+
function createDefaultLogger() {
|
|
12
|
+
return {
|
|
13
|
+
debug: () => { },
|
|
14
|
+
info: (message, meta) => console.log(message, ...(meta !== undefined ? [meta] : [])),
|
|
15
|
+
warn: (message, meta) => console.warn(message, ...(meta !== undefined ? [meta] : [])),
|
|
16
|
+
error: (message, meta) => console.error(message, ...(meta !== undefined ? [meta] : [])),
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Validate SQL identifier to prevent SQL injection
|
|
21
|
+
* Ensures the identifier contains only alphanumeric characters and underscores
|
|
22
|
+
*
|
|
23
|
+
* @param identifier - SQL identifier to validate
|
|
24
|
+
* @param name - Name of the identifier for error messages
|
|
25
|
+
* @throws {Error} If identifier contains invalid characters
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* validateSQLIdentifier('my_table_123', 'table name'); // OK
|
|
30
|
+
* validateSQLIdentifier('users; DROP TABLE', 'table name'); // throws Error
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @since 1.0.0
|
|
34
|
+
*/
|
|
35
|
+
export function validateSQLIdentifier(identifier, name) {
|
|
36
|
+
if (!identifier || !/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(identifier)) {
|
|
37
|
+
throw new Error(`Invalid ${name}: "${identifier}". SQL identifiers must start with a letter or underscore and contain only alphanumeric characters and underscores.`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Generate SQL schema for Nuvex storage with configurable table and column names
|
|
42
|
+
*
|
|
43
|
+
* @param schema - Optional schema configuration for custom table/column names
|
|
44
|
+
* @returns SQL string for creating the schema
|
|
45
|
+
* @throws {Error} If table or column names contain invalid characters
|
|
46
|
+
*/
|
|
47
|
+
export function generateNuvexSchemaSQL(schema) {
|
|
48
|
+
const tableName = schema?.tableName ?? 'nuvex_storage';
|
|
49
|
+
const keyColumn = schema?.columns?.key ?? 'nuvex_key';
|
|
50
|
+
const valueColumn = schema?.columns?.value ?? 'nuvex_data';
|
|
51
|
+
// Validate all identifiers to prevent SQL injection
|
|
52
|
+
validateSQLIdentifier(tableName, 'table name');
|
|
53
|
+
validateSQLIdentifier(keyColumn, 'key column name');
|
|
54
|
+
validateSQLIdentifier(valueColumn, 'value column name');
|
|
55
|
+
return `
|
|
56
|
+
-- Nuvex storage table for PostgreSQL layer
|
|
57
|
+
CREATE TABLE IF NOT EXISTS ${tableName} (
|
|
58
|
+
id SERIAL PRIMARY KEY,
|
|
59
|
+
${keyColumn} VARCHAR(512) NOT NULL UNIQUE,
|
|
60
|
+
${valueColumn} JSONB NOT NULL,
|
|
61
|
+
expires_at TIMESTAMP WITH TIME ZONE,
|
|
62
|
+
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
63
|
+
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
64
|
+
);
|
|
65
|
+
|
|
66
|
+
-- Index for expiration cleanup
|
|
67
|
+
CREATE INDEX IF NOT EXISTS idx_${tableName}_expires_at
|
|
68
|
+
ON ${tableName}(expires_at)
|
|
69
|
+
WHERE expires_at IS NOT NULL;
|
|
70
|
+
|
|
71
|
+
-- Ensure pg_trgm extension is available for GIN index
|
|
72
|
+
CREATE EXTENSION IF NOT EXISTS pg_trgm;
|
|
73
|
+
|
|
74
|
+
-- Index for key pattern searches
|
|
75
|
+
CREATE INDEX IF NOT EXISTS idx_${tableName}_key_pattern
|
|
76
|
+
ON ${tableName} USING gin(${keyColumn} gin_trgm_ops);
|
|
77
|
+
|
|
78
|
+
-- Function to auto-update updated_at
|
|
79
|
+
CREATE OR REPLACE FUNCTION update_${tableName}_updated_at()
|
|
80
|
+
RETURNS TRIGGER AS $$
|
|
81
|
+
BEGIN
|
|
82
|
+
NEW.updated_at = NOW();
|
|
83
|
+
RETURN NEW;
|
|
84
|
+
END;
|
|
85
|
+
$$ LANGUAGE plpgsql;
|
|
86
|
+
|
|
87
|
+
-- Trigger for auto-updating updated_at
|
|
88
|
+
DROP TRIGGER IF EXISTS trigger_update_${tableName}_updated_at ON ${tableName};
|
|
89
|
+
CREATE TRIGGER trigger_update_${tableName}_updated_at
|
|
90
|
+
BEFORE UPDATE ON ${tableName}
|
|
91
|
+
FOR EACH ROW
|
|
92
|
+
EXECUTE FUNCTION update_${tableName}_updated_at();
|
|
93
|
+
|
|
94
|
+
-- Function to clean up expired entries
|
|
95
|
+
CREATE OR REPLACE FUNCTION cleanup_expired_${tableName}()
|
|
96
|
+
RETURNS INTEGER AS $$
|
|
97
|
+
DECLARE
|
|
98
|
+
deleted_count INTEGER;
|
|
99
|
+
BEGIN
|
|
100
|
+
DELETE FROM ${tableName}
|
|
101
|
+
WHERE expires_at IS NOT NULL AND expires_at < NOW();
|
|
102
|
+
|
|
103
|
+
GET DIAGNOSTICS deleted_count = ROW_COUNT;
|
|
104
|
+
RETURN deleted_count;
|
|
105
|
+
END;
|
|
106
|
+
$$ LANGUAGE plpgsql;
|
|
107
|
+
`;
|
|
108
|
+
}
|
|
109
|
+
export const NUVEX_SCHEMA_SQL = generateNuvexSchemaSQL();
|
|
110
|
+
/**
|
|
111
|
+
* Setup Nuvex database schema
|
|
112
|
+
*
|
|
113
|
+
* Creates the necessary PostgreSQL tables, indexes, functions, and triggers
|
|
114
|
+
* required for the Nuvex storage system. This function is idempotent and
|
|
115
|
+
* can be safely called multiple times.
|
|
116
|
+
*
|
|
117
|
+
* Features created:
|
|
118
|
+
* - `nuvex_storage` table with JSON support and TTL
|
|
119
|
+
* - Indexes for performance optimization
|
|
120
|
+
* - Automatic `updated_at` trigger
|
|
121
|
+
* - Cleanup function for expired entries
|
|
122
|
+
* - Optional trigram support for pattern matching
|
|
123
|
+
* - Optional automated cleanup job scheduling
|
|
124
|
+
*
|
|
125
|
+
* @param db - PostgreSQL connection pool
|
|
126
|
+
* @param options - Optional configuration for schema setup
|
|
127
|
+
* @returns Promise that resolves when schema is created
|
|
128
|
+
*
|
|
129
|
+
* @example
|
|
130
|
+
* ```typescript
|
|
131
|
+
* import { Pool } from 'pg';
|
|
132
|
+
* import { setupNuvexSchema } from './database';
|
|
133
|
+
*
|
|
134
|
+
* const db = new Pool({ connectionString: 'postgresql://...' });
|
|
135
|
+
*
|
|
136
|
+
* // Basic setup
|
|
137
|
+
* await setupNuvexSchema(db);
|
|
138
|
+
*
|
|
139
|
+
* // Advanced setup with all features
|
|
140
|
+
* await setupNuvexSchema(db, {
|
|
141
|
+
* enableTrigram: true, // Enable pattern matching
|
|
142
|
+
* enableCleanupJob: true // Auto-cleanup expired entries
|
|
143
|
+
* });
|
|
144
|
+
* ```
|
|
145
|
+
*
|
|
146
|
+
* @throws {Error} If database connection fails or schema creation fails
|
|
147
|
+
*
|
|
148
|
+
* @since 1.0.0
|
|
149
|
+
*/
|
|
150
|
+
export async function setupNuvexSchema(db, options = {}, logger) {
|
|
151
|
+
const log = logger ?? createDefaultLogger();
|
|
152
|
+
try {
|
|
153
|
+
// Enable pg_trgm extension if requested (for pattern matching)
|
|
154
|
+
if (options.enableTrigram) {
|
|
155
|
+
await db.query('CREATE EXTENSION IF NOT EXISTS pg_trgm;');
|
|
156
|
+
}
|
|
157
|
+
// Generate schema SQL with custom table/column names if provided
|
|
158
|
+
const schemaSQL = options.schema ? generateNuvexSchemaSQL(options.schema) : NUVEX_SCHEMA_SQL;
|
|
159
|
+
// Execute main schema
|
|
160
|
+
await db.query(schemaSQL);
|
|
161
|
+
// Setup periodic cleanup job if requested
|
|
162
|
+
if (options.enableCleanupJob) {
|
|
163
|
+
await setupCleanupJob(db, undefined, options.schema, logger);
|
|
164
|
+
}
|
|
165
|
+
log.info('Nuvex database schema setup completed successfully');
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
log.error('Failed to setup Nuvex database schema:', error);
|
|
169
|
+
throw error;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Setup periodic cleanup job (requires pg_cron extension)
|
|
174
|
+
*
|
|
175
|
+
* Creates a scheduled job using PostgreSQL's pg_cron extension to automatically
|
|
176
|
+
* clean up expired entries from the nuvex_storage table. The job runs daily at 2 AM.
|
|
177
|
+
*
|
|
178
|
+
* @param db - PostgreSQL connection pool
|
|
179
|
+
* @param tenantId - Optional tenant identifier for multi-tenant setups
|
|
180
|
+
* @returns Promise that resolves when the cleanup job is scheduled
|
|
181
|
+
*
|
|
182
|
+
* @example
|
|
183
|
+
* ```typescript
|
|
184
|
+
* // Setup cleanup job for main application
|
|
185
|
+
* await setupCleanupJob(db);
|
|
186
|
+
*
|
|
187
|
+
* // Setup cleanup job for specific tenant
|
|
188
|
+
* await setupCleanupJob(db, 'tenant-123');
|
|
189
|
+
* ```
|
|
190
|
+
*
|
|
191
|
+
* @throws {Error} If pg_cron extension is not available or insufficient privileges
|
|
192
|
+
*
|
|
193
|
+
* @requires pg_cron extension and superuser privileges
|
|
194
|
+
* @since 1.0.0
|
|
195
|
+
*/
|
|
196
|
+
async function setupCleanupJob(db, tenantId, schema, logger) {
|
|
197
|
+
const log = logger ?? createDefaultLogger();
|
|
198
|
+
try {
|
|
199
|
+
const tableName = schema?.tableName || 'nuvex_storage';
|
|
200
|
+
validateSQLIdentifier(tableName, 'table name');
|
|
201
|
+
// Generate a unique job name per tenant/context
|
|
202
|
+
const jobName = tenantId ? `nuvex-cleanup-${tenantId}` : `nuvex-cleanup-${Date.now()}`;
|
|
203
|
+
// This requires pg_cron extension and superuser privileges
|
|
204
|
+
await db.query(`
|
|
205
|
+
SELECT cron.schedule(
|
|
206
|
+
$1,
|
|
207
|
+
'0 2 * * *', -- Daily at 2 AM
|
|
208
|
+
'SELECT cleanup_expired_${tableName}();'
|
|
209
|
+
);
|
|
210
|
+
`, [jobName]);
|
|
211
|
+
log.info(`Nuvex cleanup cron job scheduled as '${jobName}'`);
|
|
212
|
+
}
|
|
213
|
+
catch (error) {
|
|
214
|
+
log.error('Failed to schedule Nuvex cleanup cron job:', error);
|
|
215
|
+
throw error;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Manually clean up expired entries
|
|
220
|
+
*
|
|
221
|
+
* Executes the cleanup function to remove all expired entries from the
|
|
222
|
+
* nuvex_storage table. This can be called manually or as part of a maintenance routine.
|
|
223
|
+
*
|
|
224
|
+
* @param db - PostgreSQL connection pool
|
|
225
|
+
* @returns Promise that resolves to the number of deleted entries
|
|
226
|
+
*
|
|
227
|
+
* @example
|
|
228
|
+
* ```typescript
|
|
229
|
+
* const deletedCount = await cleanupExpiredEntries(db);
|
|
230
|
+
* console.log(`Cleaned up ${deletedCount} expired entries`);
|
|
231
|
+
* ```
|
|
232
|
+
*
|
|
233
|
+
* @throws {Error} If the cleanup operation fails
|
|
234
|
+
*
|
|
235
|
+
* @since 1.0.0
|
|
236
|
+
*/
|
|
237
|
+
export async function cleanupExpiredEntries(db, schema, logger) {
|
|
238
|
+
const log = logger ?? createDefaultLogger();
|
|
239
|
+
try {
|
|
240
|
+
const tableName = schema?.tableName || 'nuvex_storage';
|
|
241
|
+
validateSQLIdentifier(tableName, 'table name');
|
|
242
|
+
const result = await db.query(`SELECT cleanup_expired_${tableName}() as deleted_count;`);
|
|
243
|
+
return result.rows[0]?.deleted_count || 0;
|
|
244
|
+
}
|
|
245
|
+
catch (error) {
|
|
246
|
+
log.error('Failed to cleanup expired entries:', error);
|
|
247
|
+
throw error;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Drop Nuvex schema (for cleanup/testing)
|
|
252
|
+
*
|
|
253
|
+
* Completely removes all Nuvex-related database objects including tables,
|
|
254
|
+
* functions, triggers, and indexes. This operation is irreversible and will
|
|
255
|
+
* result in permanent data loss.
|
|
256
|
+
*
|
|
257
|
+
* @param db - PostgreSQL connection pool
|
|
258
|
+
* @returns Promise that resolves when schema is dropped
|
|
259
|
+
*
|
|
260
|
+
* @example
|
|
261
|
+
* ```typescript
|
|
262
|
+
* // Use with extreme caution - this will delete all data!
|
|
263
|
+
* await dropNuvexSchema(testDb); // Only use in tests
|
|
264
|
+
* ```
|
|
265
|
+
*
|
|
266
|
+
* @throws {Error} If the drop operation fails
|
|
267
|
+
*
|
|
268
|
+
* @warning This operation is irreversible and will cause permanent data loss
|
|
269
|
+
* @since 1.0.0
|
|
270
|
+
*/
|
|
271
|
+
export async function dropNuvexSchema(db, schema, logger) {
|
|
272
|
+
const log = logger ?? createDefaultLogger();
|
|
273
|
+
try {
|
|
274
|
+
const tableName = schema?.tableName || 'nuvex_storage';
|
|
275
|
+
validateSQLIdentifier(tableName, 'table name');
|
|
276
|
+
await db.query(`
|
|
277
|
+
DROP TRIGGER IF EXISTS trigger_update_${tableName}_updated_at ON ${tableName};
|
|
278
|
+
DROP FUNCTION IF EXISTS update_${tableName}_updated_at();
|
|
279
|
+
DROP FUNCTION IF EXISTS cleanup_expired_${tableName}();
|
|
280
|
+
DROP TABLE IF EXISTS ${tableName} CASCADE;
|
|
281
|
+
`);
|
|
282
|
+
log.info('Nuvex database schema dropped successfully');
|
|
283
|
+
}
|
|
284
|
+
catch (error) {
|
|
285
|
+
log.error('Failed to drop Nuvex database schema:', error);
|
|
286
|
+
throw error;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
//# sourceMappingURL=database.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../../src/core/database.ts"],"names":[],"mappings":"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"}
|