@mikro-orm/core 7.0.4 → 7.0.5-dev.1

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 (206) hide show
  1. package/EntityManager.d.ts +583 -884
  2. package/EntityManager.js +1895 -1922
  3. package/MikroORM.d.ts +74 -103
  4. package/MikroORM.js +179 -178
  5. package/README.md +1 -1
  6. package/cache/CacheAdapter.d.ts +36 -36
  7. package/cache/FileCacheAdapter.d.ts +24 -30
  8. package/cache/FileCacheAdapter.js +78 -80
  9. package/cache/GeneratedCacheAdapter.d.ts +20 -18
  10. package/cache/GeneratedCacheAdapter.js +30 -30
  11. package/cache/MemoryCacheAdapter.d.ts +20 -18
  12. package/cache/MemoryCacheAdapter.js +36 -35
  13. package/cache/NullCacheAdapter.d.ts +16 -16
  14. package/cache/NullCacheAdapter.js +24 -24
  15. package/connections/Connection.d.ts +84 -95
  16. package/connections/Connection.js +168 -165
  17. package/drivers/DatabaseDriver.d.ts +80 -186
  18. package/drivers/DatabaseDriver.js +443 -450
  19. package/drivers/IDatabaseDriver.d.ts +301 -440
  20. package/entity/BaseEntity.d.ts +83 -120
  21. package/entity/BaseEntity.js +43 -43
  22. package/entity/Collection.d.ts +179 -212
  23. package/entity/Collection.js +721 -727
  24. package/entity/EntityAssigner.d.ts +77 -88
  25. package/entity/EntityAssigner.js +230 -231
  26. package/entity/EntityFactory.d.ts +54 -66
  27. package/entity/EntityFactory.js +383 -425
  28. package/entity/EntityHelper.d.ts +22 -34
  29. package/entity/EntityHelper.js +267 -280
  30. package/entity/EntityIdentifier.d.ts +4 -4
  31. package/entity/EntityIdentifier.js +10 -10
  32. package/entity/EntityLoader.d.ts +72 -98
  33. package/entity/EntityLoader.js +723 -753
  34. package/entity/EntityRepository.d.ts +201 -316
  35. package/entity/EntityRepository.js +213 -213
  36. package/entity/PolymorphicRef.d.ts +5 -5
  37. package/entity/PolymorphicRef.js +10 -10
  38. package/entity/Reference.d.ts +82 -126
  39. package/entity/Reference.js +274 -278
  40. package/entity/WrappedEntity.d.ts +72 -115
  41. package/entity/WrappedEntity.js +166 -168
  42. package/entity/defineEntity.d.ts +636 -1315
  43. package/entity/defineEntity.js +518 -527
  44. package/entity/utils.d.ts +3 -13
  45. package/entity/utils.js +73 -71
  46. package/entity/validators.js +43 -43
  47. package/entity/wrap.js +8 -8
  48. package/enums.d.ts +253 -258
  49. package/enums.js +252 -251
  50. package/errors.d.ts +72 -114
  51. package/errors.js +253 -350
  52. package/events/EventManager.d.ts +14 -26
  53. package/events/EventManager.js +77 -79
  54. package/events/EventSubscriber.d.ts +29 -29
  55. package/events/TransactionEventBroadcaster.d.ts +8 -15
  56. package/events/TransactionEventBroadcaster.js +14 -14
  57. package/exceptions.d.ts +40 -23
  58. package/exceptions.js +52 -35
  59. package/hydration/Hydrator.d.ts +17 -42
  60. package/hydration/Hydrator.js +43 -43
  61. package/hydration/ObjectHydrator.d.ts +17 -50
  62. package/hydration/ObjectHydrator.js +416 -481
  63. package/index.d.ts +2 -116
  64. package/index.js +1 -10
  65. package/logging/DefaultLogger.d.ts +32 -34
  66. package/logging/DefaultLogger.js +86 -86
  67. package/logging/Logger.d.ts +41 -41
  68. package/logging/SimpleLogger.d.ts +11 -13
  69. package/logging/SimpleLogger.js +22 -22
  70. package/logging/colors.d.ts +6 -6
  71. package/logging/colors.js +10 -11
  72. package/logging/inspect.js +7 -7
  73. package/metadata/EntitySchema.d.ts +127 -211
  74. package/metadata/EntitySchema.js +398 -397
  75. package/metadata/MetadataDiscovery.d.ts +114 -114
  76. package/metadata/MetadataDiscovery.js +1870 -1951
  77. package/metadata/MetadataProvider.d.ts +21 -24
  78. package/metadata/MetadataProvider.js +84 -82
  79. package/metadata/MetadataStorage.d.ts +32 -38
  80. package/metadata/MetadataStorage.js +118 -118
  81. package/metadata/MetadataValidator.d.ts +39 -39
  82. package/metadata/MetadataValidator.js +338 -381
  83. package/metadata/discover-entities.d.ts +2 -5
  84. package/metadata/discover-entities.js +37 -35
  85. package/metadata/types.d.ts +531 -615
  86. package/naming-strategy/AbstractNamingStrategy.d.ts +39 -54
  87. package/naming-strategy/AbstractNamingStrategy.js +85 -90
  88. package/naming-strategy/EntityCaseNamingStrategy.d.ts +6 -6
  89. package/naming-strategy/EntityCaseNamingStrategy.js +22 -22
  90. package/naming-strategy/MongoNamingStrategy.d.ts +6 -6
  91. package/naming-strategy/MongoNamingStrategy.js +18 -18
  92. package/naming-strategy/NamingStrategy.d.ts +99 -109
  93. package/naming-strategy/UnderscoreNamingStrategy.d.ts +7 -7
  94. package/naming-strategy/UnderscoreNamingStrategy.js +21 -21
  95. package/not-supported.js +4 -7
  96. package/package.json +1 -1
  97. package/platforms/ExceptionConverter.d.ts +1 -1
  98. package/platforms/ExceptionConverter.js +4 -4
  99. package/platforms/Platform.d.ts +301 -310
  100. package/platforms/Platform.js +640 -663
  101. package/serialization/EntitySerializer.d.ts +26 -49
  102. package/serialization/EntitySerializer.js +218 -224
  103. package/serialization/EntityTransformer.d.ts +6 -10
  104. package/serialization/EntityTransformer.js +217 -219
  105. package/serialization/SerializationContext.d.ts +23 -27
  106. package/serialization/SerializationContext.js +105 -105
  107. package/types/ArrayType.d.ts +8 -8
  108. package/types/ArrayType.js +33 -33
  109. package/types/BigIntType.d.ts +10 -17
  110. package/types/BigIntType.js +37 -37
  111. package/types/BlobType.d.ts +3 -3
  112. package/types/BlobType.js +13 -13
  113. package/types/BooleanType.d.ts +4 -4
  114. package/types/BooleanType.js +12 -12
  115. package/types/CharacterType.d.ts +2 -2
  116. package/types/CharacterType.js +6 -6
  117. package/types/DateTimeType.d.ts +5 -5
  118. package/types/DateTimeType.js +15 -15
  119. package/types/DateType.d.ts +5 -5
  120. package/types/DateType.js +15 -15
  121. package/types/DecimalType.d.ts +7 -7
  122. package/types/DecimalType.js +26 -26
  123. package/types/DoubleType.d.ts +3 -3
  124. package/types/DoubleType.js +12 -12
  125. package/types/EnumArrayType.d.ts +5 -5
  126. package/types/EnumArrayType.js +24 -24
  127. package/types/EnumType.d.ts +3 -3
  128. package/types/EnumType.js +11 -11
  129. package/types/FloatType.d.ts +3 -3
  130. package/types/FloatType.js +9 -9
  131. package/types/IntegerType.d.ts +3 -3
  132. package/types/IntegerType.js +9 -9
  133. package/types/IntervalType.d.ts +4 -4
  134. package/types/IntervalType.js +12 -12
  135. package/types/JsonType.d.ts +8 -8
  136. package/types/JsonType.js +32 -32
  137. package/types/MediumIntType.d.ts +1 -1
  138. package/types/MediumIntType.js +3 -3
  139. package/types/SmallIntType.d.ts +3 -3
  140. package/types/SmallIntType.js +9 -9
  141. package/types/StringType.d.ts +4 -4
  142. package/types/StringType.js +12 -12
  143. package/types/TextType.d.ts +3 -3
  144. package/types/TextType.js +9 -9
  145. package/types/TimeType.d.ts +5 -5
  146. package/types/TimeType.js +17 -17
  147. package/types/TinyIntType.d.ts +3 -3
  148. package/types/TinyIntType.js +10 -10
  149. package/types/Type.d.ts +79 -83
  150. package/types/Type.js +82 -82
  151. package/types/Uint8ArrayType.d.ts +4 -4
  152. package/types/Uint8ArrayType.js +21 -21
  153. package/types/UnknownType.d.ts +4 -4
  154. package/types/UnknownType.js +12 -12
  155. package/types/UuidType.d.ts +5 -5
  156. package/types/UuidType.js +19 -19
  157. package/types/index.d.ts +49 -75
  158. package/types/index.js +26 -52
  159. package/typings.d.ts +737 -1250
  160. package/typings.js +231 -244
  161. package/unit-of-work/ChangeSet.d.ts +26 -26
  162. package/unit-of-work/ChangeSet.js +56 -56
  163. package/unit-of-work/ChangeSetComputer.d.ts +12 -12
  164. package/unit-of-work/ChangeSetComputer.js +170 -178
  165. package/unit-of-work/ChangeSetPersister.d.ts +44 -63
  166. package/unit-of-work/ChangeSetPersister.js +421 -442
  167. package/unit-of-work/CommitOrderCalculator.d.ts +40 -40
  168. package/unit-of-work/CommitOrderCalculator.js +88 -89
  169. package/unit-of-work/IdentityMap.d.ts +31 -31
  170. package/unit-of-work/IdentityMap.js +105 -105
  171. package/unit-of-work/UnitOfWork.d.ts +141 -181
  172. package/unit-of-work/UnitOfWork.js +1183 -1200
  173. package/utils/AbstractMigrator.d.ts +91 -111
  174. package/utils/AbstractMigrator.js +275 -275
  175. package/utils/AbstractSchemaGenerator.d.ts +34 -43
  176. package/utils/AbstractSchemaGenerator.js +122 -121
  177. package/utils/AsyncContext.d.ts +3 -3
  178. package/utils/AsyncContext.js +35 -34
  179. package/utils/Configuration.d.ts +808 -852
  180. package/utils/Configuration.js +344 -359
  181. package/utils/Cursor.d.ts +22 -40
  182. package/utils/Cursor.js +127 -135
  183. package/utils/DataloaderUtils.d.ts +43 -58
  184. package/utils/DataloaderUtils.js +198 -203
  185. package/utils/EntityComparator.d.ts +81 -98
  186. package/utils/EntityComparator.js +732 -828
  187. package/utils/NullHighlighter.d.ts +1 -1
  188. package/utils/NullHighlighter.js +3 -3
  189. package/utils/QueryHelper.d.ts +51 -79
  190. package/utils/QueryHelper.js +361 -372
  191. package/utils/RawQueryFragment.d.ts +34 -50
  192. package/utils/RawQueryFragment.js +105 -107
  193. package/utils/RequestContext.d.ts +32 -32
  194. package/utils/RequestContext.js +53 -52
  195. package/utils/TransactionContext.d.ts +16 -16
  196. package/utils/TransactionContext.js +27 -27
  197. package/utils/TransactionManager.d.ts +58 -58
  198. package/utils/TransactionManager.js +197 -199
  199. package/utils/Utils.d.ts +145 -204
  200. package/utils/Utils.js +812 -812
  201. package/utils/clone.js +113 -104
  202. package/utils/env-vars.js +88 -90
  203. package/utils/fs-utils.d.ts +15 -15
  204. package/utils/fs-utils.js +181 -180
  205. package/utils/upsert-utils.d.ts +5 -20
  206. 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
  }