@mikro-orm/core 7.0.2 → 7.0.3-dev.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 (205) hide show
  1. package/EntityManager.d.ts +583 -883
  2. package/EntityManager.js +1869 -1897
  3. package/MikroORM.d.ts +74 -103
  4. package/MikroORM.js +179 -178
  5. package/cache/CacheAdapter.d.ts +36 -36
  6. package/cache/FileCacheAdapter.d.ts +24 -30
  7. package/cache/FileCacheAdapter.js +78 -80
  8. package/cache/GeneratedCacheAdapter.d.ts +20 -18
  9. package/cache/GeneratedCacheAdapter.js +30 -30
  10. package/cache/MemoryCacheAdapter.d.ts +20 -18
  11. package/cache/MemoryCacheAdapter.js +36 -35
  12. package/cache/NullCacheAdapter.d.ts +16 -16
  13. package/cache/NullCacheAdapter.js +24 -24
  14. package/connections/Connection.d.ts +84 -95
  15. package/connections/Connection.js +168 -165
  16. package/drivers/DatabaseDriver.d.ts +80 -186
  17. package/drivers/DatabaseDriver.js +443 -450
  18. package/drivers/IDatabaseDriver.d.ts +301 -440
  19. package/entity/BaseEntity.d.ts +83 -120
  20. package/entity/BaseEntity.js +43 -43
  21. package/entity/Collection.d.ts +179 -212
  22. package/entity/Collection.js +721 -727
  23. package/entity/EntityAssigner.d.ts +77 -88
  24. package/entity/EntityAssigner.js +230 -231
  25. package/entity/EntityFactory.d.ts +54 -66
  26. package/entity/EntityFactory.js +383 -425
  27. package/entity/EntityHelper.d.ts +22 -34
  28. package/entity/EntityHelper.js +267 -280
  29. package/entity/EntityIdentifier.d.ts +4 -4
  30. package/entity/EntityIdentifier.js +10 -10
  31. package/entity/EntityLoader.d.ts +73 -103
  32. package/entity/EntityLoader.js +723 -753
  33. package/entity/EntityRepository.d.ts +201 -316
  34. package/entity/EntityRepository.js +213 -213
  35. package/entity/PolymorphicRef.d.ts +5 -5
  36. package/entity/PolymorphicRef.js +10 -10
  37. package/entity/Reference.d.ts +82 -126
  38. package/entity/Reference.js +274 -278
  39. package/entity/WrappedEntity.d.ts +72 -115
  40. package/entity/WrappedEntity.js +166 -168
  41. package/entity/defineEntity.d.ts +614 -1280
  42. package/entity/defineEntity.js +511 -520
  43. package/entity/utils.d.ts +3 -13
  44. package/entity/utils.js +73 -71
  45. package/entity/validators.js +43 -43
  46. package/entity/wrap.js +8 -8
  47. package/enums.d.ts +253 -258
  48. package/enums.js +252 -251
  49. package/errors.d.ts +72 -114
  50. package/errors.js +253 -350
  51. package/events/EventManager.d.ts +14 -26
  52. package/events/EventManager.js +77 -79
  53. package/events/EventSubscriber.d.ts +29 -29
  54. package/events/TransactionEventBroadcaster.d.ts +8 -15
  55. package/events/TransactionEventBroadcaster.js +14 -14
  56. package/exceptions.d.ts +40 -23
  57. package/exceptions.js +52 -35
  58. package/hydration/Hydrator.d.ts +17 -42
  59. package/hydration/Hydrator.js +43 -43
  60. package/hydration/ObjectHydrator.d.ts +17 -50
  61. package/hydration/ObjectHydrator.js +416 -479
  62. package/index.d.ts +2 -116
  63. package/index.js +1 -10
  64. package/logging/DefaultLogger.d.ts +32 -34
  65. package/logging/DefaultLogger.js +86 -86
  66. package/logging/Logger.d.ts +41 -41
  67. package/logging/SimpleLogger.d.ts +11 -13
  68. package/logging/SimpleLogger.js +22 -22
  69. package/logging/colors.d.ts +6 -6
  70. package/logging/colors.js +10 -11
  71. package/logging/inspect.js +7 -7
  72. package/metadata/EntitySchema.d.ts +127 -211
  73. package/metadata/EntitySchema.js +398 -397
  74. package/metadata/MetadataDiscovery.d.ts +114 -114
  75. package/metadata/MetadataDiscovery.js +1863 -1947
  76. package/metadata/MetadataProvider.d.ts +21 -24
  77. package/metadata/MetadataProvider.js +84 -82
  78. package/metadata/MetadataStorage.d.ts +32 -38
  79. package/metadata/MetadataStorage.js +118 -118
  80. package/metadata/MetadataValidator.d.ts +39 -39
  81. package/metadata/MetadataValidator.js +338 -381
  82. package/metadata/discover-entities.d.ts +2 -5
  83. package/metadata/discover-entities.js +27 -27
  84. package/metadata/types.d.ts +531 -615
  85. package/naming-strategy/AbstractNamingStrategy.d.ts +39 -54
  86. package/naming-strategy/AbstractNamingStrategy.js +85 -90
  87. package/naming-strategy/EntityCaseNamingStrategy.d.ts +6 -6
  88. package/naming-strategy/EntityCaseNamingStrategy.js +22 -22
  89. package/naming-strategy/MongoNamingStrategy.d.ts +6 -6
  90. package/naming-strategy/MongoNamingStrategy.js +18 -18
  91. package/naming-strategy/NamingStrategy.d.ts +99 -109
  92. package/naming-strategy/UnderscoreNamingStrategy.d.ts +7 -7
  93. package/naming-strategy/UnderscoreNamingStrategy.js +21 -21
  94. package/not-supported.js +4 -7
  95. package/package.json +1 -1
  96. package/platforms/ExceptionConverter.d.ts +1 -1
  97. package/platforms/ExceptionConverter.js +4 -4
  98. package/platforms/Platform.d.ts +299 -308
  99. package/platforms/Platform.js +636 -659
  100. package/serialization/EntitySerializer.d.ts +26 -48
  101. package/serialization/EntitySerializer.js +218 -224
  102. package/serialization/EntityTransformer.d.ts +6 -10
  103. package/serialization/EntityTransformer.js +217 -219
  104. package/serialization/SerializationContext.d.ts +23 -27
  105. package/serialization/SerializationContext.js +105 -105
  106. package/types/ArrayType.d.ts +8 -8
  107. package/types/ArrayType.js +33 -33
  108. package/types/BigIntType.d.ts +10 -17
  109. package/types/BigIntType.js +37 -37
  110. package/types/BlobType.d.ts +3 -3
  111. package/types/BlobType.js +13 -13
  112. package/types/BooleanType.d.ts +4 -4
  113. package/types/BooleanType.js +12 -12
  114. package/types/CharacterType.d.ts +2 -2
  115. package/types/CharacterType.js +6 -6
  116. package/types/DateTimeType.d.ts +5 -5
  117. package/types/DateTimeType.js +15 -15
  118. package/types/DateType.d.ts +5 -5
  119. package/types/DateType.js +15 -15
  120. package/types/DecimalType.d.ts +7 -7
  121. package/types/DecimalType.js +26 -26
  122. package/types/DoubleType.d.ts +3 -3
  123. package/types/DoubleType.js +12 -12
  124. package/types/EnumArrayType.d.ts +5 -5
  125. package/types/EnumArrayType.js +24 -24
  126. package/types/EnumType.d.ts +3 -3
  127. package/types/EnumType.js +11 -11
  128. package/types/FloatType.d.ts +3 -3
  129. package/types/FloatType.js +9 -9
  130. package/types/IntegerType.d.ts +3 -3
  131. package/types/IntegerType.js +9 -9
  132. package/types/IntervalType.d.ts +4 -4
  133. package/types/IntervalType.js +12 -12
  134. package/types/JsonType.d.ts +8 -8
  135. package/types/JsonType.js +32 -32
  136. package/types/MediumIntType.d.ts +1 -1
  137. package/types/MediumIntType.js +3 -3
  138. package/types/SmallIntType.d.ts +3 -3
  139. package/types/SmallIntType.js +9 -9
  140. package/types/StringType.d.ts +4 -4
  141. package/types/StringType.js +12 -12
  142. package/types/TextType.d.ts +3 -3
  143. package/types/TextType.js +9 -9
  144. package/types/TimeType.d.ts +5 -5
  145. package/types/TimeType.js +17 -17
  146. package/types/TinyIntType.d.ts +3 -3
  147. package/types/TinyIntType.js +10 -10
  148. package/types/Type.d.ts +79 -83
  149. package/types/Type.js +82 -82
  150. package/types/Uint8ArrayType.d.ts +4 -4
  151. package/types/Uint8ArrayType.js +21 -21
  152. package/types/UnknownType.d.ts +4 -4
  153. package/types/UnknownType.js +12 -12
  154. package/types/UuidType.d.ts +5 -5
  155. package/types/UuidType.js +19 -19
  156. package/types/index.d.ts +49 -75
  157. package/types/index.js +26 -52
  158. package/typings.d.ts +729 -1211
  159. package/typings.js +231 -244
  160. package/unit-of-work/ChangeSet.d.ts +26 -26
  161. package/unit-of-work/ChangeSet.js +56 -56
  162. package/unit-of-work/ChangeSetComputer.d.ts +12 -12
  163. package/unit-of-work/ChangeSetComputer.js +170 -178
  164. package/unit-of-work/ChangeSetPersister.d.ts +44 -63
  165. package/unit-of-work/ChangeSetPersister.js +421 -442
  166. package/unit-of-work/CommitOrderCalculator.d.ts +40 -40
  167. package/unit-of-work/CommitOrderCalculator.js +88 -89
  168. package/unit-of-work/IdentityMap.d.ts +31 -31
  169. package/unit-of-work/IdentityMap.js +105 -105
  170. package/unit-of-work/UnitOfWork.d.ts +141 -181
  171. package/unit-of-work/UnitOfWork.js +1183 -1200
  172. package/utils/AbstractMigrator.d.ts +91 -111
  173. package/utils/AbstractMigrator.js +275 -275
  174. package/utils/AbstractSchemaGenerator.d.ts +34 -43
  175. package/utils/AbstractSchemaGenerator.js +122 -121
  176. package/utils/AsyncContext.d.ts +3 -3
  177. package/utils/AsyncContext.js +35 -34
  178. package/utils/Configuration.d.ts +808 -852
  179. package/utils/Configuration.js +344 -359
  180. package/utils/Cursor.d.ts +22 -40
  181. package/utils/Cursor.js +127 -135
  182. package/utils/DataloaderUtils.d.ts +43 -58
  183. package/utils/DataloaderUtils.js +198 -203
  184. package/utils/EntityComparator.d.ts +81 -98
  185. package/utils/EntityComparator.js +728 -824
  186. package/utils/NullHighlighter.d.ts +1 -1
  187. package/utils/NullHighlighter.js +3 -3
  188. package/utils/QueryHelper.d.ts +51 -79
  189. package/utils/QueryHelper.js +361 -372
  190. package/utils/RawQueryFragment.d.ts +34 -50
  191. package/utils/RawQueryFragment.js +105 -107
  192. package/utils/RequestContext.d.ts +32 -32
  193. package/utils/RequestContext.js +53 -52
  194. package/utils/TransactionContext.d.ts +16 -16
  195. package/utils/TransactionContext.js +27 -27
  196. package/utils/TransactionManager.d.ts +58 -58
  197. package/utils/TransactionManager.js +197 -199
  198. package/utils/Utils.d.ts +145 -204
  199. package/utils/Utils.js +813 -814
  200. package/utils/clone.js +113 -104
  201. package/utils/env-vars.js +88 -90
  202. package/utils/fs-utils.d.ts +15 -15
  203. package/utils/fs-utils.js +181 -180
  204. package/utils/upsert-utils.d.ts +5 -20
  205. package/utils/upsert-utils.js +116 -114
@@ -6,120 +6,120 @@ import { helper } from '../entity/wrap.js';
6
6
  * are defined in populate hint). If not, we proceed and call `leave` afterwards.
7
7
  */
8
8
  export class SerializationContext {
9
- path = [];
10
- visited = new Set();
11
- #entities = new Set();
12
- #populate;
13
- #fields;
14
- #exclude;
15
- constructor(populate = [], fields, exclude) {
16
- this.#populate = populate;
17
- this.#fields = fields;
18
- this.#exclude = exclude;
19
- }
20
- /**
21
- * Returns true when there is a cycle detected.
22
- */
23
- visit(entityName, prop) {
24
- if (!this.path.find(([cls, item]) => entityName === cls && prop === item)) {
25
- this.path.push([entityName, prop]);
26
- return false;
9
+ path = [];
10
+ visited = new Set();
11
+ #entities = new Set();
12
+ #populate;
13
+ #fields;
14
+ #exclude;
15
+ constructor(populate = [], fields, exclude) {
16
+ this.#populate = populate;
17
+ this.#fields = fields;
18
+ this.#exclude = exclude;
27
19
  }
28
- // check if the path is explicitly populated
29
- if (!this.isMarkedAsPopulated(entityName, prop)) {
30
- return true;
31
- }
32
- this.path.push([entityName, prop]);
33
- return false;
34
- }
35
- /** Removes the last entry from the visit path after processing a property. */
36
- leave(entityName, prop) {
37
- const last = this.path.pop();
38
- /* v8 ignore next */
39
- if (last?.[0] !== entityName || last[1] !== prop) {
40
- throw new Error(`Trying to leave wrong property: ${entityName}.${prop} instead of ${last?.join('.')}`);
20
+ /**
21
+ * Returns true when there is a cycle detected.
22
+ */
23
+ visit(entityName, prop) {
24
+ if (!this.path.find(([cls, item]) => entityName === cls && prop === item)) {
25
+ this.path.push([entityName, prop]);
26
+ return false;
27
+ }
28
+ // check if the path is explicitly populated
29
+ if (!this.isMarkedAsPopulated(entityName, prop)) {
30
+ return true;
31
+ }
32
+ this.path.push([entityName, prop]);
33
+ return false;
41
34
  }
42
- }
43
- /** Cleans up the serialization context by removing root references from all tracked entities. */
44
- close() {
45
- for (const entity of this.#entities) {
46
- delete helper(entity).__serializationContext.root;
35
+ /** Removes the last entry from the visit path after processing a property. */
36
+ leave(entityName, prop) {
37
+ const last = this.path.pop();
38
+ /* v8 ignore next */
39
+ if (last?.[0] !== entityName || last[1] !== prop) {
40
+ throw new Error(`Trying to leave wrong property: ${entityName}.${prop} instead of ${last?.join('.')}`);
41
+ }
47
42
  }
48
- }
49
- /**
50
- * When initializing new context, we need to propagate it to the whole entity graph recursively.
51
- */
52
- static propagate(root, entity, isVisible) {
53
- root.register(entity);
54
- const meta = helper(entity).__meta;
55
- for (const key of Object.keys(entity)) {
56
- if (!isVisible(meta, key)) {
57
- continue;
58
- }
59
- const target = entity[key];
60
- if (Utils.isEntity(target, true)) {
61
- if (!target.__helper.__serializationContext.root) {
62
- this.propagate(root, target, isVisible);
43
+ /** Cleans up the serialization context by removing root references from all tracked entities. */
44
+ close() {
45
+ for (const entity of this.#entities) {
46
+ delete helper(entity).__serializationContext.root;
63
47
  }
64
- continue;
65
- }
66
- if (Utils.isCollection(target)) {
67
- for (const item of target.getItems(false)) {
68
- if (!item.__helper.__serializationContext.root) {
69
- this.propagate(root, item, isVisible);
70
- }
48
+ }
49
+ /**
50
+ * When initializing new context, we need to propagate it to the whole entity graph recursively.
51
+ */
52
+ static propagate(root, entity, isVisible) {
53
+ root.register(entity);
54
+ const meta = helper(entity).__meta;
55
+ for (const key of Object.keys(entity)) {
56
+ if (!isVisible(meta, key)) {
57
+ continue;
58
+ }
59
+ const target = entity[key];
60
+ if (Utils.isEntity(target, true)) {
61
+ if (!target.__helper.__serializationContext.root) {
62
+ this.propagate(root, target, isVisible);
63
+ }
64
+ continue;
65
+ }
66
+ if (Utils.isCollection(target)) {
67
+ for (const item of target.getItems(false)) {
68
+ if (!item.__helper.__serializationContext.root) {
69
+ this.propagate(root, item, isVisible);
70
+ }
71
+ }
72
+ }
71
73
  }
72
- }
73
74
  }
74
- }
75
- /** Checks whether a property is explicitly listed in the populate hints for the current path. */
76
- isMarkedAsPopulated(entityName, prop) {
77
- let populate = this.#populate ?? [];
78
- for (const segment of this.path) {
79
- const hints = populate.filter(p => p.field === segment[1]);
80
- if (hints.length > 0) {
81
- const childHints = [];
82
- for (const hint of hints) {
83
- // we need to check for cycles here too, as we could fall into endless loops for bidirectional relations
84
- if (hint.all) {
85
- return !this.path.find(([cls, item]) => entityName === cls && prop === item);
86
- }
87
- if (hint.children) {
88
- childHints.push(...hint.children);
89
- }
75
+ /** Checks whether a property is explicitly listed in the populate hints for the current path. */
76
+ isMarkedAsPopulated(entityName, prop) {
77
+ let populate = this.#populate ?? [];
78
+ for (const segment of this.path) {
79
+ const hints = populate.filter(p => p.field === segment[1]);
80
+ if (hints.length > 0) {
81
+ const childHints = [];
82
+ for (const hint of hints) {
83
+ // we need to check for cycles here too, as we could fall into endless loops for bidirectional relations
84
+ if (hint.all) {
85
+ return !this.path.find(([cls, item]) => entityName === cls && prop === item);
86
+ }
87
+ if (hint.children) {
88
+ childHints.push(...hint.children);
89
+ }
90
+ }
91
+ populate = childHints;
92
+ }
90
93
  }
91
- populate = childHints;
92
- }
94
+ return !!populate?.some(p => p.field === prop);
93
95
  }
94
- return !!populate?.some(p => p.field === prop);
95
- }
96
- /** Checks whether a property is excluded from serialization via the exclude list. */
97
- isExcluded(entityName, prop) {
98
- if (!this.#exclude || this.#exclude.length === 0) {
99
- return false;
96
+ /** Checks whether a property is excluded from serialization via the exclude list. */
97
+ isExcluded(entityName, prop) {
98
+ if (!this.#exclude || this.#exclude.length === 0) {
99
+ return false;
100
+ }
101
+ const fullPath = this.path.map(segment => segment[1] + '.').join('') + prop;
102
+ return this.#exclude.includes(fullPath);
100
103
  }
101
- const fullPath = this.path.map(segment => segment[1] + '.').join('') + prop;
102
- return this.#exclude.includes(fullPath);
103
- }
104
- /** Checks whether a property is included in the partial fields selection for the current path. */
105
- isPartiallyLoaded(entityName, prop) {
106
- if (!this.#fields) {
107
- return true;
104
+ /** Checks whether a property is included in the partial fields selection for the current path. */
105
+ isPartiallyLoaded(entityName, prop) {
106
+ if (!this.#fields) {
107
+ return true;
108
+ }
109
+ let fields = [...this.#fields];
110
+ for (const segment of this.path) {
111
+ /* v8 ignore next */
112
+ if (fields.length === 0) {
113
+ return true;
114
+ }
115
+ fields = fields
116
+ .filter(field => field.startsWith(`${segment[1]}.`) || field === '*')
117
+ .map(field => (field === '*' ? field : field.substring(segment[1].length + 1)));
118
+ }
119
+ return fields.some(p => p === prop || p === '*');
108
120
  }
109
- let fields = [...this.#fields];
110
- for (const segment of this.path) {
111
- /* v8 ignore next */
112
- if (fields.length === 0) {
113
- return true;
114
- }
115
- fields = fields
116
- .filter(field => field.startsWith(`${segment[1]}.`) || field === '*')
117
- .map(field => (field === '*' ? field : field.substring(segment[1].length + 1)));
121
+ register(entity) {
122
+ helper(entity).__serializationContext.root = this;
123
+ this.#entities.add(entity);
118
124
  }
119
- return fields.some(p => p === prop || p === '*');
120
- }
121
- register(entity) {
122
- helper(entity).__serializationContext.root = this;
123
- this.#entities.add(entity);
124
- }
125
125
  }
@@ -3,12 +3,12 @@ import type { EntityProperty } from '../typings.js';
3
3
  import type { Platform } from '../platforms/Platform.js';
4
4
  /** Maps a database text/array column to a JS array, using platform-specific marshalling (e.g., PostgreSQL arrays or comma-separated strings). */
5
5
  export declare class ArrayType<T = string> extends Type<T[] | null, string | null> {
6
- private readonly toJsValue;
7
- private readonly toDbValue;
8
- constructor(toJsValue?: (i: string) => T, toDbValue?: (i: T) => string);
9
- convertToDatabaseValue(value: T[] | null, platform: Platform, context?: TransformContext): string | null;
10
- convertToJSValue(value: T[] | string | null, platform: Platform): T[] | null;
11
- compareAsType(): string;
12
- toJSON(value: T[]): T[];
13
- getColumnType(prop: EntityProperty, platform: Platform): string;
6
+ private readonly toJsValue;
7
+ private readonly toDbValue;
8
+ constructor(toJsValue?: (i: string) => T, toDbValue?: (i: T) => string);
9
+ convertToDatabaseValue(value: T[] | null, platform: Platform, context?: TransformContext): string | null;
10
+ convertToJSValue(value: T[] | string | null, platform: Platform): T[] | null;
11
+ compareAsType(): string;
12
+ toJSON(value: T[]): T[];
13
+ getColumnType(prop: EntityProperty, platform: Platform): string;
14
14
  }
@@ -2,42 +2,42 @@ import { Type } from './Type.js';
2
2
  import { ValidationError } from '../errors.js';
3
3
  /** Maps a database text/array column to a JS array, using platform-specific marshalling (e.g., PostgreSQL arrays or comma-separated strings). */
4
4
  export class ArrayType extends Type {
5
- toJsValue;
6
- toDbValue;
7
- constructor(toJsValue = i => i, toDbValue = i => i) {
8
- super();
9
- this.toJsValue = toJsValue;
10
- this.toDbValue = toDbValue;
11
- }
12
- convertToDatabaseValue(value, platform, context) {
13
- if (!value) {
14
- return value;
5
+ toJsValue;
6
+ toDbValue;
7
+ constructor(toJsValue = i => i, toDbValue = i => i) {
8
+ super();
9
+ this.toJsValue = toJsValue;
10
+ this.toDbValue = toDbValue;
15
11
  }
16
- if (Array.isArray(value)) {
17
- return platform.marshallArray(value.map(i => this.toDbValue(i)));
12
+ convertToDatabaseValue(value, platform, context) {
13
+ if (!value) {
14
+ return value;
15
+ }
16
+ if (Array.isArray(value)) {
17
+ return platform.marshallArray(value.map(i => this.toDbValue(i)));
18
+ }
19
+ /* v8 ignore next */
20
+ if (context?.fromQuery) {
21
+ return value;
22
+ }
23
+ throw ValidationError.invalidType(ArrayType, value, 'JS');
18
24
  }
19
- /* v8 ignore next */
20
- if (context?.fromQuery) {
21
- return value;
25
+ convertToJSValue(value, platform) {
26
+ if (value == null) {
27
+ return value;
28
+ }
29
+ if (typeof value === 'string') {
30
+ value = platform.unmarshallArray(value);
31
+ }
32
+ return value.map(i => this.toJsValue(i));
22
33
  }
23
- throw ValidationError.invalidType(ArrayType, value, 'JS');
24
- }
25
- convertToJSValue(value, platform) {
26
- if (value == null) {
27
- return value;
34
+ compareAsType() {
35
+ return 'string[]';
28
36
  }
29
- if (typeof value === 'string') {
30
- value = platform.unmarshallArray(value);
37
+ toJSON(value) {
38
+ return value;
39
+ }
40
+ getColumnType(prop, platform) {
41
+ return platform.getArrayDeclarationSQL();
31
42
  }
32
- return value.map(i => this.toJsValue(i));
33
- }
34
- compareAsType() {
35
- return 'string[]';
36
- }
37
- toJSON(value) {
38
- return value;
39
- }
40
- getColumnType(prop, platform) {
41
- return platform.getArrayDeclarationSQL();
42
- }
43
43
  }
@@ -5,22 +5,15 @@ import type { EntityProperty } from '../typings.js';
5
5
  * This type will automatically convert string values returned from the database to native JS bigints (default)
6
6
  * or numbers (safe only for values up to `Number.MAX_SAFE_INTEGER`), or strings, depending on the `mode`.
7
7
  */
8
- export declare class BigIntType<Mode extends 'bigint' | 'number' | 'string' = 'bigint'> extends Type<
9
- JSTypeByMode<Mode> | null | undefined,
10
- string | null | undefined
11
- > {
12
- mode?: Mode | undefined;
13
- constructor(mode?: Mode | undefined);
14
- convertToDatabaseValue(value: JSTypeByMode<Mode> | null | undefined): string | null | undefined;
15
- convertToJSValue(value: string | bigint | null | undefined): JSTypeByMode<Mode> | null | undefined;
16
- toJSON(value: JSTypeByMode<Mode> | null | undefined): JSTypeByMode<Mode> | null | undefined;
17
- getColumnType(prop: EntityProperty, platform: Platform): string;
18
- compareAsType(): string;
19
- compareValues(a: string, b: string): boolean;
8
+ export declare class BigIntType<Mode extends 'bigint' | 'number' | 'string' = 'bigint'> extends Type<JSTypeByMode<Mode> | null | undefined, string | null | undefined> {
9
+ mode?: Mode | undefined;
10
+ constructor(mode?: Mode | undefined);
11
+ convertToDatabaseValue(value: JSTypeByMode<Mode> | null | undefined): string | null | undefined;
12
+ convertToJSValue(value: string | bigint | null | undefined): JSTypeByMode<Mode> | null | undefined;
13
+ toJSON(value: JSTypeByMode<Mode> | null | undefined): JSTypeByMode<Mode> | null | undefined;
14
+ getColumnType(prop: EntityProperty, platform: Platform): string;
15
+ compareAsType(): string;
16
+ compareValues(a: string, b: string): boolean;
20
17
  }
21
- type JSTypeByMode<Mode extends 'bigint' | 'number' | 'string'> = Mode extends 'bigint'
22
- ? bigint
23
- : Mode extends 'number'
24
- ? number
25
- : string;
18
+ type JSTypeByMode<Mode extends 'bigint' | 'number' | 'string'> = Mode extends 'bigint' ? bigint : Mode extends 'number' ? number : string;
26
19
  export {};
@@ -4,45 +4,45 @@ import { Type } from './Type.js';
4
4
  * or numbers (safe only for values up to `Number.MAX_SAFE_INTEGER`), or strings, depending on the `mode`.
5
5
  */
6
6
  export class BigIntType extends Type {
7
- mode;
8
- constructor(mode) {
9
- super();
10
- this.mode = mode;
11
- }
12
- convertToDatabaseValue(value) {
13
- if (value == null) {
14
- return value;
7
+ mode;
8
+ constructor(mode) {
9
+ super();
10
+ this.mode = mode;
15
11
  }
16
- return '' + value;
17
- }
18
- convertToJSValue(value) {
19
- /* v8 ignore next */
20
- if (value == null) {
21
- return value;
12
+ convertToDatabaseValue(value) {
13
+ if (value == null) {
14
+ return value;
15
+ }
16
+ return '' + value;
22
17
  }
23
- switch (this.mode) {
24
- case 'number':
25
- return Number(value);
26
- case 'string':
27
- return String(value);
28
- case 'bigint':
29
- default:
30
- return BigInt(String(value));
18
+ convertToJSValue(value) {
19
+ /* v8 ignore next */
20
+ if (value == null) {
21
+ return value;
22
+ }
23
+ switch (this.mode) {
24
+ case 'number':
25
+ return Number(value);
26
+ case 'string':
27
+ return String(value);
28
+ case 'bigint':
29
+ default:
30
+ return BigInt(String(value));
31
+ }
31
32
  }
32
- }
33
- toJSON(value) {
34
- if (this.mode === 'number') {
35
- return value;
33
+ toJSON(value) {
34
+ if (this.mode === 'number') {
35
+ return value;
36
+ }
37
+ return this.convertToDatabaseValue(value);
38
+ }
39
+ getColumnType(prop, platform) {
40
+ return platform.getBigIntTypeDeclarationSQL(prop);
41
+ }
42
+ compareAsType() {
43
+ return this.mode ?? 'bigint';
44
+ }
45
+ compareValues(a, b) {
46
+ return String(a) === String(b);
36
47
  }
37
- return this.convertToDatabaseValue(value);
38
- }
39
- getColumnType(prop, platform) {
40
- return platform.getBigIntTypeDeclarationSQL(prop);
41
- }
42
- compareAsType() {
43
- return this.mode ?? 'bigint';
44
- }
45
- compareValues(a, b) {
46
- return String(a) === String(b);
47
- }
48
48
  }
@@ -3,7 +3,7 @@ import type { Platform } from '../platforms/Platform.js';
3
3
  import type { EntityProperty } from '../typings.js';
4
4
  /** Maps a database BLOB/BYTEA column to a Node.js `Buffer`. */
5
5
  export declare class BlobType extends Uint8ArrayType {
6
- convertToJSValue(value: Buffer): Buffer | null;
7
- compareAsType(): string;
8
- getColumnType(prop: EntityProperty, platform: Platform): string;
6
+ convertToJSValue(value: Buffer): Buffer | null;
7
+ compareAsType(): string;
8
+ getColumnType(prop: EntityProperty, platform: Platform): string;
9
9
  }
package/types/BlobType.js CHANGED
@@ -1,19 +1,19 @@
1
1
  import { Uint8ArrayType } from './Uint8ArrayType.js';
2
2
  /** Maps a database BLOB/BYTEA column to a Node.js `Buffer`. */
3
3
  export class BlobType extends Uint8ArrayType {
4
- convertToJSValue(value) {
5
- if (value instanceof Buffer || !value) {
6
- return value;
4
+ convertToJSValue(value) {
5
+ if (value instanceof Buffer || !value) {
6
+ return value;
7
+ }
8
+ if (value.buffer instanceof Buffer) {
9
+ return value.buffer;
10
+ }
11
+ return Buffer.from(value);
7
12
  }
8
- if (value.buffer instanceof Buffer) {
9
- return value.buffer;
13
+ compareAsType() {
14
+ return 'Buffer';
15
+ }
16
+ getColumnType(prop, platform) {
17
+ return platform.getBlobDeclarationSQL();
10
18
  }
11
- return Buffer.from(value);
12
- }
13
- compareAsType() {
14
- return 'Buffer';
15
- }
16
- getColumnType(prop, platform) {
17
- return platform.getBlobDeclarationSQL();
18
- }
19
19
  }
@@ -3,8 +3,8 @@ import type { Platform } from '../platforms/Platform.js';
3
3
  import type { EntityProperty } from '../typings.js';
4
4
  /** Maps a database BOOLEAN/TINYINT(1) column to a JS `boolean`. */
5
5
  export declare class BooleanType extends Type<boolean | null | undefined, boolean | null | undefined> {
6
- getColumnType(prop: EntityProperty, platform: Platform): string;
7
- compareAsType(): string;
8
- convertToJSValue(value: boolean | null | undefined): boolean | null | undefined;
9
- ensureComparable(): boolean;
6
+ getColumnType(prop: EntityProperty, platform: Platform): string;
7
+ compareAsType(): string;
8
+ convertToJSValue(value: boolean | null | undefined): boolean | null | undefined;
9
+ ensureComparable(): boolean;
10
10
  }
@@ -1,16 +1,16 @@
1
1
  import { Type } from './Type.js';
2
2
  /** Maps a database BOOLEAN/TINYINT(1) column to a JS `boolean`. */
3
3
  export class BooleanType extends Type {
4
- getColumnType(prop, platform) {
5
- return platform.getBooleanTypeDeclarationSQL();
6
- }
7
- compareAsType() {
8
- return 'boolean';
9
- }
10
- convertToJSValue(value) {
11
- return Boolean(value);
12
- }
13
- ensureComparable() {
14
- return false;
15
- }
4
+ getColumnType(prop, platform) {
5
+ return platform.getBooleanTypeDeclarationSQL();
6
+ }
7
+ compareAsType() {
8
+ return 'boolean';
9
+ }
10
+ convertToJSValue(value) {
11
+ return Boolean(value);
12
+ }
13
+ ensureComparable() {
14
+ return false;
15
+ }
16
16
  }
@@ -3,6 +3,6 @@ import type { Platform } from '../platforms/Platform.js';
3
3
  import type { EntityProperty } from '../typings.js';
4
4
  /** Maps a database CHAR (fixed-length) column to a JS `string`. */
5
5
  export declare class CharacterType extends StringType {
6
- getColumnType(prop: EntityProperty, platform: Platform): string;
7
- getDefaultLength(platform: Platform): number;
6
+ getColumnType(prop: EntityProperty, platform: Platform): string;
7
+ getDefaultLength(platform: Platform): number;
8
8
  }
@@ -1,10 +1,10 @@
1
1
  import { StringType } from './StringType.js';
2
2
  /** Maps a database CHAR (fixed-length) column to a JS `string`. */
3
3
  export class CharacterType extends StringType {
4
- getColumnType(prop, platform) {
5
- return platform.getCharTypeDeclarationSQL(prop);
6
- }
7
- getDefaultLength(platform) {
8
- return platform.getDefaultCharLength();
9
- }
4
+ getColumnType(prop, platform) {
5
+ return platform.getCharTypeDeclarationSQL(prop);
6
+ }
7
+ getDefaultLength(platform) {
8
+ return platform.getDefaultCharLength();
9
+ }
10
10
  }
@@ -3,9 +3,9 @@ import type { Platform } from '../platforms/Platform.js';
3
3
  import type { EntityProperty } from '../typings.js';
4
4
  /** Maps a database DATETIME/TIMESTAMP column to a JS `Date` object. */
5
5
  export declare class DateTimeType extends Type<Date, string> {
6
- getColumnType(prop: EntityProperty, platform: Platform): string;
7
- compareAsType(): string;
8
- get runtimeType(): string;
9
- ensureComparable(): boolean;
10
- getDefaultLength(platform: Platform): number;
6
+ getColumnType(prop: EntityProperty, platform: Platform): string;
7
+ compareAsType(): string;
8
+ get runtimeType(): string;
9
+ ensureComparable(): boolean;
10
+ getDefaultLength(platform: Platform): number;
11
11
  }
@@ -1,19 +1,19 @@
1
1
  import { Type } from './Type.js';
2
2
  /** Maps a database DATETIME/TIMESTAMP column to a JS `Date` object. */
3
3
  export class DateTimeType extends Type {
4
- getColumnType(prop, platform) {
5
- return platform.getDateTimeTypeDeclarationSQL({ length: prop.length });
6
- }
7
- compareAsType() {
8
- return 'Date';
9
- }
10
- get runtimeType() {
11
- return 'Date';
12
- }
13
- ensureComparable() {
14
- return false;
15
- }
16
- getDefaultLength(platform) {
17
- return platform.getDefaultDateTimeLength();
18
- }
4
+ getColumnType(prop, platform) {
5
+ return platform.getDateTimeTypeDeclarationSQL({ length: prop.length });
6
+ }
7
+ compareAsType() {
8
+ return 'Date';
9
+ }
10
+ get runtimeType() {
11
+ return 'Date';
12
+ }
13
+ ensureComparable() {
14
+ return false;
15
+ }
16
+ getDefaultLength(platform) {
17
+ return platform.getDefaultDateTimeLength();
18
+ }
19
19
  }
@@ -3,9 +3,9 @@ import type { Platform } from '../platforms/Platform.js';
3
3
  import type { EntityProperty } from '../typings.js';
4
4
  /** Maps a database DATE column (date without time) to a JS `string` in YYYY-MM-DD format. */
5
5
  export declare class DateType extends Type<string | null | undefined, string | null | undefined> {
6
- compareAsType(): string;
7
- ensureComparable(): boolean;
8
- convertToJSValue(value: any, platform: Platform): string | null | undefined;
9
- getColumnType(prop: EntityProperty, platform: Platform): string;
10
- getDefaultLength(platform: Platform): number;
6
+ compareAsType(): string;
7
+ ensureComparable(): boolean;
8
+ convertToJSValue(value: any, platform: Platform): string | null | undefined;
9
+ getColumnType(prop: EntityProperty, platform: Platform): string;
10
+ getDefaultLength(platform: Platform): number;
11
11
  }