typeorm 0.3.29-dev.cc07c90 → 1.0.0-nightly.20260218
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/README.md +65 -70
- package/browser/cache/DbQueryResultCache.js +17 -13
- package/browser/cache/DbQueryResultCache.js.map +1 -1
- package/browser/cache/QueryResultCache.js +2 -1
- package/browser/cache/QueryResultCacheFactory.js +11 -7
- package/browser/cache/QueryResultCacheFactory.js.map +1 -1
- package/browser/cache/QueryResultCacheOptions.js +2 -1
- package/browser/cache/RedisQueryResultCache.js +13 -9
- package/browser/cache/RedisQueryResultCache.js.map +1 -1
- package/browser/cli-ts-node-commonjs.js +3 -1
- package/browser/cli-ts-node-commonjs.js.map +1 -1
- package/browser/cli-ts-node-esm.js +4 -2
- package/browser/cli-ts-node-esm.js.map +1 -1
- package/browser/common/DeepPartial.js +2 -1
- package/browser/common/DeepPartial.js.map +1 -1
- package/browser/common/EntityTarget.js +2 -1
- package/browser/common/MixedList.js +2 -1
- package/browser/common/NonNever.js +2 -1
- package/browser/common/ObjectLiteral.js +2 -1
- package/browser/common/ObjectType.js +2 -1
- package/browser/common/PickKeysByType.js +2 -1
- package/browser/common/PrimitiveCriteria.js +2 -1
- package/browser/common/RelationType.js +2 -1
- package/browser/connection/BaseConnectionOptions.js +2 -1
- package/browser/connection/Connection.js +6 -2
- package/browser/connection/Connection.js.map +1 -1
- package/browser/connection/ConnectionManager.js +11 -7
- package/browser/connection/ConnectionManager.js.map +1 -1
- package/browser/connection/ConnectionMetadataBuilder.js +27 -23
- package/browser/connection/ConnectionMetadataBuilder.js.map +1 -1
- package/browser/connection/ConnectionOptions.js +2 -1
- package/browser/connection/ConnectionOptionsReader.js +55 -30
- package/browser/connection/ConnectionOptionsReader.js.map +1 -1
- package/browser/connection/options-reader/ConnectionOptionsEnvReader.js +39 -35
- package/browser/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
- package/browser/container.d.ts +3 -3
- package/browser/container.js +9 -5
- package/browser/container.js.map +1 -1
- package/browser/data-source/BaseDataSourceOptions.js +2 -1
- package/browser/data-source/DataSource.d.ts +23 -7
- package/browser/data-source/DataSource.js +101 -77
- package/browser/data-source/DataSource.js.map +1 -1
- package/browser/data-source/DataSourceOptions.js +2 -1
- package/browser/data-source/index.js +5 -2
- package/browser/data-source/index.js.map +1 -1
- package/browser/decorator/Check.js +8 -5
- package/browser/decorator/Check.js.map +1 -1
- package/browser/decorator/EntityRepository.js +6 -3
- package/browser/decorator/EntityRepository.js.map +1 -1
- package/browser/decorator/Exclusion.d.ts +3 -2
- package/browser/decorator/Exclusion.js +13 -7
- package/browser/decorator/Exclusion.js.map +1 -1
- package/browser/decorator/ForeignKey.d.ts +9 -0
- package/browser/decorator/ForeignKey.js +13 -6
- package/browser/decorator/ForeignKey.js.map +1 -1
- package/browser/decorator/Generated.js +6 -3
- package/browser/decorator/Generated.js.map +1 -1
- package/browser/decorator/Index.js +10 -6
- package/browser/decorator/Index.js.map +1 -1
- package/browser/decorator/Unique.js +9 -6
- package/browser/decorator/Unique.js.map +1 -1
- package/browser/decorator/columns/Column.js +11 -8
- package/browser/decorator/columns/Column.js.map +1 -1
- package/browser/decorator/columns/CreateDateColumn.js +6 -3
- package/browser/decorator/columns/CreateDateColumn.js.map +1 -1
- package/browser/decorator/columns/DeleteDateColumn.js +6 -3
- package/browser/decorator/columns/DeleteDateColumn.js.map +1 -1
- package/browser/decorator/columns/ObjectIdColumn.js +6 -3
- package/browser/decorator/columns/ObjectIdColumn.js.map +1 -1
- package/browser/decorator/columns/PrimaryColumn.js +11 -8
- package/browser/decorator/columns/PrimaryColumn.js.map +1 -1
- package/browser/decorator/columns/PrimaryGeneratedColumn.js +10 -7
- package/browser/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
- package/browser/decorator/columns/UpdateDateColumn.js +6 -3
- package/browser/decorator/columns/UpdateDateColumn.js.map +1 -1
- package/browser/decorator/columns/VersionColumn.js +6 -3
- package/browser/decorator/columns/VersionColumn.js.map +1 -1
- package/browser/decorator/columns/ViewColumn.js +6 -3
- package/browser/decorator/columns/ViewColumn.js.map +1 -1
- package/browser/decorator/columns/VirtualColumn.js +8 -5
- package/browser/decorator/columns/VirtualColumn.js.map +1 -1
- package/browser/decorator/entity/ChildEntity.js +7 -4
- package/browser/decorator/entity/ChildEntity.js.map +1 -1
- package/browser/decorator/entity/Entity.js +8 -5
- package/browser/decorator/entity/Entity.js.map +1 -1
- package/browser/decorator/entity/TableInheritance.js +6 -3
- package/browser/decorator/entity/TableInheritance.js.map +1 -1
- package/browser/decorator/entity-view/ViewEntity.js +8 -5
- package/browser/decorator/entity-view/ViewEntity.js.map +1 -1
- package/browser/decorator/listeners/AfterInsert.js +8 -5
- package/browser/decorator/listeners/AfterInsert.js.map +1 -1
- package/browser/decorator/listeners/AfterLoad.js +8 -5
- package/browser/decorator/listeners/AfterLoad.js.map +1 -1
- package/browser/decorator/listeners/AfterRecover.js +8 -5
- package/browser/decorator/listeners/AfterRecover.js.map +1 -1
- package/browser/decorator/listeners/AfterRemove.js +8 -5
- package/browser/decorator/listeners/AfterRemove.js.map +1 -1
- package/browser/decorator/listeners/AfterSoftRemove.js +8 -5
- package/browser/decorator/listeners/AfterSoftRemove.js.map +1 -1
- package/browser/decorator/listeners/AfterUpdate.js +8 -5
- package/browser/decorator/listeners/AfterUpdate.js.map +1 -1
- package/browser/decorator/listeners/BeforeInsert.js +8 -5
- package/browser/decorator/listeners/BeforeInsert.js.map +1 -1
- package/browser/decorator/listeners/BeforeRecover.js +8 -5
- package/browser/decorator/listeners/BeforeRecover.js.map +1 -1
- package/browser/decorator/listeners/BeforeRemove.js +8 -5
- package/browser/decorator/listeners/BeforeRemove.js.map +1 -1
- package/browser/decorator/listeners/BeforeSoftRemove.js +8 -5
- package/browser/decorator/listeners/BeforeSoftRemove.js.map +1 -1
- package/browser/decorator/listeners/BeforeUpdate.js +8 -5
- package/browser/decorator/listeners/BeforeUpdate.js.map +1 -1
- package/browser/decorator/listeners/EventSubscriber.js +6 -3
- package/browser/decorator/listeners/EventSubscriber.js.map +1 -1
- package/browser/decorator/options/ColumnCommonOptions.js +2 -1
- package/browser/decorator/options/ColumnEmbeddedOptions.js +2 -1
- package/browser/decorator/options/ColumnEnumOptions.js +2 -1
- package/browser/decorator/options/ColumnHstoreOptions.js +2 -1
- package/browser/decorator/options/ColumnNumericOptions.js +2 -1
- package/browser/decorator/options/ColumnOptions.js +2 -1
- package/browser/decorator/options/ColumnUnsignedOptions.js +2 -1
- package/browser/decorator/options/ColumnWithLengthOptions.js +2 -1
- package/browser/decorator/options/EntityOptions.js +2 -1
- package/browser/decorator/options/ExclusionOptions.d.ts +10 -0
- package/browser/decorator/options/ExclusionOptions.js +4 -0
- package/browser/decorator/options/ExclusionOptions.js.map +1 -0
- package/browser/decorator/options/ForeignKeyOptions.js +2 -1
- package/browser/decorator/options/IndexOptions.d.ts +7 -0
- package/browser/decorator/options/IndexOptions.js +2 -1
- package/browser/decorator/options/IndexOptions.js.map +1 -1
- package/browser/decorator/options/JoinColumnOptions.js +2 -1
- package/browser/decorator/options/JoinTableMultipleColumnsOptions.js +2 -1
- package/browser/decorator/options/JoinTableOptions.js +2 -1
- package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.js +2 -1
- package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.js +2 -1
- package/browser/decorator/options/PrimaryGeneratedColumnUUIDOptions.js +2 -1
- package/browser/decorator/options/RelationOptions.js +2 -1
- package/browser/decorator/options/SpatialColumnOptions.js +2 -1
- package/browser/decorator/options/TransactionOptions.js +2 -1
- package/browser/decorator/options/UniqueOptions.js +2 -1
- package/browser/decorator/options/ValueTransformer.js +2 -1
- package/browser/decorator/options/ViewColumnOptions.js +2 -1
- package/browser/decorator/options/ViewEntityOptions.js +2 -1
- package/browser/decorator/options/VirtualColumnOptions.js +2 -1
- package/browser/decorator/relations/JoinColumn.js +6 -3
- package/browser/decorator/relations/JoinColumn.js.map +1 -1
- package/browser/decorator/relations/JoinTable.js +6 -3
- package/browser/decorator/relations/JoinTable.js.map +1 -1
- package/browser/decorator/relations/ManyToMany.js +8 -5
- package/browser/decorator/relations/ManyToMany.js.map +1 -1
- package/browser/decorator/relations/ManyToOne.js +8 -5
- package/browser/decorator/relations/ManyToOne.js.map +1 -1
- package/browser/decorator/relations/OneToMany.js +6 -3
- package/browser/decorator/relations/OneToMany.js.map +1 -1
- package/browser/decorator/relations/OneToOne.js +8 -5
- package/browser/decorator/relations/OneToOne.js.map +1 -1
- package/browser/decorator/relations/RelationCount.js +6 -3
- package/browser/decorator/relations/RelationCount.js.map +1 -1
- package/browser/decorator/relations/RelationId.js +6 -3
- package/browser/decorator/relations/RelationId.js.map +1 -1
- package/browser/decorator/tree/Tree.js +6 -3
- package/browser/decorator/tree/Tree.js.map +1 -1
- package/browser/decorator/tree/TreeChildren.js +6 -3
- package/browser/decorator/tree/TreeChildren.js.map +1 -1
- package/browser/decorator/tree/TreeLevelColumn.js +6 -3
- package/browser/decorator/tree/TreeLevelColumn.js.map +1 -1
- package/browser/decorator/tree/TreeParent.js +6 -3
- package/browser/decorator/tree/TreeParent.js.map +1 -1
- package/browser/driver/Driver.d.ts +11 -0
- package/browser/driver/Driver.js +2 -1
- package/browser/driver/Driver.js.map +1 -1
- package/browser/driver/DriverFactory.d.ts +2 -0
- package/browser/driver/DriverFactory.js +46 -40
- package/browser/driver/DriverFactory.js.map +1 -1
- package/browser/driver/DriverUtils.js +10 -6
- package/browser/driver/DriverUtils.js.map +1 -1
- package/browser/driver/Query.js +5 -1
- package/browser/driver/Query.js.map +1 -1
- package/browser/driver/SqlInMemory.js +5 -1
- package/browser/driver/SqlInMemory.js.map +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlConnection.js +6 -2
- package/browser/driver/aurora-mysql/AuroraMysqlConnection.js.map +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.js +2 -1
- package/browser/driver/aurora-mysql/AuroraMysqlConnectionOptions.d.ts +0 -1
- package/browser/driver/aurora-mysql/AuroraMysqlConnectionOptions.js +2 -1
- package/browser/driver/aurora-mysql/AuroraMysqlConnectionOptions.js.map +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlDriver.js +57 -40
- package/browser/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +123 -0
- package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js +288 -158
- package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
- package/browser/driver/aurora-postgres/AuroraPostgresConnectionOptions.js +2 -1
- package/browser/driver/aurora-postgres/AuroraPostgresDriver.js +16 -12
- package/browser/driver/aurora-postgres/AuroraPostgresDriver.js.map +1 -1
- package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.d.ts +0 -4
- package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.js +16 -12
- package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
- package/browser/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js +2 -1
- package/browser/driver/better-sqlite3/BetterSqlite3Driver.d.ts +0 -4
- package/browser/driver/better-sqlite3/BetterSqlite3Driver.js +24 -19
- package/browser/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
- package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js +16 -12
- package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
- package/browser/driver/capacitor/CapacitorConnectionOptions.js +2 -1
- package/browser/driver/capacitor/CapacitorDriver.js +10 -6
- package/browser/driver/capacitor/CapacitorDriver.js.map +1 -1
- package/browser/driver/capacitor/CapacitorQueryRunner.js +15 -11
- package/browser/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachConnectionCredentialsOptions.js +2 -1
- package/browser/driver/cockroachdb/CockroachConnectionOptions.js +2 -1
- package/browser/driver/cockroachdb/CockroachConnectionOptions.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachDriver.d.ts +2 -2
- package/browser/driver/cockroachdb/CockroachDriver.js +61 -47
- package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +1 -0
- package/browser/driver/cockroachdb/CockroachQueryRunner.js +226 -219
- package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/browser/driver/cordova/CordovaConnectionOptions.js +2 -1
- package/browser/driver/cordova/CordovaDriver.js +10 -6
- package/browser/driver/cordova/CordovaDriver.js.map +1 -1
- package/browser/driver/cordova/CordovaQueryRunner.d.ts +9 -3
- package/browser/driver/cordova/CordovaQueryRunner.js +30 -19
- package/browser/driver/cordova/CordovaQueryRunner.js.map +1 -1
- package/browser/driver/expo/ExpoConnectionOptions.js +2 -1
- package/browser/driver/expo/ExpoDriver.d.ts +1 -0
- package/browser/driver/expo/ExpoDriver.js +15 -4
- package/browser/driver/expo/ExpoDriver.js.map +1 -1
- package/browser/driver/expo/ExpoQueryRunner.js +16 -12
- package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
- package/browser/driver/mongodb/MongoConnectionOptions.js +2 -1
- package/browser/driver/mongodb/MongoDriver.js +35 -31
- package/browser/driver/mongodb/MongoDriver.js.map +1 -1
- package/browser/driver/mongodb/MongoQueryRunner.d.ts +1 -0
- package/browser/driver/mongodb/MongoQueryRunner.js +72 -65
- package/browser/driver/mongodb/MongoQueryRunner.js.map +1 -1
- package/browser/driver/mongodb/bson.typings.js +2 -1
- package/browser/driver/mongodb/typings.d.ts +7 -1
- package/browser/driver/mongodb/typings.js +22 -22
- package/browser/driver/mongodb/typings.js.map +1 -1
- package/browser/driver/mysql/MysqlConnectionCredentialsOptions.js +2 -1
- package/browser/driver/mysql/MysqlConnectionOptions.d.ts +1 -8
- package/browser/driver/mysql/MysqlConnectionOptions.js +2 -1
- package/browser/driver/mysql/MysqlConnectionOptions.js.map +1 -1
- package/browser/driver/mysql/MysqlDriver.d.ts +0 -8
- package/browser/driver/mysql/MysqlDriver.js +84 -128
- package/browser/driver/mysql/MysqlDriver.js.map +1 -1
- package/browser/driver/mysql/MysqlQueryRunner.js +194 -187
- package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/browser/driver/nativescript/NativescriptConnectionOptions.js +2 -1
- package/browser/driver/nativescript/NativescriptDriver.js +10 -6
- package/browser/driver/nativescript/NativescriptDriver.js.map +1 -1
- package/browser/driver/nativescript/NativescriptQueryRunner.js +14 -10
- package/browser/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
- package/browser/driver/oracle/OracleConnectionCredentialsOptions.js +2 -1
- package/browser/driver/oracle/OracleConnectionOptions.js +2 -1
- package/browser/driver/oracle/OracleConnectionOptions.js.map +1 -1
- package/browser/driver/oracle/OracleDriver.d.ts +2 -2
- package/browser/driver/oracle/OracleDriver.js +50 -43
- package/browser/driver/oracle/OracleDriver.js.map +1 -1
- package/browser/driver/oracle/OracleQueryRunner.d.ts +129 -0
- package/browser/driver/oracle/OracleQueryRunner.js +305 -169
- package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/browser/driver/postgres/PostgresConnectionCredentialsOptions.js +2 -1
- package/browser/driver/postgres/PostgresConnectionOptions.d.ts +4 -1
- package/browser/driver/postgres/PostgresConnectionOptions.js +2 -1
- package/browser/driver/postgres/PostgresConnectionOptions.js.map +1 -1
- package/browser/driver/postgres/PostgresDriver.d.ts +12 -2
- package/browser/driver/postgres/PostgresDriver.js +144 -52
- package/browser/driver/postgres/PostgresDriver.js.map +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.d.ts +166 -0
- package/browser/driver/postgres/PostgresQueryRunner.js +490 -280
- package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/browser/driver/react-native/ReactNativeConnectionOptions.d.ts +4 -0
- package/browser/driver/react-native/ReactNativeConnectionOptions.js +2 -1
- package/browser/driver/react-native/ReactNativeConnectionOptions.js.map +1 -1
- package/browser/driver/react-native/ReactNativeDriver.js +38 -33
- package/browser/driver/react-native/ReactNativeDriver.js.map +1 -1
- package/browser/driver/react-native/ReactNativeQueryRunner.js +16 -12
- package/browser/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
- package/browser/driver/sap/SapConnectionCredentialsOptions.js +2 -1
- package/browser/driver/sap/SapConnectionOptions.d.ts +8 -1
- package/browser/driver/sap/SapConnectionOptions.js +2 -1
- package/browser/driver/sap/SapConnectionOptions.js.map +1 -1
- package/browser/driver/sap/SapDriver.js +54 -54
- package/browser/driver/sap/SapDriver.js.map +1 -1
- package/browser/driver/sap/SapQueryRunner.js +176 -169
- package/browser/driver/sap/SapQueryRunner.js.map +1 -1
- package/browser/driver/spanner/SpannerConnectionCredentialsOptions.js +2 -1
- package/browser/driver/spanner/SpannerConnectionOptions.js +2 -1
- package/browser/driver/spanner/SpannerConnectionOptions.js.map +1 -1
- package/browser/driver/spanner/SpannerDriver.d.ts +2 -2
- package/browser/driver/spanner/SpannerDriver.js +33 -29
- package/browser/driver/spanner/SpannerDriver.js.map +1 -1
- package/browser/driver/spanner/SpannerQueryRunner.d.ts +123 -0
- package/browser/driver/spanner/SpannerQueryRunner.js +255 -125
- package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -1
- package/browser/driver/sqlite/SqliteConnectionOptions.js +2 -1
- package/browser/driver/sqlite/SqliteDriver.d.ts +0 -4
- package/browser/driver/sqlite/SqliteDriver.js +22 -17
- package/browser/driver/sqlite/SqliteDriver.js.map +1 -1
- package/browser/driver/sqlite/SqliteQueryRunner.js +18 -14
- package/browser/driver/sqlite/SqliteQueryRunner.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +41 -33
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +113 -0
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +232 -115
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/browser/driver/sqljs/SqljsConnectionOptions.js +2 -1
- package/browser/driver/sqljs/SqljsDriver.js +31 -27
- package/browser/driver/sqljs/SqljsDriver.js.map +1 -1
- package/browser/driver/sqljs/SqljsQueryRunner.js +16 -12
- package/browser/driver/sqljs/SqljsQueryRunner.js.map +1 -1
- package/browser/driver/sqlserver/MssqlParameter.d.ts +0 -1
- package/browser/driver/sqlserver/MssqlParameter.js +5 -2
- package/browser/driver/sqlserver/MssqlParameter.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerConnectionCredentialsOptions.js +2 -1
- package/browser/driver/sqlserver/SqlServerConnectionOptions.js +2 -1
- package/browser/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerDriver.d.ts +2 -2
- package/browser/driver/sqlserver/SqlServerDriver.js +58 -54
- package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerQueryRunner.d.ts +141 -0
- package/browser/driver/sqlserver/SqlServerQueryRunner.js +358 -210
- package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js +2 -1
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryDefaultAuthentication.js +2 -1
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js +2 -1
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js +2 -1
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js +2 -1
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.js +2 -1
- package/browser/driver/sqlserver/authentication/DefaultAuthentication.js +2 -1
- package/browser/driver/sqlserver/authentication/NtlmAuthentication.js +2 -1
- package/browser/driver/types/ColumnTypes.js +2 -1
- package/browser/driver/types/CteCapabilities.js +2 -1
- package/browser/driver/types/DataTypeDefaults.js +2 -1
- package/browser/driver/types/DatabaseType.js +2 -1
- package/browser/driver/types/GeoJsonTypes.js +2 -1
- package/browser/driver/types/IsolationLevel.js +2 -1
- package/browser/driver/types/MappedColumnTypes.js +2 -1
- package/browser/driver/types/MetadataTableType.js +5 -2
- package/browser/driver/types/MetadataTableType.js.map +1 -1
- package/browser/driver/types/ReplicationMode.js +2 -1
- package/browser/driver/types/UpsertType.js +2 -1
- package/browser/entity-manager/EntityManager.d.ts +82 -8
- package/browser/entity-manager/EntityManager.js +197 -86
- package/browser/entity-manager/EntityManager.js.map +1 -1
- package/browser/entity-manager/EntityManagerFactory.js +11 -7
- package/browser/entity-manager/EntityManagerFactory.js.map +1 -1
- package/browser/entity-manager/MongoEntityManager.js +29 -25
- package/browser/entity-manager/MongoEntityManager.js.map +1 -1
- package/browser/entity-manager/SqljsEntityManager.js +6 -2
- package/browser/entity-manager/SqljsEntityManager.js.map +1 -1
- package/browser/entity-schema/EntitySchema.js +5 -1
- package/browser/entity-schema/EntitySchema.js.map +1 -1
- package/browser/entity-schema/EntitySchemaCheckOptions.js +2 -1
- package/browser/entity-schema/EntitySchemaColumnForeignKeyOptions.js +2 -1
- package/browser/entity-schema/EntitySchemaColumnOptions.js +2 -1
- package/browser/entity-schema/EntitySchemaEmbeddedColumnOptions.js +5 -1
- package/browser/entity-schema/EntitySchemaEmbeddedColumnOptions.js.map +1 -1
- package/browser/entity-schema/EntitySchemaEmbeddedError.js +6 -2
- package/browser/entity-schema/EntitySchemaEmbeddedError.js.map +1 -1
- package/browser/entity-schema/EntitySchemaExclusionOptions.d.ts +5 -0
- package/browser/entity-schema/EntitySchemaExclusionOptions.js +2 -1
- package/browser/entity-schema/EntitySchemaExclusionOptions.js.map +1 -1
- package/browser/entity-schema/EntitySchemaForeignKeyOptions.js +2 -1
- package/browser/entity-schema/EntitySchemaIndexOptions.js +2 -1
- package/browser/entity-schema/EntitySchemaInheritanceOptions.js +2 -1
- package/browser/entity-schema/EntitySchemaOptions.js +5 -1
- package/browser/entity-schema/EntitySchemaOptions.js.map +1 -1
- package/browser/entity-schema/EntitySchemaRelationIdOptions.js +2 -1
- package/browser/entity-schema/EntitySchemaRelationOptions.js +2 -1
- package/browser/entity-schema/EntitySchemaTransformer.js +10 -5
- package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/browser/entity-schema/EntitySchemaUniqueOptions.js +2 -1
- package/browser/error/AlreadyHasActiveConnectionError.js +6 -2
- package/browser/error/AlreadyHasActiveConnectionError.js.map +1 -1
- package/browser/error/CannotAttachTreeChildrenEntityError.js +6 -2
- package/browser/error/CannotAttachTreeChildrenEntityError.js.map +1 -1
- package/browser/error/CannotConnectAlreadyConnectedError.js +6 -2
- package/browser/error/CannotConnectAlreadyConnectedError.js.map +1 -1
- package/browser/error/CannotCreateEntityIdMapError.js +6 -2
- package/browser/error/CannotCreateEntityIdMapError.js.map +1 -1
- package/browser/error/CannotDetermineEntityError.js +6 -2
- package/browser/error/CannotDetermineEntityError.js.map +1 -1
- package/browser/error/CannotExecuteNotConnectedError.js +6 -2
- package/browser/error/CannotExecuteNotConnectedError.js.map +1 -1
- package/browser/error/CannotGetEntityManagerNotConnectedError.js +6 -2
- package/browser/error/CannotGetEntityManagerNotConnectedError.js.map +1 -1
- package/browser/error/CannotReflectMethodParameterTypeError.js +6 -2
- package/browser/error/CannotReflectMethodParameterTypeError.js.map +1 -1
- package/browser/error/CircularRelationsError.js +6 -2
- package/browser/error/CircularRelationsError.js.map +1 -1
- package/browser/error/ColumnTypeUndefinedError.js +6 -2
- package/browser/error/ColumnTypeUndefinedError.js.map +1 -1
- package/browser/error/ConnectionIsNotSetError.js +6 -2
- package/browser/error/ConnectionIsNotSetError.js.map +1 -1
- package/browser/error/ConnectionNotFoundError.js +6 -2
- package/browser/error/ConnectionNotFoundError.js.map +1 -1
- package/browser/error/CustomRepositoryCannotInheritRepositoryError.js +6 -2
- package/browser/error/CustomRepositoryCannotInheritRepositoryError.js.map +1 -1
- package/browser/error/CustomRepositoryDoesNotHaveEntityError.js +6 -2
- package/browser/error/CustomRepositoryDoesNotHaveEntityError.js.map +1 -1
- package/browser/error/CustomRepositoryNotFoundError.js +6 -2
- package/browser/error/CustomRepositoryNotFoundError.js.map +1 -1
- package/browser/error/DataTypeNotSupportedError.js +6 -2
- package/browser/error/DataTypeNotSupportedError.js.map +1 -1
- package/browser/error/DriverOptionNotSetError.js +6 -2
- package/browser/error/DriverOptionNotSetError.js.map +1 -1
- package/browser/error/DriverPackageNotInstalledError.js +6 -2
- package/browser/error/DriverPackageNotInstalledError.js.map +1 -1
- package/browser/error/EntityMetadataNotFoundError.js +10 -6
- package/browser/error/EntityMetadataNotFoundError.js.map +1 -1
- package/browser/error/EntityNotFoundError.js +10 -6
- package/browser/error/EntityNotFoundError.js.map +1 -1
- package/browser/error/EntityPropertyNotFoundError.js +6 -2
- package/browser/error/EntityPropertyNotFoundError.js.map +1 -1
- package/browser/error/FindRelationsNotFoundError.js +6 -2
- package/browser/error/FindRelationsNotFoundError.js.map +1 -1
- package/browser/error/ForbiddenTransactionModeOverrideError.js +6 -2
- package/browser/error/ForbiddenTransactionModeOverrideError.js.map +1 -1
- package/browser/error/InitializedRelationError.js +6 -2
- package/browser/error/InitializedRelationError.js.map +1 -1
- package/browser/error/InsertValuesMissingError.js +6 -2
- package/browser/error/InsertValuesMissingError.js.map +1 -1
- package/browser/error/LimitOnUpdateNotSupportedError.js +6 -2
- package/browser/error/LimitOnUpdateNotSupportedError.js.map +1 -1
- package/browser/error/LockNotSupportedOnGivenDriverError.js +6 -2
- package/browser/error/LockNotSupportedOnGivenDriverError.js.map +1 -1
- package/browser/error/MetadataAlreadyExistsError.js +6 -2
- package/browser/error/MetadataAlreadyExistsError.js.map +1 -1
- package/browser/error/MetadataWithSuchNameAlreadyExistsError.js +6 -2
- package/browser/error/MetadataWithSuchNameAlreadyExistsError.js.map +1 -1
- package/browser/error/MissingDeleteDateColumnError.js +6 -2
- package/browser/error/MissingDeleteDateColumnError.js.map +1 -1
- package/browser/error/MissingDriverError.js +6 -2
- package/browser/error/MissingDriverError.js.map +1 -1
- package/browser/error/MissingJoinColumnError.js +6 -2
- package/browser/error/MissingJoinColumnError.js.map +1 -1
- package/browser/error/MissingJoinTableError.js +6 -2
- package/browser/error/MissingJoinTableError.js.map +1 -1
- package/browser/error/MissingPrimaryColumnError.js +6 -2
- package/browser/error/MissingPrimaryColumnError.js.map +1 -1
- package/browser/error/MustBeEntityError.js +6 -2
- package/browser/error/MustBeEntityError.js.map +1 -1
- package/browser/error/NestedSetMultipleRootError.js +6 -2
- package/browser/error/NestedSetMultipleRootError.js.map +1 -1
- package/browser/error/NoConnectionForRepositoryError.js +6 -2
- package/browser/error/NoConnectionForRepositoryError.js.map +1 -1
- package/browser/error/NoConnectionOptionError.js +6 -2
- package/browser/error/NoConnectionOptionError.js.map +1 -1
- package/browser/error/NoNeedToReleaseEntityManagerError.js +6 -2
- package/browser/error/NoNeedToReleaseEntityManagerError.js.map +1 -1
- package/browser/error/NoVersionOrUpdateDateColumnError.js +6 -2
- package/browser/error/NoVersionOrUpdateDateColumnError.js.map +1 -1
- package/browser/error/OffsetWithoutLimitNotSupportedError.js +6 -2
- package/browser/error/OffsetWithoutLimitNotSupportedError.js.map +1 -1
- package/browser/error/OptimisticLockCanNotBeUsedError.js +6 -2
- package/browser/error/OptimisticLockCanNotBeUsedError.js.map +1 -1
- package/browser/error/OptimisticLockVersionMismatchError.js +6 -2
- package/browser/error/OptimisticLockVersionMismatchError.js.map +1 -1
- package/browser/error/PersistedEntityNotFoundError.js +6 -2
- package/browser/error/PersistedEntityNotFoundError.js.map +1 -1
- package/browser/error/PessimisticLockTransactionRequiredError.js +6 -2
- package/browser/error/PessimisticLockTransactionRequiredError.js.map +1 -1
- package/browser/error/PrimaryColumnCannotBeNullableError.js +6 -2
- package/browser/error/PrimaryColumnCannotBeNullableError.js.map +1 -1
- package/browser/error/QueryFailedError.js +8 -4
- package/browser/error/QueryFailedError.js.map +1 -1
- package/browser/error/QueryRunnerAlreadyReleasedError.js +6 -2
- package/browser/error/QueryRunnerAlreadyReleasedError.js.map +1 -1
- package/browser/error/QueryRunnerProviderAlreadyReleasedError.js +6 -2
- package/browser/error/QueryRunnerProviderAlreadyReleasedError.js.map +1 -1
- package/browser/error/RepositoryNotTreeError.js +10 -6
- package/browser/error/RepositoryNotTreeError.js.map +1 -1
- package/browser/error/ReturningStatementNotSupportedError.js +6 -2
- package/browser/error/ReturningStatementNotSupportedError.js.map +1 -1
- package/browser/error/SubjectRemovedAndUpdatedError.js +6 -2
- package/browser/error/SubjectRemovedAndUpdatedError.js.map +1 -1
- package/browser/error/SubjectWithoutIdentifierError.js +6 -2
- package/browser/error/SubjectWithoutIdentifierError.js.map +1 -1
- package/browser/error/TransactionAlreadyStartedError.js +6 -2
- package/browser/error/TransactionAlreadyStartedError.js.map +1 -1
- package/browser/error/TransactionNotStartedError.js +6 -2
- package/browser/error/TransactionNotStartedError.js.map +1 -1
- package/browser/error/TreeRepositoryNotSupportedError.js +6 -2
- package/browser/error/TreeRepositoryNotSupportedError.js.map +1 -1
- package/browser/error/TypeORMError.js +5 -1
- package/browser/error/TypeORMError.js.map +1 -1
- package/browser/error/UpdateValuesMissingError.js +6 -2
- package/browser/error/UpdateValuesMissingError.js.map +1 -1
- package/browser/error/UsingJoinColumnIsNotAllowedError.js +6 -2
- package/browser/error/UsingJoinColumnIsNotAllowedError.js.map +1 -1
- package/browser/error/UsingJoinColumnOnlyOnOneSideAllowedError.js +6 -2
- package/browser/error/UsingJoinColumnOnlyOnOneSideAllowedError.js.map +1 -1
- package/browser/error/UsingJoinTableIsNotAllowedError.js +6 -2
- package/browser/error/UsingJoinTableIsNotAllowedError.js.map +1 -1
- package/browser/error/UsingJoinTableOnlyOnOneSideAllowedError.js +6 -2
- package/browser/error/UsingJoinTableOnlyOnOneSideAllowedError.js.map +1 -1
- package/browser/error/index.js +64 -61
- package/browser/error/index.js.map +1 -1
- package/browser/find-options/EqualOperator.js +6 -2
- package/browser/find-options/EqualOperator.js.map +1 -1
- package/browser/find-options/FindManyOptions.js +2 -1
- package/browser/find-options/FindOneOptions.js +2 -1
- package/browser/find-options/FindOperator.js +15 -11
- package/browser/find-options/FindOperator.js.map +1 -1
- package/browser/find-options/FindOperatorType.js +2 -1
- package/browser/find-options/FindOptionsOrder.js +2 -1
- package/browser/find-options/FindOptionsOrder.js.map +1 -1
- package/browser/find-options/FindOptionsRelations.d.ts +0 -1
- package/browser/find-options/FindOptionsRelations.js +2 -1
- package/browser/find-options/FindOptionsRelations.js.map +1 -1
- package/browser/find-options/FindOptionsSelect.d.ts +0 -1
- package/browser/find-options/FindOptionsSelect.js +2 -1
- package/browser/find-options/FindOptionsSelect.js.map +1 -1
- package/browser/find-options/FindOptionsUtils.js +12 -8
- package/browser/find-options/FindOptionsUtils.js.map +1 -1
- package/browser/find-options/FindOptionsWhere.js +2 -1
- package/browser/find-options/FindOptionsWhere.js.map +1 -1
- package/browser/find-options/FindTreeOptions.js +2 -1
- package/browser/find-options/JoinOptions.js +2 -1
- package/browser/find-options/OrderByCondition.js +2 -1
- package/browser/find-options/mongodb/MongoFindManyOptions.js +2 -1
- package/browser/find-options/mongodb/MongoFindManyOptions.js.map +1 -1
- package/browser/find-options/mongodb/MongoFindOneOptions.js +2 -1
- package/browser/find-options/operator/And.js +6 -3
- package/browser/find-options/operator/And.js.map +1 -1
- package/browser/find-options/operator/Any.js +6 -3
- package/browser/find-options/operator/Any.js.map +1 -1
- package/browser/find-options/operator/ArrayContainedBy.js +6 -3
- package/browser/find-options/operator/ArrayContainedBy.js.map +1 -1
- package/browser/find-options/operator/ArrayContains.js +6 -3
- package/browser/find-options/operator/ArrayContains.js.map +1 -1
- package/browser/find-options/operator/ArrayOverlap.js +6 -3
- package/browser/find-options/operator/ArrayOverlap.js.map +1 -1
- package/browser/find-options/operator/Between.js +6 -3
- package/browser/find-options/operator/Between.js.map +1 -1
- package/browser/find-options/operator/Equal.js +6 -3
- package/browser/find-options/operator/Equal.js.map +1 -1
- package/browser/find-options/operator/ILike.js +6 -3
- package/browser/find-options/operator/ILike.js.map +1 -1
- package/browser/find-options/operator/In.js +6 -3
- package/browser/find-options/operator/In.js.map +1 -1
- package/browser/find-options/operator/IsNull.js +6 -3
- package/browser/find-options/operator/IsNull.js.map +1 -1
- package/browser/find-options/operator/JsonContains.js +6 -3
- package/browser/find-options/operator/JsonContains.js.map +1 -1
- package/browser/find-options/operator/LessThan.js +6 -3
- package/browser/find-options/operator/LessThan.js.map +1 -1
- package/browser/find-options/operator/LessThanOrEqual.js +6 -3
- package/browser/find-options/operator/LessThanOrEqual.js.map +1 -1
- package/browser/find-options/operator/Like.js +6 -3
- package/browser/find-options/operator/Like.js.map +1 -1
- package/browser/find-options/operator/MoreThan.js +6 -3
- package/browser/find-options/operator/MoreThan.js.map +1 -1
- package/browser/find-options/operator/MoreThanOrEqual.js +6 -3
- package/browser/find-options/operator/MoreThanOrEqual.js.map +1 -1
- package/browser/find-options/operator/Not.js +6 -3
- package/browser/find-options/operator/Not.js.map +1 -1
- package/browser/find-options/operator/Or.js +6 -3
- package/browser/find-options/operator/Or.js.map +1 -1
- package/browser/find-options/operator/Raw.js +7 -4
- package/browser/find-options/operator/Raw.js.map +1 -1
- package/browser/globals.js +42 -26
- package/browser/globals.js.map +1 -1
- package/browser/index.d.ts +3 -0
- package/browser/index.js +189 -158
- package/browser/index.js.map +1 -1
- package/browser/logger/AbstractLogger.js +8 -4
- package/browser/logger/AbstractLogger.js.map +1 -1
- package/browser/logger/AdvancedConsoleLogger.js +14 -10
- package/browser/logger/AdvancedConsoleLogger.js.map +1 -1
- package/browser/logger/DebugLogger.js +16 -12
- package/browser/logger/DebugLogger.js.map +1 -1
- package/browser/logger/FileLogger.js +12 -7
- package/browser/logger/FileLogger.js.map +1 -1
- package/browser/logger/FormattedConsoleLogger.js +14 -10
- package/browser/logger/FormattedConsoleLogger.js.map +1 -1
- package/browser/logger/Logger.js +2 -1
- package/browser/logger/LoggerFactory.js +18 -14
- package/browser/logger/LoggerFactory.js.map +1 -1
- package/browser/logger/LoggerOptions.js +2 -1
- package/browser/logger/SimpleConsoleLogger.js +6 -2
- package/browser/logger/SimpleConsoleLogger.js.map +1 -1
- package/browser/metadata/CheckMetadata.js +5 -1
- package/browser/metadata/CheckMetadata.js.map +1 -1
- package/browser/metadata/ColumnMetadata.js +42 -28
- package/browser/metadata/ColumnMetadata.js.map +1 -1
- package/browser/metadata/EmbeddedMetadata.js +7 -3
- package/browser/metadata/EmbeddedMetadata.js.map +1 -1
- package/browser/metadata/EntityListenerMetadata.js +5 -1
- package/browser/metadata/EntityListenerMetadata.js.map +1 -1
- package/browser/metadata/EntityMetadata.d.ts +34 -2
- package/browser/metadata/EntityMetadata.js +53 -17
- package/browser/metadata/EntityMetadata.js.map +1 -1
- package/browser/metadata/ExclusionMetadata.d.ts +5 -0
- package/browser/metadata/ExclusionMetadata.js +6 -1
- package/browser/metadata/ExclusionMetadata.js.map +1 -1
- package/browser/metadata/ForeignKeyMetadata.js +5 -1
- package/browser/metadata/ForeignKeyMetadata.js.map +1 -1
- package/browser/metadata/IndexMetadata.d.ts +7 -0
- package/browser/metadata/IndexMetadata.js +18 -4
- package/browser/metadata/IndexMetadata.js.map +1 -1
- package/browser/metadata/RelationCountMetadata.js +7 -3
- package/browser/metadata/RelationCountMetadata.js.map +1 -1
- package/browser/metadata/RelationIdMetadata.js +7 -3
- package/browser/metadata/RelationIdMetadata.js.map +1 -1
- package/browser/metadata/RelationMetadata.js +17 -13
- package/browser/metadata/RelationMetadata.js.map +1 -1
- package/browser/metadata/UniqueMetadata.js +7 -3
- package/browser/metadata/UniqueMetadata.js.map +1 -1
- package/browser/metadata/types/ClosureTreeOptions.js +2 -1
- package/browser/metadata/types/DeferrableType.js +2 -1
- package/browser/metadata/types/EventListenerTypes.js +16 -12
- package/browser/metadata/types/EventListenerTypes.js.map +1 -1
- package/browser/metadata/types/OnDeleteType.js +2 -1
- package/browser/metadata/types/OnUpdateType.js +2 -1
- package/browser/metadata/types/PropertyTypeInFunction.js +2 -1
- package/browser/metadata/types/RelationTypeInFunction.js +2 -1
- package/browser/metadata/types/RelationTypes.js +2 -1
- package/browser/metadata/types/TableTypes.js +2 -1
- package/browser/metadata/types/TreeTypes.js +2 -1
- package/browser/metadata-args/CheckMetadataArgs.js +2 -1
- package/browser/metadata-args/ColumnMetadataArgs.js +2 -1
- package/browser/metadata-args/DiscriminatorValueMetadataArgs.js +2 -1
- package/browser/metadata-args/EmbeddedMetadataArgs.js +2 -1
- package/browser/metadata-args/EntityListenerMetadataArgs.js +2 -1
- package/browser/metadata-args/EntityRepositoryMetadataArgs.js +2 -1
- package/browser/metadata-args/EntitySubscriberMetadataArgs.js +2 -1
- package/browser/metadata-args/ExclusionMetadataArgs.d.ts +5 -0
- package/browser/metadata-args/ExclusionMetadataArgs.js +2 -1
- package/browser/metadata-args/ExclusionMetadataArgs.js.map +1 -1
- package/browser/metadata-args/ForeignKeyMetadataArgs.js +2 -1
- package/browser/metadata-args/GeneratedMetadataArgs.js +2 -1
- package/browser/metadata-args/IndexMetadataArgs.d.ts +7 -0
- package/browser/metadata-args/IndexMetadataArgs.js +2 -1
- package/browser/metadata-args/IndexMetadataArgs.js.map +1 -1
- package/browser/metadata-args/InheritanceMetadataArgs.js +2 -1
- package/browser/metadata-args/JoinColumnMetadataArgs.js +2 -1
- package/browser/metadata-args/JoinTableMetadataArgs.js +2 -1
- package/browser/metadata-args/MetadataArgsStorage.js +7 -3
- package/browser/metadata-args/MetadataArgsStorage.js.map +1 -1
- package/browser/metadata-args/NamingStrategyMetadataArgs.js +2 -1
- package/browser/metadata-args/RelationCountMetadataArgs.js +2 -1
- package/browser/metadata-args/RelationIdMetadataArgs.js +2 -1
- package/browser/metadata-args/RelationMetadataArgs.js +2 -1
- package/browser/metadata-args/TableMetadataArgs.js +2 -1
- package/browser/metadata-args/TransactionEntityMetadataArgs.js +2 -1
- package/browser/metadata-args/TransactionRepositoryMetadataArgs.js +2 -1
- package/browser/metadata-args/TreeMetadataArgs.js +2 -1
- package/browser/metadata-args/UniqueMetadataArgs.js +2 -1
- package/browser/metadata-args/types/ColumnMode.js +2 -1
- package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js +17 -13
- package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
- package/browser/metadata-builder/EntityMetadataBuilder.d.ts +10 -0
- package/browser/metadata-builder/EntityMetadataBuilder.js +87 -73
- package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
- package/browser/metadata-builder/EntityMetadataValidator.js +35 -31
- package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
- package/browser/metadata-builder/JunctionEntityMetadataBuilder.d.ts +6 -0
- package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +28 -18
- package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
- package/browser/metadata-builder/MetadataUtils.js +5 -1
- package/browser/metadata-builder/MetadataUtils.js.map +1 -1
- package/browser/metadata-builder/RelationJoinColumnBuilder.js +17 -13
- package/browser/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
- package/browser/migration/Migration.js +5 -1
- package/browser/migration/Migration.js.map +1 -1
- package/browser/migration/MigrationExecutor.d.ts +14 -1
- package/browser/migration/MigrationExecutor.js +47 -22
- package/browser/migration/MigrationExecutor.js.map +1 -1
- package/browser/migration/MigrationInterface.js +2 -1
- package/browser/naming-strategy/DefaultNamingStrategy.js +20 -16
- package/browser/naming-strategy/DefaultNamingStrategy.js.map +1 -1
- package/browser/naming-strategy/LegacyOracleNamingStrategy.js +11 -7
- package/browser/naming-strategy/LegacyOracleNamingStrategy.js.map +1 -1
- package/browser/naming-strategy/NamingStrategyInterface.js +2 -1
- package/browser/persistence/EntityPersistExecutor.js +26 -22
- package/browser/persistence/EntityPersistExecutor.js.map +1 -1
- package/browser/persistence/Subject.js +11 -7
- package/browser/persistence/Subject.js.map +1 -1
- package/browser/persistence/SubjectChangeMap.js +2 -1
- package/browser/persistence/SubjectChangedColumnsComputer.d.ts +4 -0
- package/browser/persistence/SubjectChangedColumnsComputer.js +38 -28
- package/browser/persistence/SubjectChangedColumnsComputer.js.map +1 -1
- package/browser/persistence/SubjectDatabaseEntityLoader.d.ts +1 -0
- package/browser/persistence/SubjectDatabaseEntityLoader.js +12 -4
- package/browser/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
- package/browser/persistence/SubjectExecutor.d.ts +3 -0
- package/browser/persistence/SubjectExecutor.js +53 -38
- package/browser/persistence/SubjectExecutor.js.map +1 -1
- package/browser/persistence/SubjectTopologicalSorter.js +8 -4
- package/browser/persistence/SubjectTopologicalSorter.js.map +1 -1
- package/browser/persistence/subject-builder/CascadesSubjectBuilder.js +9 -5
- package/browser/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
- package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js +14 -10
- package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
- package/browser/persistence/subject-builder/OneToManySubjectBuilder.js +12 -8
- package/browser/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
- package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +10 -6
- package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
- package/browser/persistence/tree/ClosureSubjectExecutor.js +10 -6
- package/browser/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
- package/browser/persistence/tree/MaterializedPathSubjectExecutor.js +13 -8
- package/browser/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
- package/browser/persistence/tree/NestedSetSubjectExecutor.js +12 -8
- package/browser/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
- package/browser/platform/BrowserConnectionOptionsReaderDummy.js +11 -4
- package/browser/platform/BrowserConnectionOptionsReaderDummy.js.map +1 -1
- package/browser/platform/BrowserDirectoryExportedClassesLoader.d.ts +0 -4
- package/browser/platform/BrowserDirectoryExportedClassesLoader.js +4 -7
- package/browser/platform/BrowserDirectoryExportedClassesLoader.js.map +1 -1
- package/browser/platform/BrowserDisabledDriversDummy.js +31 -14
- package/browser/platform/BrowserDisabledDriversDummy.js.map +1 -1
- package/browser/platform/BrowserFileLoggerDummy.js +7 -2
- package/browser/platform/BrowserFileLoggerDummy.js.map +1 -1
- package/browser/platform/BrowserPlatformTools.js +18 -11
- package/browser/platform/BrowserPlatformTools.js.map +1 -1
- package/browser/platform/PlatformTools.d.ts +13 -1
- package/browser/platform/PlatformTools.js +64 -45
- package/browser/platform/PlatformTools.js.map +1 -1
- package/browser/query-builder/Alias.js +9 -5
- package/browser/query-builder/Alias.js.map +1 -1
- package/browser/query-builder/Brackets.js +5 -1
- package/browser/query-builder/Brackets.js.map +1 -1
- package/browser/query-builder/DeleteQueryBuilder.js +12 -8
- package/browser/query-builder/DeleteQueryBuilder.js.map +1 -1
- package/browser/query-builder/InsertOrUpdateOptions.js +2 -1
- package/browser/query-builder/InsertQueryBuilder.d.ts +12 -1
- package/browser/query-builder/InsertQueryBuilder.js +202 -85
- package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
- package/browser/query-builder/JoinAttribute.js +18 -14
- package/browser/query-builder/JoinAttribute.js.map +1 -1
- package/browser/query-builder/JoinOptions.js +2 -1
- package/browser/query-builder/NotBrackets.js +6 -2
- package/browser/query-builder/NotBrackets.js.map +1 -1
- package/browser/query-builder/QueryBuilder.d.ts +26 -1
- package/browser/query-builder/QueryBuilder.js +86 -49
- package/browser/query-builder/QueryBuilder.js.map +1 -1
- package/browser/query-builder/QueryBuilderCte.js +2 -1
- package/browser/query-builder/QueryBuilderUtils.js +5 -1
- package/browser/query-builder/QueryBuilderUtils.js.map +1 -1
- package/browser/query-builder/QueryExpressionMap.d.ts +5 -0
- package/browser/query-builder/QueryExpressionMap.js +21 -14
- package/browser/query-builder/QueryExpressionMap.js.map +1 -1
- package/browser/query-builder/QueryPartialEntity.js +2 -1
- package/browser/query-builder/QueryPartialEntity.js.map +1 -1
- package/browser/query-builder/RelationIdLoader.d.ts +18 -1
- package/browser/query-builder/RelationIdLoader.js +42 -21
- package/browser/query-builder/RelationIdLoader.js.map +1 -1
- package/browser/query-builder/RelationLoader.js +10 -6
- package/browser/query-builder/RelationLoader.js.map +1 -1
- package/browser/query-builder/RelationQueryBuilder.js +25 -21
- package/browser/query-builder/RelationQueryBuilder.js.map +1 -1
- package/browser/query-builder/RelationRemover.js +10 -6
- package/browser/query-builder/RelationRemover.js.map +1 -1
- package/browser/query-builder/RelationUpdater.js +13 -9
- package/browser/query-builder/RelationUpdater.js.map +1 -1
- package/browser/query-builder/ReturningOption.d.ts +4 -0
- package/browser/query-builder/ReturningOption.js +4 -0
- package/browser/query-builder/ReturningOption.js.map +1 -0
- package/browser/query-builder/ReturningResultsEntityUpdator.js +8 -4
- package/browser/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
- package/browser/query-builder/SelectQuery.js +2 -1
- package/browser/query-builder/SelectQueryBuilder.d.ts +47 -8
- package/browser/query-builder/SelectQueryBuilder.js +301 -165
- package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
- package/browser/query-builder/SelectQueryBuilderOption.js +2 -1
- package/browser/query-builder/SoftDeleteQueryBuilder.js +34 -23
- package/browser/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
- package/browser/query-builder/UpdateQueryBuilder.js +26 -22
- package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/browser/query-builder/WhereClause.js +2 -1
- package/browser/query-builder/WhereExpressionBuilder.js +2 -1
- package/browser/query-builder/index.js +17 -14
- package/browser/query-builder/index.js.map +1 -1
- package/browser/query-builder/relation-count/RelationCountAttribute.js +18 -14
- package/browser/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
- package/browser/query-builder/relation-count/RelationCountLoadResult.js +2 -1
- package/browser/query-builder/relation-count/RelationCountLoader.js +5 -1
- package/browser/query-builder/relation-count/RelationCountLoader.js.map +1 -1
- package/browser/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js +7 -3
- package/browser/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js.map +1 -1
- package/browser/query-builder/relation-id/RelationIdAttribute.js +16 -12
- package/browser/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
- package/browser/query-builder/relation-id/RelationIdLoadResult.js +2 -1
- package/browser/query-builder/relation-id/RelationIdLoader.js +14 -10
- package/browser/query-builder/relation-id/RelationIdLoader.js.map +1 -1
- package/browser/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js +7 -3
- package/browser/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js.map +1 -1
- package/browser/query-builder/result/DeleteResult.js +5 -1
- package/browser/query-builder/result/DeleteResult.js.map +1 -1
- package/browser/query-builder/result/InsertResult.js +5 -1
- package/browser/query-builder/result/InsertResult.js.map +1 -1
- package/browser/query-builder/result/UpdateResult.js +5 -1
- package/browser/query-builder/result/UpdateResult.js.map +1 -1
- package/browser/query-builder/transformer/DocumentToEntityTransformer.js +5 -1
- package/browser/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
- package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js +5 -1
- package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
- package/browser/query-builder/transformer/PlainObjectToNewEntityTransformer.js +8 -4
- package/browser/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
- package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.d.ts +14 -0
- package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +53 -19
- package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
- package/browser/query-runner/BaseQueryRunner.d.ts +12 -1
- package/browser/query-runner/BaseQueryRunner.js +35 -20
- package/browser/query-runner/BaseQueryRunner.js.map +1 -1
- package/browser/query-runner/QueryLock.js +5 -1
- package/browser/query-runner/QueryLock.js.map +1 -1
- package/browser/query-runner/QueryResult.js +5 -1
- package/browser/query-runner/QueryResult.js.map +1 -1
- package/browser/query-runner/QueryRunner.d.ts +2 -1
- package/browser/query-runner/QueryRunner.js +2 -1
- package/browser/query-runner/QueryRunner.js.map +1 -1
- package/browser/repository/AbstractRepository.js +13 -9
- package/browser/repository/AbstractRepository.js.map +1 -1
- package/browser/repository/BaseEntity.d.ts +2 -1
- package/browser/repository/BaseEntity.js +9 -5
- package/browser/repository/BaseEntity.js.map +1 -1
- package/browser/repository/EntityId.js +2 -1
- package/browser/repository/FindTreesOptions.js +2 -1
- package/browser/repository/MongoRepository.js +9 -5
- package/browser/repository/MongoRepository.js.map +1 -1
- package/browser/repository/RemoveOptions.js +2 -1
- package/browser/repository/Repository.d.ts +3 -2
- package/browser/repository/Repository.js +11 -7
- package/browser/repository/Repository.js.map +1 -1
- package/browser/repository/SaveOptions.js +2 -1
- package/browser/repository/TreeRepository.js +23 -19
- package/browser/repository/TreeRepository.js.map +1 -1
- package/browser/repository/UpdateOptions.d.ts +11 -0
- package/browser/repository/UpdateOptions.js +4 -0
- package/browser/repository/UpdateOptions.js.map +1 -0
- package/browser/repository/UpsertOptions.d.ts +6 -0
- package/browser/repository/UpsertOptions.js +2 -1
- package/browser/repository/UpsertOptions.js.map +1 -1
- package/browser/schema-builder/MongoSchemaBuilder.js +7 -3
- package/browser/schema-builder/MongoSchemaBuilder.js.map +1 -1
- package/browser/schema-builder/RdbmsSchemaBuilder.d.ts +1 -0
- package/browser/schema-builder/RdbmsSchemaBuilder.js +74 -67
- package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
- package/browser/schema-builder/SchemaBuilder.js +2 -1
- package/browser/schema-builder/options/TableCheckOptions.js +2 -1
- package/browser/schema-builder/options/TableColumnOptions.js +2 -1
- package/browser/schema-builder/options/TableExclusionOptions.d.ts +5 -0
- package/browser/schema-builder/options/TableExclusionOptions.js +2 -1
- package/browser/schema-builder/options/TableExclusionOptions.js.map +1 -1
- package/browser/schema-builder/options/TableForeignKeyOptions.js +2 -1
- package/browser/schema-builder/options/TableIndexOptions.d.ts +7 -0
- package/browser/schema-builder/options/TableIndexOptions.js +2 -1
- package/browser/schema-builder/options/TableIndexOptions.js.map +1 -1
- package/browser/schema-builder/options/TableIndexTypes.d.ts +1 -0
- package/browser/schema-builder/options/TableIndexTypes.js +4 -0
- package/browser/schema-builder/options/TableIndexTypes.js.map +1 -0
- package/browser/schema-builder/options/TableOptions.js +2 -1
- package/browser/schema-builder/options/TableUniqueOptions.js +2 -1
- package/browser/schema-builder/options/ViewOptions.js +2 -1
- package/browser/schema-builder/table/Table.js +23 -19
- package/browser/schema-builder/table/Table.js.map +1 -1
- package/browser/schema-builder/table/TableCheck.js +5 -1
- package/browser/schema-builder/table/TableCheck.js.map +1 -1
- package/browser/schema-builder/table/TableColumn.js +5 -1
- package/browser/schema-builder/table/TableColumn.js.map +1 -1
- package/browser/schema-builder/table/TableExclusion.d.ts +5 -0
- package/browser/schema-builder/table/TableExclusion.js +8 -1
- package/browser/schema-builder/table/TableExclusion.js.map +1 -1
- package/browser/schema-builder/table/TableForeignKey.js +5 -1
- package/browser/schema-builder/table/TableForeignKey.js.map +1 -1
- package/browser/schema-builder/table/TableIndex.d.ts +7 -0
- package/browser/schema-builder/table/TableIndex.js +8 -1
- package/browser/schema-builder/table/TableIndex.js.map +1 -1
- package/browser/schema-builder/table/TableUnique.js +5 -1
- package/browser/schema-builder/table/TableUnique.js.map +1 -1
- package/browser/schema-builder/util/TableUtils.js +5 -1
- package/browser/schema-builder/util/TableUtils.js.map +1 -1
- package/browser/schema-builder/util/ViewUtils.js +5 -1
- package/browser/schema-builder/util/ViewUtils.js.map +1 -1
- package/browser/schema-builder/view/View.js +5 -1
- package/browser/schema-builder/view/View.js.map +1 -1
- package/browser/subscriber/Broadcaster.js +9 -5
- package/browser/subscriber/Broadcaster.js.map +1 -1
- package/browser/subscriber/BroadcasterResult.js +5 -1
- package/browser/subscriber/BroadcasterResult.js.map +1 -1
- package/browser/subscriber/EntitySubscriberInterface.js +2 -1
- package/browser/subscriber/event/InsertEvent.js +2 -1
- package/browser/subscriber/event/LoadEvent.js +2 -1
- package/browser/subscriber/event/QueryEvent.js +2 -1
- package/browser/subscriber/event/RecoverEvent.js +2 -1
- package/browser/subscriber/event/RemoveEvent.js +2 -1
- package/browser/subscriber/event/SoftRemoveEvent.js +2 -1
- package/browser/subscriber/event/TransactionCommitEvent.js +2 -1
- package/browser/subscriber/event/TransactionRollbackEvent.js +2 -1
- package/browser/subscriber/event/TransactionStartEvent.js +2 -1
- package/browser/subscriber/event/UpdateEvent.js +2 -1
- package/browser/util/ApplyValueTransformers.js +5 -1
- package/browser/util/ApplyValueTransformers.js.map +1 -1
- package/browser/util/DateUtils.d.ts +10 -0
- package/browser/util/DateUtils.js +37 -9
- package/browser/util/DateUtils.js.map +1 -1
- package/browser/util/DepGraph.d.ts +16 -0
- package/browser/util/DepGraph.js +29 -10
- package/browser/util/DepGraph.js.map +1 -1
- package/browser/util/DirectoryExportedClassesLoader.d.ts +0 -4
- package/browser/util/DirectoryExportedClassesLoader.js +14 -22
- package/browser/util/DirectoryExportedClassesLoader.js.map +1 -1
- package/browser/util/ImportUtils.js +14 -10
- package/browser/util/ImportUtils.js.map +1 -1
- package/browser/util/InstanceChecker.js +5 -1
- package/browser/util/InstanceChecker.js.map +1 -1
- package/browser/util/ObjectUtils.js +5 -1
- package/browser/util/ObjectUtils.js.map +1 -1
- package/browser/util/OrmUtils.d.ts +25 -1
- package/browser/util/OrmUtils.js +55 -13
- package/browser/util/OrmUtils.js.map +1 -1
- package/browser/util/PathUtils.js +10 -5
- package/browser/util/PathUtils.js.map +1 -1
- package/browser/util/RandomGenerator.d.ts +10 -0
- package/browser/util/RandomGenerator.js +107 -67
- package/browser/util/RandomGenerator.js.map +1 -1
- package/browser/util/SqlTagUtils.js +7 -3
- package/browser/util/SqlTagUtils.js.map +1 -1
- package/browser/util/StringUtils.d.ts +13 -8
- package/browser/util/StringUtils.js +48 -20
- package/browser/util/StringUtils.js.map +1 -1
- package/browser/util/TreeRepositoryUtils.js +5 -1
- package/browser/util/TreeRepositoryUtils.js.map +1 -1
- package/browser/util/VersionUtils.js +5 -1
- package/browser/util/VersionUtils.js.map +1 -1
- package/browser/util/escapeRegExp.js +5 -1
- package/browser/util/escapeRegExp.js.map +1 -1
- package/cache/DbQueryResultCache.js +2 -2
- package/cache/DbQueryResultCache.js.map +1 -1
- package/cli.js +18 -17
- package/cli.js.map +1 -1
- package/commands/CommandUtils.d.ts +6 -0
- package/commands/CommandUtils.js +8 -1
- package/commands/CommandUtils.js.map +1 -1
- package/commands/InitCommand.js +13 -13
- package/commands/InitCommand.js.map +1 -1
- package/commands/MigrationRunCommand.js +4 -4
- package/commands/MigrationRunCommand.js.map +1 -1
- package/commands/VersionCommand.js.map +1 -1
- package/common/DeepPartial.js.map +1 -1
- package/connection/ConnectionOptionsReader.js +32 -12
- package/connection/ConnectionOptionsReader.js.map +1 -1
- package/container.d.ts +3 -3
- package/container.js +3 -3
- package/container.js.map +1 -1
- package/data-source/DataSource.d.ts +23 -7
- package/data-source/DataSource.js +26 -6
- package/data-source/DataSource.js.map +1 -1
- package/decorator/Exclusion.d.ts +3 -2
- package/decorator/Exclusion.js +6 -3
- package/decorator/Exclusion.js.map +1 -1
- package/decorator/ForeignKey.d.ts +9 -0
- package/decorator/ForeignKey.js +4 -0
- package/decorator/ForeignKey.js.map +1 -1
- package/decorator/Index.js +1 -0
- package/decorator/Index.js.map +1 -1
- package/decorator/options/ExclusionOptions.d.ts +10 -0
- package/decorator/options/ExclusionOptions.js +4 -0
- package/decorator/options/ExclusionOptions.js.map +1 -0
- package/decorator/options/IndexOptions.d.ts +7 -0
- package/decorator/options/IndexOptions.js.map +1 -1
- package/driver/Driver.d.ts +11 -0
- package/driver/Driver.js.map +1 -1
- package/driver/DriverFactory.d.ts +2 -0
- package/driver/DriverFactory.js +4 -2
- package/driver/DriverFactory.js.map +1 -1
- package/driver/Query.js.map +1 -1
- package/driver/aurora-mysql/AuroraMysqlConnectionOptions.d.ts +0 -1
- package/driver/aurora-mysql/AuroraMysqlConnectionOptions.js.map +1 -1
- package/driver/aurora-mysql/AuroraMysqlDriver.js +18 -5
- package/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
- package/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +123 -0
- package/driver/aurora-mysql/AuroraMysqlQueryRunner.js +126 -0
- package/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
- package/driver/aurora-postgres/AuroraPostgresDriver.js.map +1 -1
- package/driver/aurora-postgres/AuroraPostgresQueryRunner.d.ts +0 -4
- package/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
- package/driver/better-sqlite3/BetterSqlite3Driver.d.ts +0 -4
- package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
- package/driver/capacitor/CapacitorDriver.js.map +1 -1
- package/driver/cockroachdb/CockroachConnectionOptions.js.map +1 -1
- package/driver/cockroachdb/CockroachDriver.d.ts +2 -2
- package/driver/cockroachdb/CockroachDriver.js +13 -3
- package/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/driver/cockroachdb/CockroachQueryRunner.d.ts +1 -0
- package/driver/cockroachdb/CockroachQueryRunner.js +9 -6
- package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/driver/cordova/CordovaDriver.js.map +1 -1
- package/driver/cordova/CordovaQueryRunner.d.ts +9 -3
- package/driver/cordova/CordovaQueryRunner.js +10 -3
- package/driver/cordova/CordovaQueryRunner.js.map +1 -1
- package/driver/expo/ExpoDriver.d.ts +1 -0
- package/driver/expo/ExpoDriver.js +7 -0
- package/driver/expo/ExpoDriver.js.map +1 -1
- package/driver/mongodb/MongoQueryRunner.d.ts +1 -0
- package/driver/mongodb/MongoQueryRunner.js +3 -0
- package/driver/mongodb/MongoQueryRunner.js.map +1 -1
- package/driver/mongodb/typings.d.ts +7 -1
- package/driver/mongodb/typings.js.map +1 -1
- package/driver/mysql/MysqlConnectionOptions.d.ts +1 -8
- package/driver/mysql/MysqlConnectionOptions.js.map +1 -1
- package/driver/mysql/MysqlDriver.d.ts +0 -8
- package/driver/mysql/MysqlDriver.js +33 -81
- package/driver/mysql/MysqlDriver.js.map +1 -1
- package/driver/mysql/MysqlQueryRunner.js +5 -2
- package/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/driver/oracle/OracleConnectionOptions.js.map +1 -1
- package/driver/oracle/OracleDriver.d.ts +2 -2
- package/driver/oracle/OracleDriver.js +8 -5
- package/driver/oracle/OracleDriver.js.map +1 -1
- package/driver/oracle/OracleQueryRunner.d.ts +129 -0
- package/driver/oracle/OracleQueryRunner.js +132 -0
- package/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/driver/postgres/PostgresConnectionOptions.d.ts +4 -1
- package/driver/postgres/PostgresConnectionOptions.js.map +1 -1
- package/driver/postgres/PostgresDriver.d.ts +12 -2
- package/driver/postgres/PostgresDriver.js +96 -8
- package/driver/postgres/PostgresDriver.js.map +1 -1
- package/driver/postgres/PostgresQueryRunner.d.ts +166 -0
- package/driver/postgres/PostgresQueryRunner.js +244 -38
- package/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/driver/react-native/ReactNativeConnectionOptions.d.ts +4 -0
- package/driver/react-native/ReactNativeConnectionOptions.js.map +1 -1
- package/driver/react-native/ReactNativeDriver.js +1 -0
- package/driver/react-native/ReactNativeDriver.js.map +1 -1
- package/driver/sap/SapConnectionOptions.d.ts +8 -1
- package/driver/sap/SapConnectionOptions.js.map +1 -1
- package/driver/sap/SapDriver.js +4 -8
- package/driver/sap/SapDriver.js.map +1 -1
- package/driver/sap/SapQueryRunner.js +3 -0
- package/driver/sap/SapQueryRunner.js.map +1 -1
- package/driver/spanner/SpannerConnectionOptions.js.map +1 -1
- package/driver/spanner/SpannerDriver.d.ts +2 -2
- package/driver/spanner/SpannerDriver.js +1 -1
- package/driver/spanner/SpannerDriver.js.map +1 -1
- package/driver/spanner/SpannerQueryRunner.d.ts +123 -0
- package/driver/spanner/SpannerQueryRunner.js +126 -0
- package/driver/spanner/SpannerQueryRunner.js.map +1 -1
- package/driver/sqlite/SqliteDriver.d.ts +0 -4
- package/driver/sqlite/SqliteDriver.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteDriver.js +4 -0
- package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +113 -0
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +114 -1
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/driver/sqljs/SqljsDriver.js.map +1 -1
- package/driver/sqlserver/MssqlParameter.d.ts +0 -1
- package/driver/sqlserver/MssqlParameter.js +0 -1
- package/driver/sqlserver/MssqlParameter.js.map +1 -1
- package/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
- package/driver/sqlserver/SqlServerDriver.d.ts +2 -2
- package/driver/sqlserver/SqlServerDriver.js +1 -1
- package/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/driver/sqlserver/SqlServerQueryRunner.d.ts +141 -0
- package/driver/sqlserver/SqlServerQueryRunner.js +144 -0
- package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/entity-manager/EntityManager.d.ts +82 -8
- package/entity-manager/EntityManager.js +126 -19
- package/entity-manager/EntityManager.js.map +1 -1
- package/entity-schema/EntitySchemaExclusionOptions.d.ts +5 -0
- package/entity-schema/EntitySchemaExclusionOptions.js.map +1 -1
- package/entity-schema/EntitySchemaTransformer.js +1 -0
- package/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/find-options/FindOptionsOrder.js.map +1 -1
- package/find-options/FindOptionsRelations.d.ts +0 -1
- package/find-options/FindOptionsRelations.js.map +1 -1
- package/find-options/FindOptionsSelect.d.ts +0 -1
- package/find-options/FindOptionsSelect.js.map +1 -1
- package/find-options/FindOptionsWhere.js.map +1 -1
- package/find-options/mongodb/MongoFindManyOptions.js.map +1 -1
- package/index.d.ts +3 -0
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/metadata/ColumnMetadata.js +21 -11
- package/metadata/ColumnMetadata.js.map +1 -1
- package/metadata/EntityMetadata.d.ts +34 -2
- package/metadata/EntityMetadata.js +34 -2
- package/metadata/EntityMetadata.js.map +1 -1
- package/metadata/ExclusionMetadata.d.ts +5 -0
- package/metadata/ExclusionMetadata.js +1 -0
- package/metadata/ExclusionMetadata.js.map +1 -1
- package/metadata/IndexMetadata.d.ts +7 -0
- package/metadata/IndexMetadata.js +11 -1
- package/metadata/IndexMetadata.js.map +1 -1
- package/metadata/types/EventListenerTypes.js +11 -11
- package/metadata/types/EventListenerTypes.js.map +1 -1
- package/metadata-args/ExclusionMetadataArgs.d.ts +5 -0
- package/metadata-args/ExclusionMetadataArgs.js.map +1 -1
- package/metadata-args/IndexMetadataArgs.d.ts +7 -0
- package/metadata-args/IndexMetadataArgs.js.map +1 -1
- package/metadata-builder/EntityMetadataBuilder.d.ts +10 -0
- package/metadata-builder/EntityMetadataBuilder.js +10 -0
- package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
- package/metadata-builder/JunctionEntityMetadataBuilder.d.ts +6 -0
- package/metadata-builder/JunctionEntityMetadataBuilder.js +6 -0
- package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
- package/migration/MigrationExecutor.d.ts +14 -1
- package/migration/MigrationExecutor.js +24 -3
- package/migration/MigrationExecutor.js.map +1 -1
- package/package.json +192 -1
- package/persistence/SubjectChangedColumnsComputer.d.ts +4 -0
- package/persistence/SubjectChangedColumnsComputer.js +6 -0
- package/persistence/SubjectChangedColumnsComputer.js.map +1 -1
- package/persistence/SubjectDatabaseEntityLoader.d.ts +1 -0
- package/persistence/SubjectDatabaseEntityLoader.js +5 -1
- package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
- package/persistence/SubjectExecutor.d.ts +3 -0
- package/persistence/SubjectExecutor.js +11 -0
- package/persistence/SubjectExecutor.js.map +1 -1
- package/persistence/tree/MaterializedPathSubjectExecutor.js +1 -0
- package/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
- package/platform/PlatformTools.d.ts +13 -1
- package/platform/PlatformTools.js +17 -7
- package/platform/PlatformTools.js.map +1 -1
- package/query-builder/InsertQueryBuilder.d.ts +12 -1
- package/query-builder/InsertQueryBuilder.js +157 -44
- package/query-builder/InsertQueryBuilder.js.map +1 -1
- package/query-builder/QueryBuilder.d.ts +26 -1
- package/query-builder/QueryBuilder.js +43 -10
- package/query-builder/QueryBuilder.js.map +1 -1
- package/query-builder/QueryExpressionMap.d.ts +5 -0
- package/query-builder/QueryExpressionMap.js +3 -0
- package/query-builder/QueryExpressionMap.js.map +1 -1
- package/query-builder/QueryPartialEntity.js.map +1 -1
- package/query-builder/RelationIdLoader.d.ts +18 -1
- package/query-builder/RelationIdLoader.js +29 -12
- package/query-builder/RelationIdLoader.js.map +1 -1
- package/query-builder/ReturningOption.d.ts +4 -0
- package/query-builder/ReturningOption.js +4 -0
- package/query-builder/ReturningOption.js.map +1 -0
- package/query-builder/SelectQueryBuilder.d.ts +47 -8
- package/query-builder/SelectQueryBuilder.js +175 -43
- package/query-builder/SelectQueryBuilder.js.map +1 -1
- package/query-builder/SoftDeleteQueryBuilder.js +7 -0
- package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
- package/query-builder/transformer/RawSqlResultsToEntityTransformer.d.ts +14 -0
- package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +42 -12
- package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
- package/query-runner/BaseQueryRunner.d.ts +12 -1
- package/query-runner/BaseQueryRunner.js +11 -0
- package/query-runner/BaseQueryRunner.js.map +1 -1
- package/query-runner/QueryRunner.d.ts +2 -1
- package/query-runner/QueryRunner.js.map +1 -1
- package/repository/BaseEntity.d.ts +2 -1
- package/repository/BaseEntity.js +2 -2
- package/repository/BaseEntity.js.map +1 -1
- package/repository/MongoRepository.js.map +1 -1
- package/repository/Repository.d.ts +3 -2
- package/repository/Repository.js +4 -4
- package/repository/Repository.js.map +1 -1
- package/repository/UpdateOptions.d.ts +11 -0
- package/repository/UpdateOptions.js +4 -0
- package/repository/UpdateOptions.js.map +1 -0
- package/repository/UpsertOptions.d.ts +6 -0
- package/repository/UpsertOptions.js.map +1 -1
- package/schema-builder/RdbmsSchemaBuilder.d.ts +1 -0
- package/schema-builder/RdbmsSchemaBuilder.js +37 -34
- package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
- package/schema-builder/options/TableExclusionOptions.d.ts +5 -0
- package/schema-builder/options/TableExclusionOptions.js.map +1 -1
- package/schema-builder/options/TableIndexOptions.d.ts +7 -0
- package/schema-builder/options/TableIndexOptions.js.map +1 -1
- package/schema-builder/options/TableIndexTypes.d.ts +1 -0
- package/schema-builder/options/TableIndexTypes.js +4 -0
- package/schema-builder/options/TableIndexTypes.js.map +1 -0
- package/schema-builder/table/TableExclusion.d.ts +5 -0
- package/schema-builder/table/TableExclusion.js +3 -0
- package/schema-builder/table/TableExclusion.js.map +1 -1
- package/schema-builder/table/TableIndex.d.ts +7 -0
- package/schema-builder/table/TableIndex.js +3 -0
- package/schema-builder/table/TableIndex.js.map +1 -1
- package/util/DateUtils.d.ts +10 -0
- package/util/DateUtils.js +29 -6
- package/util/DateUtils.js.map +1 -1
- package/util/DepGraph.d.ts +16 -0
- package/util/DepGraph.js +16 -1
- package/util/DepGraph.js.map +1 -1
- package/util/DirectoryExportedClassesLoader.d.ts +0 -4
- package/util/DirectoryExportedClassesLoader.js +3 -16
- package/util/DirectoryExportedClassesLoader.js.map +1 -1
- package/util/OrmUtils.d.ts +25 -1
- package/util/OrmUtils.js +50 -12
- package/util/OrmUtils.js.map +1 -1
- package/util/RandomGenerator.d.ts +10 -0
- package/util/RandomGenerator.js +102 -66
- package/util/RandomGenerator.js.map +1 -1
- package/util/StringUtils.d.ts +13 -8
- package/util/StringUtils.js +34 -15
- package/util/StringUtils.js.map +1 -1
- package/browser/driver/expo/ExpoDriverFactory.d.ts +0 -9
- package/browser/driver/expo/ExpoDriverFactory.js +0 -18
- package/browser/driver/expo/ExpoDriverFactory.js.map +0 -1
- package/browser/driver/expo/legacy/ExpoLegacyDriver.d.ts +0 -21
- package/browser/driver/expo/legacy/ExpoLegacyDriver.js +0 -71
- package/browser/driver/expo/legacy/ExpoLegacyDriver.js.map +0 -1
- package/browser/driver/expo/legacy/ExpoLegacyQueryRunner.d.ts +0 -57
- package/browser/driver/expo/legacy/ExpoLegacyQueryRunner.js +0 -165
- package/browser/driver/expo/legacy/ExpoLegacyQueryRunner.js.map +0 -1
- package/driver/expo/ExpoDriverFactory.d.ts +0 -9
- package/driver/expo/ExpoDriverFactory.js +0 -22
- package/driver/expo/ExpoDriverFactory.js.map +0 -1
- package/driver/expo/legacy/ExpoLegacyDriver.d.ts +0 -21
- package/driver/expo/legacy/ExpoLegacyDriver.js +0 -75
- package/driver/expo/legacy/ExpoLegacyDriver.js.map +0 -1
- package/driver/expo/legacy/ExpoLegacyQueryRunner.d.ts +0 -57
- package/driver/expo/legacy/ExpoLegacyQueryRunner.js +0 -169
- package/driver/expo/legacy/ExpoLegacyQueryRunner.js.map +0 -1
package/README.md
CHANGED
|
@@ -12,20 +12,15 @@
|
|
|
12
12
|
<a href="https://www.npmjs.com/package/typeorm"><img src="https://img.shields.io/npm/dm/typeorm" alt="NPM Downloads"/></a>
|
|
13
13
|
<a href="https://github.com/typeorm/typeorm/actions/workflows/tests.yml?query=branch%3Amaster"><img src="https://github.com/typeorm/typeorm/actions/workflows/tests.yml/badge.svg?branch=master" alt="Commit Validation"/></a>
|
|
14
14
|
<a href="https://coveralls.io/github/typeorm/typeorm?branch=master"><img src="https://coveralls.io/repos/github/typeorm/typeorm/badge.svg?branch=master" alt="Coverage Status"/></a>
|
|
15
|
+
<a href='https://dashboard.stryker-mutator.io/reports/github.com/typeorm/typeorm/master'><img src='https://img.shields.io/endpoint?style=flat&url=https%3A%2F%2Fbadge-api.stryker-mutator.io%2Fgithub.com%2Ftypeorm%2Ftypeorm%2Fmaster' alt='Mutation testing badge' /></a>
|
|
15
16
|
<a href=""><img src="https://img.shields.io/badge/License-MIT-teal.svg" alt="MIT License"/></a>
|
|
16
17
|
<br>
|
|
17
18
|
<br>
|
|
18
19
|
</div>
|
|
19
20
|
|
|
20
|
-
TypeORM is an [ORM](https://en.wikipedia.org/wiki/Object-relational_mapping)
|
|
21
|
-
that can run in Node.js, Browser, Cordova, Ionic, React Native, NativeScript, Expo, and Electron platforms
|
|
22
|
-
and can be used with TypeScript and JavaScript (ES2021).
|
|
23
|
-
Its goal is to always support the latest JavaScript features and provide additional features
|
|
24
|
-
that help you to develop any kind of application that uses databases - from
|
|
25
|
-
small applications with a few tables to large-scale enterprise applications
|
|
26
|
-
with multiple databases.
|
|
21
|
+
TypeORM is an [ORM](https://en.wikipedia.org/wiki/Object-relational_mapping) that can run in Node.js, Browser, Cordova, Ionic, React Native, NativeScript, Expo, and Electron platforms and can be used with TypeScript and JavaScript (ES2023). Its goal is to always support the latest JavaScript features and provide additional features that help you to develop any kind of application that uses databases - from small applications with a few tables to large-scale enterprise applications with multiple databases.
|
|
27
22
|
|
|
28
|
-
TypeORM supports more databases than any other JS/TS ORM: [Google Spanner](./docs/docs/drivers/google-spanner.md), [Microsoft SqlServer](./docs/docs/drivers/microsoft-sqlserver.md), [MySQL/MariaDB](./docs/docs/drivers/mysql.md), [MongoDB](./docs/docs/drivers/mongodb.md), [Oracle](./docs/docs/drivers/oracle.md), [Postgres](./docs/docs/drivers/postgres.md), [SAP HANA](./docs/docs/drivers/sap.md) and [SQLite](./docs/docs/drivers/sqlite.md), as well
|
|
23
|
+
TypeORM supports more databases than any other JS/TS ORM: [Google Spanner](./docs/docs/drivers/google-spanner.md), [Microsoft SqlServer](./docs/docs/drivers/microsoft-sqlserver.md), [MySQL/MariaDB](./docs/docs/drivers/mysql.md), [MongoDB](./docs/docs/drivers/mongodb.md), [Oracle](./docs/docs/drivers/oracle.md), [Postgres](./docs/docs/drivers/postgres.md), [SAP HANA](./docs/docs/drivers/sap.md) and [SQLite](./docs/docs/drivers/sqlite.md), as well as derived databases and different drivers.
|
|
29
24
|
|
|
30
25
|
TypeORM supports both [Active Record](./docs/docs/guides/1-active-record-data-mapper.md#what-is-the-active-record-pattern) and [Data Mapper](./docs/docs/guides/1-active-record-data-mapper.md#what-is-the-data-mapper-pattern) patterns, unlike all other JavaScript ORMs currently in existence, which means you can write high-quality, loosely coupled, scalable, maintainable applications in the most productive way.
|
|
31
26
|
|
|
@@ -34,42 +29,42 @@ TypeORM is highly influenced by other ORMs, such as [Hibernate](http://hibernate
|
|
|
34
29
|
|
|
35
30
|
## Features
|
|
36
31
|
|
|
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
|
-
-
|
|
32
|
+
- Supports both [DataMapper](./docs/docs/guides/1-active-record-data-mapper.md#what-is-the-data-mapper-pattern) and [ActiveRecord](./docs/docs/guides/1-active-record-data-mapper.md#what-is-the-active-record-pattern) (your choice).
|
|
33
|
+
- Entities and columns.
|
|
34
|
+
- Database-specific column types.
|
|
35
|
+
- Entity manager.
|
|
36
|
+
- Repositories and custom repositories.
|
|
37
|
+
- Clean object-relational model.
|
|
38
|
+
- Associations (relations).
|
|
39
|
+
- Eager and lazy relations.
|
|
40
|
+
- Unidirectional, bidirectional, and self-referenced relations.
|
|
41
|
+
- Supports multiple inheritance patterns.
|
|
42
|
+
- Cascades.
|
|
43
|
+
- Indices.
|
|
44
|
+
- Transactions.
|
|
45
|
+
- Migrations and automatic migrations generation.
|
|
46
|
+
- Connection pooling.
|
|
47
|
+
- Replication.
|
|
48
|
+
- Using multiple database instances.
|
|
49
|
+
- Working with multiple database types.
|
|
50
|
+
- Cross-database and cross-schema queries.
|
|
51
|
+
- Elegant-syntax, flexible and powerful QueryBuilder.
|
|
52
|
+
- Left and inner joins.
|
|
53
|
+
- Proper pagination for queries using joins.
|
|
54
|
+
- Query caching.
|
|
55
|
+
- Streaming raw results.
|
|
56
|
+
- Logging.
|
|
57
|
+
- Listeners and subscribers (hooks).
|
|
58
|
+
- Supports closure table pattern.
|
|
59
|
+
- Schema declaration in models or separate configuration files.
|
|
60
|
+
- Supports MySQL / MariaDB / Postgres / CockroachDB / SQLite / Microsoft SQL Server / Oracle / SAP Hana / sql.js.
|
|
61
|
+
- Supports MongoDB NoSQL database.
|
|
62
|
+
- Works in Node.js / Browser / Ionic / Cordova / React Native / NativeScript / Expo / Electron platforms.
|
|
63
|
+
- TypeScript and JavaScript support.
|
|
64
|
+
- ESM and CommonJS support.
|
|
65
|
+
- Produced code is performant, flexible, clean, and maintainable.
|
|
66
|
+
- Follows all possible best practices.
|
|
67
|
+
- CLI.
|
|
73
68
|
|
|
74
69
|
And more...
|
|
75
70
|
|
|
@@ -165,37 +160,37 @@ Take a look at the samples in [sample](https://github.com/typeorm/typeorm/tree/m
|
|
|
165
160
|
|
|
166
161
|
There are a few repositories that you can clone and start with:
|
|
167
162
|
|
|
168
|
-
-
|
|
169
|
-
-
|
|
170
|
-
-
|
|
171
|
-
-
|
|
172
|
-
-
|
|
173
|
-
-
|
|
174
|
-
-
|
|
175
|
-
-
|
|
176
|
-
-
|
|
177
|
-
-
|
|
178
|
-
-
|
|
179
|
-
-
|
|
180
|
-
-
|
|
181
|
-
-
|
|
182
|
-
-
|
|
163
|
+
- [Example how to use TypeORM with TypeScript](https://github.com/typeorm/typescript-example)
|
|
164
|
+
- [Example how to use TypeORM with JavaScript](https://github.com/typeorm/javascript-example)
|
|
165
|
+
- [Example how to use TypeORM with JavaScript and Babel](https://github.com/typeorm/babel-example)
|
|
166
|
+
- [Example how to use TypeORM with TypeScript and SystemJS in Browser](https://github.com/typeorm/browser-example)
|
|
167
|
+
- [Example how to use TypeORM with TypeScript and React in Browser](https://github.com/ItayGarin/typeorm-react-swc)
|
|
168
|
+
- [Example how to use Express and TypeORM](https://github.com/typeorm/typescript-express-example)
|
|
169
|
+
- [Example how to use Koa and TypeORM](https://github.com/typeorm/typescript-koa-example)
|
|
170
|
+
- [Example how to use TypeORM with MongoDB](https://github.com/typeorm/mongo-typescript-example)
|
|
171
|
+
- [Example how to use TypeORM in a Cordova app](https://github.com/typeorm/cordova-example)
|
|
172
|
+
- [Example how to use TypeORM with an Ionic app](https://github.com/typeorm/ionic-example)
|
|
173
|
+
- [Example how to use TypeORM with React Native](https://github.com/typeorm/react-native-example)
|
|
174
|
+
- [Example how to use TypeORM with Nativescript-Vue](https://github.com/typeorm/nativescript-vue-typeorm-sample)
|
|
175
|
+
- [Example how to use TypeORM with Nativescript-Angular](https://github.com/betov18x/nativescript-angular-typeorm-example)
|
|
176
|
+
- [Example how to use TypeORM with Electron using JavaScript](https://github.com/typeorm/electron-javascript-example)
|
|
177
|
+
- [Example how to use TypeORM with Electron using TypeScript](https://github.com/typeorm/electron-typescript-example)
|
|
183
178
|
|
|
184
179
|
## Extensions
|
|
185
180
|
|
|
186
181
|
There are several extensions that simplify working with TypeORM and integrating it with other modules:
|
|
187
182
|
|
|
188
|
-
-
|
|
189
|
-
-
|
|
190
|
-
-
|
|
191
|
-
-
|
|
192
|
-
-
|
|
193
|
-
-
|
|
194
|
-
-
|
|
195
|
-
-
|
|
196
|
-
-
|
|
197
|
-
-
|
|
198
|
-
-
|
|
183
|
+
- [TypeORM integration](https://github.com/typeorm/typeorm-typedi-extensions) with [TypeDI](https://github.com/pleerock/typedi)
|
|
184
|
+
- [TypeORM integration](https://github.com/typeorm/typeorm-routing-controllers-extensions) with [routing-controllers](https://github.com/pleerock/routing-controllers)
|
|
185
|
+
- Models generation from the existing database - [typeorm-model-generator](https://github.com/Kononnable/typeorm-model-generator)
|
|
186
|
+
- Fixtures loader - [typeorm-fixtures-cli](https://github.com/RobinCK/typeorm-fixtures)
|
|
187
|
+
- ER Diagram generator - [typeorm-uml](https://github.com/eugene-manuilov/typeorm-uml/)
|
|
188
|
+
- another ER Diagram generator - [erdia](https://www.npmjs.com/package/erdia/)
|
|
189
|
+
- Create, drop and seed database - [typeorm-extension](https://github.com/tada5hi/typeorm-extension)
|
|
190
|
+
- Automatically update `data-source.ts` after generating migrations/entities - [typeorm-codebase-sync](https://www.npmjs.com/package/typeorm-codebase-sync)
|
|
191
|
+
- Easy manipulation of `relations` objects - [typeorm-relations](https://npmjs.com/package/typeorm-relations)
|
|
192
|
+
- Automatically generate `relations` based on a GraphQL query - [typeorm-relations-graphql](https://npmjs.com/package/typeorm-relations-graphql)
|
|
193
|
+
- Generate TypeORM entities from Valibot schemas - [piying-orm](https://github.com/piying-org/piying-orm)
|
|
199
194
|
|
|
200
195
|
## Contributing
|
|
201
196
|
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DbQueryResultCache = void 0;
|
|
4
|
+
const MssqlParameter_1 = require("../driver/sqlserver/MssqlParameter");
|
|
5
|
+
const Table_1 = require("../schema-builder/table/Table");
|
|
6
|
+
const RandomGenerator_1 = require("../util/RandomGenerator");
|
|
4
7
|
/**
|
|
5
8
|
* Caches query result into current database, into separate table called "query-result-cache".
|
|
6
9
|
*/
|
|
7
|
-
|
|
10
|
+
class DbQueryResultCache {
|
|
8
11
|
// -------------------------------------------------------------------------
|
|
9
12
|
// Constructor
|
|
10
13
|
// -------------------------------------------------------------------------
|
|
@@ -40,7 +43,7 @@ export class DbQueryResultCache {
|
|
|
40
43
|
const tableExist = await queryRunner.hasTable(this.queryResultCacheTable); // todo: table name should be configurable
|
|
41
44
|
if (tableExist)
|
|
42
45
|
return;
|
|
43
|
-
await queryRunner.createTable(new Table({
|
|
46
|
+
await queryRunner.createTable(new Table_1.Table({
|
|
44
47
|
database: this.queryResultCacheDatabase,
|
|
45
48
|
schema: this.queryResultCacheSchema,
|
|
46
49
|
name: this.queryResultCacheTable,
|
|
@@ -114,7 +117,7 @@ export class DbQueryResultCache {
|
|
|
114
117
|
.where(`${qb.escape("cache")}.${qb.escape("identifier")} = :identifier`)
|
|
115
118
|
.setParameters({
|
|
116
119
|
identifier: this.connection.driver.options.type === "mssql"
|
|
117
|
-
? new MssqlParameter(options.identifier, "nvarchar")
|
|
120
|
+
? new MssqlParameter_1.MssqlParameter(options.identifier, "nvarchar")
|
|
118
121
|
: options.identifier,
|
|
119
122
|
})
|
|
120
123
|
.cache(false) // disable cache to avoid infinite loops when cache is alwaysEnable
|
|
@@ -131,7 +134,7 @@ export class DbQueryResultCache {
|
|
|
131
134
|
.where(`${qb.escape("cache")}.${qb.escape("query")} = :query`)
|
|
132
135
|
.setParameters({
|
|
133
136
|
query: this.connection.driver.options.type === "mssql"
|
|
134
|
-
? new MssqlParameter(options.query, "nvarchar")
|
|
137
|
+
? new MssqlParameter_1.MssqlParameter(options.query, "nvarchar")
|
|
135
138
|
: options.query,
|
|
136
139
|
})
|
|
137
140
|
.cache(false) // disable cache to avoid infinite loops when cache is alwaysEnable
|
|
@@ -165,11 +168,11 @@ export class DbQueryResultCache {
|
|
|
165
168
|
if (this.connection.driver.options.type === "mssql") {
|
|
166
169
|
// todo: bad abstraction, re-implement this part, probably better if we create an entity metadata for cache table
|
|
167
170
|
insertedValues = {
|
|
168
|
-
identifier: new MssqlParameter(options.identifier, "nvarchar"),
|
|
169
|
-
time: new MssqlParameter(options.time, "bigint"),
|
|
170
|
-
duration: new MssqlParameter(options.duration, "int"),
|
|
171
|
-
query: new MssqlParameter(options.query, "nvarchar"),
|
|
172
|
-
result: new MssqlParameter(options.result, "nvarchar"),
|
|
171
|
+
identifier: new MssqlParameter_1.MssqlParameter(options.identifier, "nvarchar"),
|
|
172
|
+
time: new MssqlParameter_1.MssqlParameter(options.time, "bigint"),
|
|
173
|
+
duration: new MssqlParameter_1.MssqlParameter(options.duration, "int"),
|
|
174
|
+
query: new MssqlParameter_1.MssqlParameter(options.query, "nvarchar"),
|
|
175
|
+
result: new MssqlParameter_1.MssqlParameter(options.result, "nvarchar"),
|
|
173
176
|
};
|
|
174
177
|
}
|
|
175
178
|
if (savedCache && savedCache.identifier) {
|
|
@@ -205,7 +208,7 @@ export class DbQueryResultCache {
|
|
|
205
208
|
// Spanner does not support auto-generated columns
|
|
206
209
|
if (this.connection.driver.options.type === "spanner" &&
|
|
207
210
|
!insertedValues.id) {
|
|
208
|
-
insertedValues.id = uuidv4();
|
|
211
|
+
insertedValues.id = RandomGenerator_1.RandomGenerator.uuidv4();
|
|
209
212
|
}
|
|
210
213
|
// otherwise insert
|
|
211
214
|
await queryRunner.manager
|
|
@@ -256,5 +259,6 @@ export class DbQueryResultCache {
|
|
|
256
259
|
return this.connection.createQueryRunner();
|
|
257
260
|
}
|
|
258
261
|
}
|
|
262
|
+
exports.DbQueryResultCache = DbQueryResultCache;
|
|
259
263
|
|
|
260
264
|
//# sourceMappingURL=DbQueryResultCache.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../browser/src/cache/DbQueryResultCache.ts"],"names":[],"mappings":"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","file":"DbQueryResultCache.js","sourcesContent":["import { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport { DataSource } from \"../data-source/DataSource\"\nimport { MssqlParameter } from \"../driver/sqlserver/MssqlParameter\"\nimport { QueryRunner } from \"../query-runner/QueryRunner\"\nimport { Table } from \"../schema-builder/table/Table\"\nimport { QueryResultCache } from \"./QueryResultCache\"\nimport { QueryResultCacheOptions } from \"./QueryResultCacheOptions\"\nimport { v4 as uuidv4 } from \"uuid\"\n\n/**\n * Caches query result into current database, into separate table called \"query-result-cache\".\n */\nexport class DbQueryResultCache implements QueryResultCache {\n // -------------------------------------------------------------------------\n // Private properties\n // -------------------------------------------------------------------------\n\n private queryResultCacheTable: string\n\n private queryResultCacheDatabase?: string\n\n private queryResultCacheSchema?: string\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected connection: DataSource) {\n const { schema } = this.connection.driver.options as any\n const database = this.connection.driver.database\n const cacheOptions =\n typeof this.connection.options.cache === \"object\"\n ? this.connection.options.cache\n : {}\n const cacheTableName = cacheOptions.tableName || \"query-result-cache\"\n\n this.queryResultCacheDatabase = database\n this.queryResultCacheSchema = schema\n this.queryResultCacheTable = this.connection.driver.buildTableName(\n cacheTableName,\n schema,\n database,\n )\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates a connection with given cache provider.\n */\n async connect(): Promise<void> {}\n\n /**\n * Disconnects with given cache provider.\n */\n async disconnect(): Promise<void> {}\n\n /**\n * Creates table for storing cache if it does not exist yet.\n */\n async synchronize(queryRunner?: QueryRunner): Promise<void> {\n queryRunner = this.getQueryRunner(queryRunner)\n const driver = this.connection.driver\n const tableExist = await queryRunner.hasTable(\n this.queryResultCacheTable,\n ) // todo: table name should be configurable\n if (tableExist) return\n\n await queryRunner.createTable(\n new Table({\n database: this.queryResultCacheDatabase,\n schema: this.queryResultCacheSchema,\n name: this.queryResultCacheTable,\n columns: [\n {\n name: \"id\",\n isPrimary: true,\n isNullable: false,\n type: driver.normalizeType({\n type: driver.mappedDataTypes.cacheId,\n }),\n generationStrategy:\n driver.options.type === \"spanner\"\n ? \"uuid\"\n : \"increment\",\n isGenerated: true,\n },\n {\n name: \"identifier\",\n type: driver.normalizeType({\n type: driver.mappedDataTypes.cacheIdentifier,\n }),\n isNullable: true,\n },\n {\n name: \"time\",\n type: driver.normalizeType({\n type: driver.mappedDataTypes.cacheTime,\n }),\n isPrimary: false,\n isNullable: false,\n },\n {\n name: \"duration\",\n type: driver.normalizeType({\n type: driver.mappedDataTypes.cacheDuration,\n }),\n isPrimary: false,\n isNullable: false,\n },\n {\n name: \"query\",\n type: driver.normalizeType({\n type: driver.mappedDataTypes.cacheQuery,\n }),\n isPrimary: false,\n isNullable: false,\n },\n {\n name: \"result\",\n type: driver.normalizeType({\n type: driver.mappedDataTypes.cacheResult,\n }),\n isNullable: false,\n },\n ],\n }),\n )\n }\n\n /**\n * Get data from cache.\n * Returns cache result if found.\n * Returns undefined if result is not cached.\n */\n getFromCache(\n options: QueryResultCacheOptions,\n queryRunner?: QueryRunner,\n ): Promise<QueryResultCacheOptions | undefined> {\n queryRunner = this.getQueryRunner(queryRunner)\n const qb = this.connection\n .createQueryBuilder(queryRunner)\n .select()\n .from(this.queryResultCacheTable, \"cache\")\n\n if (options.identifier) {\n return qb\n .where(\n `${qb.escape(\"cache\")}.${qb.escape(\n \"identifier\",\n )} = :identifier`,\n )\n .setParameters({\n identifier:\n this.connection.driver.options.type === \"mssql\"\n ? new MssqlParameter(options.identifier, \"nvarchar\")\n : options.identifier,\n })\n .cache(false) // disable cache to avoid infinite loops when cache is alwaysEnable\n .getRawOne()\n } else if (options.query) {\n if (this.connection.driver.options.type === \"oracle\") {\n return qb\n .where(\n `dbms_lob.compare(${qb.escape(\"cache\")}.${qb.escape(\n \"query\",\n )}, :query) = 0`,\n { query: options.query },\n )\n .cache(false) // disable cache to avoid infinite loops when cache is alwaysEnable\n .getRawOne()\n }\n\n return qb\n .where(`${qb.escape(\"cache\")}.${qb.escape(\"query\")} = :query`)\n .setParameters({\n query:\n this.connection.driver.options.type === \"mssql\"\n ? new MssqlParameter(options.query, \"nvarchar\")\n : options.query,\n })\n .cache(false) // disable cache to avoid infinite loops when cache is alwaysEnable\n .getRawOne()\n }\n\n return Promise.resolve(undefined)\n }\n\n /**\n * Checks if cache is expired or not.\n */\n isExpired(savedCache: QueryResultCacheOptions): boolean {\n const duration =\n typeof savedCache.duration === \"string\"\n ? parseInt(savedCache.duration)\n : savedCache.duration\n return (\n (typeof savedCache.time === \"string\"\n ? parseInt(savedCache.time as any)\n : savedCache.time)! +\n duration <\n Date.now()\n )\n }\n\n /**\n * Stores given query result in the cache.\n */\n async storeInCache(\n options: QueryResultCacheOptions,\n savedCache: QueryResultCacheOptions | undefined,\n queryRunner?: QueryRunner,\n ): Promise<void> {\n const shouldCreateQueryRunner =\n queryRunner === undefined ||\n queryRunner?.getReplicationMode() === \"slave\"\n\n if (queryRunner === undefined || shouldCreateQueryRunner) {\n queryRunner = this.connection.createQueryRunner(\"master\")\n }\n\n let insertedValues: ObjectLiteral = options\n if (this.connection.driver.options.type === \"mssql\") {\n // todo: bad abstraction, re-implement this part, probably better if we create an entity metadata for cache table\n insertedValues = {\n identifier: new MssqlParameter(options.identifier, \"nvarchar\"),\n time: new MssqlParameter(options.time, \"bigint\"),\n duration: new MssqlParameter(options.duration, \"int\"),\n query: new MssqlParameter(options.query, \"nvarchar\"),\n result: new MssqlParameter(options.result, \"nvarchar\"),\n }\n }\n\n if (savedCache && savedCache.identifier) {\n // if exist then update\n const qb = queryRunner.manager\n .createQueryBuilder()\n .update(this.queryResultCacheTable)\n .set(insertedValues)\n\n qb.where(`${qb.escape(\"identifier\")} = :condition`, {\n condition: insertedValues.identifier,\n })\n await qb.execute()\n } else if (savedCache && savedCache.query) {\n // if exist then update\n const qb = queryRunner.manager\n .createQueryBuilder()\n .update(this.queryResultCacheTable)\n .set(insertedValues)\n\n if (this.connection.driver.options.type === \"oracle\") {\n qb.where(`dbms_lob.compare(\"query\", :condition) = 0`, {\n condition: insertedValues.query,\n })\n } else {\n qb.where(`${qb.escape(\"query\")} = :condition`, {\n condition: insertedValues.query,\n })\n }\n\n await qb.execute()\n } else {\n // Spanner does not support auto-generated columns\n if (\n this.connection.driver.options.type === \"spanner\" &&\n !insertedValues.id\n ) {\n insertedValues.id = uuidv4()\n }\n\n // otherwise insert\n await queryRunner.manager\n .createQueryBuilder()\n .insert()\n .into(this.queryResultCacheTable)\n .values(insertedValues)\n .execute()\n }\n\n if (shouldCreateQueryRunner) {\n await queryRunner.release()\n }\n }\n\n /**\n * Clears everything stored in the cache.\n */\n async clear(queryRunner: QueryRunner): Promise<void> {\n return this.getQueryRunner(queryRunner).clearTable(\n this.queryResultCacheTable,\n )\n }\n\n /**\n * Removes all cached results by given identifiers from cache.\n */\n async remove(\n identifiers: string[],\n queryRunner?: QueryRunner,\n ): Promise<void> {\n const _queryRunner: QueryRunner = queryRunner || this.getQueryRunner()\n await Promise.all(\n identifiers.map((identifier) => {\n const qb = _queryRunner.manager.createQueryBuilder()\n return qb\n .delete()\n .from(this.queryResultCacheTable)\n .where(`${qb.escape(\"identifier\")} = :identifier`, {\n identifier,\n })\n .execute()\n }),\n )\n\n if (!queryRunner) {\n await _queryRunner.release()\n }\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Gets a query runner to work with.\n */\n protected getQueryRunner(queryRunner?: QueryRunner): QueryRunner {\n if (queryRunner) return queryRunner\n\n return this.connection.createQueryRunner()\n }\n}\n"],"sourceRoot":".."}
|
|
1
|
+
{"version":3,"sources":["../browser/src/cache/DbQueryResultCache.ts"],"names":[],"mappings":"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","file":"DbQueryResultCache.js","sourcesContent":["import { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport { DataSource } from \"../data-source/DataSource\"\nimport { MssqlParameter } from \"../driver/sqlserver/MssqlParameter\"\nimport { QueryRunner } from \"../query-runner/QueryRunner\"\nimport { Table } from \"../schema-builder/table/Table\"\nimport { RandomGenerator } from \"../util/RandomGenerator\"\nimport { QueryResultCache } from \"./QueryResultCache\"\nimport { QueryResultCacheOptions } from \"./QueryResultCacheOptions\"\n\n/**\n * Caches query result into current database, into separate table called \"query-result-cache\".\n */\nexport class DbQueryResultCache implements QueryResultCache {\n // -------------------------------------------------------------------------\n // Private properties\n // -------------------------------------------------------------------------\n\n private queryResultCacheTable: string\n\n private queryResultCacheDatabase?: string\n\n private queryResultCacheSchema?: string\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected connection: DataSource) {\n const { schema } = this.connection.driver.options as any\n const database = this.connection.driver.database\n const cacheOptions =\n typeof this.connection.options.cache === \"object\"\n ? this.connection.options.cache\n : {}\n const cacheTableName = cacheOptions.tableName || \"query-result-cache\"\n\n this.queryResultCacheDatabase = database\n this.queryResultCacheSchema = schema\n this.queryResultCacheTable = this.connection.driver.buildTableName(\n cacheTableName,\n schema,\n database,\n )\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates a connection with given cache provider.\n */\n async connect(): Promise<void> {}\n\n /**\n * Disconnects with given cache provider.\n */\n async disconnect(): Promise<void> {}\n\n /**\n * Creates table for storing cache if it does not exist yet.\n */\n async synchronize(queryRunner?: QueryRunner): Promise<void> {\n queryRunner = this.getQueryRunner(queryRunner)\n const driver = this.connection.driver\n const tableExist = await queryRunner.hasTable(\n this.queryResultCacheTable,\n ) // todo: table name should be configurable\n if (tableExist) return\n\n await queryRunner.createTable(\n new Table({\n database: this.queryResultCacheDatabase,\n schema: this.queryResultCacheSchema,\n name: this.queryResultCacheTable,\n columns: [\n {\n name: \"id\",\n isPrimary: true,\n isNullable: false,\n type: driver.normalizeType({\n type: driver.mappedDataTypes.cacheId,\n }),\n generationStrategy:\n driver.options.type === \"spanner\"\n ? \"uuid\"\n : \"increment\",\n isGenerated: true,\n },\n {\n name: \"identifier\",\n type: driver.normalizeType({\n type: driver.mappedDataTypes.cacheIdentifier,\n }),\n isNullable: true,\n },\n {\n name: \"time\",\n type: driver.normalizeType({\n type: driver.mappedDataTypes.cacheTime,\n }),\n isPrimary: false,\n isNullable: false,\n },\n {\n name: \"duration\",\n type: driver.normalizeType({\n type: driver.mappedDataTypes.cacheDuration,\n }),\n isPrimary: false,\n isNullable: false,\n },\n {\n name: \"query\",\n type: driver.normalizeType({\n type: driver.mappedDataTypes.cacheQuery,\n }),\n isPrimary: false,\n isNullable: false,\n },\n {\n name: \"result\",\n type: driver.normalizeType({\n type: driver.mappedDataTypes.cacheResult,\n }),\n isNullable: false,\n },\n ],\n }),\n )\n }\n\n /**\n * Get data from cache.\n * Returns cache result if found.\n * Returns undefined if result is not cached.\n */\n getFromCache(\n options: QueryResultCacheOptions,\n queryRunner?: QueryRunner,\n ): Promise<QueryResultCacheOptions | undefined> {\n queryRunner = this.getQueryRunner(queryRunner)\n const qb = this.connection\n .createQueryBuilder(queryRunner)\n .select()\n .from(this.queryResultCacheTable, \"cache\")\n\n if (options.identifier) {\n return qb\n .where(\n `${qb.escape(\"cache\")}.${qb.escape(\n \"identifier\",\n )} = :identifier`,\n )\n .setParameters({\n identifier:\n this.connection.driver.options.type === \"mssql\"\n ? new MssqlParameter(options.identifier, \"nvarchar\")\n : options.identifier,\n })\n .cache(false) // disable cache to avoid infinite loops when cache is alwaysEnable\n .getRawOne()\n } else if (options.query) {\n if (this.connection.driver.options.type === \"oracle\") {\n return qb\n .where(\n `dbms_lob.compare(${qb.escape(\"cache\")}.${qb.escape(\n \"query\",\n )}, :query) = 0`,\n { query: options.query },\n )\n .cache(false) // disable cache to avoid infinite loops when cache is alwaysEnable\n .getRawOne()\n }\n\n return qb\n .where(`${qb.escape(\"cache\")}.${qb.escape(\"query\")} = :query`)\n .setParameters({\n query:\n this.connection.driver.options.type === \"mssql\"\n ? new MssqlParameter(options.query, \"nvarchar\")\n : options.query,\n })\n .cache(false) // disable cache to avoid infinite loops when cache is alwaysEnable\n .getRawOne()\n }\n\n return Promise.resolve(undefined)\n }\n\n /**\n * Checks if cache is expired or not.\n */\n isExpired(savedCache: QueryResultCacheOptions): boolean {\n const duration =\n typeof savedCache.duration === \"string\"\n ? parseInt(savedCache.duration)\n : savedCache.duration\n return (\n (typeof savedCache.time === \"string\"\n ? parseInt(savedCache.time as any)\n : savedCache.time)! +\n duration <\n Date.now()\n )\n }\n\n /**\n * Stores given query result in the cache.\n */\n async storeInCache(\n options: QueryResultCacheOptions,\n savedCache: QueryResultCacheOptions | undefined,\n queryRunner?: QueryRunner,\n ): Promise<void> {\n const shouldCreateQueryRunner =\n queryRunner === undefined ||\n queryRunner?.getReplicationMode() === \"slave\"\n\n if (queryRunner === undefined || shouldCreateQueryRunner) {\n queryRunner = this.connection.createQueryRunner(\"master\")\n }\n\n let insertedValues: ObjectLiteral = options\n if (this.connection.driver.options.type === \"mssql\") {\n // todo: bad abstraction, re-implement this part, probably better if we create an entity metadata for cache table\n insertedValues = {\n identifier: new MssqlParameter(options.identifier, \"nvarchar\"),\n time: new MssqlParameter(options.time, \"bigint\"),\n duration: new MssqlParameter(options.duration, \"int\"),\n query: new MssqlParameter(options.query, \"nvarchar\"),\n result: new MssqlParameter(options.result, \"nvarchar\"),\n }\n }\n\n if (savedCache && savedCache.identifier) {\n // if exist then update\n const qb = queryRunner.manager\n .createQueryBuilder()\n .update(this.queryResultCacheTable)\n .set(insertedValues)\n\n qb.where(`${qb.escape(\"identifier\")} = :condition`, {\n condition: insertedValues.identifier,\n })\n await qb.execute()\n } else if (savedCache && savedCache.query) {\n // if exist then update\n const qb = queryRunner.manager\n .createQueryBuilder()\n .update(this.queryResultCacheTable)\n .set(insertedValues)\n\n if (this.connection.driver.options.type === \"oracle\") {\n qb.where(`dbms_lob.compare(\"query\", :condition) = 0`, {\n condition: insertedValues.query,\n })\n } else {\n qb.where(`${qb.escape(\"query\")} = :condition`, {\n condition: insertedValues.query,\n })\n }\n\n await qb.execute()\n } else {\n // Spanner does not support auto-generated columns\n if (\n this.connection.driver.options.type === \"spanner\" &&\n !insertedValues.id\n ) {\n insertedValues.id = RandomGenerator.uuidv4()\n }\n\n // otherwise insert\n await queryRunner.manager\n .createQueryBuilder()\n .insert()\n .into(this.queryResultCacheTable)\n .values(insertedValues)\n .execute()\n }\n\n if (shouldCreateQueryRunner) {\n await queryRunner.release()\n }\n }\n\n /**\n * Clears everything stored in the cache.\n */\n async clear(queryRunner: QueryRunner): Promise<void> {\n return this.getQueryRunner(queryRunner).clearTable(\n this.queryResultCacheTable,\n )\n }\n\n /**\n * Removes all cached results by given identifiers from cache.\n */\n async remove(\n identifiers: string[],\n queryRunner?: QueryRunner,\n ): Promise<void> {\n const _queryRunner: QueryRunner = queryRunner || this.getQueryRunner()\n await Promise.all(\n identifiers.map((identifier) => {\n const qb = _queryRunner.manager.createQueryBuilder()\n return qb\n .delete()\n .from(this.queryResultCacheTable)\n .where(`${qb.escape(\"identifier\")} = :identifier`, {\n identifier,\n })\n .execute()\n }),\n )\n\n if (!queryRunner) {\n await _queryRunner.release()\n }\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Gets a query runner to work with.\n */\n protected getQueryRunner(queryRunner?: QueryRunner): QueryRunner {\n if (queryRunner) return queryRunner\n\n return this.connection.createQueryRunner()\n }\n}\n"],"sourceRoot":".."}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.QueryResultCacheFactory = void 0;
|
|
4
|
+
const RedisQueryResultCache_1 = require("./RedisQueryResultCache");
|
|
5
|
+
const DbQueryResultCache_1 = require("./DbQueryResultCache");
|
|
6
|
+
const TypeORMError_1 = require("../error/TypeORMError");
|
|
4
7
|
/**
|
|
5
8
|
* Caches query result into Redis database.
|
|
6
9
|
*/
|
|
7
|
-
|
|
10
|
+
class QueryResultCacheFactory {
|
|
8
11
|
// -------------------------------------------------------------------------
|
|
9
12
|
// Constructor
|
|
10
13
|
// -------------------------------------------------------------------------
|
|
@@ -19,7 +22,7 @@ export class QueryResultCacheFactory {
|
|
|
19
22
|
*/
|
|
20
23
|
create() {
|
|
21
24
|
if (!this.connection.options.cache)
|
|
22
|
-
throw new TypeORMError(`To use cache you need to enable it in connection options by setting cache: true or providing some caching options. Example: { host: ..., username: ..., cache: true }`);
|
|
25
|
+
throw new TypeORMError_1.TypeORMError(`To use cache you need to enable it in connection options by setting cache: true or providing some caching options. Example: { host: ..., username: ..., cache: true }`);
|
|
23
26
|
const cache = this.connection.options.cache;
|
|
24
27
|
if (cache.provider && typeof cache.provider === "function") {
|
|
25
28
|
return cache.provider(this.connection);
|
|
@@ -27,12 +30,13 @@ export class QueryResultCacheFactory {
|
|
|
27
30
|
if (cache.type === "redis" ||
|
|
28
31
|
cache.type === "ioredis" ||
|
|
29
32
|
cache.type === "ioredis/cluster") {
|
|
30
|
-
return new RedisQueryResultCache(this.connection, cache.type);
|
|
33
|
+
return new RedisQueryResultCache_1.RedisQueryResultCache(this.connection, cache.type);
|
|
31
34
|
}
|
|
32
35
|
else {
|
|
33
|
-
return new DbQueryResultCache(this.connection);
|
|
36
|
+
return new DbQueryResultCache_1.DbQueryResultCache(this.connection);
|
|
34
37
|
}
|
|
35
38
|
}
|
|
36
39
|
}
|
|
40
|
+
exports.QueryResultCacheFactory = QueryResultCacheFactory;
|
|
37
41
|
|
|
38
42
|
//# sourceMappingURL=QueryResultCacheFactory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../browser/src/cache/QueryResultCacheFactory.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"sources":["../browser/src/cache/QueryResultCacheFactory.ts"],"names":[],"mappings":";;;AAAA,mEAA+D;AAC/D,6DAAyD;AAGzD,wDAAoD;AAEpD;;GAEG;AACH,MAAa,uBAAuB;IAChC,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,YAAsB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAEhD,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E;;OAEG;IACH,MAAM;QACF,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK;YAC9B,MAAM,IAAI,2BAAY,CAClB,uKAAuK,CAC1K,CAAA;QAEL,MAAM,KAAK,GAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAA;QAEhD,IAAI,KAAK,CAAC,QAAQ,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YACzD,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC1C,CAAC;QAED,IACI,KAAK,CAAC,IAAI,KAAK,OAAO;YACtB,KAAK,CAAC,IAAI,KAAK,SAAS;YACxB,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAClC,CAAC;YACC,OAAO,IAAI,6CAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QACjE,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,uCAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAClD,CAAC;IACL,CAAC;CACJ;AApCD,0DAoCC","file":"QueryResultCacheFactory.js","sourcesContent":["import { RedisQueryResultCache } from \"./RedisQueryResultCache\"\nimport { DbQueryResultCache } from \"./DbQueryResultCache\"\nimport { QueryResultCache } from \"./QueryResultCache\"\nimport { DataSource } from \"../data-source/DataSource\"\nimport { TypeORMError } from \"../error/TypeORMError\"\n\n/**\n * Caches query result into Redis database.\n */\nexport class QueryResultCacheFactory {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected connection: DataSource) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates a new query result cache based on connection options.\n */\n create(): QueryResultCache {\n if (!this.connection.options.cache)\n throw new TypeORMError(\n `To use cache you need to enable it in connection options by setting cache: true or providing some caching options. Example: { host: ..., username: ..., cache: true }`,\n )\n\n const cache: any = this.connection.options.cache\n\n if (cache.provider && typeof cache.provider === \"function\") {\n return cache.provider(this.connection)\n }\n\n if (\n cache.type === \"redis\" ||\n cache.type === \"ioredis\" ||\n cache.type === \"ioredis/cluster\"\n ) {\n return new RedisQueryResultCache(this.connection, cache.type)\n } else {\n return new DbQueryResultCache(this.connection)\n }\n }\n}\n"],"sourceRoot":".."}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RedisQueryResultCache = void 0;
|
|
4
|
+
const PlatformTools_1 = require("../platform/PlatformTools");
|
|
5
|
+
const TypeORMError_1 = require("../error/TypeORMError");
|
|
3
6
|
/**
|
|
4
7
|
* Caches query result into Redis database.
|
|
5
8
|
*/
|
|
6
|
-
|
|
9
|
+
class RedisQueryResultCache {
|
|
7
10
|
// -------------------------------------------------------------------------
|
|
8
11
|
// Constructor
|
|
9
12
|
// -------------------------------------------------------------------------
|
|
@@ -76,7 +79,7 @@ export class RedisQueryResultCache {
|
|
|
76
79
|
this.client = new this.redis.Cluster(cacheOptions.options.startupNodes, cacheOptions.options.options);
|
|
77
80
|
}
|
|
78
81
|
else {
|
|
79
|
-
throw new TypeORMError(`options.startupNodes required for ${this.clientType}.`);
|
|
82
|
+
throw new TypeORMError_1.TypeORMError(`options.startupNodes required for ${this.clientType}.`);
|
|
80
83
|
}
|
|
81
84
|
}
|
|
82
85
|
}
|
|
@@ -212,14 +215,14 @@ export class RedisQueryResultCache {
|
|
|
212
215
|
loadRedis() {
|
|
213
216
|
try {
|
|
214
217
|
if (this.clientType === "ioredis/cluster") {
|
|
215
|
-
return PlatformTools.load("ioredis");
|
|
218
|
+
return PlatformTools_1.PlatformTools.load("ioredis");
|
|
216
219
|
}
|
|
217
220
|
else {
|
|
218
|
-
return PlatformTools.load(this.clientType);
|
|
221
|
+
return PlatformTools_1.PlatformTools.load(this.clientType);
|
|
219
222
|
}
|
|
220
223
|
}
|
|
221
224
|
catch {
|
|
222
|
-
throw new TypeORMError(`Cannot use cache because ${this.clientType} is not installed. Please run "npm i ${this.clientType}".`);
|
|
225
|
+
throw new TypeORMError_1.TypeORMError(`Cannot use cache because ${this.clientType} is not installed. Please run "npm i ${this.clientType}".`);
|
|
223
226
|
}
|
|
224
227
|
}
|
|
225
228
|
/**
|
|
@@ -229,10 +232,10 @@ export class RedisQueryResultCache {
|
|
|
229
232
|
detectRedisVersion() {
|
|
230
233
|
if (this.clientType !== "redis")
|
|
231
234
|
return;
|
|
232
|
-
const version = PlatformTools.readPackageVersion("redis");
|
|
235
|
+
const version = PlatformTools_1.PlatformTools.readPackageVersion("redis");
|
|
233
236
|
const major = parseInt(version.split(".")[0], 10);
|
|
234
237
|
if (isNaN(major)) {
|
|
235
|
-
throw new TypeORMError(`Invalid Redis version format: ${version}`);
|
|
238
|
+
throw new TypeORMError_1.TypeORMError(`Invalid Redis version format: ${version}`);
|
|
236
239
|
}
|
|
237
240
|
if (major <= 4) {
|
|
238
241
|
// Redis 3/4 uses callback-based API
|
|
@@ -252,5 +255,6 @@ export class RedisQueryResultCache {
|
|
|
252
255
|
return (this.redisMajorVersion !== undefined && this.redisMajorVersion >= 5);
|
|
253
256
|
}
|
|
254
257
|
}
|
|
258
|
+
exports.RedisQueryResultCache = RedisQueryResultCache;
|
|
255
259
|
|
|
256
260
|
//# sourceMappingURL=RedisQueryResultCache.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../browser/src/cache/RedisQueryResultCache.ts"],"names":[],"mappings":"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","file":"RedisQueryResultCache.js","sourcesContent":["import { QueryResultCache } from \"./QueryResultCache\"\nimport { QueryResultCacheOptions } from \"./QueryResultCacheOptions\"\nimport { PlatformTools } from \"../platform/PlatformTools\"\nimport { DataSource } from \"../data-source/DataSource\"\nimport { QueryRunner } from \"../query-runner/QueryRunner\"\nimport { TypeORMError } from \"../error/TypeORMError\"\n\n/**\n * Caches query result into Redis database.\n */\nexport class RedisQueryResultCache implements QueryResultCache {\n // -------------------------------------------------------------------------\n // Protected Properties\n // -------------------------------------------------------------------------\n\n /**\n * Redis module instance loaded dynamically.\n */\n protected redis: any\n\n /**\n * Connected redis client.\n */\n protected client: any\n\n /**\n * Type of the Redis Client (redis or ioredis).\n */\n protected clientType: \"redis\" | \"ioredis\" | \"ioredis/cluster\"\n\n /**\n * Redis major version number\n */\n protected redisMajorVersion: number | undefined\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n protected connection: DataSource,\n clientType: \"redis\" | \"ioredis\" | \"ioredis/cluster\",\n ) {\n this.clientType = clientType\n this.redis = this.loadRedis()\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates a connection with given cache provider.\n */\n async connect(): Promise<void> {\n const cacheOptions: any = this.connection.options.cache\n if (this.clientType === \"redis\") {\n const clientOptions = {\n ...cacheOptions?.options,\n }\n\n // Create initial client to test Redis version\n let tempClient = this.redis.createClient(clientOptions)\n const isRedis4Plus = typeof tempClient.connect === \"function\"\n\n if (isRedis4Plus) {\n // Redis 4+ detected, recreate with legacyMode for Redis 4.x\n // (Redis 5 will ignore legacyMode if not needed)\n clientOptions.legacyMode = true\n tempClient = this.redis.createClient(clientOptions)\n }\n\n // Set as the main client\n this.client = tempClient\n\n if (\n typeof this.connection.options.cache === \"object\" &&\n this.connection.options.cache.ignoreErrors\n ) {\n this.client.on(\"error\", (err: any) => {\n this.connection.logger.log(\"warn\", err)\n })\n }\n\n // Connect if Redis 4+\n if (typeof this.client.connect === \"function\") {\n await this.client.connect()\n }\n\n // Detect precise version after connection is established\n this.detectRedisVersion()\n } else if (this.clientType === \"ioredis\") {\n if (cacheOptions && cacheOptions.port) {\n if (cacheOptions.options) {\n this.client = new this.redis(\n cacheOptions.port,\n cacheOptions.options,\n )\n } else {\n this.client = new this.redis(cacheOptions.port)\n }\n } else if (cacheOptions && cacheOptions.options) {\n this.client = new this.redis(cacheOptions.options)\n } else {\n this.client = new this.redis()\n }\n } else if (this.clientType === \"ioredis/cluster\") {\n if (\n cacheOptions &&\n cacheOptions.options &&\n Array.isArray(cacheOptions.options)\n ) {\n this.client = new this.redis.Cluster(cacheOptions.options)\n } else if (\n cacheOptions &&\n cacheOptions.options &&\n cacheOptions.options.startupNodes\n ) {\n this.client = new this.redis.Cluster(\n cacheOptions.options.startupNodes,\n cacheOptions.options.options,\n )\n } else {\n throw new TypeORMError(\n `options.startupNodes required for ${this.clientType}.`,\n )\n }\n }\n }\n\n /**\n * Disconnects the connection\n */\n async disconnect(): Promise<void> {\n if (this.isRedis5OrHigher()) {\n // Redis 5+ uses quit() that returns a Promise\n await this.client.quit()\n this.client = undefined\n return\n }\n\n // Redis 3/4 callback style\n return new Promise<void>((ok, fail) => {\n this.client.quit((err: any, result: any) => {\n if (err) return fail(err)\n ok()\n this.client = undefined\n })\n })\n }\n\n /**\n * Creates table for storing cache if it does not exist yet.\n */\n async synchronize(queryRunner: QueryRunner): Promise<void> {}\n\n /**\n * Get data from cache.\n * Returns cache result if found.\n * Returns undefined if result is not cached.\n */\n getFromCache(\n options: QueryResultCacheOptions,\n queryRunner?: QueryRunner,\n ): Promise<QueryResultCacheOptions | undefined> {\n const key = options.identifier || options.query\n if (!key) return Promise.resolve(undefined)\n\n if (this.isRedis5OrHigher()) {\n // Redis 5+ Promise-based API\n return this.client.get(key).then((result: any) => {\n return result ? JSON.parse(result) : undefined\n })\n }\n\n // Redis 3/4 callback-based API\n return new Promise<QueryResultCacheOptions | undefined>((ok, fail) => {\n this.client.get(key, (err: any, result: any) => {\n if (err) return fail(err)\n ok(result ? JSON.parse(result) : undefined)\n })\n })\n }\n\n /**\n * Checks if cache is expired or not.\n */\n isExpired(savedCache: QueryResultCacheOptions): boolean {\n return savedCache.time! + savedCache.duration < Date.now()\n }\n\n /**\n * Stores given query result in the cache.\n */\n async storeInCache(\n options: QueryResultCacheOptions,\n savedCache: QueryResultCacheOptions,\n queryRunner?: QueryRunner,\n ): Promise<void> {\n const key = options.identifier || options.query\n if (!key) return\n\n const value = JSON.stringify(options)\n const duration = options.duration\n\n if (this.isRedis5OrHigher()) {\n // Redis 5+ Promise-based API with PX option\n await this.client.set(key, value, {\n PX: duration,\n })\n return\n }\n\n // Redis 3/4 callback-based API\n return new Promise<void>((ok, fail) => {\n this.client.set(\n key,\n value,\n \"PX\",\n duration,\n (err: any, result: any) => {\n if (err) return fail(err)\n ok()\n },\n )\n })\n }\n\n /**\n * Clears everything stored in the cache.\n */\n async clear(queryRunner?: QueryRunner): Promise<void> {\n if (this.isRedis5OrHigher()) {\n // Redis 5+ Promise-based API\n await this.client.flushDb()\n return\n }\n\n // Redis 3/4 callback-based API\n return new Promise<void>((ok, fail) => {\n this.client.flushdb((err: any, result: any) => {\n if (err) return fail(err)\n ok()\n })\n })\n }\n\n /**\n * Removes all cached results by given identifiers from cache.\n */\n async remove(\n identifiers: string[],\n queryRunner?: QueryRunner,\n ): Promise<void> {\n await Promise.all(\n identifiers.map((identifier) => {\n return this.deleteKey(identifier)\n }),\n )\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Removes a single key from redis database.\n */\n protected async deleteKey(key: string): Promise<void> {\n if (this.isRedis5OrHigher()) {\n // Redis 5+ Promise-based API\n await this.client.del(key)\n return\n }\n\n // Redis 3/4 callback-based API\n return new Promise<void>((ok, fail) => {\n this.client.del(key, (err: any, result: any) => {\n if (err) return fail(err)\n ok()\n })\n })\n }\n\n /**\n * Loads redis dependency.\n */\n protected loadRedis(): any {\n try {\n if (this.clientType === \"ioredis/cluster\") {\n return PlatformTools.load(\"ioredis\")\n } else {\n return PlatformTools.load(this.clientType)\n }\n } catch {\n throw new TypeORMError(\n `Cannot use cache because ${this.clientType} is not installed. Please run \"npm i ${this.clientType}\".`,\n )\n }\n }\n\n /**\n * Detects the Redis package version by reading the installed package.json\n * and sets the appropriate API version (3 for callback-based, 5 for Promise-based).\n */\n private detectRedisVersion(): void {\n if (this.clientType !== \"redis\") return\n const version = PlatformTools.readPackageVersion(\"redis\")\n const major = parseInt(version.split(\".\")[0], 10)\n if (isNaN(major)) {\n throw new TypeORMError(`Invalid Redis version format: ${version}`)\n }\n if (major <= 4) {\n // Redis 3/4 uses callback-based API\n this.redisMajorVersion = 3\n } else {\n // Redis 5+ uses Promise-based API\n this.redisMajorVersion = 5\n }\n }\n\n /**\n * Checks if Redis version is 5.x or higher\n */\n private isRedis5OrHigher(): boolean {\n if (this.clientType !== \"redis\") return false\n return (\n this.redisMajorVersion !== undefined && this.redisMajorVersion >= 5\n )\n }\n}\n"],"sourceRoot":".."}
|
|
1
|
+
{"version":3,"sources":["../browser/src/cache/RedisQueryResultCache.ts"],"names":[],"mappings":"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","file":"RedisQueryResultCache.js","sourcesContent":["import { QueryResultCache } from \"./QueryResultCache\"\nimport { QueryResultCacheOptions } from \"./QueryResultCacheOptions\"\nimport { PlatformTools } from \"../platform/PlatformTools\"\nimport { DataSource } from \"../data-source/DataSource\"\nimport { QueryRunner } from \"../query-runner/QueryRunner\"\nimport { TypeORMError } from \"../error/TypeORMError\"\n\n/**\n * Caches query result into Redis database.\n */\nexport class RedisQueryResultCache implements QueryResultCache {\n // -------------------------------------------------------------------------\n // Protected Properties\n // -------------------------------------------------------------------------\n\n /**\n * Redis module instance loaded dynamically.\n */\n protected redis: any\n\n /**\n * Connected redis client.\n */\n protected client: any\n\n /**\n * Type of the Redis Client (redis or ioredis).\n */\n protected clientType: \"redis\" | \"ioredis\" | \"ioredis/cluster\"\n\n /**\n * Redis major version number\n */\n protected redisMajorVersion: number | undefined\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n protected connection: DataSource,\n clientType: \"redis\" | \"ioredis\" | \"ioredis/cluster\",\n ) {\n this.clientType = clientType\n this.redis = this.loadRedis()\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates a connection with given cache provider.\n */\n async connect(): Promise<void> {\n const cacheOptions: any = this.connection.options.cache\n if (this.clientType === \"redis\") {\n const clientOptions = {\n ...cacheOptions?.options,\n }\n\n // Create initial client to test Redis version\n let tempClient = this.redis.createClient(clientOptions)\n const isRedis4Plus = typeof tempClient.connect === \"function\"\n\n if (isRedis4Plus) {\n // Redis 4+ detected, recreate with legacyMode for Redis 4.x\n // (Redis 5 will ignore legacyMode if not needed)\n clientOptions.legacyMode = true\n tempClient = this.redis.createClient(clientOptions)\n }\n\n // Set as the main client\n this.client = tempClient\n\n if (\n typeof this.connection.options.cache === \"object\" &&\n this.connection.options.cache.ignoreErrors\n ) {\n this.client.on(\"error\", (err: any) => {\n this.connection.logger.log(\"warn\", err)\n })\n }\n\n // Connect if Redis 4+\n if (typeof this.client.connect === \"function\") {\n await this.client.connect()\n }\n\n // Detect precise version after connection is established\n this.detectRedisVersion()\n } else if (this.clientType === \"ioredis\") {\n if (cacheOptions && cacheOptions.port) {\n if (cacheOptions.options) {\n this.client = new this.redis(\n cacheOptions.port,\n cacheOptions.options,\n )\n } else {\n this.client = new this.redis(cacheOptions.port)\n }\n } else if (cacheOptions && cacheOptions.options) {\n this.client = new this.redis(cacheOptions.options)\n } else {\n this.client = new this.redis()\n }\n } else if (this.clientType === \"ioredis/cluster\") {\n if (\n cacheOptions &&\n cacheOptions.options &&\n Array.isArray(cacheOptions.options)\n ) {\n this.client = new this.redis.Cluster(cacheOptions.options)\n } else if (\n cacheOptions &&\n cacheOptions.options &&\n cacheOptions.options.startupNodes\n ) {\n this.client = new this.redis.Cluster(\n cacheOptions.options.startupNodes,\n cacheOptions.options.options,\n )\n } else {\n throw new TypeORMError(\n `options.startupNodes required for ${this.clientType}.`,\n )\n }\n }\n }\n\n /**\n * Disconnects the connection\n */\n async disconnect(): Promise<void> {\n if (this.isRedis5OrHigher()) {\n // Redis 5+ uses quit() that returns a Promise\n await this.client.quit()\n this.client = undefined\n return\n }\n\n // Redis 3/4 callback style\n return new Promise<void>((ok, fail) => {\n this.client.quit((err: any, result: any) => {\n if (err) return fail(err)\n ok()\n this.client = undefined\n })\n })\n }\n\n /**\n * Creates table for storing cache if it does not exist yet.\n */\n async synchronize(queryRunner: QueryRunner): Promise<void> {}\n\n /**\n * Get data from cache.\n * Returns cache result if found.\n * Returns undefined if result is not cached.\n */\n getFromCache(\n options: QueryResultCacheOptions,\n queryRunner?: QueryRunner,\n ): Promise<QueryResultCacheOptions | undefined> {\n const key = options.identifier || options.query\n if (!key) return Promise.resolve(undefined)\n\n if (this.isRedis5OrHigher()) {\n // Redis 5+ Promise-based API\n return this.client.get(key).then((result: any) => {\n return result ? JSON.parse(result) : undefined\n })\n }\n\n // Redis 3/4 callback-based API\n return new Promise<QueryResultCacheOptions | undefined>((ok, fail) => {\n this.client.get(key, (err: any, result: any) => {\n if (err) return fail(err)\n ok(result ? JSON.parse(result) : undefined)\n })\n })\n }\n\n /**\n * Checks if cache is expired or not.\n */\n isExpired(savedCache: QueryResultCacheOptions): boolean {\n return savedCache.time! + savedCache.duration < Date.now()\n }\n\n /**\n * Stores given query result in the cache.\n */\n async storeInCache(\n options: QueryResultCacheOptions,\n savedCache: QueryResultCacheOptions,\n queryRunner?: QueryRunner,\n ): Promise<void> {\n const key = options.identifier || options.query\n if (!key) return\n\n const value = JSON.stringify(options)\n const duration = options.duration\n\n if (this.isRedis5OrHigher()) {\n // Redis 5+ Promise-based API with PX option\n await this.client.set(key, value, {\n PX: duration,\n })\n return\n }\n\n // Redis 3/4 callback-based API\n return new Promise<void>((ok, fail) => {\n this.client.set(\n key,\n value,\n \"PX\",\n duration,\n (err: any, result: any) => {\n if (err) return fail(err)\n ok()\n },\n )\n })\n }\n\n /**\n * Clears everything stored in the cache.\n */\n async clear(queryRunner?: QueryRunner): Promise<void> {\n if (this.isRedis5OrHigher()) {\n // Redis 5+ Promise-based API\n await this.client.flushDb()\n return\n }\n\n // Redis 3/4 callback-based API\n return new Promise<void>((ok, fail) => {\n this.client.flushdb((err: any, result: any) => {\n if (err) return fail(err)\n ok()\n })\n })\n }\n\n /**\n * Removes all cached results by given identifiers from cache.\n */\n async remove(\n identifiers: string[],\n queryRunner?: QueryRunner,\n ): Promise<void> {\n await Promise.all(\n identifiers.map((identifier) => {\n return this.deleteKey(identifier)\n }),\n )\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Removes a single key from redis database.\n */\n protected async deleteKey(key: string): Promise<void> {\n if (this.isRedis5OrHigher()) {\n // Redis 5+ Promise-based API\n await this.client.del(key)\n return\n }\n\n // Redis 3/4 callback-based API\n return new Promise<void>((ok, fail) => {\n this.client.del(key, (err: any, result: any) => {\n if (err) return fail(err)\n ok()\n })\n })\n }\n\n /**\n * Loads redis dependency.\n */\n protected loadRedis(): any {\n try {\n if (this.clientType === \"ioredis/cluster\") {\n return PlatformTools.load(\"ioredis\")\n } else {\n return PlatformTools.load(this.clientType)\n }\n } catch {\n throw new TypeORMError(\n `Cannot use cache because ${this.clientType} is not installed. Please run \"npm i ${this.clientType}\".`,\n )\n }\n }\n\n /**\n * Detects the Redis package version by reading the installed package.json\n * and sets the appropriate API version (3 for callback-based, 5 for Promise-based).\n */\n private detectRedisVersion(): void {\n if (this.clientType !== \"redis\") return\n const version = PlatformTools.readPackageVersion(\"redis\")\n const major = parseInt(version.split(\".\")[0], 10)\n if (isNaN(major)) {\n throw new TypeORMError(`Invalid Redis version format: ${version}`)\n }\n if (major <= 4) {\n // Redis 3/4 uses callback-based API\n this.redisMajorVersion = 3\n } else {\n // Redis 5+ uses Promise-based API\n this.redisMajorVersion = 5\n }\n }\n\n /**\n * Checks if Redis version is 5.x or higher\n */\n private isRedis5OrHigher(): boolean {\n if (this.clientType !== \"redis\") return false\n return (\n this.redisMajorVersion !== undefined && this.redisMajorVersion >= 5\n )\n }\n}\n"],"sourceRoot":".."}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../browser/src/cli-ts-node-commonjs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../browser/src/cli-ts-node-commonjs.ts"],"names":[],"mappings":";;;AACA,OAAO,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAA;AAC7B,iBAAc","file":"cli-ts-node-commonjs.js","sourcesContent":["#!/usr/bin/env node\nrequire(\"ts-node\").register()\nimport \"./cli\"\n"],"sourceRoot":"."}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const child_process_1 = require("child_process");
|
|
3
5
|
if ((process.env["NODE_OPTIONS"] || "").includes("--loader ts-node"))
|
|
4
6
|
require("./cli");
|
|
5
7
|
else {
|
|
6
|
-
const childProcess = spawnSync(process.argv[0], process.argv.slice(1), {
|
|
8
|
+
const childProcess = (0, child_process_1.spawnSync)(process.argv[0], process.argv.slice(1), {
|
|
7
9
|
stdio: "inherit",
|
|
8
10
|
env: {
|
|
9
11
|
...process.env,
|