ts-prorm-orm 1.2.3 → 2.1.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 (204) hide show
  1. package/CHANGELOG.md +331 -1
  2. package/README.md +32 -24
  3. package/dist/compliance/data-classifier.d.ts +6 -0
  4. package/dist/compliance/data-classifier.js +6 -0
  5. package/dist/compliance/data-lineage.d.ts +4 -0
  6. package/dist/compliance/data-lineage.js +4 -0
  7. package/dist/compliance/data-masker.d.ts +4 -0
  8. package/dist/compliance/data-masker.js +4 -0
  9. package/dist/compliance/index.d.ts +4 -0
  10. package/dist/compliance/index.js +15 -1
  11. package/dist/compliance/pseudonymization.d.ts +4 -0
  12. package/dist/compliance/pseudonymization.js +4 -0
  13. package/dist/compliance/query-firewall.d.ts +9 -9
  14. package/dist/compliance/query-firewall.js +9 -9
  15. package/dist/compliance/rate-limiter.d.ts +4 -0
  16. package/dist/compliance/rate-limiter.js +4 -0
  17. package/dist/compliance/row-level-security.d.ts +2 -0
  18. package/dist/compliance/row-level-security.js +2 -0
  19. package/dist/compliance/security-decorator.d.ts +8 -0
  20. package/dist/compliance/security-decorator.js +8 -0
  21. package/dist/compliance/session-isolation.d.ts +4 -0
  22. package/dist/compliance/session-isolation.js +4 -0
  23. package/dist/compliance/worm-storage.d.ts +4 -0
  24. package/dist/compliance/worm-storage.js +4 -0
  25. package/dist/connection-manager.js +13 -1
  26. package/dist/core/expressions.d.ts +58 -0
  27. package/dist/core/expressions.js +83 -0
  28. package/dist/core/hooks-manager.d.ts +179 -0
  29. package/dist/core/hooks-manager.js +291 -0
  30. package/dist/core/types.d.ts +235 -0
  31. package/dist/core/types.js +9 -0
  32. package/dist/decorators/audit.d.ts +3 -1
  33. package/dist/decorators/audit.js +3 -1
  34. package/dist/decorators/check.d.ts +15 -15
  35. package/dist/decorators/check.js +15 -15
  36. package/dist/decorators/collate.d.ts +16 -0
  37. package/dist/decorators/collate.js +16 -0
  38. package/dist/decorators/comment.d.ts +3 -1
  39. package/dist/decorators/comment.js +3 -1
  40. package/dist/decorators/database-settings.d.ts +6 -0
  41. package/dist/decorators/database-settings.js +6 -0
  42. package/dist/decorators/default.d.ts +2 -0
  43. package/dist/decorators/default.js +2 -0
  44. package/dist/decorators/encryption.d.ts +7 -1
  45. package/dist/decorators/encryption.js +7 -1
  46. package/dist/decorators/engine.d.ts +4 -0
  47. package/dist/decorators/engine.js +4 -0
  48. package/dist/decorators/fk-constraints.d.ts +32 -32
  49. package/dist/decorators/fk-constraints.js +32 -32
  50. package/dist/decorators/foreign-table.d.ts +1 -1
  51. package/dist/decorators/generated.d.ts +8 -0
  52. package/dist/decorators/generated.js +8 -0
  53. package/dist/decorators/hstore.d.ts +6 -0
  54. package/dist/decorators/hstore.js +6 -0
  55. package/dist/decorators/index.d.ts +2 -0
  56. package/dist/decorators/index.js +11 -1
  57. package/dist/decorators/json-column.d.ts +2 -0
  58. package/dist/decorators/json-column.js +2 -0
  59. package/dist/decorators/jsonb.d.ts +6 -0
  60. package/dist/decorators/jsonb.js +6 -0
  61. package/dist/decorators/permissions.d.ts +12 -0
  62. package/dist/decorators/permissions.js +12 -0
  63. package/dist/decorators/procedure.d.ts +4 -2
  64. package/dist/decorators/procedure.js +4 -2
  65. package/dist/decorators/query-options.d.ts +24 -0
  66. package/dist/decorators/query-options.js +24 -0
  67. package/dist/decorators/range.d.ts +8 -0
  68. package/dist/decorators/range.js +8 -0
  69. package/dist/decorators/set-column.d.ts +2 -0
  70. package/dist/decorators/set-column.js +2 -0
  71. package/dist/decorators/spatial.d.ts +2 -0
  72. package/dist/decorators/spatial.js +2 -0
  73. package/dist/decorators/storage.d.ts +24 -0
  74. package/dist/decorators/storage.js +24 -0
  75. package/dist/decorators/timezone.d.ts +7 -7
  76. package/dist/decorators/timezone.js +7 -7
  77. package/dist/decorators/trigger.d.ts +3 -1
  78. package/dist/decorators/trigger.js +3 -1
  79. package/dist/decorators/uuid.d.ts +6 -0
  80. package/dist/decorators/uuid.js +6 -0
  81. package/dist/decorators/view.d.ts +7 -1
  82. package/dist/decorators/view.js +7 -1
  83. package/dist/diagrams/chen-diagram.d.ts +15 -12
  84. package/dist/diagrams/chen-diagram.js +76 -85
  85. package/dist/diagrams/class-diagram.d.ts +9 -8
  86. package/dist/diagrams/class-diagram.js +60 -82
  87. package/dist/diagrams/core/index.d.ts +13 -0
  88. package/dist/diagrams/core/index.js +33 -0
  89. package/dist/diagrams/core/layout.d.ts +104 -0
  90. package/dist/diagrams/core/layout.js +223 -0
  91. package/dist/diagrams/{svg-dom.d.ts → core/svg.d.ts} +8 -20
  92. package/dist/diagrams/{svg-dom.js → core/svg.js} +21 -29
  93. package/dist/diagrams/core/theme.d.ts +84 -0
  94. package/dist/diagrams/core/theme.js +62 -0
  95. package/dist/diagrams/dependency-diagram.d.ts +15 -14
  96. package/dist/diagrams/dependency-diagram.js +71 -105
  97. package/dist/diagrams/er-diagram.d.ts +13 -26
  98. package/dist/diagrams/er-diagram.js +180 -259
  99. package/dist/diagrams/flow-diagram.d.ts +16 -11
  100. package/dist/diagrams/flow-diagram.js +96 -91
  101. package/dist/diagrams/gantt-diagram.d.ts +10 -5
  102. package/dist/diagrams/gantt-diagram.js +77 -103
  103. package/dist/diagrams/index-diagram.d.ts +10 -10
  104. package/dist/diagrams/index-diagram.js +106 -116
  105. package/dist/diagrams/index.d.ts +6 -9
  106. package/dist/diagrams/index.js +9 -24
  107. package/dist/diagrams/migration-diagram.d.ts +8 -4
  108. package/dist/diagrams/migration-diagram.js +189 -161
  109. package/dist/diagrams/model-diagram.d.ts +34 -34
  110. package/dist/diagrams/model-diagram.js +106 -485
  111. package/dist/diagrams/package-diagram.d.ts +9 -6
  112. package/dist/diagrams/package-diagram.js +64 -101
  113. package/dist/diagrams/relational-diagram.d.ts +12 -10
  114. package/dist/diagrams/relational-diagram.js +87 -114
  115. package/dist/diagrams/schemadoc-diagram.d.ts +8 -8
  116. package/dist/diagrams/schemadoc-diagram.js +71 -93
  117. package/dist/diagrams/sequence-diagram.d.ts +10 -10
  118. package/dist/diagrams/sequence-diagram.js +64 -89
  119. package/dist/diagrams/state-diagram.d.ts +10 -9
  120. package/dist/diagrams/state-diagram.js +69 -92
  121. package/dist/diagrams/tree-diagram.d.ts +11 -5
  122. package/dist/diagrams/tree-diagram.js +41 -65
  123. package/dist/dialects/clickhouse/index.js +15 -0
  124. package/dist/dialects/cockroachdb/index.d.ts +1 -1
  125. package/dist/dialects/cockroachdb/index.js +32 -63
  126. package/dist/dialects/db2/index.js +23 -8
  127. package/dist/dialects/dialect.d.ts +141 -5
  128. package/dist/dialects/duckdb/index.js +9 -2
  129. package/dist/dialects/hana/index.js +22 -5
  130. package/dist/dialects/lock-clause-helper.d.ts +167 -0
  131. package/dist/dialects/lock-clause-helper.js +316 -0
  132. package/dist/dialects/mariadb/index.d.ts +7 -4
  133. package/dist/dialects/mariadb/index.js +36 -60
  134. package/dist/dialects/mssql/index.js +34 -3
  135. package/dist/dialects/mysql/index.d.ts +1 -1
  136. package/dist/dialects/mysql/index.js +17 -45
  137. package/dist/dialects/oracle/index.d.ts +14 -3
  138. package/dist/dialects/oracle/index.js +66 -36
  139. package/dist/dialects/order-expression-helper.d.ts +72 -0
  140. package/dist/dialects/order-expression-helper.js +154 -0
  141. package/dist/dialects/partial-index.d.ts +52 -0
  142. package/dist/dialects/partial-index.js +251 -0
  143. package/dist/dialects/postgres/index.d.ts +1 -1
  144. package/dist/dialects/postgres/index.js +43 -68
  145. package/dist/dialects/redshift/index.js +9 -2
  146. package/dist/dialects/snowflake/index.js +17 -0
  147. package/dist/dialects/spanner/index.js +7 -2
  148. package/dist/dialects/sqlite/driver.d.ts +55 -0
  149. package/dist/dialects/sqlite/driver.js +102 -0
  150. package/dist/dialects/sqlite/index.d.ts +1 -1
  151. package/dist/dialects/sqlite/index.js +49 -27
  152. package/dist/external-fields/decorator.d.ts +2 -0
  153. package/dist/external-fields/decorator.js +2 -0
  154. package/dist/graph/base-graph-dialect.d.ts +24 -3
  155. package/dist/graph/base-graph-dialect.js +43 -2
  156. package/dist/graph/dgraph/index.js +6 -0
  157. package/dist/graph/gremlin/index.d.ts +6 -0
  158. package/dist/graph/gremlin/index.js +12 -1
  159. package/dist/graph/index.d.ts +1 -1
  160. package/dist/graph/neo4j/index.d.ts +2 -0
  161. package/dist/graph/neo4j/index.js +6 -1
  162. package/dist/graph/types.d.ts +12 -1
  163. package/dist/index.d.ts +12 -3
  164. package/dist/index.js +53 -7
  165. package/dist/logging/index.d.ts +10 -0
  166. package/dist/logging/index.js +23 -0
  167. package/dist/logging/query-logging.d.ts +82 -0
  168. package/dist/logging/query-logging.js +102 -0
  169. package/dist/models/associations.d.ts +38 -0
  170. package/dist/models/associations.js +16 -0
  171. package/dist/models/decorators.d.ts +55 -19
  172. package/dist/models/decorators.js +95 -19
  173. package/dist/models/eager-load.d.ts +99 -0
  174. package/dist/models/eager-load.js +348 -5
  175. package/dist/models/indexes.d.ts +3 -2
  176. package/dist/models/indexes.js +7 -1
  177. package/dist/models/model.js +69 -43
  178. package/dist/prorm.d.ts +175 -409
  179. package/dist/prorm.js +1132 -553
  180. package/dist/query-builders/order-limit-builder.js +12 -10
  181. package/dist/query-builders/sql-compiler.d.ts +10 -3
  182. package/dist/query-builders/sql-compiler.js +14 -43
  183. package/dist/query-interface.d.ts +2 -1
  184. package/dist/schema-objects.d.ts +42 -0
  185. package/dist/schema-objects.js +28 -0
  186. package/dist/sql-constants.d.ts +44 -0
  187. package/dist/sql-constants.js +138 -1
  188. package/dist/types/index.d.ts +387 -17
  189. package/dist/types/index.js +10 -15
  190. package/dist/types/query-types.d.ts +26 -0
  191. package/dist/types/query-types.js +30 -0
  192. package/package.json +39 -8
  193. package/dist/decorators/belongs-to-many.js +0 -115
  194. package/dist/decorators/belongs-to.js +0 -115
  195. package/dist/decorators/has-many.js +0 -127
  196. package/dist/decorators/has-one.js +0 -116
  197. package/dist/diagrams/palette.d.ts +0 -138
  198. package/dist/diagrams/palette.js +0 -194
  199. package/dist/hooks/hooks-manager.d.ts +0 -189
  200. package/dist/hooks/hooks-manager.js +0 -350
  201. package/dist/hooks/index.d.ts +0 -8
  202. package/dist/hooks/index.js +0 -37
  203. /package/dist/{logging.d.ts → logging/logger.d.ts} +0 -0
  204. /package/dist/{logging.js → logging/logger.js} +0 -0
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ /**
3
+ * Raw SQL expression wrappers used by the Prorm instance API.
4
+ *
5
+ * `Literal` embeds SQL verbatim; `Col` references a column without quoting it
6
+ * as a value. Note that `src/operators.ts` also exposes `literal()`/`col()`
7
+ * factories producing a different shape - the dialects consume the operators
8
+ * form, so prefer those in new code.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.Col = exports.Literal = void 0;
12
+ /**
13
+ * Represents a raw SQL literal value
14
+ * Used for inserting raw SQL expressions into queries
15
+ *
16
+ * @example
17
+ * // Use in default values
18
+ * createdAt: { type: DATE, defaultValue: prorm.literal('NOW()') }
19
+ *
20
+ * @example
21
+ * // Use in updates
22
+ * User.update({ count: prorm.literal('count + 1') }, {...})
23
+ *
24
+ * @example
25
+ * // Use in select with calculations
26
+ * User.findAll({ attributes: [[prorm.literal('1 + 1'), 'two']] })
27
+ */
28
+ class Literal {
29
+ constructor(sql) {
30
+ this.val = sql;
31
+ }
32
+ /**
33
+ * Get the raw SQL string
34
+ */
35
+ toString() {
36
+ return this.val;
37
+ }
38
+ }
39
+ exports.Literal = Literal;
40
+ /**
41
+ * Class representing a column reference for use with Prorm functions
42
+ * Used to create properly quoted column identifiers
43
+ *
44
+ * @example
45
+ * // Single column: col('name') -> "name"
46
+ * // Table and column: col('User', 'name') -> "User"."name"
47
+ * // Dot notation: col('table.column') -> "table"."column"
48
+ */
49
+ class Col {
50
+ /**
51
+ * Create a column reference
52
+ * @param tableOrColumn - Table name (if second param provided) or column name
53
+ * @param column - Column name (if first param is table name)
54
+ */
55
+ constructor(tableOrColumn, column) {
56
+ if (column !== undefined) {
57
+ // col('User', 'name') -> "User"."name"
58
+ this.col = `"${tableOrColumn}"."${column}"`;
59
+ }
60
+ else if (tableOrColumn.includes('.')) {
61
+ // col('table.column') -> "table"."column"
62
+ const [table, col] = tableOrColumn.split('.');
63
+ this.col = `"${table}"."${col}"`;
64
+ }
65
+ else {
66
+ // col('name') -> "name"
67
+ this.col = `"${tableOrColumn}"`;
68
+ }
69
+ }
70
+ /**
71
+ * Get the SQL representation of the column
72
+ */
73
+ toSql() {
74
+ return this.col;
75
+ }
76
+ /**
77
+ * Get the column as a string
78
+ */
79
+ toString() {
80
+ return this.col;
81
+ }
82
+ }
83
+ exports.Col = Col;
@@ -0,0 +1,179 @@
1
+ /**
2
+ * Lifecycle hook registries for a Prorm instance.
3
+ *
4
+ * `HooksManager` holds instance-wide hooks (define/sync/connect/destroy/...);
5
+ * `ModelHooks` holds the per-model set. Both were declared inline in prorm.ts,
6
+ * above the Prorm class.
7
+ *
8
+ * Not to be confused with `src/hooks/hooks-manager.ts` - a separate,
9
+ * currently unreferenced model-level hook system that shares the class name.
10
+ */
11
+ import type { HookCallback, Connection, SyncOptions } from './types';
12
+ import type { AttributeOptions, ModelStatic, DestroyOptions, ReloadOptions } from '../types';
13
+ import type { ModelOptions as ModelOptionsType } from '../types';
14
+ /** Loose model type, matching the alias prorm.ts uses. */
15
+ type AnyModel = any;
16
+ /**
17
+ * Hook manager for Prorm instance
18
+ */
19
+ export declare class HooksManager {
20
+ private beforeDefineHooks;
21
+ private afterDefineHooks;
22
+ private beforeSyncHooks;
23
+ private afterSyncHooks;
24
+ private beforeConnectHooks;
25
+ private afterConnectHooks;
26
+ private beforeDisconnectHooks;
27
+ private afterDisconnectHooks;
28
+ private beforeDestroyHooks;
29
+ private afterDestroyHooks;
30
+ private beforeUpsertHooks;
31
+ private afterUpsertHooks;
32
+ private beforeReloadHooks;
33
+ /**
34
+ * Register a beforeDefine hook
35
+ */
36
+ beforeDefine(callback: HookCallback): void;
37
+ /**
38
+ * Register an afterDefine hook
39
+ */
40
+ afterDefine(callback: HookCallback): void;
41
+ /**
42
+ * Register a beforeSync hook
43
+ */
44
+ beforeSync(callback: HookCallback): void;
45
+ /**
46
+ * Register an afterSync hook
47
+ */
48
+ afterSync(callback: HookCallback): void;
49
+ /**
50
+ * Register a beforeConnect hook
51
+ */
52
+ beforeConnect(callback: HookCallback): void;
53
+ /**
54
+ * Register an afterConnect hook
55
+ */
56
+ afterConnect(callback: HookCallback): void;
57
+ /**
58
+ * Register a beforeDisconnect hook
59
+ */
60
+ beforeDisconnect(callback: HookCallback): void;
61
+ /**
62
+ * Register an afterDisconnect hook
63
+ */
64
+ afterDisconnect(callback: HookCallback): void;
65
+ /**
66
+ * Register a beforeDestroy hook
67
+ */
68
+ beforeDestroy(callback: HookCallback): void;
69
+ /**
70
+ * Register an afterDestroy hook
71
+ */
72
+ afterDestroy(callback: HookCallback): void;
73
+ /**
74
+ * Register a beforeUpsert hook
75
+ */
76
+ beforeUpsert(callback: HookCallback): void;
77
+ /**
78
+ * Register an afterUpsert hook
79
+ */
80
+ afterUpsert(callback: HookCallback): void;
81
+ /**
82
+ * Register a beforeReload hook
83
+ */
84
+ beforeReload(callback: HookCallback): void;
85
+ /**
86
+ * Execute all beforeDefine hooks
87
+ */
88
+ runBeforeDefine(modelName: string, attributes: Record<string, AttributeOptions>, options: ModelOptionsType): Promise<void>;
89
+ /**
90
+ * Execute all afterDefine hooks
91
+ */
92
+ runAfterDefine(model: ModelStatic<AnyModel>): Promise<void>;
93
+ /**
94
+ * Execute all beforeSync hooks
95
+ */
96
+ runBeforeSync(options: SyncOptions): Promise<void>;
97
+ /**
98
+ * Execute all afterSync hooks
99
+ */
100
+ runAfterSync(options: SyncOptions): Promise<void>;
101
+ /**
102
+ * Execute all beforeConnect hooks
103
+ */
104
+ runBeforeConnect(): Promise<void>;
105
+ /**
106
+ * Execute all afterConnect hooks
107
+ * @param connection - The connection object to pass to hooks
108
+ */
109
+ runAfterConnect(connection: Connection): Promise<void>;
110
+ /**
111
+ * Execute all beforeDisconnect hooks
112
+ * @param connection - The connection object to pass to hooks
113
+ */
114
+ runBeforeDisconnect(connection: Connection): Promise<void>;
115
+ /**
116
+ * Execute all afterDisconnect hooks
117
+ * @param connection - The connection object to pass to hooks
118
+ */
119
+ runAfterDisconnect(connection: Connection): Promise<void>;
120
+ /**
121
+ * Execute all beforeDestroy hooks
122
+ * @param options - The destroy options
123
+ */
124
+ runBeforeDestroy(options: DestroyOptions): Promise<void>;
125
+ /**
126
+ * Execute all afterDestroy hooks
127
+ * @param options - The destroy options
128
+ */
129
+ runAfterDestroy(options: DestroyOptions): Promise<void>;
130
+ /**
131
+ * Execute all beforeUpsert hooks
132
+ * @param options - The upsert options
133
+ */
134
+ runBeforeUpsert(options: any): Promise<void>;
135
+ /**
136
+ * Execute all afterUpsert hooks
137
+ * @param options - The upsert options
138
+ */
139
+ runAfterUpsert(options: any): Promise<void>;
140
+ /**
141
+ * Execute all beforeReload hooks
142
+ * @param options - The reload options
143
+ */
144
+ runBeforeReload(options: ReloadOptions): Promise<void>;
145
+ /**
146
+ * Add a hook by name
147
+ * @param hookName - The name of the hook (e.g., 'beforeDefine', 'afterSync')
148
+ * @param callback - The hook callback function
149
+ */
150
+ addHook(hookName: string, callback: HookCallback): void;
151
+ /**
152
+ * Clear all hooks
153
+ */
154
+ clearHooks(): void;
155
+ }
156
+ /**
157
+ * Model-level hooks manager
158
+ */
159
+ export declare class ModelHooks {
160
+ private beforeSyncHooks;
161
+ private afterSyncHooks;
162
+ /**
163
+ * Register a beforeSync hook on the model
164
+ */
165
+ beforeSync(callback: HookCallback): void;
166
+ /**
167
+ * Register an afterSync hook on the model
168
+ */
169
+ afterSync(callback: HookCallback): void;
170
+ /**
171
+ * Run beforeSync hooks
172
+ */
173
+ runBeforeSync(options: SyncOptions): Promise<void>;
174
+ /**
175
+ * Run afterSync hooks
176
+ */
177
+ runAfterSync(options: SyncOptions): Promise<void>;
178
+ }
179
+ export {};
@@ -0,0 +1,291 @@
1
+ "use strict";
2
+ /**
3
+ * Lifecycle hook registries for a Prorm instance.
4
+ *
5
+ * `HooksManager` holds instance-wide hooks (define/sync/connect/destroy/...);
6
+ * `ModelHooks` holds the per-model set. Both were declared inline in prorm.ts,
7
+ * above the Prorm class.
8
+ *
9
+ * Not to be confused with `src/hooks/hooks-manager.ts` - a separate,
10
+ * currently unreferenced model-level hook system that shares the class name.
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.ModelHooks = exports.HooksManager = void 0;
14
+ /**
15
+ * Hook manager for Prorm instance
16
+ */
17
+ class HooksManager {
18
+ constructor() {
19
+ this.beforeDefineHooks = [];
20
+ this.afterDefineHooks = [];
21
+ this.beforeSyncHooks = [];
22
+ this.afterSyncHooks = [];
23
+ this.beforeConnectHooks = [];
24
+ this.afterConnectHooks = [];
25
+ this.beforeDisconnectHooks = [];
26
+ this.afterDisconnectHooks = [];
27
+ this.beforeDestroyHooks = [];
28
+ this.afterDestroyHooks = [];
29
+ this.beforeUpsertHooks = [];
30
+ this.afterUpsertHooks = [];
31
+ this.beforeReloadHooks = [];
32
+ }
33
+ /**
34
+ * Register a beforeDefine hook
35
+ */
36
+ beforeDefine(callback) {
37
+ this.beforeDefineHooks.push(callback);
38
+ }
39
+ /**
40
+ * Register an afterDefine hook
41
+ */
42
+ afterDefine(callback) {
43
+ this.afterDefineHooks.push(callback);
44
+ }
45
+ /**
46
+ * Register a beforeSync hook
47
+ */
48
+ beforeSync(callback) {
49
+ this.beforeSyncHooks.push(callback);
50
+ }
51
+ /**
52
+ * Register an afterSync hook
53
+ */
54
+ afterSync(callback) {
55
+ this.afterSyncHooks.push(callback);
56
+ }
57
+ /**
58
+ * Register a beforeConnect hook
59
+ */
60
+ beforeConnect(callback) {
61
+ this.beforeConnectHooks.push(callback);
62
+ }
63
+ /**
64
+ * Register an afterConnect hook
65
+ */
66
+ afterConnect(callback) {
67
+ this.afterConnectHooks.push(callback);
68
+ }
69
+ /**
70
+ * Register a beforeDisconnect hook
71
+ */
72
+ beforeDisconnect(callback) {
73
+ this.beforeDisconnectHooks.push(callback);
74
+ }
75
+ /**
76
+ * Register an afterDisconnect hook
77
+ */
78
+ afterDisconnect(callback) {
79
+ this.afterDisconnectHooks.push(callback);
80
+ }
81
+ /**
82
+ * Register a beforeDestroy hook
83
+ */
84
+ beforeDestroy(callback) {
85
+ this.beforeDestroyHooks.push(callback);
86
+ }
87
+ /**
88
+ * Register an afterDestroy hook
89
+ */
90
+ afterDestroy(callback) {
91
+ this.afterDestroyHooks.push(callback);
92
+ }
93
+ /**
94
+ * Register a beforeUpsert hook
95
+ */
96
+ beforeUpsert(callback) {
97
+ this.beforeUpsertHooks.push(callback);
98
+ }
99
+ /**
100
+ * Register an afterUpsert hook
101
+ */
102
+ afterUpsert(callback) {
103
+ this.afterUpsertHooks.push(callback);
104
+ }
105
+ /**
106
+ * Register a beforeReload hook
107
+ */
108
+ beforeReload(callback) {
109
+ this.beforeReloadHooks.push(callback);
110
+ }
111
+ /**
112
+ * Execute all beforeDefine hooks
113
+ */
114
+ async runBeforeDefine(modelName, attributes, options) {
115
+ for (const hook of this.beforeDefineHooks) {
116
+ await hook({ modelName, attributes, options });
117
+ }
118
+ }
119
+ /**
120
+ * Execute all afterDefine hooks
121
+ */
122
+ async runAfterDefine(model) {
123
+ for (const hook of this.afterDefineHooks) {
124
+ await hook({ model });
125
+ }
126
+ }
127
+ /**
128
+ * Execute all beforeSync hooks
129
+ */
130
+ async runBeforeSync(options) {
131
+ for (const hook of this.beforeSyncHooks) {
132
+ await hook({ options });
133
+ }
134
+ }
135
+ /**
136
+ * Execute all afterSync hooks
137
+ */
138
+ async runAfterSync(options) {
139
+ for (const hook of this.afterSyncHooks) {
140
+ await hook({ options });
141
+ }
142
+ }
143
+ /**
144
+ * Execute all beforeConnect hooks
145
+ */
146
+ async runBeforeConnect() {
147
+ for (const hook of this.beforeConnectHooks) {
148
+ await hook();
149
+ }
150
+ }
151
+ /**
152
+ * Execute all afterConnect hooks
153
+ * @param connection - The connection object to pass to hooks
154
+ */
155
+ async runAfterConnect(connection) {
156
+ for (const hook of this.afterConnectHooks) {
157
+ await hook(connection);
158
+ }
159
+ }
160
+ /**
161
+ * Execute all beforeDisconnect hooks
162
+ * @param connection - The connection object to pass to hooks
163
+ */
164
+ async runBeforeDisconnect(connection) {
165
+ for (const hook of this.beforeDisconnectHooks) {
166
+ await hook(connection);
167
+ }
168
+ }
169
+ /**
170
+ * Execute all afterDisconnect hooks
171
+ * @param connection - The connection object to pass to hooks
172
+ */
173
+ async runAfterDisconnect(connection) {
174
+ for (const hook of this.afterDisconnectHooks) {
175
+ await hook(connection);
176
+ }
177
+ }
178
+ /**
179
+ * Execute all beforeDestroy hooks
180
+ * @param options - The destroy options
181
+ */
182
+ async runBeforeDestroy(options) {
183
+ for (const hook of this.beforeDestroyHooks) {
184
+ await hook({ options });
185
+ }
186
+ }
187
+ /**
188
+ * Execute all afterDestroy hooks
189
+ * @param options - The destroy options
190
+ */
191
+ async runAfterDestroy(options) {
192
+ for (const hook of this.afterDestroyHooks) {
193
+ await hook({ options });
194
+ }
195
+ }
196
+ /**
197
+ * Execute all beforeUpsert hooks
198
+ * @param options - The upsert options
199
+ */
200
+ async runBeforeUpsert(options) {
201
+ for (const hook of this.beforeUpsertHooks) {
202
+ await hook({ options });
203
+ }
204
+ }
205
+ /**
206
+ * Execute all afterUpsert hooks
207
+ * @param options - The upsert options
208
+ */
209
+ async runAfterUpsert(options) {
210
+ for (const hook of this.afterUpsertHooks) {
211
+ await hook({ options });
212
+ }
213
+ }
214
+ /**
215
+ * Execute all beforeReload hooks
216
+ * @param options - The reload options
217
+ */
218
+ async runBeforeReload(options) {
219
+ for (const hook of this.beforeReloadHooks) {
220
+ await hook({ options });
221
+ }
222
+ }
223
+ /**
224
+ * Add a hook by name
225
+ * @param hookName - The name of the hook (e.g., 'beforeDefine', 'afterSync')
226
+ * @param callback - The hook callback function
227
+ */
228
+ addHook(hookName, callback) {
229
+ const methodName = hookName;
230
+ if (typeof this[methodName] === 'function') {
231
+ this[methodName](callback);
232
+ }
233
+ }
234
+ /**
235
+ * Clear all hooks
236
+ */
237
+ clearHooks() {
238
+ this.beforeDefineHooks = [];
239
+ this.afterDefineHooks = [];
240
+ this.beforeSyncHooks = [];
241
+ this.afterSyncHooks = [];
242
+ this.beforeConnectHooks = [];
243
+ this.afterConnectHooks = [];
244
+ this.beforeDisconnectHooks = [];
245
+ this.afterDisconnectHooks = [];
246
+ this.beforeDestroyHooks = [];
247
+ this.afterDestroyHooks = [];
248
+ this.beforeUpsertHooks = [];
249
+ this.afterUpsertHooks = [];
250
+ this.beforeReloadHooks = [];
251
+ }
252
+ }
253
+ exports.HooksManager = HooksManager;
254
+ /**
255
+ * Model-level hooks manager
256
+ */
257
+ class ModelHooks {
258
+ constructor() {
259
+ this.beforeSyncHooks = [];
260
+ this.afterSyncHooks = [];
261
+ }
262
+ /**
263
+ * Register a beforeSync hook on the model
264
+ */
265
+ beforeSync(callback) {
266
+ this.beforeSyncHooks.push(callback);
267
+ }
268
+ /**
269
+ * Register an afterSync hook on the model
270
+ */
271
+ afterSync(callback) {
272
+ this.afterSyncHooks.push(callback);
273
+ }
274
+ /**
275
+ * Run beforeSync hooks
276
+ */
277
+ async runBeforeSync(options) {
278
+ for (const hook of this.beforeSyncHooks) {
279
+ await hook({ options });
280
+ }
281
+ }
282
+ /**
283
+ * Run afterSync hooks
284
+ */
285
+ async runAfterSync(options) {
286
+ for (const hook of this.afterSyncHooks) {
287
+ await hook({ options });
288
+ }
289
+ }
290
+ }
291
+ exports.ModelHooks = ModelHooks;