@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.
Files changed (70) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +427 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/cjs/core/client.js +981 -0
  5. package/dist/cjs/core/client.js.map +1 -0
  6. package/dist/cjs/core/database.js +297 -0
  7. package/dist/cjs/core/database.js.map +1 -0
  8. package/dist/cjs/core/engine.js +1202 -0
  9. package/dist/cjs/core/engine.js.map +1 -0
  10. package/dist/cjs/core/index.js +35 -0
  11. package/dist/cjs/core/index.js.map +1 -0
  12. package/dist/cjs/index.js +109 -0
  13. package/dist/cjs/index.js.map +1 -0
  14. package/dist/cjs/interfaces/index.js +12 -0
  15. package/dist/cjs/interfaces/index.js.map +1 -0
  16. package/dist/cjs/layers/index.js +22 -0
  17. package/dist/cjs/layers/index.js.map +1 -0
  18. package/dist/cjs/layers/memory.js +388 -0
  19. package/dist/cjs/layers/memory.js.map +1 -0
  20. package/dist/cjs/layers/postgres.js +492 -0
  21. package/dist/cjs/layers/postgres.js.map +1 -0
  22. package/dist/cjs/layers/redis.js +388 -0
  23. package/dist/cjs/layers/redis.js.map +1 -0
  24. package/dist/cjs/types/index.js +52 -0
  25. package/dist/cjs/types/index.js.map +1 -0
  26. package/dist/esm/core/client.js +944 -0
  27. package/dist/esm/core/client.js.map +1 -0
  28. package/dist/esm/core/database.js +289 -0
  29. package/dist/esm/core/database.js.map +1 -0
  30. package/dist/esm/core/engine.js +1198 -0
  31. package/dist/esm/core/engine.js.map +1 -0
  32. package/dist/esm/core/index.js +16 -0
  33. package/dist/esm/core/index.js.map +1 -0
  34. package/dist/esm/index.js +87 -0
  35. package/dist/esm/index.js.map +1 -0
  36. package/dist/esm/interfaces/index.js +11 -0
  37. package/dist/esm/interfaces/index.js.map +1 -0
  38. package/dist/esm/layers/index.js +16 -0
  39. package/dist/esm/layers/index.js.map +1 -0
  40. package/dist/esm/layers/memory.js +384 -0
  41. package/dist/esm/layers/memory.js.map +1 -0
  42. package/dist/esm/layers/postgres.js +485 -0
  43. package/dist/esm/layers/postgres.js.map +1 -0
  44. package/dist/esm/layers/redis.js +384 -0
  45. package/dist/esm/layers/redis.js.map +1 -0
  46. package/dist/esm/types/index.js +49 -0
  47. package/dist/esm/types/index.js.map +1 -0
  48. package/dist/types/core/client.d.ts +561 -0
  49. package/dist/types/core/client.d.ts.map +1 -0
  50. package/dist/types/core/database.d.ts +130 -0
  51. package/dist/types/core/database.d.ts.map +1 -0
  52. package/dist/types/core/engine.d.ts +450 -0
  53. package/dist/types/core/engine.d.ts.map +1 -0
  54. package/dist/types/core/index.d.ts +13 -0
  55. package/dist/types/core/index.d.ts.map +1 -0
  56. package/dist/types/index.d.ts +85 -0
  57. package/dist/types/index.d.ts.map +1 -0
  58. package/dist/types/interfaces/index.d.ts +209 -0
  59. package/dist/types/interfaces/index.d.ts.map +1 -0
  60. package/dist/types/layers/index.d.ts +16 -0
  61. package/dist/types/layers/index.d.ts.map +1 -0
  62. package/dist/types/layers/memory.d.ts +261 -0
  63. package/dist/types/layers/memory.d.ts.map +1 -0
  64. package/dist/types/layers/postgres.d.ts +313 -0
  65. package/dist/types/layers/postgres.d.ts.map +1 -0
  66. package/dist/types/layers/redis.d.ts +248 -0
  67. package/dist/types/layers/redis.d.ts.map +1 -0
  68. package/dist/types/types/index.d.ts +410 -0
  69. package/dist/types/types/index.d.ts.map +1 -0
  70. 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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"}