@coherent.js/core 1.0.0-beta.2 → 1.0.0-beta.5

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 (108) hide show
  1. package/dist/coherent.d.ts +10 -150
  2. package/dist/coherent.d.ts.map +1 -1
  3. package/dist/coherent.js +33 -166
  4. package/dist/coherent.js.map +1 -1
  5. package/dist/components/component-system.js +109 -109
  6. package/dist/core/html-utils.js +5 -5
  7. package/dist/core/object-factory.js +21 -21
  8. package/dist/core/object-utils.js +2 -2
  9. package/dist/database/adapters/mongodb.d.ts +15 -0
  10. package/dist/database/adapters/mongodb.d.ts.map +1 -0
  11. package/dist/database/adapters/mongodb.js +216 -0
  12. package/dist/database/adapters/mongodb.js.map +1 -0
  13. package/dist/database/adapters/mysql.d.ts +12 -0
  14. package/dist/database/adapters/mysql.d.ts.map +1 -0
  15. package/dist/database/adapters/mysql.js +171 -0
  16. package/dist/database/adapters/mysql.js.map +1 -0
  17. package/dist/database/adapters/postgresql.d.ts +12 -0
  18. package/dist/database/adapters/postgresql.d.ts.map +1 -0
  19. package/dist/database/adapters/postgresql.js +177 -0
  20. package/dist/database/adapters/postgresql.js.map +1 -0
  21. package/dist/database/adapters/sqlite.d.ts +15 -0
  22. package/dist/database/adapters/sqlite.d.ts.map +1 -0
  23. package/dist/database/adapters/sqlite.js +241 -0
  24. package/dist/database/adapters/sqlite.js.map +1 -0
  25. package/dist/database/connection-manager.d.ts +135 -0
  26. package/dist/database/connection-manager.d.ts.map +1 -0
  27. package/dist/database/connection-manager.js +362 -0
  28. package/dist/database/connection-manager.js.map +1 -0
  29. package/dist/database/index.d.ts +38 -0
  30. package/dist/database/index.d.ts.map +1 -0
  31. package/dist/database/index.js +60 -0
  32. package/dist/database/index.js.map +1 -0
  33. package/dist/database/middleware.d.ts +122 -0
  34. package/dist/database/middleware.d.ts.map +1 -0
  35. package/dist/database/middleware.js +390 -0
  36. package/dist/database/middleware.js.map +1 -0
  37. package/dist/database/migration.d.ts +62 -0
  38. package/dist/database/migration.d.ts.map +1 -0
  39. package/dist/database/migration.js +423 -0
  40. package/dist/database/migration.js.map +1 -0
  41. package/dist/database/model.d.ts +8 -0
  42. package/dist/database/model.d.ts.map +1 -0
  43. package/dist/database/model.js +167 -0
  44. package/dist/database/model.js.map +1 -0
  45. package/dist/database/query-builder.d.ts +111 -0
  46. package/dist/database/query-builder.d.ts.map +1 -0
  47. package/dist/database/query-builder.js +187 -0
  48. package/dist/database/query-builder.js.map +1 -0
  49. package/dist/database/utils.d.ts +196 -0
  50. package/dist/database/utils.d.ts.map +1 -0
  51. package/dist/database/utils.js +372 -0
  52. package/dist/database/utils.js.map +1 -0
  53. package/dist/dev/dev-tools.d.ts +1 -1
  54. package/dist/dev/dev-tools.js +28 -28
  55. package/dist/index.cjs +2 -1
  56. package/dist/index.cjs.map +2 -2
  57. package/dist/index.js +2 -1
  58. package/dist/index.js.map +2 -2
  59. package/dist/performance/bundle-optimizer.js +11 -11
  60. package/dist/performance/cache-manager.js +6 -6
  61. package/dist/performance/monitor.js +10 -10
  62. package/dist/performance/monitor.js.map +1 -1
  63. package/dist/rendering/base-renderer.js +13 -13
  64. package/dist/rendering/dom-renderer.d.ts +0 -23
  65. package/dist/rendering/dom-renderer.d.ts.map +1 -1
  66. package/dist/rendering/dom-renderer.js +9 -77
  67. package/dist/rendering/dom-renderer.js.map +1 -1
  68. package/dist/rendering/html-renderer.d.ts +0 -15
  69. package/dist/rendering/html-renderer.d.ts.map +1 -1
  70. package/dist/rendering/html-renderer.js +4 -85
  71. package/dist/rendering/html-renderer.js.map +1 -1
  72. package/dist/rendering/streaming-renderer.js +12 -12
  73. package/dist/utils/dependency-utils.js +2 -2
  74. package/dist/utils/normalization.js +1 -1
  75. package/dist/utils/validation.js +1 -1
  76. package/package.json +22 -1
  77. package/dist/components/lifecycle.d.ts +0 -212
  78. package/dist/components/lifecycle.d.ts.map +0 -1
  79. package/dist/components/lifecycle.js +0 -525
  80. package/dist/components/lifecycle.js.map +0 -1
  81. package/dist/forms/validation.d.ts +0 -271
  82. package/dist/forms/validation.d.ts.map +0 -1
  83. package/dist/forms/validation.js +0 -573
  84. package/dist/forms/validation.js.map +0 -1
  85. package/dist/performance/component-cache.d.ts +0 -120
  86. package/dist/performance/component-cache.d.ts.map +0 -1
  87. package/dist/performance/component-cache.js +0 -364
  88. package/dist/performance/component-cache.js.map +0 -1
  89. package/dist/rendering/css-manager.d.ts +0 -73
  90. package/dist/rendering/css-manager.d.ts.map +0 -1
  91. package/dist/rendering/css-manager.js +0 -176
  92. package/dist/rendering/css-manager.js.map +0 -1
  93. package/dist/rendering/vdom-diff.d.ts +0 -47
  94. package/dist/rendering/vdom-diff.d.ts.map +0 -1
  95. package/dist/rendering/vdom-diff.js +0 -416
  96. package/dist/rendering/vdom-diff.js.map +0 -1
  97. package/dist/routing/router.d.ts +0 -241
  98. package/dist/routing/router.d.ts.map +0 -1
  99. package/dist/routing/router.js +0 -648
  100. package/dist/routing/router.js.map +0 -1
  101. package/dist/state/reactive-state.d.ts +0 -166
  102. package/dist/state/reactive-state.d.ts.map +0 -1
  103. package/dist/state/reactive-state.js +0 -546
  104. package/dist/state/reactive-state.js.map +0 -1
  105. package/dist/utils/error-handler.d.ts +0 -148
  106. package/dist/utils/error-handler.d.ts.map +0 -1
  107. package/dist/utils/error-handler.js +0 -468
  108. package/dist/utils/error-handler.js.map +0 -1
@@ -0,0 +1,390 @@
1
+ /**
2
+ * Database Middleware for Coherent.js Router Integration
3
+ *
4
+ * @fileoverview Provides middleware for seamless database integration with the router,
5
+ * including connection management, transaction handling, and query helpers.
6
+ */
7
+ /**
8
+ * Database middleware for router integration
9
+ *
10
+ * @param {DatabaseManager} db - Database manager instance
11
+ * @param {Object} [options={}] - Middleware options
12
+ * @returns {Function} Middleware function
13
+ *
14
+ * @example
15
+ * import { withDatabase } from '@coherent/database';
16
+ *
17
+ * const router = new SimpleRouter();
18
+ * router.use(withDatabase(db));
19
+ *
20
+ * router.get('/users', async (req, res) => {
21
+ * const users = await req.db.query('SELECT * FROM users');
22
+ * res.json(users.rows);
23
+ * });
24
+ */
25
+ export function withDatabase(db, options = {}) {
26
+ const config = {
27
+ autoConnect: true,
28
+ attachModels: true,
29
+ transactionKey: 'tx',
30
+ ...options
31
+ };
32
+ return async (req, res, next) => {
33
+ try {
34
+ // Ensure database is connected
35
+ if (config.autoConnect && !db.isConnected) {
36
+ await db.connect();
37
+ }
38
+ // Attach database to request
39
+ req.db = db;
40
+ // Attach query helper
41
+ req.query = async (sql, params, queryOptions) => {
42
+ return await db.query(sql, params, queryOptions);
43
+ };
44
+ // Attach transaction helper
45
+ req.transaction = async (callback) => {
46
+ const tx = await db.transaction();
47
+ try {
48
+ const result = await callback(tx);
49
+ await tx.commit();
50
+ return result;
51
+ }
52
+ catch (_error) {
53
+ await tx.rollback();
54
+ throw _error;
55
+ }
56
+ };
57
+ // Attach models if configured
58
+ if (config.attachModels && db.models) {
59
+ req.models = db.models;
60
+ }
61
+ await next();
62
+ }
63
+ catch (_error) {
64
+ // Log database errors
65
+ console._error('Database middleware _error:', _error);
66
+ // Pass _error to _error handler
67
+ if (typeof next === 'function') {
68
+ next(_error);
69
+ }
70
+ else {
71
+ throw _error;
72
+ }
73
+ }
74
+ };
75
+ }
76
+ /**
77
+ * Transaction middleware for automatic transaction management
78
+ *
79
+ * @param {DatabaseManager} db - Database manager instance
80
+ * @param {Object} [options={}] - Transaction options
81
+ * @returns {Function} Middleware function
82
+ *
83
+ * @example
84
+ * router.post('/transfer', withTransaction(db), async (req, res) => {
85
+ * // All database operations in this handler will be wrapped in a transaction
86
+ * await req.tx.query('UPDATE accounts SET balance = balance - ? WHERE id = ?', [amount, fromId]);
87
+ * await req.tx.query('UPDATE accounts SET balance = balance + ? WHERE id = ?', [amount, toId]);
88
+ * // Transaction is automatically committed on success or rolled back on _error
89
+ * });
90
+ */
91
+ export function withTransaction(db, options = {}) {
92
+ const config = {
93
+ isolationLevel: null,
94
+ readOnly: false,
95
+ ...options
96
+ };
97
+ return async (req, res, next) => {
98
+ const tx = await db.transaction(config);
99
+ req.tx = tx;
100
+ try {
101
+ await next();
102
+ // Commit transaction if not already committed
103
+ if (!tx.isCommitted && !tx.isRolledBack) {
104
+ await tx.commit();
105
+ }
106
+ }
107
+ catch (_error) {
108
+ // Rollback transaction if not already rolled back
109
+ if (!tx.isRolledBack && !tx.isCommitted) {
110
+ await tx.rollback();
111
+ }
112
+ throw _error;
113
+ }
114
+ };
115
+ }
116
+ /**
117
+ * Model binding middleware
118
+ *
119
+ * @param {Function} ModelClass - Model class to bind
120
+ * @param {string} [paramName='id'] - Route parameter name
121
+ * @param {string} [requestKey] - Request key to attach model (defaults to model name)
122
+ * @returns {Function} Middleware function
123
+ *
124
+ * @example
125
+ * router.get('/users/:id', withModel(User), async (req, res) => {
126
+ * // req.user contains the loaded User model
127
+ * res.json(req.user.toJSON());
128
+ * });
129
+ *
130
+ * router.get('/posts/:postId', withModel(Post, 'postId', 'post'), async (req, res) => {
131
+ * // req.post contains the loaded Post model
132
+ * res.json(req.post.toJSON());
133
+ * });
134
+ */
135
+ export function withModel(ModelClass, paramName = 'id', requestKey = null) {
136
+ const key = requestKey || ModelClass.name.toLowerCase();
137
+ return async (req, res, next) => {
138
+ try {
139
+ const paramValue = req.params[paramName];
140
+ if (!paramValue) {
141
+ const _error = new Error(`Parameter '${paramName}' is required`);
142
+ _error.status = 400;
143
+ throw _error;
144
+ }
145
+ const model = await ModelClass.find(paramValue);
146
+ if (!model) {
147
+ const _error = new Error(`${ModelClass.name} not found`);
148
+ _error.status = 404;
149
+ throw _error;
150
+ }
151
+ req[key] = model;
152
+ await next();
153
+ }
154
+ catch (_error) {
155
+ if (typeof next === 'function') {
156
+ next(_error);
157
+ }
158
+ else {
159
+ throw _error;
160
+ }
161
+ }
162
+ };
163
+ }
164
+ /**
165
+ * Pagination middleware
166
+ *
167
+ * @param {Object} [options={}] - Pagination options
168
+ * @returns {Function} Middleware function
169
+ *
170
+ * @example
171
+ * router.get('/users', withPagination(), async (req, res) => {
172
+ * const users = await User.query()
173
+ * .limit(req.pagination.limit)
174
+ * .offset(req.pagination.offset)
175
+ * .execute();
176
+ *
177
+ * res.json({
178
+ * data: users.rows,
179
+ * pagination: req.pagination
180
+ * });
181
+ * });
182
+ */
183
+ export function withPagination(options = {}) {
184
+ const config = {
185
+ defaultLimit: 20,
186
+ maxLimit: 100,
187
+ pageParam: 'page',
188
+ limitParam: 'limit',
189
+ ...options
190
+ };
191
+ return async (req, res, next) => {
192
+ const page = Math.max(1, parseInt(req.query[config.pageParam]) || 1);
193
+ const limit = Math.min(config.maxLimit, Math.max(1, parseInt(req.query[config.limitParam]) || config.defaultLimit));
194
+ const offset = (page - 1) * limit;
195
+ req.pagination = {
196
+ page,
197
+ limit,
198
+ offset,
199
+ hasNext: null, // To be set by the handler
200
+ hasPrev: page > 1,
201
+ totalPages: null, // To be set by the handler
202
+ totalCount: null // To be set by the handler
203
+ };
204
+ await next();
205
+ };
206
+ }
207
+ /**
208
+ * Query validation middleware
209
+ *
210
+ * @param {Object} schema - Validation schema
211
+ * @param {Object} [options={}] - Validation options
212
+ * @returns {Function} Middleware function
213
+ *
214
+ * @example
215
+ * router.get('/users', withQueryValidation({
216
+ * status: { type: 'string', enum: ['active', 'inactive'] },
217
+ * age: { type: 'number', min: 0, max: 120 }
218
+ * }), async (req, res) => {
219
+ * // req.query is validated and sanitized
220
+ * });
221
+ */
222
+ export function withQueryValidation(schema, options = {}) {
223
+ const config = {
224
+ stripUnknown: true,
225
+ coerceTypes: true,
226
+ ...options
227
+ };
228
+ return async (req, res, next) => {
229
+ try {
230
+ const validatedQuery = {};
231
+ for (const [key, rules] of Object.entries(schema)) {
232
+ const value = req.query[key];
233
+ // Skip if not provided and not required
234
+ if (value === undefined || value === null || value === '') {
235
+ if (rules.required) {
236
+ const _error = new Error(`Query parameter '${key}' is required`);
237
+ _error.status = 400;
238
+ throw _error;
239
+ }
240
+ continue;
241
+ }
242
+ // Type coercion
243
+ let coercedValue = value;
244
+ if (config.coerceTypes) {
245
+ switch (rules.type) {
246
+ case 'number':
247
+ coercedValue = Number(value);
248
+ if (isNaN(coercedValue)) {
249
+ const _error = new Error(`Query parameter '${key}' must be a number`);
250
+ _error.status = 400;
251
+ throw _error;
252
+ }
253
+ break;
254
+ case 'boolean':
255
+ coercedValue = value === 'true' || value === '1';
256
+ break;
257
+ case 'array':
258
+ coercedValue = Array.isArray(value) ? value : [value];
259
+ break;
260
+ }
261
+ }
262
+ // Validation
263
+ if (rules.enum && !rules.enum.includes(coercedValue)) {
264
+ const _error = new Error(`Query parameter '${key}' must be one of: ${rules.enum.join(', ')}`);
265
+ _error.status = 400;
266
+ throw _error;
267
+ }
268
+ if (rules.min !== undefined && coercedValue < rules.min) {
269
+ const _error = new Error(`Query parameter '${key}' must be at least ${rules.min}`);
270
+ _error.status = 400;
271
+ throw _error;
272
+ }
273
+ if (rules.max !== undefined && coercedValue > rules.max) {
274
+ const _error = new Error(`Query parameter '${key}' must be at most ${rules.max}`);
275
+ _error.status = 400;
276
+ throw _error;
277
+ }
278
+ validatedQuery[key] = coercedValue;
279
+ }
280
+ // Replace query with validated version
281
+ if (!config.stripUnknown) {
282
+ Object.assign(validatedQuery, req.query);
283
+ }
284
+ req.query = validatedQuery;
285
+ await next();
286
+ }
287
+ catch (_error) {
288
+ if (typeof next === 'function') {
289
+ next(_error);
290
+ }
291
+ else {
292
+ throw _error;
293
+ }
294
+ }
295
+ };
296
+ }
297
+ /**
298
+ * Database health check middleware
299
+ *
300
+ * @param {DatabaseManager} db - Database manager instance
301
+ * @param {Object} [options={}] - Health check options
302
+ * @returns {Function} Middleware function
303
+ *
304
+ * @example
305
+ * router.get('/health', withHealthCheck(db), (req, res) => {
306
+ * res.json({ status: 'healthy', database: req.dbHealth });
307
+ * });
308
+ */
309
+ export function withHealthCheck(db, options = {}) {
310
+ const config = {
311
+ timeout: 5000,
312
+ includeStats: true,
313
+ ...options
314
+ };
315
+ return async (req, res, next) => {
316
+ try {
317
+ const startTime = Date.now();
318
+ // Test database connection
319
+ await Promise.race([
320
+ db.query('SELECT 1'),
321
+ new Promise((_, reject) => setTimeout(() => reject(new Error('Health check timeout')), config.timeout))
322
+ ]);
323
+ const responseTime = Date.now() - startTime;
324
+ req.dbHealth = {
325
+ status: 'healthy',
326
+ responseTime,
327
+ connected: db.isConnected
328
+ };
329
+ if (config.includeStats) {
330
+ req.dbHealth.stats = db.getStats();
331
+ }
332
+ await next();
333
+ }
334
+ catch (_error) {
335
+ req.dbHealth = {
336
+ status: 'unhealthy',
337
+ _error: _error.message,
338
+ connected: db.isConnected
339
+ };
340
+ await next();
341
+ }
342
+ };
343
+ }
344
+ /**
345
+ * Connection pooling middleware for request-scoped connections
346
+ *
347
+ * @param {DatabaseManager} db - Database manager instance
348
+ * @param {Object} [options={}] - Pool options
349
+ * @returns {Function} Middleware function
350
+ *
351
+ * @example
352
+ * router.use(withConnectionPool(db, { acquireTimeout: 10000 }));
353
+ */
354
+ export function withConnectionPool(db, options = {}) {
355
+ const config = {
356
+ acquireTimeout: 30000,
357
+ releaseOnResponse: true,
358
+ ...options
359
+ };
360
+ return async (req, res, next) => {
361
+ let connection = null;
362
+ try {
363
+ // Acquire connection from pool
364
+ connection = await db.pool.acquire(config.acquireTimeout);
365
+ // Attach connection to request
366
+ req.dbConnection = connection;
367
+ // Override query method to use this connection
368
+ req.query = async (sql, params, queryOptions) => {
369
+ return await db.adapter.query(connection, sql, params, queryOptions);
370
+ };
371
+ // Release connection when response finishes
372
+ if (config.releaseOnResponse) {
373
+ res.on('finish', () => {
374
+ if (connection) {
375
+ db.pool.release(connection);
376
+ }
377
+ });
378
+ }
379
+ await next();
380
+ }
381
+ catch (_error) {
382
+ // Release connection on _error
383
+ if (connection) {
384
+ db.pool.release(connection);
385
+ }
386
+ throw _error;
387
+ }
388
+ };
389
+ }
390
+ //# sourceMappingURL=middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../../src/database/middleware.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Create migration instance
3
+ *
4
+ * @param {DatabaseManager} db - Database manager instance
5
+ * @param {Object} [config={}] - Migration configuration
6
+ * @returns {Object} Migration instance
7
+ *
8
+ * @example
9
+ * const migration = createMigration(db, {
10
+ * directory: './migrations',
11
+ * tableName: 'coherent_migrations'
12
+ * });
13
+ *
14
+ * await migration.run();
15
+ */
16
+ export function createMigration(db: DatabaseManager, config?: Object): Object;
17
+ /**
18
+ * Create schema builder instance
19
+ */
20
+ export function createSchemaBuilder(db: any): {
21
+ createTable(tableName: any, callback: any): Promise<void>;
22
+ alterTable(tableName: any, callback: any): Promise<void>;
23
+ dropTable(tableName: any): Promise<void>;
24
+ raw(sql: any, params?: any[]): Promise<any>;
25
+ };
26
+ /**
27
+ * Create table builder instance
28
+ */
29
+ export function createTableBuilder(tableName: any): {
30
+ id(name?: string): /*elided*/ any;
31
+ string(name: any, length?: number): {
32
+ notNull(): /*elided*/ any;
33
+ unique(): /*elided*/ any;
34
+ default(value: any): /*elided*/ any;
35
+ };
36
+ text(name: any): {
37
+ notNull(): /*elided*/ any;
38
+ unique(): /*elided*/ any;
39
+ default(value: any): /*elided*/ any;
40
+ };
41
+ integer(name: any): {
42
+ notNull(): /*elided*/ any;
43
+ unique(): /*elided*/ any;
44
+ default(value: any): /*elided*/ any;
45
+ };
46
+ boolean(name: any): {
47
+ notNull(): /*elided*/ any;
48
+ unique(): /*elided*/ any;
49
+ default(value: any): /*elided*/ any;
50
+ };
51
+ datetime(name: any): {
52
+ notNull(): /*elided*/ any;
53
+ unique(): /*elided*/ any;
54
+ default(value: any): /*elided*/ any;
55
+ };
56
+ timestamps(): /*elided*/ any;
57
+ addColumn(name: any, type: any): /*elided*/ any;
58
+ dropColumn(name: any): /*elided*/ any;
59
+ toCreateSQL(): string;
60
+ toAlterSQL(): string[];
61
+ };
62
+ //# sourceMappingURL=migration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../../../../src/database/migration.js"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;;GAcG;AACH,oCAZW,eAAe,WACf,MAAM,GACJ,MAAM,CAqTlB;AAED;;GAEG;AACH;;;;;EA4BC;AAED;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0JC"}