ts-prorm-orm 1.2.2 → 2.0.0

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 (129) hide show
  1. package/CHANGELOG.md +209 -0
  2. package/README.md +32 -24
  3. package/dist/compliance/index.d.ts +2 -0
  4. package/dist/compliance/index.js +13 -1
  5. package/dist/connection-manager.js +13 -1
  6. package/dist/core/expressions.d.ts +58 -0
  7. package/dist/core/expressions.js +83 -0
  8. package/dist/core/hooks-manager.d.ts +179 -0
  9. package/dist/core/hooks-manager.js +291 -0
  10. package/dist/core/types.d.ts +235 -0
  11. package/dist/core/types.js +9 -0
  12. package/dist/decorators/index.d.ts +2 -0
  13. package/dist/decorators/index.js +11 -1
  14. package/dist/diagrams/chen-diagram.d.ts +15 -12
  15. package/dist/diagrams/chen-diagram.js +76 -85
  16. package/dist/diagrams/class-diagram.d.ts +9 -8
  17. package/dist/diagrams/class-diagram.js +60 -82
  18. package/dist/diagrams/core/index.d.ts +13 -0
  19. package/dist/diagrams/core/index.js +33 -0
  20. package/dist/diagrams/core/layout.d.ts +104 -0
  21. package/dist/diagrams/core/layout.js +223 -0
  22. package/dist/diagrams/{svg-dom.d.ts → core/svg.d.ts} +8 -20
  23. package/dist/diagrams/{svg-dom.js → core/svg.js} +21 -29
  24. package/dist/diagrams/core/theme.d.ts +84 -0
  25. package/dist/diagrams/core/theme.js +62 -0
  26. package/dist/diagrams/dependency-diagram.d.ts +15 -14
  27. package/dist/diagrams/dependency-diagram.js +71 -105
  28. package/dist/diagrams/er-diagram.d.ts +13 -26
  29. package/dist/diagrams/er-diagram.js +180 -259
  30. package/dist/diagrams/flow-diagram.d.ts +16 -11
  31. package/dist/diagrams/flow-diagram.js +96 -91
  32. package/dist/diagrams/gantt-diagram.d.ts +10 -5
  33. package/dist/diagrams/gantt-diagram.js +77 -103
  34. package/dist/diagrams/index-diagram.d.ts +10 -10
  35. package/dist/diagrams/index-diagram.js +106 -116
  36. package/dist/diagrams/index.d.ts +6 -9
  37. package/dist/diagrams/index.js +9 -24
  38. package/dist/diagrams/migration-diagram.d.ts +8 -4
  39. package/dist/diagrams/migration-diagram.js +189 -161
  40. package/dist/diagrams/model-diagram.d.ts +34 -34
  41. package/dist/diagrams/model-diagram.js +106 -485
  42. package/dist/diagrams/package-diagram.d.ts +9 -6
  43. package/dist/diagrams/package-diagram.js +64 -101
  44. package/dist/diagrams/relational-diagram.d.ts +12 -10
  45. package/dist/diagrams/relational-diagram.js +87 -114
  46. package/dist/diagrams/schemadoc-diagram.d.ts +8 -8
  47. package/dist/diagrams/schemadoc-diagram.js +71 -93
  48. package/dist/diagrams/sequence-diagram.d.ts +10 -10
  49. package/dist/diagrams/sequence-diagram.js +64 -89
  50. package/dist/diagrams/state-diagram.d.ts +10 -9
  51. package/dist/diagrams/state-diagram.js +69 -92
  52. package/dist/diagrams/tree-diagram.d.ts +11 -5
  53. package/dist/diagrams/tree-diagram.js +41 -65
  54. package/dist/dialects/clickhouse/index.js +15 -0
  55. package/dist/dialects/cockroachdb/index.d.ts +1 -1
  56. package/dist/dialects/cockroachdb/index.js +32 -63
  57. package/dist/dialects/db2/index.js +23 -8
  58. package/dist/dialects/dialect.d.ts +29 -5
  59. package/dist/dialects/duckdb/index.js +9 -2
  60. package/dist/dialects/hana/index.js +22 -5
  61. package/dist/dialects/lock-clause-helper.d.ts +167 -0
  62. package/dist/dialects/lock-clause-helper.js +316 -0
  63. package/dist/dialects/mariadb/index.d.ts +7 -4
  64. package/dist/dialects/mariadb/index.js +36 -60
  65. package/dist/dialects/mssql/index.js +34 -3
  66. package/dist/dialects/mysql/index.d.ts +1 -1
  67. package/dist/dialects/mysql/index.js +17 -45
  68. package/dist/dialects/oracle/index.d.ts +14 -3
  69. package/dist/dialects/oracle/index.js +66 -36
  70. package/dist/dialects/order-expression-helper.d.ts +72 -0
  71. package/dist/dialects/order-expression-helper.js +154 -0
  72. package/dist/dialects/partial-index.d.ts +52 -0
  73. package/dist/dialects/partial-index.js +251 -0
  74. package/dist/dialects/postgres/index.d.ts +1 -1
  75. package/dist/dialects/postgres/index.js +43 -68
  76. package/dist/dialects/redshift/index.js +9 -2
  77. package/dist/dialects/snowflake/index.js +17 -0
  78. package/dist/dialects/spanner/index.js +7 -2
  79. package/dist/dialects/sqlite/driver.d.ts +55 -0
  80. package/dist/dialects/sqlite/driver.js +102 -0
  81. package/dist/dialects/sqlite/index.d.ts +1 -1
  82. package/dist/dialects/sqlite/index.js +49 -27
  83. package/dist/graph/base-graph-dialect.d.ts +24 -3
  84. package/dist/graph/base-graph-dialect.js +43 -2
  85. package/dist/graph/dgraph/index.js +6 -0
  86. package/dist/graph/gremlin/index.d.ts +6 -0
  87. package/dist/graph/gremlin/index.js +12 -1
  88. package/dist/graph/index.d.ts +1 -1
  89. package/dist/graph/neo4j/index.d.ts +2 -0
  90. package/dist/graph/neo4j/index.js +6 -1
  91. package/dist/graph/types.d.ts +12 -1
  92. package/dist/index.d.ts +13 -4
  93. package/dist/index.js +54 -7
  94. package/dist/logging/index.d.ts +10 -0
  95. package/dist/logging/index.js +23 -0
  96. package/dist/logging/query-logging.d.ts +82 -0
  97. package/dist/logging/query-logging.js +102 -0
  98. package/dist/models/decorators.d.ts +39 -3
  99. package/dist/models/decorators.js +74 -0
  100. package/dist/models/eager-load.d.ts +99 -0
  101. package/dist/models/eager-load.js +348 -5
  102. package/dist/models/indexes.d.ts +3 -2
  103. package/dist/models/indexes.js +7 -1
  104. package/dist/models/model.js +69 -43
  105. package/dist/prorm.d.ts +175 -409
  106. package/dist/prorm.js +1142 -557
  107. package/dist/query-builders/order-limit-builder.js +12 -10
  108. package/dist/query-builders/sql-compiler.d.ts +10 -3
  109. package/dist/query-builders/sql-compiler.js +14 -43
  110. package/dist/query-interface.d.ts +2 -1
  111. package/dist/sql-constants.d.ts +44 -0
  112. package/dist/sql-constants.js +138 -1
  113. package/dist/types/index.d.ts +53 -17
  114. package/dist/types/index.js +10 -15
  115. package/dist/types/query-types.d.ts +26 -0
  116. package/dist/types/query-types.js +30 -0
  117. package/package.json +32 -5
  118. package/dist/decorators/belongs-to-many.js +0 -115
  119. package/dist/decorators/belongs-to.js +0 -115
  120. package/dist/decorators/has-many.js +0 -127
  121. package/dist/decorators/has-one.js +0 -116
  122. package/dist/diagrams/palette.d.ts +0 -138
  123. package/dist/diagrams/palette.js +0 -194
  124. package/dist/hooks/hooks-manager.d.ts +0 -189
  125. package/dist/hooks/hooks-manager.js +0 -350
  126. package/dist/hooks/index.d.ts +0 -8
  127. package/dist/hooks/index.js +0 -37
  128. /package/dist/{logging.d.ts → logging/logger.d.ts} +0 -0
  129. /package/dist/{logging.js → logging/logger.js} +0 -0
@@ -1,350 +0,0 @@
1
- "use strict";
2
- /**
3
- * Hooks Manager for the TypeScript ORM
4
- * Provides a centralized system for managing Prorm-style model hooks
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.HooksManager = void 0;
8
- exports.createHooksObject = createHooksObject;
9
- exports.addHookMethods = addHookMethods;
10
- exports.beforeValidate = beforeValidate;
11
- exports.afterValidate = afterValidate;
12
- exports.beforeCreate = beforeCreate;
13
- exports.afterCreate = afterCreate;
14
- exports.beforeUpdate = beforeUpdate;
15
- exports.afterUpdate = afterUpdate;
16
- exports.beforeDestroy = beforeDestroy;
17
- exports.afterDestroy = afterDestroy;
18
- exports.beforeSave = beforeSave;
19
- exports.afterSave = afterSave;
20
- exports.beforeBulkCreate = beforeBulkCreate;
21
- exports.afterBulkCreate = afterBulkCreate;
22
- exports.beforeBulkUpdate = beforeBulkUpdate;
23
- exports.afterBulkUpdate = afterBulkUpdate;
24
- exports.beforeBulkDestroy = beforeBulkDestroy;
25
- exports.afterBulkDestroy = afterBulkDestroy;
26
- exports.beforeFind = beforeFind;
27
- exports.afterFind = afterFind;
28
- // ==================== Hooks Manager Class ====================
29
- /**
30
- * HooksManager - Manages all lifecycle hooks for a model
31
- */
32
- class HooksManager {
33
- constructor(modelName = 'AnonymousModel') {
34
- this.hooks = new Map();
35
- this.modelName = modelName;
36
- this.initializeHooks();
37
- }
38
- /**
39
- * Initialize all hook types as empty Sets
40
- */
41
- initializeHooks() {
42
- const hookNames = [
43
- 'beforeValidate',
44
- 'afterValidate',
45
- 'beforeCreate',
46
- 'afterCreate',
47
- 'beforeUpdate',
48
- 'afterUpdate',
49
- 'beforeDestroy',
50
- 'afterDestroy',
51
- 'beforeSave',
52
- 'afterSave',
53
- 'beforeBulkCreate',
54
- 'afterBulkCreate',
55
- 'beforeBulkUpdate',
56
- 'afterBulkUpdate',
57
- 'beforeBulkDestroy',
58
- 'afterBulkDestroy',
59
- 'beforeFind',
60
- 'afterFind',
61
- ];
62
- for (const hookName of hookNames) {
63
- this.hooks.set(hookName, new Set());
64
- }
65
- }
66
- /**
67
- * Get all hooks
68
- */
69
- getHooks() {
70
- return this.hooks;
71
- }
72
- /**
73
- * Get hooks for a specific hook name
74
- */
75
- getHook(hookName) {
76
- return this.hooks.get(hookName) || new Set();
77
- }
78
- /**
79
- * Add a hook callback
80
- */
81
- addHook(hookName, callback) {
82
- const normalizedName = this.normalizeHookName(hookName);
83
- if (!this.hooks.has(normalizedName)) {
84
- this.hooks.set(normalizedName, new Set());
85
- }
86
- const hookSet = this.hooks.get(normalizedName);
87
- hookSet.add(callback);
88
- return this;
89
- }
90
- /**
91
- * Remove a hook callback
92
- */
93
- removeHook(hookName, callback) {
94
- const normalizedName = this.normalizeHookName(hookName);
95
- const hookSet = this.hooks.get(normalizedName);
96
- if (hookSet) {
97
- hookSet.delete(callback);
98
- }
99
- return this;
100
- }
101
- /**
102
- * Run all callbacks for a specific hook
103
- */
104
- async runHook(hookName, ...args) {
105
- const normalizedName = this.normalizeHookName(hookName);
106
- const hookSet = this.hooks.get(normalizedName);
107
- if (!hookSet || hookSet.size === 0) {
108
- return;
109
- }
110
- const isBulkHook = normalizedName.startsWith('beforeBulk') || normalizedName.startsWith('afterBulk');
111
- const isFindHook = normalizedName === 'beforeFind' || normalizedName === 'afterFind';
112
- for (const callback of hookSet) {
113
- try {
114
- if (isBulkHook) {
115
- // Bulk hooks receive (instances, options)
116
- await callback(args[0], args[1]);
117
- }
118
- else if (isFindHook) {
119
- // Find hooks receive (options)
120
- await callback(args[0]);
121
- }
122
- else {
123
- // Instance hooks receive (instance, options)
124
- await callback(args[0], args[1]);
125
- }
126
- }
127
- catch (error) {
128
- throw new Error(`Error in ${this.modelName}.${normalizedName} hook: ${error instanceof Error ? error.message : String(error)}`);
129
- }
130
- }
131
- }
132
- /**
133
- * Check if a hook has registered callbacks
134
- */
135
- hasHook(hookName) {
136
- const normalizedName = this.normalizeHookName(hookName);
137
- const hookSet = this.hooks.get(normalizedName);
138
- return hookSet ? hookSet.size > 0 : false;
139
- }
140
- /**
141
- * Get the count of hooks for a specific hook name
142
- */
143
- getHookCount(hookName) {
144
- const normalizedName = this.normalizeHookName(hookName);
145
- const hookSet = this.hooks.get(normalizedName);
146
- return hookSet ? hookSet.size : 0;
147
- }
148
- /**
149
- * Clear all hooks
150
- */
151
- clearHooks() {
152
- for (const hookSet of this.hooks.values()) {
153
- hookSet.clear();
154
- }
155
- return this;
156
- }
157
- /**
158
- * Clear hooks for a specific hook name
159
- */
160
- clearHook(hookName) {
161
- const normalizedName = this.normalizeHookName(hookName);
162
- const hookSet = this.hooks.get(normalizedName);
163
- if (hookSet) {
164
- hookSet.clear();
165
- }
166
- return this;
167
- }
168
- /**
169
- * Normalize hook name to camelCase
170
- */
171
- normalizeHookName(hookName) {
172
- return hookName
173
- .replace(/^(before|after)_/i, (_, prefix) => prefix + hookName.charAt(prefix.length).toUpperCase())
174
- .replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());
175
- }
176
- }
177
- exports.HooksManager = HooksManager;
178
- // ==================== Hook Wrapper Functions ====================
179
- /**
180
- * Create a hooks object compatible with Model options
181
- */
182
- function createHooksObject(hooksManager) {
183
- const hooksObj = {};
184
- const hookNames = [
185
- 'beforeValidate',
186
- 'afterValidate',
187
- 'beforeCreate',
188
- 'afterCreate',
189
- 'beforeUpdate',
190
- 'afterUpdate',
191
- 'beforeDestroy',
192
- 'afterDestroy',
193
- 'beforeSave',
194
- 'afterSave',
195
- 'beforeBulkCreate',
196
- 'afterBulkCreate',
197
- 'beforeBulkUpdate',
198
- 'afterBulkUpdate',
199
- 'beforeBulkDestroy',
200
- 'afterBulkDestroy',
201
- 'beforeFind',
202
- 'afterFind',
203
- ];
204
- for (const hookName of hookNames) {
205
- hooksObj[hookName] = async (instance, options) => {
206
- await hooksManager.runHook(hookName, instance, options);
207
- };
208
- }
209
- return hooksObj;
210
- }
211
- /**
212
- * Mixin function to add hook methods to a Model class
213
- */
214
- function addHookMethods(target, hooksManager) {
215
- /**
216
- * Add a hook
217
- */
218
- target.addHook = function (hookName, callback) {
219
- return hooksManager.addHook(hookName, callback);
220
- };
221
- /**
222
- * Remove a hook
223
- */
224
- target.removeHook = function (hookName, callback) {
225
- return hooksManager.removeHook(hookName, callback);
226
- };
227
- /**
228
- * Run a hook
229
- */
230
- target.runHook = async function (hookName, ...args) {
231
- return hooksManager.runHook(hookName, ...args);
232
- };
233
- /**
234
- * Check if a hook exists
235
- */
236
- target.hasHook = function (hookName) {
237
- return hooksManager.hasHook(hookName);
238
- };
239
- }
240
- // ==================== Convenience Hook Creators ====================
241
- /**
242
- * Create a beforeValidate hook wrapper
243
- */
244
- function beforeValidate(callback) {
245
- return { beforeValidate: callback };
246
- }
247
- /**
248
- * Create an afterValidate hook wrapper
249
- */
250
- function afterValidate(callback) {
251
- return { afterValidate: callback };
252
- }
253
- /**
254
- * Create a beforeCreate hook wrapper
255
- */
256
- function beforeCreate(callback) {
257
- return { beforeCreate: callback };
258
- }
259
- /**
260
- * Create an afterCreate hook wrapper
261
- */
262
- function afterCreate(callback) {
263
- return { afterCreate: callback };
264
- }
265
- /**
266
- * Create a beforeUpdate hook wrapper
267
- */
268
- function beforeUpdate(callback) {
269
- return { beforeUpdate: callback };
270
- }
271
- /**
272
- * Create an afterUpdate hook wrapper
273
- */
274
- function afterUpdate(callback) {
275
- return { afterUpdate: callback };
276
- }
277
- /**
278
- * Create a beforeDestroy hook wrapper
279
- */
280
- function beforeDestroy(callback) {
281
- return { beforeDestroy: callback };
282
- }
283
- /**
284
- * Create an afterDestroy hook wrapper
285
- */
286
- function afterDestroy(callback) {
287
- return { afterDestroy: callback };
288
- }
289
- /**
290
- * Create a beforeSave hook wrapper
291
- */
292
- function beforeSave(callback) {
293
- return { beforeSave: callback };
294
- }
295
- /**
296
- * Create an afterSave hook wrapper
297
- */
298
- function afterSave(callback) {
299
- return { afterSave: callback };
300
- }
301
- /**
302
- * Create a beforeBulkCreate hook wrapper
303
- */
304
- function beforeBulkCreate(callback) {
305
- return { beforeBulkCreate: callback };
306
- }
307
- /**
308
- * Create an afterBulkCreate hook wrapper
309
- */
310
- function afterBulkCreate(callback) {
311
- return { afterBulkCreate: callback };
312
- }
313
- /**
314
- * Create a beforeBulkUpdate hook wrapper
315
- */
316
- function beforeBulkUpdate(callback) {
317
- return { beforeBulkUpdate: callback };
318
- }
319
- /**
320
- * Create an afterBulkUpdate hook wrapper
321
- */
322
- function afterBulkUpdate(callback) {
323
- return { afterBulkUpdate: callback };
324
- }
325
- /**
326
- * Create a beforeBulkDestroy hook wrapper
327
- */
328
- function beforeBulkDestroy(callback) {
329
- return { beforeBulkDestroy: callback };
330
- }
331
- /**
332
- * Create an afterBulkDestroy hook wrapper
333
- */
334
- function afterBulkDestroy(callback) {
335
- return { afterBulkDestroy: callback };
336
- }
337
- /**
338
- * Create a beforeFind hook wrapper
339
- */
340
- function beforeFind(callback) {
341
- return { beforeFind: callback };
342
- }
343
- /**
344
- * Create an afterFind hook wrapper
345
- */
346
- function afterFind(callback) {
347
- return { afterFind: callback };
348
- }
349
- // ==================== Default Export ====================
350
- exports.default = HooksManager;
@@ -1,8 +0,0 @@
1
- /**
2
- * Hooks module exports for the TypeScript ORM
3
- * Provides a comprehensive hooks system for model lifecycle events
4
- */
5
- export { HooksManager, default } from './hooks-manager';
6
- export type { HookName, HookCallback, HooksMap, FindHookHandler, FindHookOptions, } from './hooks-manager';
7
- export { createHooksObject, addHookMethods, beforeValidate, afterValidate, beforeCreate, afterCreate, beforeUpdate, afterUpdate, beforeDestroy, afterDestroy, beforeSave, afterSave, beforeBulkCreate, afterBulkCreate, beforeBulkUpdate, afterBulkUpdate, beforeBulkDestroy, afterBulkDestroy, beforeFind, afterFind, } from './hooks-manager';
8
- export type { Model, HookOptions, HookHandler, BulkHookHandler, ModelHooks, Transaction, } from '../types';
@@ -1,37 +0,0 @@
1
- "use strict";
2
- /**
3
- * Hooks module exports for the TypeScript ORM
4
- * Provides a comprehensive hooks system for model lifecycle events
5
- */
6
- var __importDefault = (this && this.__importDefault) || function (mod) {
7
- return (mod && mod.__esModule) ? mod : { "default": mod };
8
- };
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.afterFind = exports.beforeFind = exports.afterBulkDestroy = exports.beforeBulkDestroy = exports.afterBulkUpdate = exports.beforeBulkUpdate = exports.afterBulkCreate = exports.beforeBulkCreate = exports.afterSave = exports.beforeSave = exports.afterDestroy = exports.beforeDestroy = exports.afterUpdate = exports.beforeUpdate = exports.afterCreate = exports.beforeCreate = exports.afterValidate = exports.beforeValidate = exports.addHookMethods = exports.createHooksObject = exports.default = exports.HooksManager = void 0;
11
- // Main HooksManager class
12
- var hooks_manager_1 = require("./hooks-manager");
13
- Object.defineProperty(exports, "HooksManager", { enumerable: true, get: function () { return hooks_manager_1.HooksManager; } });
14
- Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(hooks_manager_1).default; } });
15
- // Hook wrapper functions
16
- var hooks_manager_2 = require("./hooks-manager");
17
- Object.defineProperty(exports, "createHooksObject", { enumerable: true, get: function () { return hooks_manager_2.createHooksObject; } });
18
- Object.defineProperty(exports, "addHookMethods", { enumerable: true, get: function () { return hooks_manager_2.addHookMethods; } });
19
- // Individual hook creators
20
- Object.defineProperty(exports, "beforeValidate", { enumerable: true, get: function () { return hooks_manager_2.beforeValidate; } });
21
- Object.defineProperty(exports, "afterValidate", { enumerable: true, get: function () { return hooks_manager_2.afterValidate; } });
22
- Object.defineProperty(exports, "beforeCreate", { enumerable: true, get: function () { return hooks_manager_2.beforeCreate; } });
23
- Object.defineProperty(exports, "afterCreate", { enumerable: true, get: function () { return hooks_manager_2.afterCreate; } });
24
- Object.defineProperty(exports, "beforeUpdate", { enumerable: true, get: function () { return hooks_manager_2.beforeUpdate; } });
25
- Object.defineProperty(exports, "afterUpdate", { enumerable: true, get: function () { return hooks_manager_2.afterUpdate; } });
26
- Object.defineProperty(exports, "beforeDestroy", { enumerable: true, get: function () { return hooks_manager_2.beforeDestroy; } });
27
- Object.defineProperty(exports, "afterDestroy", { enumerable: true, get: function () { return hooks_manager_2.afterDestroy; } });
28
- Object.defineProperty(exports, "beforeSave", { enumerable: true, get: function () { return hooks_manager_2.beforeSave; } });
29
- Object.defineProperty(exports, "afterSave", { enumerable: true, get: function () { return hooks_manager_2.afterSave; } });
30
- Object.defineProperty(exports, "beforeBulkCreate", { enumerable: true, get: function () { return hooks_manager_2.beforeBulkCreate; } });
31
- Object.defineProperty(exports, "afterBulkCreate", { enumerable: true, get: function () { return hooks_manager_2.afterBulkCreate; } });
32
- Object.defineProperty(exports, "beforeBulkUpdate", { enumerable: true, get: function () { return hooks_manager_2.beforeBulkUpdate; } });
33
- Object.defineProperty(exports, "afterBulkUpdate", { enumerable: true, get: function () { return hooks_manager_2.afterBulkUpdate; } });
34
- Object.defineProperty(exports, "beforeBulkDestroy", { enumerable: true, get: function () { return hooks_manager_2.beforeBulkDestroy; } });
35
- Object.defineProperty(exports, "afterBulkDestroy", { enumerable: true, get: function () { return hooks_manager_2.afterBulkDestroy; } });
36
- Object.defineProperty(exports, "beforeFind", { enumerable: true, get: function () { return hooks_manager_2.beforeFind; } });
37
- Object.defineProperty(exports, "afterFind", { enumerable: true, get: function () { return hooks_manager_2.afterFind; } });
File without changes
File without changes