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

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 (104) 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/performance/bundle-optimizer.js +11 -11
  56. package/dist/performance/cache-manager.js +6 -6
  57. package/dist/performance/monitor.js +10 -10
  58. package/dist/performance/monitor.js.map +1 -1
  59. package/dist/rendering/base-renderer.js +13 -13
  60. package/dist/rendering/dom-renderer.d.ts +0 -23
  61. package/dist/rendering/dom-renderer.d.ts.map +1 -1
  62. package/dist/rendering/dom-renderer.js +9 -77
  63. package/dist/rendering/dom-renderer.js.map +1 -1
  64. package/dist/rendering/html-renderer.d.ts +0 -15
  65. package/dist/rendering/html-renderer.d.ts.map +1 -1
  66. package/dist/rendering/html-renderer.js +4 -85
  67. package/dist/rendering/html-renderer.js.map +1 -1
  68. package/dist/rendering/streaming-renderer.js +12 -12
  69. package/dist/utils/dependency-utils.js +2 -2
  70. package/dist/utils/normalization.js +1 -1
  71. package/dist/utils/validation.js +1 -1
  72. package/package.json +1 -1
  73. package/dist/components/lifecycle.d.ts +0 -212
  74. package/dist/components/lifecycle.d.ts.map +0 -1
  75. package/dist/components/lifecycle.js +0 -525
  76. package/dist/components/lifecycle.js.map +0 -1
  77. package/dist/forms/validation.d.ts +0 -271
  78. package/dist/forms/validation.d.ts.map +0 -1
  79. package/dist/forms/validation.js +0 -573
  80. package/dist/forms/validation.js.map +0 -1
  81. package/dist/performance/component-cache.d.ts +0 -120
  82. package/dist/performance/component-cache.d.ts.map +0 -1
  83. package/dist/performance/component-cache.js +0 -364
  84. package/dist/performance/component-cache.js.map +0 -1
  85. package/dist/rendering/css-manager.d.ts +0 -73
  86. package/dist/rendering/css-manager.d.ts.map +0 -1
  87. package/dist/rendering/css-manager.js +0 -176
  88. package/dist/rendering/css-manager.js.map +0 -1
  89. package/dist/rendering/vdom-diff.d.ts +0 -47
  90. package/dist/rendering/vdom-diff.d.ts.map +0 -1
  91. package/dist/rendering/vdom-diff.js +0 -416
  92. package/dist/rendering/vdom-diff.js.map +0 -1
  93. package/dist/routing/router.d.ts +0 -241
  94. package/dist/routing/router.d.ts.map +0 -1
  95. package/dist/routing/router.js +0 -648
  96. package/dist/routing/router.js.map +0 -1
  97. package/dist/state/reactive-state.d.ts +0 -166
  98. package/dist/state/reactive-state.d.ts.map +0 -1
  99. package/dist/state/reactive-state.js +0 -546
  100. package/dist/state/reactive-state.js.map +0 -1
  101. package/dist/utils/error-handler.d.ts +0 -148
  102. package/dist/utils/error-handler.d.ts.map +0 -1
  103. package/dist/utils/error-handler.js +0 -468
  104. package/dist/utils/error-handler.js.map +0 -1
@@ -38,26 +38,26 @@ export function createTextNode(text) {
38
38
  * Helper function to create common elements
39
39
  */
40
40
  export const h = {
41
- div: (_props) => createElement('div', _props),
42
- span: (_props) => createElement('span', _props),
43
- p: (_props) => createElement('p', _props),
44
- h1: (_props) => createElement('h1', _props),
45
- h2: (_props) => createElement('h2', _props),
46
- h3: (_props) => createElement('h3', _props),
47
- h4: (_props) => createElement('h4', _props),
48
- h5: (_props) => createElement('h5', _props),
49
- h6: (_props) => createElement('h6', _props),
50
- a: (_props) => createElement('a', _props),
51
- img: (_props) => createElement('img', _props),
52
- button: (_props) => createElement('button', _props),
53
- input: (_props) => createElement('input', _props),
54
- form: (_props) => createElement('form', _props),
55
- ul: (_props) => createElement('ul', _props),
56
- ol: (_props) => createElement('ol', _props),
57
- li: (_props) => createElement('li', _props),
58
- table: (_props) => createElement('table', _props),
59
- tr: (_props) => createElement('tr', _props),
60
- td: (_props) => createElement('td', _props),
61
- th: (_props) => createElement('th', _props)
41
+ div: (props) => createElement('div', props),
42
+ span: (props) => createElement('span', props),
43
+ p: (props) => createElement('p', props),
44
+ h1: (props) => createElement('h1', props),
45
+ h2: (props) => createElement('h2', props),
46
+ h3: (props) => createElement('h3', props),
47
+ h4: (props) => createElement('h4', props),
48
+ h5: (props) => createElement('h5', props),
49
+ h6: (props) => createElement('h6', props),
50
+ a: (props) => createElement('a', props),
51
+ img: (props) => createElement('img', props),
52
+ button: (props) => createElement('button', props),
53
+ input: (props) => createElement('input', props),
54
+ form: (props) => createElement('form', props),
55
+ ul: (props) => createElement('ul', props),
56
+ ol: (props) => createElement('ol', props),
57
+ li: (props) => createElement('li', props),
58
+ table: (props) => createElement('table', props),
59
+ tr: (props) => createElement('tr', props),
60
+ td: (props) => createElement('td', props),
61
+ th: (props) => createElement('th', props)
62
62
  };
63
63
  //# sourceMappingURL=object-factory.js.map
@@ -156,7 +156,7 @@ export function smartClone(obj, maxDepth = 10, currentDepth = 0) {
156
156
  };
157
157
  }
158
158
  else {
159
- cloned[tag] = shallowClone(_props);
159
+ cloned[tag] = shallowClone(props);
160
160
  }
161
161
  }
162
162
  else {
@@ -333,7 +333,7 @@ export function normalizeChildren(children) {
333
333
  /**
334
334
  * Get children from a component's props
335
335
  */
336
- export function getChildren(_props) {
336
+ export function getChildren(props) {
337
337
  if (!props || typeof props !== 'object') {
338
338
  return [];
339
339
  }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * MongoDB Database Adapter for Coherent.js
3
+ *
4
+ * @fileoverview MongoDB adapter implementation with connection pooling and document operations.
5
+ */
6
+ /**
7
+ * Create a new MongoDB adapter instance
8
+ *
9
+ * @returns {Object} MongoDB adapter instance with database operations
10
+ */
11
+ export function createMongoDBAdapter(): Object;
12
+ export namespace MongoDBAdapter {
13
+ export { createMongoDBAdapter as create };
14
+ }
15
+ //# sourceMappingURL=mongodb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongodb.d.ts","sourceRoot":"","sources":["../../../../../src/database/adapters/mongodb.js"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AACH,wCAFa,MAAM,CA8NlB"}
@@ -0,0 +1,216 @@
1
+ /**
2
+ * MongoDB Database Adapter for Coherent.js
3
+ *
4
+ * @fileoverview MongoDB adapter implementation with connection pooling and document operations.
5
+ */
6
+ /**
7
+ * Create a new MongoDB adapter instance
8
+ *
9
+ * @returns {Object} MongoDB adapter instance with database operations
10
+ */
11
+ export function createMongoDBAdapter() {
12
+ let mongodb = null;
13
+ let client = null;
14
+ let db = null;
15
+ /**
16
+ * Initialize MongoDB module
17
+ *
18
+ * @private
19
+ * @returns {Promise<void>}
20
+ */
21
+ async function initializeMongoDB() {
22
+ if (!mongodb) {
23
+ try {
24
+ const mongoModule = await import('mongodb');
25
+ mongodb = mongoModule;
26
+ }
27
+ catch {
28
+ throw new Error('Failed to load mongodb module. Make sure to install it: npm install mongodb');
29
+ }
30
+ }
31
+ }
32
+ /**
33
+ * Connect to the database
34
+ *
35
+ * @param {Object} config - Database configuration
36
+ * @param {string} config.url - MongoDB connection URL
37
+ * @param {string} config.database - Database name
38
+ * @param {Object} [config.options] - MongoDB client options
39
+ * @returns {Promise<Object>} The database adapter instance
40
+ */
41
+ async function connect(config) {
42
+ await initializeMongoDB();
43
+ try {
44
+ client = new mongodb.MongoClient(config.url, config.options || {});
45
+ await client.connect();
46
+ db = client.db(config.database);
47
+ return instance;
48
+ }
49
+ catch (_error) {
50
+ throw new Error(`Failed to connect to MongoDB: ${_error.message}`);
51
+ }
52
+ }
53
+ /**
54
+ * Execute a query on a collection
55
+ *
56
+ * @param {string} collectionName - Name of the collection
57
+ * @param {Object} query - Query object
58
+ * @param {Object} [options] - Query options
59
+ * @returns {Promise<Array<Object>>} Query results
60
+ */
61
+ async function query(collectionName, query = {}, options = {}) {
62
+ if (!db) {
63
+ throw new Error('Database connection not established. Call connect() first.');
64
+ }
65
+ try {
66
+ const collection = db.collection(collectionName);
67
+ const cursor = collection.find(query, options);
68
+ if (options.sort) {
69
+ cursor.sort(options.sort);
70
+ }
71
+ if (options.limit) {
72
+ cursor.limit(options.limit);
73
+ }
74
+ if (options.skip) {
75
+ cursor.skip(options.skip);
76
+ }
77
+ if (options.projection) {
78
+ cursor.project(options.projection);
79
+ }
80
+ return cursor.toArray();
81
+ }
82
+ catch (_error) {
83
+ throw new Error(`MongoDB query _error: ${_error.message}`);
84
+ }
85
+ }
86
+ /**
87
+ * Execute a database command
88
+ *
89
+ * @param {Object} command - Database command
90
+ * @returns {Promise<Object>} Command result
91
+ */
92
+ async function execute(command) {
93
+ if (!db) {
94
+ throw new Error('Database connection not established. Call connect() first.');
95
+ }
96
+ try {
97
+ return await db.command(command);
98
+ }
99
+ catch (_error) {
100
+ throw new Error(`MongoDB command _error: ${_error.message}`);
101
+ }
102
+ }
103
+ /**
104
+ * Begin a transaction
105
+ *
106
+ * @returns {Promise<Object>} Session object for the transaction
107
+ */
108
+ async function beginTransaction() {
109
+ if (!client) {
110
+ throw new Error('Database connection not established. Call connect() first.');
111
+ }
112
+ const session = client.startSession();
113
+ session.startTransaction();
114
+ return session;
115
+ }
116
+ /**
117
+ * Commit a transaction
118
+ *
119
+ * @param {Object} session - The session object from beginTransaction
120
+ * @returns {Promise<void>}
121
+ */
122
+ async function commit(session) {
123
+ if (!session) {
124
+ throw new Error('No active transaction session');
125
+ }
126
+ try {
127
+ await session.commitTransaction();
128
+ }
129
+ finally {
130
+ await session.endSession();
131
+ }
132
+ }
133
+ /**
134
+ * Rollback a transaction
135
+ *
136
+ * @param {Object} session - The session object from beginTransaction
137
+ * @returns {Promise<void>}
138
+ */
139
+ async function rollback(session) {
140
+ if (!session) {
141
+ throw new Error('No active transaction session');
142
+ }
143
+ try {
144
+ await session.abortTransaction();
145
+ }
146
+ finally {
147
+ await session.endSession();
148
+ }
149
+ }
150
+ /**
151
+ * Disconnect from the database
152
+ *
153
+ * @returns {Promise<void>}
154
+ */
155
+ async function disconnect() {
156
+ if (client) {
157
+ await client.close();
158
+ client = null;
159
+ db = null;
160
+ }
161
+ }
162
+ /**
163
+ * Get the underlying database connection
164
+ *
165
+ * @returns {Object} The database connection
166
+ */
167
+ function getConnection() {
168
+ if (!db) {
169
+ throw new Error('Database connection not established. Call connect() first.');
170
+ }
171
+ return db;
172
+ }
173
+ /**
174
+ * Ping the database to check if connection is alive
175
+ *
176
+ * @returns {Promise<boolean>} True if connection is alive
177
+ */
178
+ async function ping() {
179
+ try {
180
+ await db.command({ ping: 1 });
181
+ return true;
182
+ }
183
+ catch {
184
+ return false;
185
+ }
186
+ }
187
+ /**
188
+ * Escape a value for MongoDB queries
189
+ *
190
+ * @param {*} value - Value to escape
191
+ * @returns {*} Escaped value
192
+ */
193
+ function escape(value) {
194
+ // MongoDB driver handles escaping internally
195
+ return value;
196
+ }
197
+ // Public API
198
+ const instance = {
199
+ connect,
200
+ query,
201
+ execute,
202
+ beginTransaction,
203
+ commit,
204
+ rollback,
205
+ disconnect,
206
+ getConnection,
207
+ ping,
208
+ escape,
209
+ // Alias for backward compatibility
210
+ run: execute
211
+ };
212
+ return instance;
213
+ }
214
+ // For backward compatibility
215
+ export const MongoDBAdapter = { create: createMongoDBAdapter };
216
+ //# sourceMappingURL=mongodb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongodb.js","sourceRoot":"","sources":["../../../../../src/database/adapters/mongodb.js"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AACH,MAAM,UAAU,oBAAoB;IAClC,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,IAAI,EAAE,GAAG,IAAI,CAAC;IAEd;;;;;OAKG;IACH,KAAK,UAAU,iBAAiB;QAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;gBAC5C,OAAO,GAAG,WAAW,CAAC;YACxB,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;YACjG,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,UAAU,OAAO,CAAC,MAAM;QAC3B,MAAM,iBAAiB,EAAE,CAAC;QAE1B,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YACnE,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;YACvB,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAChC,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,iCAAiC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,UAAU,KAAK,CAAC,cAAc,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE;QAC3D,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,CAAC;QAED,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YACjD,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAE/C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC;YAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YAED,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACvB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACrC,CAAC;YAED,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,UAAU,OAAO,CAAC,OAAO;QAC5B,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,CAAC;QAED,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,UAAU,gBAAgB;QAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;QACtC,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC3B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACH,KAAK,UAAU,MAAM,CAAC,OAAO;QAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,iBAAiB,EAAE,CAAC;QACpC,CAAC;gBAAS,CAAC;YACT,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,UAAU,QAAQ,CAAC,OAAO;QAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,gBAAgB,EAAE,CAAC;QACnC,CAAC;gBAAS,CAAC;YACT,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,UAAU,UAAU;QACvB,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,MAAM,GAAG,IAAI,CAAC;YACd,EAAE,GAAG,IAAI,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,SAAS,aAAa;QACpB,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;;OAIG;IACH,KAAK,UAAU,IAAI;QACjB,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,SAAS,MAAM,CAAC,KAAK;QACnB,6CAA6C;QAC7C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,aAAa;IACb,MAAM,QAAQ,GAAG;QACf,OAAO;QACP,KAAK;QACL,OAAO;QACP,gBAAgB;QAChB,MAAM;QACN,QAAQ;QACR,UAAU;QACV,aAAa;QACb,IAAI;QACJ,MAAM;QAEN,mCAAmC;QACnC,GAAG,EAAE,OAAO;KACb,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,6BAA6B;AAC7B,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * MySQL Database Adapter for Coherent.js
3
+ *
4
+ * @fileoverview MySQL adapter implementation with connection pooling and transaction support.
5
+ */
6
+ /**
7
+ * Create MySQL adapter instance
8
+ *
9
+ * @returns {Object} MySQL adapter instance
10
+ */
11
+ export function createMySQLAdapter(): Object;
12
+ //# sourceMappingURL=mysql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mysql.d.ts","sourceRoot":"","sources":["../../../../../src/database/adapters/mysql.js"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AACH,sCAFa,MAAM,CAmLlB"}
@@ -0,0 +1,171 @@
1
+ /**
2
+ * MySQL Database Adapter for Coherent.js
3
+ *
4
+ * @fileoverview MySQL adapter implementation with connection pooling and transaction support.
5
+ */
6
+ /**
7
+ * Create MySQL adapter instance
8
+ *
9
+ * @returns {Object} MySQL adapter instance
10
+ */
11
+ export function createMySQLAdapter() {
12
+ let mysql = null;
13
+ async function initializeMySQL() {
14
+ if (!mysql) {
15
+ try {
16
+ const mysqlModule = await import('mysql2/promise');
17
+ mysql = mysqlModule.default || mysqlModule;
18
+ }
19
+ catch {
20
+ throw new Error('mysql2 package is required for MySQL adapter. Install with: npm install mysql2');
21
+ }
22
+ }
23
+ }
24
+ return {
25
+ /**
26
+ * Create connection pool
27
+ */
28
+ async createPool(config) {
29
+ await initializeMySQL();
30
+ const poolConfig = {
31
+ host: config.host,
32
+ port: config.port,
33
+ database: config.database,
34
+ user: config.username,
35
+ password: config.password,
36
+ connectionLimit: config.pool.max,
37
+ acquireTimeout: config.pool.acquireTimeoutMillis,
38
+ timeout: config.pool.createTimeoutMillis,
39
+ reconnect: true,
40
+ charset: 'utf8mb4',
41
+ timezone: 'Z'
42
+ };
43
+ const pool = mysql.createPool(poolConfig);
44
+ return pool;
45
+ },
46
+ /**
47
+ * Test database connection
48
+ */
49
+ async testConnection(pool) {
50
+ const connection = await pool.getConnection();
51
+ try {
52
+ await connection.query('SELECT 1');
53
+ }
54
+ finally {
55
+ connection.release();
56
+ }
57
+ },
58
+ /**
59
+ * Execute database query
60
+ */
61
+ async query(pool, sql, params = [], options = {}) {
62
+ const connection = await pool.getConnection();
63
+ try {
64
+ const [rows] = await connection.execute(sql, params);
65
+ if (options.single) {
66
+ return Array.isArray(rows) ? rows[0] || null : rows;
67
+ }
68
+ if (Array.isArray(rows)) {
69
+ return {
70
+ rows,
71
+ rowCount: rows.length,
72
+ affectedRows: rows.affectedRows || rows.length,
73
+ insertId: rows.insertId || null
74
+ };
75
+ }
76
+ else {
77
+ return {
78
+ rows: [],
79
+ rowCount: rows.affectedRows || 0,
80
+ affectedRows: rows.affectedRows || 0,
81
+ insertId: rows.insertId || null
82
+ };
83
+ }
84
+ }
85
+ finally {
86
+ connection.release();
87
+ }
88
+ },
89
+ /**
90
+ * Start database transaction
91
+ */
92
+ async transaction(pool) {
93
+ const connection = await pool.getConnection();
94
+ await connection.beginTransaction();
95
+ const transaction = {
96
+ connection,
97
+ pool,
98
+ isCommitted: false,
99
+ isRolledBack: false,
100
+ query: async (sql, params, queryOptions) => {
101
+ if (transaction.isCommitted || transaction.isRolledBack) {
102
+ throw new Error('Cannot execute query on completed transaction');
103
+ }
104
+ const [rows] = await connection.execute(sql, params);
105
+ if (queryOptions && queryOptions.single) {
106
+ return Array.isArray(rows) ? rows[0] || null : rows;
107
+ }
108
+ if (Array.isArray(rows)) {
109
+ return {
110
+ rows,
111
+ rowCount: rows.length,
112
+ affectedRows: rows.affectedRows || rows.length,
113
+ insertId: rows.insertId || null
114
+ };
115
+ }
116
+ else {
117
+ return {
118
+ rows: [],
119
+ rowCount: rows.affectedRows || 0,
120
+ affectedRows: rows.affectedRows || 0,
121
+ insertId: rows.insertId || null
122
+ };
123
+ }
124
+ },
125
+ commit: async () => {
126
+ if (transaction.isCommitted || transaction.isRolledBack) {
127
+ throw new Error('Transaction already completed');
128
+ }
129
+ try {
130
+ await connection.commit();
131
+ transaction.isCommitted = true;
132
+ }
133
+ finally {
134
+ connection.release();
135
+ }
136
+ },
137
+ rollback: async () => {
138
+ if (transaction.isCommitted || transaction.isRolledBack) {
139
+ throw new Error('Transaction already completed');
140
+ }
141
+ try {
142
+ await connection.rollback();
143
+ transaction.isRolledBack = true;
144
+ }
145
+ finally {
146
+ connection.release();
147
+ }
148
+ }
149
+ };
150
+ return transaction;
151
+ },
152
+ /**
153
+ * Get pool statistics
154
+ */
155
+ getPoolStats(pool) {
156
+ return {
157
+ total: pool.config.connectionLimit,
158
+ available: pool._freeConnections ? pool._freeConnections.length : 0,
159
+ acquired: pool._allConnections ? pool._allConnections.length - (pool._freeConnections ? pool._freeConnections.length : 0) : 0,
160
+ waiting: pool._connectionQueue ? pool._connectionQueue.length : 0
161
+ };
162
+ },
163
+ /**
164
+ * Close connection pool
165
+ */
166
+ async closePool(pool) {
167
+ await pool.end();
168
+ }
169
+ };
170
+ }
171
+ //# sourceMappingURL=mysql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mysql.js","sourceRoot":"","sources":["../../../../../src/database/adapters/mysql.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * PostgreSQL Database Adapter for Coherent.js
3
+ *
4
+ * @fileoverview PostgreSQL adapter implementation with connection pooling and advanced features.
5
+ */
6
+ /**
7
+ * Create PostgreSQL adapter instance
8
+ *
9
+ * @returns {Object} PostgreSQL adapter instance
10
+ */
11
+ export function createPostgreSQLAdapter(): Object;
12
+ //# sourceMappingURL=postgresql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgresql.d.ts","sourceRoot":"","sources":["../../../../../src/database/adapters/postgresql.js"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AACH,2CAFa,MAAM,CAgMlB"}