@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.
- package/EntityManager.d.ts +884 -583
- package/EntityManager.js +1922 -1895
- package/MikroORM.d.ts +103 -74
- package/MikroORM.js +178 -179
- package/README.md +1 -1
- package/cache/CacheAdapter.d.ts +36 -36
- package/cache/FileCacheAdapter.d.ts +30 -24
- package/cache/FileCacheAdapter.js +80 -78
- package/cache/GeneratedCacheAdapter.d.ts +18 -20
- package/cache/GeneratedCacheAdapter.js +30 -30
- package/cache/MemoryCacheAdapter.d.ts +18 -20
- package/cache/MemoryCacheAdapter.js +35 -36
- package/cache/NullCacheAdapter.d.ts +16 -16
- package/cache/NullCacheAdapter.js +24 -24
- package/connections/Connection.d.ts +95 -84
- package/connections/Connection.js +165 -168
- package/drivers/DatabaseDriver.d.ts +186 -80
- package/drivers/DatabaseDriver.js +450 -443
- package/drivers/IDatabaseDriver.d.ts +440 -301
- package/entity/BaseEntity.d.ts +120 -83
- package/entity/BaseEntity.js +43 -43
- package/entity/Collection.d.ts +212 -179
- package/entity/Collection.js +727 -721
- package/entity/EntityAssigner.d.ts +88 -77
- package/entity/EntityAssigner.js +231 -230
- package/entity/EntityFactory.d.ts +66 -54
- package/entity/EntityFactory.js +425 -383
- package/entity/EntityHelper.d.ts +34 -22
- package/entity/EntityHelper.js +280 -267
- package/entity/EntityIdentifier.d.ts +4 -4
- package/entity/EntityIdentifier.js +10 -10
- package/entity/EntityLoader.d.ts +98 -72
- package/entity/EntityLoader.js +753 -723
- package/entity/EntityRepository.d.ts +316 -201
- package/entity/EntityRepository.js +213 -213
- package/entity/PolymorphicRef.d.ts +5 -5
- package/entity/PolymorphicRef.js +10 -10
- package/entity/Reference.d.ts +126 -82
- package/entity/Reference.js +278 -274
- package/entity/WrappedEntity.d.ts +115 -72
- package/entity/WrappedEntity.js +168 -166
- package/entity/defineEntity.d.ts +1315 -636
- package/entity/defineEntity.js +527 -518
- package/entity/utils.d.ts +13 -3
- package/entity/utils.js +71 -73
- package/entity/validators.js +43 -43
- package/entity/wrap.js +8 -8
- package/enums.d.ts +258 -253
- package/enums.js +251 -252
- package/errors.d.ts +114 -72
- package/errors.js +350 -253
- package/events/EventManager.d.ts +26 -14
- package/events/EventManager.js +79 -77
- package/events/EventSubscriber.d.ts +29 -29
- package/events/TransactionEventBroadcaster.d.ts +15 -8
- package/events/TransactionEventBroadcaster.js +14 -14
- package/exceptions.d.ts +23 -40
- package/exceptions.js +35 -52
- package/hydration/Hydrator.d.ts +42 -17
- package/hydration/Hydrator.js +43 -43
- package/hydration/ObjectHydrator.d.ts +50 -17
- package/hydration/ObjectHydrator.js +481 -416
- package/index.d.ts +116 -2
- package/index.js +10 -1
- package/logging/DefaultLogger.d.ts +34 -32
- package/logging/DefaultLogger.js +86 -86
- package/logging/Logger.d.ts +41 -41
- package/logging/SimpleLogger.d.ts +13 -11
- package/logging/SimpleLogger.js +22 -22
- package/logging/colors.d.ts +6 -6
- package/logging/colors.js +11 -10
- package/logging/inspect.js +7 -7
- package/metadata/EntitySchema.d.ts +211 -127
- package/metadata/EntitySchema.js +397 -398
- package/metadata/MetadataDiscovery.d.ts +114 -114
- package/metadata/MetadataDiscovery.js +1951 -1863
- package/metadata/MetadataProvider.d.ts +24 -21
- package/metadata/MetadataProvider.js +82 -84
- package/metadata/MetadataStorage.d.ts +38 -32
- package/metadata/MetadataStorage.js +118 -118
- package/metadata/MetadataValidator.d.ts +39 -39
- package/metadata/MetadataValidator.js +381 -338
- package/metadata/discover-entities.d.ts +5 -2
- package/metadata/discover-entities.js +35 -27
- package/metadata/types.d.ts +615 -531
- package/naming-strategy/AbstractNamingStrategy.d.ts +54 -39
- package/naming-strategy/AbstractNamingStrategy.js +90 -85
- package/naming-strategy/EntityCaseNamingStrategy.d.ts +6 -6
- package/naming-strategy/EntityCaseNamingStrategy.js +22 -22
- package/naming-strategy/MongoNamingStrategy.d.ts +6 -6
- package/naming-strategy/MongoNamingStrategy.js +18 -18
- package/naming-strategy/NamingStrategy.d.ts +109 -99
- package/naming-strategy/UnderscoreNamingStrategy.d.ts +7 -7
- package/naming-strategy/UnderscoreNamingStrategy.js +21 -21
- package/not-supported.js +7 -4
- package/package.json +1 -1
- package/platforms/ExceptionConverter.d.ts +1 -1
- package/platforms/ExceptionConverter.js +4 -4
- package/platforms/Platform.d.ts +310 -299
- package/platforms/Platform.js +663 -636
- package/serialization/EntitySerializer.d.ts +49 -26
- package/serialization/EntitySerializer.js +224 -218
- package/serialization/EntityTransformer.d.ts +10 -6
- package/serialization/EntityTransformer.js +219 -217
- package/serialization/SerializationContext.d.ts +27 -23
- package/serialization/SerializationContext.js +105 -105
- package/types/ArrayType.d.ts +8 -8
- package/types/ArrayType.js +33 -33
- package/types/BigIntType.d.ts +17 -10
- package/types/BigIntType.js +37 -37
- package/types/BlobType.d.ts +3 -3
- package/types/BlobType.js +13 -13
- package/types/BooleanType.d.ts +4 -4
- package/types/BooleanType.js +12 -12
- package/types/CharacterType.d.ts +2 -2
- package/types/CharacterType.js +6 -6
- package/types/DateTimeType.d.ts +5 -5
- package/types/DateTimeType.js +15 -15
- package/types/DateType.d.ts +5 -5
- package/types/DateType.js +15 -15
- package/types/DecimalType.d.ts +7 -7
- package/types/DecimalType.js +26 -26
- package/types/DoubleType.d.ts +3 -3
- package/types/DoubleType.js +12 -12
- package/types/EnumArrayType.d.ts +5 -5
- package/types/EnumArrayType.js +24 -24
- package/types/EnumType.d.ts +3 -3
- package/types/EnumType.js +11 -11
- package/types/FloatType.d.ts +3 -3
- package/types/FloatType.js +9 -9
- package/types/IntegerType.d.ts +3 -3
- package/types/IntegerType.js +9 -9
- package/types/IntervalType.d.ts +4 -4
- package/types/IntervalType.js +12 -12
- package/types/JsonType.d.ts +8 -8
- package/types/JsonType.js +32 -32
- package/types/MediumIntType.d.ts +1 -1
- package/types/MediumIntType.js +3 -3
- package/types/SmallIntType.d.ts +3 -3
- package/types/SmallIntType.js +9 -9
- package/types/StringType.d.ts +4 -4
- package/types/StringType.js +12 -12
- package/types/TextType.d.ts +3 -3
- package/types/TextType.js +9 -9
- package/types/TimeType.d.ts +5 -5
- package/types/TimeType.js +17 -17
- package/types/TinyIntType.d.ts +3 -3
- package/types/TinyIntType.js +10 -10
- package/types/Type.d.ts +83 -79
- package/types/Type.js +82 -82
- package/types/Uint8ArrayType.d.ts +4 -4
- package/types/Uint8ArrayType.js +21 -21
- package/types/UnknownType.d.ts +4 -4
- package/types/UnknownType.js +12 -12
- package/types/UuidType.d.ts +5 -5
- package/types/UuidType.js +19 -19
- package/types/index.d.ts +75 -49
- package/types/index.js +52 -26
- package/typings.d.ts +1250 -737
- package/typings.js +244 -231
- package/unit-of-work/ChangeSet.d.ts +26 -26
- package/unit-of-work/ChangeSet.js +56 -56
- package/unit-of-work/ChangeSetComputer.d.ts +12 -12
- package/unit-of-work/ChangeSetComputer.js +178 -170
- package/unit-of-work/ChangeSetPersister.d.ts +63 -44
- package/unit-of-work/ChangeSetPersister.js +442 -421
- package/unit-of-work/CommitOrderCalculator.d.ts +40 -40
- package/unit-of-work/CommitOrderCalculator.js +89 -88
- package/unit-of-work/IdentityMap.d.ts +31 -31
- package/unit-of-work/IdentityMap.js +105 -105
- package/unit-of-work/UnitOfWork.d.ts +181 -141
- package/unit-of-work/UnitOfWork.js +1200 -1183
- package/utils/AbstractMigrator.d.ts +111 -91
- package/utils/AbstractMigrator.js +275 -275
- package/utils/AbstractSchemaGenerator.d.ts +43 -34
- package/utils/AbstractSchemaGenerator.js +121 -122
- package/utils/AsyncContext.d.ts +3 -3
- package/utils/AsyncContext.js +34 -35
- package/utils/Configuration.d.ts +852 -808
- package/utils/Configuration.js +359 -344
- package/utils/Cursor.d.ts +40 -22
- package/utils/Cursor.js +135 -127
- package/utils/DataloaderUtils.d.ts +58 -43
- package/utils/DataloaderUtils.js +203 -198
- package/utils/EntityComparator.d.ts +98 -81
- package/utils/EntityComparator.js +828 -728
- package/utils/NullHighlighter.d.ts +1 -1
- package/utils/NullHighlighter.js +3 -3
- package/utils/QueryHelper.d.ts +79 -51
- package/utils/QueryHelper.js +372 -361
- package/utils/RawQueryFragment.d.ts +50 -34
- package/utils/RawQueryFragment.js +107 -105
- package/utils/RequestContext.d.ts +32 -32
- package/utils/RequestContext.js +52 -53
- package/utils/TransactionContext.d.ts +16 -16
- package/utils/TransactionContext.js +27 -27
- package/utils/TransactionManager.d.ts +58 -58
- package/utils/TransactionManager.js +199 -197
- package/utils/Utils.d.ts +204 -145
- package/utils/Utils.js +812 -810
- package/utils/clone.js +104 -113
- package/utils/env-vars.js +90 -88
- package/utils/fs-utils.d.ts +15 -15
- package/utils/fs-utils.js +180 -181
- package/utils/upsert-utils.d.ts +20 -5
- 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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
-
|
|
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
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
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
|
-
|
|
72
|
+
}
|
|
95
73
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
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
|
-
|
|
102
|
-
|
|
91
|
+
populate = childHints;
|
|
92
|
+
}
|
|
103
93
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
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
|
-
|
|
122
|
-
|
|
123
|
-
|
|
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
|
}
|
package/types/ArrayType.d.ts
CHANGED
|
@@ -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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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
|
}
|
package/types/ArrayType.js
CHANGED
|
@@ -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
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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
|
-
|
|
13
|
-
|
|
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
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
-
|
|
35
|
-
|
|
23
|
+
throw ValidationError.invalidType(ArrayType, value, 'JS');
|
|
24
|
+
}
|
|
25
|
+
convertToJSValue(value, platform) {
|
|
26
|
+
if (value == null) {
|
|
27
|
+
return value;
|
|
36
28
|
}
|
|
37
|
-
|
|
38
|
-
|
|
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
|
}
|
package/types/BigIntType.d.ts
CHANGED
|
@@ -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<
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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'
|
|
21
|
+
type JSTypeByMode<Mode extends 'bigint' | 'number' | 'string'> = Mode extends 'bigint'
|
|
22
|
+
? bigint
|
|
23
|
+
: Mode extends 'number'
|
|
24
|
+
? number
|
|
25
|
+
: string;
|
|
19
26
|
export {};
|
package/types/BigIntType.js
CHANGED
|
@@ -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
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
return '' + value;
|
|
17
|
+
}
|
|
18
|
+
convertToJSValue(value) {
|
|
19
|
+
/* v8 ignore next */
|
|
20
|
+
if (value == null) {
|
|
21
|
+
return value;
|
|
17
22
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
}
|
package/types/BlobType.d.ts
CHANGED
|
@@ -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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
|
|
14
|
-
|
|
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
|
}
|
package/types/BooleanType.d.ts
CHANGED
|
@@ -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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
getColumnType(prop: EntityProperty, platform: Platform): string;
|
|
7
|
+
compareAsType(): string;
|
|
8
|
+
convertToJSValue(value: boolean | null | undefined): boolean | null | undefined;
|
|
9
|
+
ensureComparable(): boolean;
|
|
10
10
|
}
|
package/types/BooleanType.js
CHANGED
|
@@ -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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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
|
}
|
package/types/CharacterType.d.ts
CHANGED
|
@@ -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
|
-
|
|
7
|
-
|
|
6
|
+
getColumnType(prop: EntityProperty, platform: Platform): string;
|
|
7
|
+
getDefaultLength(platform: Platform): number;
|
|
8
8
|
}
|
package/types/CharacterType.js
CHANGED
|
@@ -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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
getColumnType(prop, platform) {
|
|
5
|
+
return platform.getCharTypeDeclarationSQL(prop);
|
|
6
|
+
}
|
|
7
|
+
getDefaultLength(platform) {
|
|
8
|
+
return platform.getDefaultCharLength();
|
|
9
|
+
}
|
|
10
10
|
}
|
package/types/DateTimeType.d.ts
CHANGED
|
@@ -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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
getColumnType(prop: EntityProperty, platform: Platform): string;
|
|
7
|
+
compareAsType(): string;
|
|
8
|
+
get runtimeType(): string;
|
|
9
|
+
ensureComparable(): boolean;
|
|
10
|
+
getDefaultLength(platform: Platform): number;
|
|
11
11
|
}
|
package/types/DateTimeType.js
CHANGED
|
@@ -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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
}
|
package/types/DateType.d.ts
CHANGED
|
@@ -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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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
|
}
|