@mikro-orm/core 7.0.4-dev.9 → 7.0.4

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 +884 -583
  2. package/EntityManager.js +1922 -1895
  3. package/MikroORM.d.ts +103 -74
  4. package/MikroORM.js +178 -179
  5. package/README.md +1 -1
  6. package/cache/CacheAdapter.d.ts +36 -36
  7. package/cache/FileCacheAdapter.d.ts +30 -24
  8. package/cache/FileCacheAdapter.js +80 -78
  9. package/cache/GeneratedCacheAdapter.d.ts +18 -20
  10. package/cache/GeneratedCacheAdapter.js +30 -30
  11. package/cache/MemoryCacheAdapter.d.ts +18 -20
  12. package/cache/MemoryCacheAdapter.js +35 -36
  13. package/cache/NullCacheAdapter.d.ts +16 -16
  14. package/cache/NullCacheAdapter.js +24 -24
  15. package/connections/Connection.d.ts +95 -84
  16. package/connections/Connection.js +165 -168
  17. package/drivers/DatabaseDriver.d.ts +186 -80
  18. package/drivers/DatabaseDriver.js +450 -443
  19. package/drivers/IDatabaseDriver.d.ts +440 -301
  20. package/entity/BaseEntity.d.ts +120 -83
  21. package/entity/BaseEntity.js +43 -43
  22. package/entity/Collection.d.ts +212 -179
  23. package/entity/Collection.js +727 -721
  24. package/entity/EntityAssigner.d.ts +88 -77
  25. package/entity/EntityAssigner.js +231 -230
  26. package/entity/EntityFactory.d.ts +66 -54
  27. package/entity/EntityFactory.js +425 -383
  28. package/entity/EntityHelper.d.ts +34 -22
  29. package/entity/EntityHelper.js +280 -267
  30. package/entity/EntityIdentifier.d.ts +4 -4
  31. package/entity/EntityIdentifier.js +10 -10
  32. package/entity/EntityLoader.d.ts +98 -72
  33. package/entity/EntityLoader.js +753 -723
  34. package/entity/EntityRepository.d.ts +316 -201
  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 +126 -82
  39. package/entity/Reference.js +278 -274
  40. package/entity/WrappedEntity.d.ts +115 -72
  41. package/entity/WrappedEntity.js +168 -166
  42. package/entity/defineEntity.d.ts +1315 -636
  43. package/entity/defineEntity.js +527 -518
  44. package/entity/utils.d.ts +13 -3
  45. package/entity/utils.js +71 -73
  46. package/entity/validators.js +43 -43
  47. package/entity/wrap.js +8 -8
  48. package/enums.d.ts +258 -253
  49. package/enums.js +251 -252
  50. package/errors.d.ts +114 -72
  51. package/errors.js +350 -253
  52. package/events/EventManager.d.ts +26 -14
  53. package/events/EventManager.js +79 -77
  54. package/events/EventSubscriber.d.ts +29 -29
  55. package/events/TransactionEventBroadcaster.d.ts +15 -8
  56. package/events/TransactionEventBroadcaster.js +14 -14
  57. package/exceptions.d.ts +23 -40
  58. package/exceptions.js +35 -52
  59. package/hydration/Hydrator.d.ts +42 -17
  60. package/hydration/Hydrator.js +43 -43
  61. package/hydration/ObjectHydrator.d.ts +50 -17
  62. package/hydration/ObjectHydrator.js +481 -416
  63. package/index.d.ts +116 -2
  64. package/index.js +10 -1
  65. package/logging/DefaultLogger.d.ts +34 -32
  66. package/logging/DefaultLogger.js +86 -86
  67. package/logging/Logger.d.ts +41 -41
  68. package/logging/SimpleLogger.d.ts +13 -11
  69. package/logging/SimpleLogger.js +22 -22
  70. package/logging/colors.d.ts +6 -6
  71. package/logging/colors.js +11 -10
  72. package/logging/inspect.js +7 -7
  73. package/metadata/EntitySchema.d.ts +211 -127
  74. package/metadata/EntitySchema.js +397 -398
  75. package/metadata/MetadataDiscovery.d.ts +114 -114
  76. package/metadata/MetadataDiscovery.js +1951 -1863
  77. package/metadata/MetadataProvider.d.ts +24 -21
  78. package/metadata/MetadataProvider.js +82 -84
  79. package/metadata/MetadataStorage.d.ts +38 -32
  80. package/metadata/MetadataStorage.js +118 -118
  81. package/metadata/MetadataValidator.d.ts +39 -39
  82. package/metadata/MetadataValidator.js +381 -338
  83. package/metadata/discover-entities.d.ts +5 -2
  84. package/metadata/discover-entities.js +35 -27
  85. package/metadata/types.d.ts +615 -531
  86. package/naming-strategy/AbstractNamingStrategy.d.ts +54 -39
  87. package/naming-strategy/AbstractNamingStrategy.js +90 -85
  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 +109 -99
  93. package/naming-strategy/UnderscoreNamingStrategy.d.ts +7 -7
  94. package/naming-strategy/UnderscoreNamingStrategy.js +21 -21
  95. package/not-supported.js +7 -4
  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 +310 -299
  100. package/platforms/Platform.js +663 -636
  101. package/serialization/EntitySerializer.d.ts +49 -26
  102. package/serialization/EntitySerializer.js +224 -218
  103. package/serialization/EntityTransformer.d.ts +10 -6
  104. package/serialization/EntityTransformer.js +219 -217
  105. package/serialization/SerializationContext.d.ts +27 -23
  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 +17 -10
  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 +83 -79
  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 +75 -49
  158. package/types/index.js +52 -26
  159. package/typings.d.ts +1250 -737
  160. package/typings.js +244 -231
  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 +178 -170
  165. package/unit-of-work/ChangeSetPersister.d.ts +63 -44
  166. package/unit-of-work/ChangeSetPersister.js +442 -421
  167. package/unit-of-work/CommitOrderCalculator.d.ts +40 -40
  168. package/unit-of-work/CommitOrderCalculator.js +89 -88
  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 +181 -141
  172. package/unit-of-work/UnitOfWork.js +1200 -1183
  173. package/utils/AbstractMigrator.d.ts +111 -91
  174. package/utils/AbstractMigrator.js +275 -275
  175. package/utils/AbstractSchemaGenerator.d.ts +43 -34
  176. package/utils/AbstractSchemaGenerator.js +121 -122
  177. package/utils/AsyncContext.d.ts +3 -3
  178. package/utils/AsyncContext.js +34 -35
  179. package/utils/Configuration.d.ts +852 -808
  180. package/utils/Configuration.js +359 -344
  181. package/utils/Cursor.d.ts +40 -22
  182. package/utils/Cursor.js +135 -127
  183. package/utils/DataloaderUtils.d.ts +58 -43
  184. package/utils/DataloaderUtils.js +203 -198
  185. package/utils/EntityComparator.d.ts +98 -81
  186. package/utils/EntityComparator.js +828 -728
  187. package/utils/NullHighlighter.d.ts +1 -1
  188. package/utils/NullHighlighter.js +3 -3
  189. package/utils/QueryHelper.d.ts +79 -51
  190. package/utils/QueryHelper.js +372 -361
  191. package/utils/RawQueryFragment.d.ts +50 -34
  192. package/utils/RawQueryFragment.js +107 -105
  193. package/utils/RequestContext.d.ts +32 -32
  194. package/utils/RequestContext.js +52 -53
  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 +199 -197
  199. package/utils/Utils.d.ts +204 -145
  200. package/utils/Utils.js +812 -810
  201. package/utils/clone.js +104 -113
  202. package/utils/env-vars.js +90 -88
  203. package/utils/fs-utils.d.ts +15 -15
  204. package/utils/fs-utils.js +180 -181
  205. package/utils/upsert-utils.d.ts +20 -5
  206. package/utils/upsert-utils.js +114 -116
@@ -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;
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;
19
27
  }
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;
28
+ // check if the path is explicitly populated
29
+ if (!this.isMarkedAsPopulated(entityName, prop)) {
30
+ return true;
34
31
  }
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
- }
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('.')}`);
42
41
  }
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;
47
- }
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;
48
47
  }
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
- }
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);
73
63
  }
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
- }
90
- }
91
- populate = childHints;
92
- }
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
+ }
93
71
  }
94
- return !!populate?.some(p => p.field === prop);
72
+ }
95
73
  }
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;
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
+ }
100
90
  }
101
- const fullPath = this.path.map(segment => segment[1] + '.').join('') + prop;
102
- return this.#exclude.includes(fullPath);
91
+ populate = childHints;
92
+ }
103
93
  }
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 === '*');
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;
100
+ }
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;
120
108
  }
121
- register(entity) {
122
- helper(entity).__serializationContext.root = this;
123
- this.#entities.add(entity);
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)));
124
118
  }
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;
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;
11
15
  }
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');
16
+ if (Array.isArray(value)) {
17
+ return platform.marshallArray(value.map(i => this.toDbValue(i)));
24
18
  }
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));
19
+ /* v8 ignore next */
20
+ if (context?.fromQuery) {
21
+ return value;
33
22
  }
34
- compareAsType() {
35
- return 'string[]';
23
+ throw ValidationError.invalidType(ArrayType, value, 'JS');
24
+ }
25
+ convertToJSValue(value, platform) {
26
+ if (value == null) {
27
+ return value;
36
28
  }
37
- toJSON(value) {
38
- return value;
39
- }
40
- getColumnType(prop, platform) {
41
- return platform.getArrayDeclarationSQL();
29
+ if (typeof value === 'string') {
30
+ value = platform.unmarshallArray(value);
42
31
  }
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,15 +5,22 @@ 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<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;
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;
17
20
  }
18
- type JSTypeByMode<Mode extends 'bigint' | 'number' | 'string'> = Mode extends 'bigint' ? bigint : Mode extends 'number' ? number : string;
21
+ type JSTypeByMode<Mode extends 'bigint' | 'number' | 'string'> = Mode extends 'bigint'
22
+ ? bigint
23
+ : Mode extends 'number'
24
+ ? number
25
+ : string;
19
26
  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;
7
+ mode;
8
+ constructor(mode) {
9
+ super();
10
+ this.mode = mode;
11
+ }
12
+ convertToDatabaseValue(value) {
13
+ if (value == null) {
14
+ return value;
11
15
  }
12
- convertToDatabaseValue(value) {
13
- if (value == null) {
14
- return value;
15
- }
16
- return '' + value;
16
+ return '' + value;
17
+ }
18
+ convertToJSValue(value) {
19
+ /* v8 ignore next */
20
+ if (value == null) {
21
+ return value;
17
22
  }
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
- }
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));
32
31
  }
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);
32
+ }
33
+ toJSON(value) {
34
+ if (this.mode === 'number') {
35
+ return value;
47
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);
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;
7
- }
8
- if (value.buffer instanceof Buffer) {
9
- return value.buffer;
10
- }
11
- return Buffer.from(value);
4
+ convertToJSValue(value) {
5
+ if (value instanceof Buffer || !value) {
6
+ return value;
12
7
  }
13
- compareAsType() {
14
- return 'Buffer';
15
- }
16
- getColumnType(prop, platform) {
17
- return platform.getBlobDeclarationSQL();
8
+ if (value.buffer instanceof Buffer) {
9
+ return value.buffer;
18
10
  }
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
  }