@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
package/types/TimeType.js
CHANGED
|
@@ -2,22 +2,22 @@ import { Type } from './Type.js';
|
|
|
2
2
|
import { ValidationError } from '../errors.js';
|
|
3
3
|
/** Maps a database TIME column to a JS `string` in HH:MM:SS format. */
|
|
4
4
|
export class TimeType extends Type {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
return super.convertToDatabaseValue(value, platform);
|
|
10
|
-
}
|
|
11
|
-
compareAsType() {
|
|
12
|
-
return 'string';
|
|
13
|
-
}
|
|
14
|
-
ensureComparable() {
|
|
15
|
-
return false;
|
|
16
|
-
}
|
|
17
|
-
getColumnType(prop, platform) {
|
|
18
|
-
return platform.getTimeTypeDeclarationSQL(prop.length);
|
|
19
|
-
}
|
|
20
|
-
getDefaultLength(platform) {
|
|
21
|
-
return platform.getDefaultDateTimeLength();
|
|
5
|
+
convertToDatabaseValue(value, platform) {
|
|
6
|
+
if (value && !value.toString().match(/^\d{2,}:(?:[0-5]\d):(?:[0-5]\d)$/)) {
|
|
7
|
+
throw ValidationError.invalidType(TimeType, value, 'JS');
|
|
22
8
|
}
|
|
9
|
+
return super.convertToDatabaseValue(value, platform);
|
|
10
|
+
}
|
|
11
|
+
compareAsType() {
|
|
12
|
+
return 'string';
|
|
13
|
+
}
|
|
14
|
+
ensureComparable() {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
getColumnType(prop, platform) {
|
|
18
|
+
return platform.getTimeTypeDeclarationSQL(prop.length);
|
|
19
|
+
}
|
|
20
|
+
getDefaultLength(platform) {
|
|
21
|
+
return platform.getDefaultDateTimeLength();
|
|
22
|
+
}
|
|
23
23
|
}
|
package/types/TinyIntType.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 TINYINT column to a JS `number`. */
|
|
5
5
|
export declare class TinyIntType extends Type<number | null | undefined, number | null | undefined> {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
getColumnType(prop: EntityProperty, platform: Platform): string;
|
|
7
|
+
compareAsType(): string;
|
|
8
|
+
ensureComparable(): boolean;
|
|
9
9
|
}
|
package/types/TinyIntType.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { Type } from './Type.js';
|
|
2
2
|
/** Maps a database TINYINT column to a JS `number`. */
|
|
3
3
|
export class TinyIntType extends Type {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
4
|
+
getColumnType(prop, platform) {
|
|
5
|
+
return platform.getTinyIntTypeDeclarationSQL(prop);
|
|
6
|
+
}
|
|
7
|
+
compareAsType() {
|
|
8
|
+
return 'number';
|
|
9
|
+
}
|
|
10
|
+
/* v8 ignore next */
|
|
11
|
+
ensureComparable() {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
14
|
}
|
package/types/Type.d.ts
CHANGED
|
@@ -4,89 +4,93 @@ import type { Constructor, EntityMetadata, EntityProperty } from '../typings.js'
|
|
|
4
4
|
export declare const ORM_TYPE: unique symbol;
|
|
5
5
|
/** Context passed to type conversion methods, indicating the conversion mode and source. */
|
|
6
6
|
export interface TransformContext {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
fromQuery?: boolean;
|
|
8
|
+
force?: boolean;
|
|
9
|
+
key?: string;
|
|
10
|
+
mode?: 'hydration' | 'query' | 'query-data' | 'discovery' | 'serialization';
|
|
11
11
|
}
|
|
12
12
|
/** Branded type helper for mapping between JS runtime, database raw, and JSON serialized representations. */
|
|
13
13
|
export type IType<Runtime, Raw, Serialized = Raw> = Runtime & {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
__raw?: Raw;
|
|
15
|
+
__runtime?: Runtime;
|
|
16
|
+
__serialized?: Serialized;
|
|
17
17
|
};
|
|
18
18
|
/** Abstract base class for custom property types that handle conversion between JS and database representations. */
|
|
19
19
|
export declare abstract class Type<JSType = string, DBType = JSType> {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
20
|
+
private static readonly types;
|
|
21
|
+
platform?: Platform;
|
|
22
|
+
meta?: EntityMetadata;
|
|
23
|
+
prop?: EntityProperty;
|
|
24
|
+
/**
|
|
25
|
+
* Converts a value from its JS representation to its database representation of this type.
|
|
26
|
+
*/
|
|
27
|
+
convertToDatabaseValue(value: JSType, platform: Platform, context?: TransformContext): DBType;
|
|
28
|
+
/**
|
|
29
|
+
* Converts a value from its database representation to its JS representation of this type.
|
|
30
|
+
*/
|
|
31
|
+
convertToJSValue(value: DBType, platform: Platform, context?: TransformContext): JSType;
|
|
32
|
+
/**
|
|
33
|
+
* Converts a value from its JS representation to its database representation of this type.
|
|
34
|
+
*/
|
|
35
|
+
convertToDatabaseValueSQL?(key: string, platform: Platform): string;
|
|
36
|
+
/**
|
|
37
|
+
* Modifies the SQL expression (identifier, parameter) to convert to a JS value.
|
|
38
|
+
*/
|
|
39
|
+
convertToJSValueSQL?(key: string, platform: Platform): string;
|
|
40
|
+
/**
|
|
41
|
+
* How should the raw database values be compared? Used in `EntityComparator`.
|
|
42
|
+
* Possible values: string | number | bigint | boolean | date | any | buffer | array
|
|
43
|
+
*/
|
|
44
|
+
compareAsType(): string;
|
|
45
|
+
/**
|
|
46
|
+
* Allows to override the internal comparison logic.
|
|
47
|
+
*/
|
|
48
|
+
compareValues?(a: DBType, b: DBType): boolean;
|
|
49
|
+
get runtimeType(): string;
|
|
50
|
+
get name(): string;
|
|
51
|
+
/**
|
|
52
|
+
* When a value is hydrated, we convert it back to the database value to ensure comparability,
|
|
53
|
+
* as often the raw database response is not the same as the `convertToDatabaseValue` result.
|
|
54
|
+
* This allows to disable the additional conversion in case you know it is not needed.
|
|
55
|
+
*/
|
|
56
|
+
ensureComparable<T extends object>(meta: EntityMetadata<T>, prop: EntityProperty<T>): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Converts a value from its JS representation to its serialized JSON form of this type.
|
|
59
|
+
* By default uses the runtime value.
|
|
60
|
+
*/
|
|
61
|
+
toJSON(value: JSType, platform: Platform): JSType | DBType;
|
|
62
|
+
/**
|
|
63
|
+
* Gets the SQL declaration snippet for a field of this type.
|
|
64
|
+
*/
|
|
65
|
+
getColumnType(prop: EntityProperty, platform: Platform): string;
|
|
66
|
+
/**
|
|
67
|
+
* Get the default length for values of this type
|
|
68
|
+
*
|
|
69
|
+
* When doing schema generation, if neither "length" nor "columnType" option is provided,
|
|
70
|
+
* the length will be defaulted to this value.
|
|
71
|
+
*
|
|
72
|
+
* When doing entity generation, if the type is recognized to this type, and the inferred length is this value,
|
|
73
|
+
* the length option will be omitted in the output. If this method is not defined, length is always outputted
|
|
74
|
+
* based on what is in the database metadata.
|
|
75
|
+
*
|
|
76
|
+
* @param platform The platform the default will be used for.
|
|
77
|
+
*
|
|
78
|
+
* @return The default value for the given platform.
|
|
79
|
+
*/
|
|
80
|
+
getDefaultLength?(platform: Platform): number;
|
|
81
|
+
static getType<
|
|
82
|
+
JSType,
|
|
83
|
+
DBType = JSType,
|
|
84
|
+
TypeClass extends Constructor<Type<JSType, DBType>> = Constructor<Type<JSType, DBType>>,
|
|
85
|
+
>(cls: TypeClass): InstanceType<TypeClass>;
|
|
86
|
+
/**
|
|
87
|
+
* Checks whether the argument is instance of `Type`.
|
|
88
|
+
*/
|
|
89
|
+
static isMappedType(data: any): data is Type<any>;
|
|
90
|
+
/**
|
|
91
|
+
* @internal
|
|
92
|
+
* Returns the built-in type registry key if the given constructor is a branded ORM type
|
|
93
|
+
* (not a user subclass). Uses `Symbol.for()` so it works across CJS/ESM module graphs.
|
|
94
|
+
*/
|
|
95
|
+
static getOrmType(cls: object): string | undefined;
|
|
92
96
|
}
|
package/types/Type.js
CHANGED
|
@@ -3,89 +3,89 @@ import { inspect } from '../logging/inspect.js';
|
|
|
3
3
|
export const ORM_TYPE = Symbol.for('@mikro-orm/type');
|
|
4
4
|
/** Abstract base class for custom property types that handle conversion between JS and database representations. */
|
|
5
5
|
export class Type {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
return Type.types.get(key);
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Checks whether the argument is instance of `Type`.
|
|
66
|
-
*/
|
|
67
|
-
static isMappedType(data) {
|
|
68
|
-
return !!data?.__mappedType;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* @internal
|
|
72
|
-
* Returns the built-in type registry key if the given constructor is a branded ORM type
|
|
73
|
-
* (not a user subclass). Uses `Symbol.for()` so it works across CJS/ESM module graphs.
|
|
74
|
-
*/
|
|
75
|
-
static getOrmType(cls) {
|
|
76
|
-
return Object.hasOwn(cls, ORM_TYPE) ? cls[ORM_TYPE] : undefined;
|
|
77
|
-
}
|
|
78
|
-
/** @ignore */
|
|
79
|
-
[Symbol.for('nodejs.util.inspect.custom')](depth = 2) {
|
|
80
|
-
const object = { ...this };
|
|
81
|
-
const hidden = ['prop', 'platform', 'meta'];
|
|
82
|
-
hidden.forEach(k => delete object[k]);
|
|
83
|
-
const ret = inspect(object, { depth });
|
|
84
|
-
const name = this.constructor.name;
|
|
85
|
-
/* v8 ignore next */
|
|
86
|
-
return ret === '[Object]' ? `[${name}]` : name + ' ' + ret;
|
|
6
|
+
static types = new Map();
|
|
7
|
+
platform;
|
|
8
|
+
meta;
|
|
9
|
+
prop;
|
|
10
|
+
/**
|
|
11
|
+
* Converts a value from its JS representation to its database representation of this type.
|
|
12
|
+
*/
|
|
13
|
+
convertToDatabaseValue(value, platform, context) {
|
|
14
|
+
return value;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Converts a value from its database representation to its JS representation of this type.
|
|
18
|
+
*/
|
|
19
|
+
convertToJSValue(value, platform, context) {
|
|
20
|
+
return value;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* How should the raw database values be compared? Used in `EntityComparator`.
|
|
24
|
+
* Possible values: string | number | bigint | boolean | date | any | buffer | array
|
|
25
|
+
*/
|
|
26
|
+
compareAsType() {
|
|
27
|
+
return 'any';
|
|
28
|
+
}
|
|
29
|
+
get runtimeType() {
|
|
30
|
+
const compareType = this.compareAsType();
|
|
31
|
+
return compareType === 'any' ? 'string' : compareType;
|
|
32
|
+
}
|
|
33
|
+
get name() {
|
|
34
|
+
return this.constructor.name;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* When a value is hydrated, we convert it back to the database value to ensure comparability,
|
|
38
|
+
* as often the raw database response is not the same as the `convertToDatabaseValue` result.
|
|
39
|
+
* This allows to disable the additional conversion in case you know it is not needed.
|
|
40
|
+
*/
|
|
41
|
+
ensureComparable(meta, prop) {
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Converts a value from its JS representation to its serialized JSON form of this type.
|
|
46
|
+
* By default uses the runtime value.
|
|
47
|
+
*/
|
|
48
|
+
toJSON(value, platform) {
|
|
49
|
+
return value;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Gets the SQL declaration snippet for a field of this type.
|
|
53
|
+
*/
|
|
54
|
+
getColumnType(prop, platform) {
|
|
55
|
+
return prop.columnTypes?.[0] ?? platform.getTextTypeDeclarationSQL(prop);
|
|
56
|
+
}
|
|
57
|
+
static getType(cls) {
|
|
58
|
+
const key = cls.name;
|
|
59
|
+
if (!Type.types.has(key)) {
|
|
60
|
+
Type.types.set(key, new cls());
|
|
87
61
|
}
|
|
62
|
+
return Type.types.get(key);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Checks whether the argument is instance of `Type`.
|
|
66
|
+
*/
|
|
67
|
+
static isMappedType(data) {
|
|
68
|
+
return !!data?.__mappedType;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* @internal
|
|
72
|
+
* Returns the built-in type registry key if the given constructor is a branded ORM type
|
|
73
|
+
* (not a user subclass). Uses `Symbol.for()` so it works across CJS/ESM module graphs.
|
|
74
|
+
*/
|
|
75
|
+
static getOrmType(cls) {
|
|
76
|
+
return Object.hasOwn(cls, ORM_TYPE) ? cls[ORM_TYPE] : undefined;
|
|
77
|
+
}
|
|
78
|
+
/** @ignore */
|
|
79
|
+
[Symbol.for('nodejs.util.inspect.custom')](depth = 2) {
|
|
80
|
+
const object = { ...this };
|
|
81
|
+
const hidden = ['prop', 'platform', 'meta'];
|
|
82
|
+
hidden.forEach(k => delete object[k]);
|
|
83
|
+
const ret = inspect(object, { depth });
|
|
84
|
+
const name = this.constructor.name;
|
|
85
|
+
/* v8 ignore next */
|
|
86
|
+
return ret === '[Object]' ? `[${name}]` : name + ' ' + ret;
|
|
87
|
+
}
|
|
88
88
|
}
|
|
89
89
|
Object.defineProperties(Type.prototype, {
|
|
90
|
-
|
|
90
|
+
__mappedType: { value: true, enumerable: false, writable: false },
|
|
91
91
|
});
|
|
@@ -3,8 +3,8 @@ 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 JS `Uint8Array`. */
|
|
5
5
|
export declare class Uint8ArrayType extends Type<Uint8Array | null> {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
convertToDatabaseValue(value: Uint8Array): Buffer;
|
|
7
|
+
convertToJSValue(value: Buffer): Uint8Array | null;
|
|
8
|
+
compareAsType(): string;
|
|
9
|
+
getColumnType(prop: EntityProperty, platform: Platform): string;
|
|
10
10
|
}
|
package/types/Uint8ArrayType.js
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
import { Type } from './Type.js';
|
|
2
2
|
/** Maps a database BLOB/BYTEA column to a JS `Uint8Array`. */
|
|
3
3
|
export class Uint8ArrayType extends Type {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
return Buffer.from(value);
|
|
4
|
+
convertToDatabaseValue(value) {
|
|
5
|
+
if (!value) {
|
|
6
|
+
return value;
|
|
9
7
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
return new Uint8Array(value);
|
|
17
|
-
}
|
|
18
|
-
if (value.buffer instanceof Buffer) {
|
|
19
|
-
return new Uint8Array(value.buffer);
|
|
20
|
-
}
|
|
21
|
-
return new Uint8Array(Buffer.from(value));
|
|
8
|
+
return Buffer.from(value);
|
|
9
|
+
}
|
|
10
|
+
convertToJSValue(value) {
|
|
11
|
+
/* v8 ignore next */
|
|
12
|
+
if (!value) {
|
|
13
|
+
return value;
|
|
22
14
|
}
|
|
23
|
-
|
|
24
|
-
|
|
15
|
+
if (value instanceof Buffer) {
|
|
16
|
+
return new Uint8Array(value);
|
|
25
17
|
}
|
|
26
|
-
|
|
27
|
-
|
|
18
|
+
if (value.buffer instanceof Buffer) {
|
|
19
|
+
return new Uint8Array(value.buffer);
|
|
28
20
|
}
|
|
21
|
+
return new Uint8Array(Buffer.from(value));
|
|
22
|
+
}
|
|
23
|
+
compareAsType() {
|
|
24
|
+
return 'Buffer';
|
|
25
|
+
}
|
|
26
|
+
getColumnType(prop, platform) {
|
|
27
|
+
return platform.getBlobDeclarationSQL();
|
|
28
|
+
}
|
|
29
29
|
}
|
package/types/UnknownType.d.ts
CHANGED
|
@@ -3,8 +3,8 @@ import type { Platform } from '../platforms/Platform.js';
|
|
|
3
3
|
import { Type } from './Type.js';
|
|
4
4
|
/** Passthrough type that performs no conversion, used when the column type is unknown or unrecognized. */
|
|
5
5
|
export declare class UnknownType extends Type<unknown | null | undefined, unknown | null | undefined> {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
getColumnType(prop: EntityProperty, platform: Platform): string;
|
|
7
|
+
get runtimeType(): string;
|
|
8
|
+
compareAsType(): string;
|
|
9
|
+
ensureComparable(): boolean;
|
|
10
10
|
}
|
package/types/UnknownType.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { Type } from './Type.js';
|
|
2
2
|
/** Passthrough type that performs no conversion, used when the column type is unknown or unrecognized. */
|
|
3
3
|
export class UnknownType extends Type {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
4
|
+
getColumnType(prop, platform) {
|
|
5
|
+
return prop.columnTypes?.[0] ?? platform.getVarcharTypeDeclarationSQL(prop);
|
|
6
|
+
}
|
|
7
|
+
get runtimeType() {
|
|
8
|
+
return 'unknown';
|
|
9
|
+
}
|
|
10
|
+
compareAsType() {
|
|
11
|
+
return 'unknown';
|
|
12
|
+
}
|
|
13
|
+
ensureComparable() {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
16
|
}
|
package/types/UuidType.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 UUID column to a JS `string`, with platform-specific normalization. */
|
|
5
5
|
export declare class UuidType extends Type<string | null | undefined> {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
getColumnType(prop: EntityProperty, platform: Platform): string;
|
|
7
|
+
compareAsType(): string;
|
|
8
|
+
convertToDatabaseValue(value: string | null | undefined, platform: Platform): string | null;
|
|
9
|
+
convertToJSValue(value: string | null | undefined, platform: Platform): string | null | undefined;
|
|
10
|
+
ensureComparable(): boolean;
|
|
11
11
|
}
|
package/types/UuidType.js
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import { Type } from './Type.js';
|
|
2
2
|
/** Maps a database UUID column to a JS `string`, with platform-specific normalization. */
|
|
3
3
|
export class UuidType extends Type {
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
getColumnType(prop, platform) {
|
|
5
|
+
return platform.getUuidTypeDeclarationSQL(prop);
|
|
6
|
+
}
|
|
7
|
+
compareAsType() {
|
|
8
|
+
return this.platform?.compareUuids() ?? 'string';
|
|
9
|
+
}
|
|
10
|
+
convertToDatabaseValue(value, platform) {
|
|
11
|
+
if (value == null) {
|
|
12
|
+
return value;
|
|
6
13
|
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
return value;
|
|
13
|
-
}
|
|
14
|
-
return platform.convertUuidToDatabaseValue(value);
|
|
15
|
-
}
|
|
16
|
-
convertToJSValue(value, platform) {
|
|
17
|
-
if (value == null) {
|
|
18
|
-
return value;
|
|
19
|
-
}
|
|
20
|
-
return platform.convertUuidToJSValue(value);
|
|
21
|
-
}
|
|
22
|
-
ensureComparable() {
|
|
23
|
-
return this.platform?.compareUuids() !== 'string';
|
|
14
|
+
return platform.convertUuidToDatabaseValue(value);
|
|
15
|
+
}
|
|
16
|
+
convertToJSValue(value, platform) {
|
|
17
|
+
if (value == null) {
|
|
18
|
+
return value;
|
|
24
19
|
}
|
|
20
|
+
return platform.convertUuidToJSValue(value);
|
|
21
|
+
}
|
|
22
|
+
ensureComparable() {
|
|
23
|
+
return this.platform?.compareUuids() !== 'string';
|
|
24
|
+
}
|
|
25
25
|
}
|