@mikro-orm/core 7.0.4-dev.8 → 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
|
@@ -1,39 +1,48 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type {
|
|
2
|
+
ClearDatabaseOptions,
|
|
3
|
+
DropSchemaOptions,
|
|
4
|
+
EntityMetadata,
|
|
5
|
+
ISchemaGenerator,
|
|
6
|
+
UpdateSchemaOptions,
|
|
7
|
+
CreateSchemaOptions,
|
|
8
|
+
RefreshDatabaseOptions,
|
|
9
|
+
EnsureDatabaseOptions,
|
|
10
|
+
} from '../typings.js';
|
|
2
11
|
import { type EntityManagerType, type IDatabaseDriver } from '../drivers/IDatabaseDriver.js';
|
|
3
12
|
import type { MetadataStorage } from '../metadata/MetadataStorage.js';
|
|
4
13
|
import type { Configuration } from './Configuration.js';
|
|
5
14
|
export declare abstract class AbstractSchemaGenerator<D extends IDatabaseDriver> implements ISchemaGenerator {
|
|
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
|
-
|
|
15
|
+
protected readonly em?: D[typeof EntityManagerType];
|
|
16
|
+
protected readonly driver: D;
|
|
17
|
+
protected readonly config: Configuration;
|
|
18
|
+
protected readonly metadata: MetadataStorage;
|
|
19
|
+
protected readonly platform: ReturnType<D['getPlatform']>;
|
|
20
|
+
protected readonly connection: ReturnType<D['getConnection']>;
|
|
21
|
+
constructor(em: D | D[typeof EntityManagerType]);
|
|
22
|
+
create(options?: CreateSchemaOptions): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Returns true if the database was created.
|
|
25
|
+
*/
|
|
26
|
+
ensureDatabase(options?: EnsureDatabaseOptions): Promise<boolean>;
|
|
27
|
+
refresh(options?: RefreshDatabaseOptions): Promise<void>;
|
|
28
|
+
clear(options?: ClearDatabaseOptions): Promise<void>;
|
|
29
|
+
protected clearIdentityMap(): void;
|
|
30
|
+
getCreateSchemaSQL(options?: CreateSchemaOptions): Promise<string>;
|
|
31
|
+
drop(options?: DropSchemaOptions): Promise<void>;
|
|
32
|
+
getDropSchemaSQL(options?: Omit<DropSchemaOptions, 'dropDb'>): Promise<string>;
|
|
33
|
+
update(options?: UpdateSchemaOptions): Promise<void>;
|
|
34
|
+
getUpdateSchemaSQL(options?: UpdateSchemaOptions): Promise<string>;
|
|
35
|
+
getUpdateSchemaMigrationSQL(options?: UpdateSchemaOptions): Promise<{
|
|
36
|
+
up: string;
|
|
37
|
+
down: string;
|
|
38
|
+
}>;
|
|
39
|
+
/**
|
|
40
|
+
* creates new database and connects to it
|
|
41
|
+
*/
|
|
42
|
+
createDatabase(name?: string): Promise<void>;
|
|
43
|
+
dropDatabase(name?: string): Promise<void>;
|
|
44
|
+
execute(query: string): Promise<void>;
|
|
45
|
+
ensureIndexes(): Promise<void>;
|
|
46
|
+
protected getOrderedMetadata(schema?: string): EntityMetadata[];
|
|
47
|
+
protected notImplemented(): never;
|
|
39
48
|
}
|
|
@@ -1,126 +1,125 @@
|
|
|
1
1
|
import { CommitOrderCalculator } from '../unit-of-work/CommitOrderCalculator.js';
|
|
2
2
|
import { EntityManager } from '../EntityManager.js';
|
|
3
3
|
export class AbstractSchemaGenerator {
|
|
4
|
-
|
|
5
|
-
|
|
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
|
-
|
|
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
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
}
|
|
4
|
+
em;
|
|
5
|
+
driver;
|
|
6
|
+
config;
|
|
7
|
+
metadata;
|
|
8
|
+
platform;
|
|
9
|
+
connection;
|
|
10
|
+
constructor(em) {
|
|
11
|
+
this.em = em instanceof EntityManager ? em : undefined;
|
|
12
|
+
this.driver = em instanceof EntityManager ? em.getDriver() : em;
|
|
13
|
+
this.config = this.driver.config;
|
|
14
|
+
this.metadata = this.driver.getMetadata();
|
|
15
|
+
this.platform = this.driver.getPlatform();
|
|
16
|
+
this.connection = this.driver.getConnection();
|
|
17
|
+
}
|
|
18
|
+
async create(options) {
|
|
19
|
+
this.notImplemented();
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Returns true if the database was created.
|
|
23
|
+
*/
|
|
24
|
+
async ensureDatabase(options) {
|
|
25
|
+
this.notImplemented();
|
|
26
|
+
}
|
|
27
|
+
async refresh(options) {
|
|
28
|
+
if (options?.dropDb) {
|
|
29
|
+
const name = this.config.get('dbName');
|
|
30
|
+
await this.dropDatabase(name);
|
|
31
|
+
await this.createDatabase(name);
|
|
32
|
+
} else {
|
|
33
|
+
await this.ensureDatabase();
|
|
34
|
+
await this.drop(options);
|
|
35
|
+
}
|
|
36
|
+
if (options?.createSchema !== false) {
|
|
37
|
+
await this.create(options);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
async clear(options) {
|
|
41
|
+
for (const meta of this.getOrderedMetadata(options?.schema).reverse()) {
|
|
42
|
+
await this.driver.nativeDelete(meta.class, {}, options);
|
|
43
|
+
}
|
|
44
|
+
if (options?.clearIdentityMap ?? true) {
|
|
45
|
+
this.clearIdentityMap();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
clearIdentityMap() {
|
|
49
|
+
/* v8 ignore next */
|
|
50
|
+
if (!this.em) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
const allowGlobalContext = this.config.get('allowGlobalContext');
|
|
54
|
+
this.config.set('allowGlobalContext', true);
|
|
55
|
+
this.em.clear();
|
|
56
|
+
this.config.set('allowGlobalContext', allowGlobalContext);
|
|
57
|
+
}
|
|
58
|
+
async getCreateSchemaSQL(options) {
|
|
59
|
+
this.notImplemented();
|
|
60
|
+
}
|
|
61
|
+
async drop(options) {
|
|
62
|
+
this.notImplemented();
|
|
63
|
+
}
|
|
64
|
+
async getDropSchemaSQL(options) {
|
|
65
|
+
this.notImplemented();
|
|
66
|
+
}
|
|
67
|
+
async update(options) {
|
|
68
|
+
this.notImplemented();
|
|
69
|
+
}
|
|
70
|
+
async getUpdateSchemaSQL(options) {
|
|
71
|
+
this.notImplemented();
|
|
72
|
+
}
|
|
73
|
+
async getUpdateSchemaMigrationSQL(options) {
|
|
74
|
+
this.notImplemented();
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* creates new database and connects to it
|
|
78
|
+
*/
|
|
79
|
+
async createDatabase(name) {
|
|
80
|
+
this.notImplemented();
|
|
81
|
+
}
|
|
82
|
+
async dropDatabase(name) {
|
|
83
|
+
this.notImplemented();
|
|
84
|
+
}
|
|
85
|
+
async execute(query) {
|
|
86
|
+
this.notImplemented();
|
|
87
|
+
}
|
|
88
|
+
async ensureIndexes() {
|
|
89
|
+
this.notImplemented();
|
|
90
|
+
}
|
|
91
|
+
getOrderedMetadata(schema) {
|
|
92
|
+
const metadata = [...this.metadata.getAll().values()].filter(meta => {
|
|
93
|
+
const isRootEntity = meta.root.class === meta.class;
|
|
94
|
+
const isTPTChild = meta.inheritanceType === 'tpt' && meta.tptParent;
|
|
95
|
+
return (isRootEntity || isTPTChild) && !meta.embeddable && !meta.virtual;
|
|
96
|
+
});
|
|
97
|
+
const calc = new CommitOrderCalculator();
|
|
98
|
+
metadata.forEach(meta => {
|
|
99
|
+
const nodeId = meta.inheritanceType === 'tpt' && meta.tptParent ? meta._id : meta.root._id;
|
|
100
|
+
calc.addNode(nodeId);
|
|
101
|
+
});
|
|
102
|
+
let meta = metadata.pop();
|
|
103
|
+
while (meta) {
|
|
104
|
+
const nodeId = meta.inheritanceType === 'tpt' && meta.tptParent ? meta._id : meta.root._id;
|
|
105
|
+
for (const prop of meta.relations) {
|
|
106
|
+
calc.discoverProperty(prop, nodeId);
|
|
107
|
+
}
|
|
108
|
+
if (meta.inheritanceType === 'tpt' && meta.tptParent) {
|
|
109
|
+
const parentId = meta.tptParent._id;
|
|
110
|
+
calc.addDependency(parentId, nodeId, 1);
|
|
111
|
+
}
|
|
112
|
+
meta = metadata.pop();
|
|
113
|
+
}
|
|
114
|
+
return calc
|
|
115
|
+
.sort()
|
|
116
|
+
.map(cls => this.metadata.getById(cls))
|
|
117
|
+
.filter(meta => {
|
|
118
|
+
const targetSchema = meta.schema ?? this.config.get('schema', this.platform.getDefaultSchemaName());
|
|
119
|
+
return schema ? [schema, '*'].includes(targetSchema) : meta.schema !== '*';
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
notImplemented() {
|
|
123
|
+
throw new Error(`This method is not supported by ${this.driver.constructor.name} driver`);
|
|
124
|
+
}
|
|
126
125
|
}
|
package/utils/AsyncContext.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export interface AsyncContext<T> {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
getStore(): T | undefined;
|
|
3
|
+
run<R>(store: T, callback: () => R): R;
|
|
4
|
+
enterWith(store: T): void;
|
|
5
5
|
}
|
|
6
6
|
export declare function createAsyncContext<T>(): AsyncContext<T>;
|
package/utils/AsyncContext.js
CHANGED
|
@@ -1,42 +1,41 @@
|
|
|
1
1
|
function getNodeAsyncContext() {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
const mod = globalThis.process?.getBuiltinModule?.('node:async_hooks');
|
|
3
|
+
/* v8 ignore next */
|
|
4
|
+
if (!mod?.AsyncLocalStorage) {
|
|
5
|
+
throw new Error('AsyncLocalStorage not available');
|
|
6
|
+
}
|
|
7
|
+
return new mod.AsyncLocalStorage();
|
|
8
8
|
}
|
|
9
9
|
/* v8 ignore next */
|
|
10
10
|
function createFallbackAsyncContext() {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
};
|
|
11
|
+
let store;
|
|
12
|
+
// eslint-disable-next-line no-console
|
|
13
|
+
console.warn('AsyncLocalStorage not available');
|
|
14
|
+
return {
|
|
15
|
+
getStore: () => store,
|
|
16
|
+
enterWith: value => (store = value),
|
|
17
|
+
run: (value, cb) => {
|
|
18
|
+
const prev = store;
|
|
19
|
+
store = value;
|
|
20
|
+
try {
|
|
21
|
+
return cb();
|
|
22
|
+
} finally {
|
|
23
|
+
store = prev;
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
};
|
|
28
27
|
}
|
|
29
28
|
export function createAsyncContext() {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
29
|
+
/* v8 ignore next */
|
|
30
|
+
const ALS = globalThis.AsyncLocalStorage;
|
|
31
|
+
/* v8 ignore next */
|
|
32
|
+
if (typeof ALS === 'function' && ALS.prototype?.run) {
|
|
33
|
+
return new ALS();
|
|
34
|
+
}
|
|
35
|
+
/* v8 ignore else */
|
|
36
|
+
if (globalThis.process?.versions?.node) {
|
|
37
|
+
return getNodeAsyncContext();
|
|
38
|
+
}
|
|
39
|
+
/* v8 ignore next */
|
|
40
|
+
return createFallbackAsyncContext();
|
|
42
41
|
}
|