taon-typeorm 18.0.24 → 19.0.1
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/assets/shared/shared_folder_info.txt +3 -3
- package/browser/README.md +24 -24
- package/client/README.md +24 -24
- package/index.js.map +1 -1
- package/lib/build-info._auto-generated_.d.ts +1 -0
- package/lib/build-info._auto-generated_.js +4 -1
- package/lib/build-info._auto-generated_.js.map +1 -1
- package/lib/index._auto-generated_.js +2 -2
- package/lib/index._auto-generated_.js.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/typeorm/cache/DbQueryResultCache.js.map +1 -1
- package/lib/typeorm/cache/QueryResultCache.js.map +1 -1
- package/lib/typeorm/cache/QueryResultCacheFactory.js.map +1 -1
- package/lib/typeorm/cache/QueryResultCacheOptions.js.map +1 -1
- package/lib/typeorm/cache/RedisQueryResultCache.js.map +1 -1
- package/lib/typeorm/cli-ts-node-commonjs.js.map +1 -1
- package/lib/typeorm/cli-ts-node-esm.js.map +1 -1
- package/lib/typeorm/cli.js.map +1 -1
- package/lib/typeorm/commands/CacheClearCommand.js.map +1 -1
- package/lib/typeorm/commands/CommandUtils.js.map +1 -1
- package/lib/typeorm/commands/EntityCreateCommand.js.map +1 -1
- package/lib/typeorm/commands/InitCommand.js.map +1 -1
- package/lib/typeorm/commands/MigrationCreateCommand.js.map +1 -1
- package/lib/typeorm/commands/MigrationGenerateCommand.js.map +1 -1
- package/lib/typeorm/commands/MigrationRevertCommand.js.map +1 -1
- package/lib/typeorm/commands/MigrationRunCommand.js.map +1 -1
- package/lib/typeorm/commands/MigrationShowCommand.js.map +1 -1
- package/lib/typeorm/commands/QueryCommand.js.map +1 -1
- package/lib/typeorm/commands/SchemaDropCommand.js.map +1 -1
- package/lib/typeorm/commands/SchemaLogCommand.js.map +1 -1
- package/lib/typeorm/commands/SchemaSyncCommand.js.map +1 -1
- package/lib/typeorm/commands/SubscriberCreateCommand.js.map +1 -1
- package/lib/typeorm/commands/VersionCommand.js.map +1 -1
- package/lib/typeorm/common/DeepPartial.js.map +1 -1
- package/lib/typeorm/common/EntityTarget.js.map +1 -1
- package/lib/typeorm/common/MixedList.js.map +1 -1
- package/lib/typeorm/common/NonNever.js.map +1 -1
- package/lib/typeorm/common/ObjectLiteral.js.map +1 -1
- package/lib/typeorm/common/ObjectType.js.map +1 -1
- package/lib/typeorm/common/RelationType.js.map +1 -1
- package/lib/typeorm/connection/BaseConnectionOptions.js.map +1 -1
- package/lib/typeorm/connection/Connection.js.map +1 -1
- package/lib/typeorm/connection/ConnectionManager.js.map +1 -1
- package/lib/typeorm/connection/ConnectionMetadataBuilder.js.map +1 -1
- package/lib/typeorm/connection/ConnectionOptions.js.map +1 -1
- package/lib/typeorm/connection/ConnectionOptionsReader.js.map +1 -1
- package/lib/typeorm/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
- package/lib/typeorm/connection/options-reader/ConnectionOptionsXmlReader.js.map +1 -1
- package/lib/typeorm/connection/options-reader/ConnectionOptionsYmlReader.js.map +1 -1
- package/lib/typeorm/constants.js.map +1 -1
- package/lib/typeorm/container.js.map +1 -1
- package/lib/typeorm/data-source/BaseDataSourceOptions.js.map +1 -1
- package/lib/typeorm/data-source/DataSource.js.map +1 -1
- package/lib/typeorm/data-source/DataSourceOptions.js.map +1 -1
- package/lib/typeorm/data-source/index.js.map +1 -1
- package/lib/typeorm/decorator/Check.js.map +1 -1
- package/lib/typeorm/decorator/EntityRepository.js.map +1 -1
- package/lib/typeorm/decorator/Exclusion.js.map +1 -1
- package/lib/typeorm/decorator/Generated.js.map +1 -1
- package/lib/typeorm/decorator/Index.js.map +1 -1
- package/lib/typeorm/decorator/Unique.js.map +1 -1
- package/lib/typeorm/decorator/columns/Column.js.map +1 -1
- package/lib/typeorm/decorator/columns/CreateDateColumn.js.map +1 -1
- package/lib/typeorm/decorator/columns/DeleteDateColumn.js.map +1 -1
- package/lib/typeorm/decorator/columns/ObjectIdColumn.js.map +1 -1
- package/lib/typeorm/decorator/columns/PrimaryColumn.js.map +1 -1
- package/lib/typeorm/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
- package/lib/typeorm/decorator/columns/UpdateDateColumn.js.map +1 -1
- package/lib/typeorm/decorator/columns/VersionColumn.js.map +1 -1
- package/lib/typeorm/decorator/columns/ViewColumn.js.map +1 -1
- package/lib/typeorm/decorator/columns/VirtualColumn.js.map +1 -1
- package/lib/typeorm/decorator/entity/ChildEntity.js.map +1 -1
- package/lib/typeorm/decorator/entity/Entity.js.map +1 -1
- package/lib/typeorm/decorator/entity/TableInheritance.js.map +1 -1
- package/lib/typeorm/decorator/entity-view/ViewEntity.js.map +1 -1
- package/lib/typeorm/decorator/listeners/AfterInsert.js.map +1 -1
- package/lib/typeorm/decorator/listeners/AfterLoad.js.map +1 -1
- package/lib/typeorm/decorator/listeners/AfterRecover.js.map +1 -1
- package/lib/typeorm/decorator/listeners/AfterRemove.js.map +1 -1
- package/lib/typeorm/decorator/listeners/AfterSoftRemove.js.map +1 -1
- package/lib/typeorm/decorator/listeners/AfterUpdate.js.map +1 -1
- package/lib/typeorm/decorator/listeners/BeforeInsert.js.map +1 -1
- package/lib/typeorm/decorator/listeners/BeforeRecover.js.map +1 -1
- package/lib/typeorm/decorator/listeners/BeforeRemove.js.map +1 -1
- package/lib/typeorm/decorator/listeners/BeforeSoftRemove.js.map +1 -1
- package/lib/typeorm/decorator/listeners/BeforeUpdate.js.map +1 -1
- package/lib/typeorm/decorator/listeners/EventSubscriber.js.map +1 -1
- package/lib/typeorm/decorator/options/ColumnCommonOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/ColumnEmbeddedOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/ColumnEnumOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/ColumnHstoreOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/ColumnNumericOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/ColumnOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/ColumnWithLengthOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/ColumnWithWidthOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/EntityOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/IndexOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/JoinColumnOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/JoinTableMultipleColumnsOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/JoinTableOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/PrimaryGeneratedColumnUUIDOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/RelationOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/SpatialColumnOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/TransactionOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/UniqueOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/ValueTransformer.js.map +1 -1
- package/lib/typeorm/decorator/options/ViewColumnOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/ViewEntityOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/VirtualColumnOptions.js.map +1 -1
- package/lib/typeorm/decorator/relations/JoinColumn.js.map +1 -1
- package/lib/typeorm/decorator/relations/JoinTable.js.map +1 -1
- package/lib/typeorm/decorator/relations/ManyToMany.js.map +1 -1
- package/lib/typeorm/decorator/relations/ManyToOne.js.map +1 -1
- package/lib/typeorm/decorator/relations/OneToMany.js.map +1 -1
- package/lib/typeorm/decorator/relations/OneToOne.js.map +1 -1
- package/lib/typeorm/decorator/relations/RelationCount.js.map +1 -1
- package/lib/typeorm/decorator/relations/RelationId.js.map +1 -1
- package/lib/typeorm/decorator/tree/Tree.js.map +1 -1
- package/lib/typeorm/decorator/tree/TreeChildren.js.map +1 -1
- package/lib/typeorm/decorator/tree/TreeLevelColumn.js.map +1 -1
- package/lib/typeorm/decorator/tree/TreeParent.js.map +1 -1
- package/lib/typeorm/driver/Driver.js.map +1 -1
- package/lib/typeorm/driver/DriverFactory.js.map +1 -1
- package/lib/typeorm/driver/DriverUtils.js.map +1 -1
- package/lib/typeorm/driver/Query.js.map +1 -1
- package/lib/typeorm/driver/SqlInMemory.js.map +1 -1
- package/lib/typeorm/driver/aurora-mysql/AuroraMysqlConnection.js.map +1 -1
- package/lib/typeorm/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.js.map +1 -1
- package/lib/typeorm/driver/aurora-mysql/AuroraMysqlConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
- package/lib/typeorm/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/aurora-postgres/AuroraPostgresConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/aurora-postgres/AuroraPostgresDriver.js.map +1 -1
- package/lib/typeorm/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
- package/lib/typeorm/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
- package/lib/typeorm/driver/capacitor/CapacitorConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/capacitor/CapacitorDriver.js.map +1 -1
- package/lib/typeorm/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/cockroachdb/CockroachConnectionCredentialsOptions.js.map +1 -1
- package/lib/typeorm/driver/cockroachdb/CockroachConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/lib/typeorm/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/cordova/CordovaConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/cordova/CordovaDriver.js.map +1 -1
- package/lib/typeorm/driver/cordova/CordovaQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/expo/ExpoConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/expo/ExpoDriver.js.map +1 -1
- package/lib/typeorm/driver/expo/ExpoQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/mongodb/MongoConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/mongodb/MongoDriver.js.map +1 -1
- package/lib/typeorm/driver/mongodb/MongoQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/mongodb/typings.js.map +1 -1
- package/lib/typeorm/driver/mysql/MysqlConnectionCredentialsOptions.js.map +1 -1
- package/lib/typeorm/driver/mysql/MysqlConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/mysql/MysqlDriver.js.map +1 -1
- package/lib/typeorm/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/nativescript/NativescriptConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/nativescript/NativescriptDriver.js.map +1 -1
- package/lib/typeorm/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/oracle/OracleConnectionCredentialsOptions.js.map +1 -1
- package/lib/typeorm/driver/oracle/OracleConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/oracle/OracleDriver.js.map +1 -1
- package/lib/typeorm/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/postgres/PostgresConnectionCredentialsOptions.js.map +1 -1
- package/lib/typeorm/driver/postgres/PostgresConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/postgres/PostgresDriver.js.map +1 -1
- package/lib/typeorm/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/react-native/ReactNativeConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/react-native/ReactNativeDriver.js.map +1 -1
- package/lib/typeorm/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/sap/SapConnectionCredentialsOptions.js.map +1 -1
- package/lib/typeorm/driver/sap/SapConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/sap/SapDriver.js.map +1 -1
- package/lib/typeorm/driver/sap/SapQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -1
- package/lib/typeorm/driver/spanner/SpannerConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/spanner/SpannerDriver.js.map +1 -1
- package/lib/typeorm/driver/spanner/SpannerQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/sqlite/SqliteDriver.js.map +1 -1
- package/lib/typeorm/driver/sqlite/SqliteQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/lib/typeorm/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/sqljs/SqljsConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/sqljs/SqljsDriver.js.map +1 -1
- package/lib/typeorm/driver/sqljs/SqljsQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/MssqlParameter.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/SqlServerConnectionCredentialsOptions.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/authentication/DefaultAuthentication.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/authentication/NtlmAuthentication.js.map +1 -1
- package/lib/typeorm/driver/types/ColumnTypes.js.map +1 -1
- package/lib/typeorm/driver/types/CteCapabilities.js.map +1 -1
- package/lib/typeorm/driver/types/DataTypeDefaults.js.map +1 -1
- package/lib/typeorm/driver/types/DatabaseType.js.map +1 -1
- package/lib/typeorm/driver/types/IsolationLevel.js.map +1 -1
- package/lib/typeorm/driver/types/MappedColumnTypes.js.map +1 -1
- package/lib/typeorm/driver/types/MetadataTableType.js.map +1 -1
- package/lib/typeorm/driver/types/ReplicationMode.js.map +1 -1
- package/lib/typeorm/driver/types/UpsertType.js.map +1 -1
- package/lib/typeorm/entity-manager/EntityManager.js.map +1 -1
- package/lib/typeorm/entity-manager/EntityManagerFactory.js.map +1 -1
- package/lib/typeorm/entity-manager/MongoEntityManager.js.map +1 -1
- package/lib/typeorm/entity-manager/SqljsEntityManager.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchema.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchemaCheckOptions.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchemaEmbeddedColumnOptions.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchemaEmbeddedError.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchemaExclusionOptions.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchemaOptions.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchemaRelationIdOptions.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchemaRelationOptions.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchemaUniqueOptions.js.map +1 -1
- package/lib/typeorm/error/AlreadyHasActiveConnectionError.js.map +1 -1
- package/lib/typeorm/error/CannotAttachTreeChildrenEntityError.js.map +1 -1
- package/lib/typeorm/error/CannotConnectAlreadyConnectedError.js.map +1 -1
- package/lib/typeorm/error/CannotCreateEntityIdMapError.js.map +1 -1
- package/lib/typeorm/error/CannotDetermineEntityError.js.map +1 -1
- package/lib/typeorm/error/CannotExecuteNotConnectedError.js.map +1 -1
- package/lib/typeorm/error/CannotGetEntityManagerNotConnectedError.js.map +1 -1
- package/lib/typeorm/error/CannotReflectMethodParameterTypeError.js.map +1 -1
- package/lib/typeorm/error/CircularRelationsError.js.map +1 -1
- package/lib/typeorm/error/ColumnTypeUndefinedError.js.map +1 -1
- package/lib/typeorm/error/ConnectionIsNotSetError.js.map +1 -1
- package/lib/typeorm/error/ConnectionNotFoundError.js.map +1 -1
- package/lib/typeorm/error/CustomRepositoryCannotInheritRepositoryError.js.map +1 -1
- package/lib/typeorm/error/CustomRepositoryDoesNotHaveEntityError.js.map +1 -1
- package/lib/typeorm/error/CustomRepositoryNotFoundError.js.map +1 -1
- package/lib/typeorm/error/DataTypeNotSupportedError.js.map +1 -1
- package/lib/typeorm/error/DriverOptionNotSetError.js.map +1 -1
- package/lib/typeorm/error/DriverPackageNotInstalledError.js.map +1 -1
- package/lib/typeorm/error/EntityMetadataNotFoundError.js.map +1 -1
- package/lib/typeorm/error/EntityNotFoundError.js.map +1 -1
- package/lib/typeorm/error/EntityPropertyNotFoundError.js.map +1 -1
- package/lib/typeorm/error/FindRelationsNotFoundError.js.map +1 -1
- package/lib/typeorm/error/ForbiddenTransactionModeOverrideError.js.map +1 -1
- package/lib/typeorm/error/InitializedRelationError.js.map +1 -1
- package/lib/typeorm/error/InsertValuesMissingError.js.map +1 -1
- package/lib/typeorm/error/LimitOnUpdateNotSupportedError.js.map +1 -1
- package/lib/typeorm/error/LockNotSupportedOnGivenDriverError.js.map +1 -1
- package/lib/typeorm/error/MetadataAlreadyExistsError.js.map +1 -1
- package/lib/typeorm/error/MetadataWithSuchNameAlreadyExistsError.js.map +1 -1
- package/lib/typeorm/error/MissingDeleteDateColumnError.js.map +1 -1
- package/lib/typeorm/error/MissingDriverError.js.map +1 -1
- package/lib/typeorm/error/MissingJoinColumnError.js.map +1 -1
- package/lib/typeorm/error/MissingJoinTableError.js.map +1 -1
- package/lib/typeorm/error/MissingPrimaryColumnError.js.map +1 -1
- package/lib/typeorm/error/MustBeEntityError.js.map +1 -1
- package/lib/typeorm/error/NamingStrategyNotFoundError.js.map +1 -1
- package/lib/typeorm/error/NestedSetMultipleRootError.js.map +1 -1
- package/lib/typeorm/error/NoConnectionForRepositoryError.js.map +1 -1
- package/lib/typeorm/error/NoConnectionOptionError.js.map +1 -1
- package/lib/typeorm/error/NoNeedToReleaseEntityManagerError.js.map +1 -1
- package/lib/typeorm/error/NoVersionOrUpdateDateColumnError.js.map +1 -1
- package/lib/typeorm/error/OffsetWithoutLimitNotSupportedError.js.map +1 -1
- package/lib/typeorm/error/OptimisticLockCanNotBeUsedError.js.map +1 -1
- package/lib/typeorm/error/OptimisticLockVersionMismatchError.js.map +1 -1
- package/lib/typeorm/error/PersistedEntityNotFoundError.js.map +1 -1
- package/lib/typeorm/error/PessimisticLockTransactionRequiredError.js.map +1 -1
- package/lib/typeorm/error/PrimaryColumnCannotBeNullableError.js.map +1 -1
- package/lib/typeorm/error/QueryFailedError.js.map +1 -1
- package/lib/typeorm/error/QueryRunnerAlreadyReleasedError.js.map +1 -1
- package/lib/typeorm/error/QueryRunnerProviderAlreadyReleasedError.js.map +1 -1
- package/lib/typeorm/error/RepositoryNotTreeError.js.map +1 -1
- package/lib/typeorm/error/ReturningStatementNotSupportedError.js.map +1 -1
- package/lib/typeorm/error/SubjectRemovedAndUpdatedError.js.map +1 -1
- package/lib/typeorm/error/SubjectWithoutIdentifierError.js.map +1 -1
- package/lib/typeorm/error/TransactionAlreadyStartedError.js.map +1 -1
- package/lib/typeorm/error/TransactionNotStartedError.js.map +1 -1
- package/lib/typeorm/error/TreeRepositoryNotSupportedError.js.map +1 -1
- package/lib/typeorm/error/TypeORMError.js.map +1 -1
- package/lib/typeorm/error/UpdateValuesMissingError.js.map +1 -1
- package/lib/typeorm/error/UsingJoinColumnIsNotAllowedError.js.map +1 -1
- package/lib/typeorm/error/UsingJoinColumnOnlyOnOneSideAllowedError.js.map +1 -1
- package/lib/typeorm/error/UsingJoinTableIsNotAllowedError.js.map +1 -1
- package/lib/typeorm/error/UsingJoinTableOnlyOnOneSideAllowedError.js.map +1 -1
- package/lib/typeorm/error/index.js.map +1 -1
- package/lib/typeorm/find-options/EqualOperator.js.map +1 -1
- package/lib/typeorm/find-options/FindManyOptions.js.map +1 -1
- package/lib/typeorm/find-options/FindOneOptions.js.map +1 -1
- package/lib/typeorm/find-options/FindOperator.js.map +1 -1
- package/lib/typeorm/find-options/FindOperatorType.js.map +1 -1
- package/lib/typeorm/find-options/FindOptionsOrder.js.map +1 -1
- package/lib/typeorm/find-options/FindOptionsRelations.js.map +1 -1
- package/lib/typeorm/find-options/FindOptionsSelect.js.map +1 -1
- package/lib/typeorm/find-options/FindOptionsUtils.js.map +1 -1
- package/lib/typeorm/find-options/FindOptionsWhere.js.map +1 -1
- package/lib/typeorm/find-options/FindTreeOptions.js.map +1 -1
- package/lib/typeorm/find-options/JoinOptions.js.map +1 -1
- package/lib/typeorm/find-options/OrderByCondition.js.map +1 -1
- package/lib/typeorm/find-options/mongodb/MongoFindManyOptions.js.map +1 -1
- package/lib/typeorm/find-options/mongodb/MongoFindOneOptions.js.map +1 -1
- package/lib/typeorm/find-options/operator/And.js.map +1 -1
- package/lib/typeorm/find-options/operator/Any.js.map +1 -1
- package/lib/typeorm/find-options/operator/ArrayContainedBy.js.map +1 -1
- package/lib/typeorm/find-options/operator/ArrayContains.js.map +1 -1
- package/lib/typeorm/find-options/operator/ArrayOverlap.js.map +1 -1
- package/lib/typeorm/find-options/operator/Between.js.map +1 -1
- package/lib/typeorm/find-options/operator/Equal.js.map +1 -1
- package/lib/typeorm/find-options/operator/ILike.js.map +1 -1
- package/lib/typeorm/find-options/operator/In.js.map +1 -1
- package/lib/typeorm/find-options/operator/IsNull.js.map +1 -1
- package/lib/typeorm/find-options/operator/LessThan.js.map +1 -1
- package/lib/typeorm/find-options/operator/LessThanOrEqual.js.map +1 -1
- package/lib/typeorm/find-options/operator/Like.js.map +1 -1
- package/lib/typeorm/find-options/operator/MoreThan.js.map +1 -1
- package/lib/typeorm/find-options/operator/MoreThanOrEqual.js.map +1 -1
- package/lib/typeorm/find-options/operator/Not.js.map +1 -1
- package/lib/typeorm/find-options/operator/Raw.js.map +1 -1
- package/lib/typeorm/globals.js.map +1 -1
- package/lib/typeorm/index.js.map +1 -1
- package/lib/typeorm/logger/AdvancedConsoleLogger.js.map +1 -1
- package/lib/typeorm/logger/DebugLogger.js.map +1 -1
- package/lib/typeorm/logger/FileLogger.js.map +1 -1
- package/lib/typeorm/logger/Logger.js.map +1 -1
- package/lib/typeorm/logger/LoggerFactory.js.map +1 -1
- package/lib/typeorm/logger/LoggerOptions.js.map +1 -1
- package/lib/typeorm/logger/SimpleConsoleLogger.js.map +1 -1
- package/lib/typeorm/metadata/CheckMetadata.js.map +1 -1
- package/lib/typeorm/metadata/ColumnMetadata.js.map +1 -1
- package/lib/typeorm/metadata/EmbeddedMetadata.js.map +1 -1
- package/lib/typeorm/metadata/EntityListenerMetadata.js.map +1 -1
- package/lib/typeorm/metadata/EntityMetadata.js.map +1 -1
- package/lib/typeorm/metadata/ExclusionMetadata.js.map +1 -1
- package/lib/typeorm/metadata/ForeignKeyMetadata.js.map +1 -1
- package/lib/typeorm/metadata/IndexMetadata.js.map +1 -1
- package/lib/typeorm/metadata/RelationCountMetadata.js.map +1 -1
- package/lib/typeorm/metadata/RelationIdMetadata.js.map +1 -1
- package/lib/typeorm/metadata/RelationMetadata.js.map +1 -1
- package/lib/typeorm/metadata/UniqueMetadata.js.map +1 -1
- package/lib/typeorm/metadata/types/ClosureTreeOptions.js.map +1 -1
- package/lib/typeorm/metadata/types/DeferrableType.js.map +1 -1
- package/lib/typeorm/metadata/types/EventListenerTypes.js.map +1 -1
- package/lib/typeorm/metadata/types/OnDeleteType.js.map +1 -1
- package/lib/typeorm/metadata/types/OnUpdateType.js.map +1 -1
- package/lib/typeorm/metadata/types/PropertyTypeInFunction.js.map +1 -1
- package/lib/typeorm/metadata/types/RelationTypeInFunction.js.map +1 -1
- package/lib/typeorm/metadata/types/RelationTypes.js.map +1 -1
- package/lib/typeorm/metadata/types/TableTypes.js.map +1 -1
- package/lib/typeorm/metadata/types/TreeTypes.js.map +1 -1
- package/lib/typeorm/metadata-args/CheckMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/ColumnMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/DiscriminatorValueMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/EmbeddedMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/EntityListenerMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/EntityRepositoryMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/EntitySubscriberMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/ExclusionMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/GeneratedMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/IndexMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/InheritanceMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/JoinColumnMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/JoinTableMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/MetadataArgsStorage.js.map +1 -1
- package/lib/typeorm/metadata-args/NamingStrategyMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/RelationCountMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/RelationIdMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/RelationMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/TableMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/TransactionEntityMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/TransactionRepositoryMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/TreeMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/UniqueMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/types/ColumnMode.js.map +1 -1
- package/lib/typeorm/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
- package/lib/typeorm/metadata-builder/EntityMetadataBuilder.js.map +1 -1
- package/lib/typeorm/metadata-builder/EntityMetadataValidator.js.map +1 -1
- package/lib/typeorm/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
- package/lib/typeorm/metadata-builder/MetadataUtils.js.map +1 -1
- package/lib/typeorm/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
- package/lib/typeorm/migration/Migration.js.map +1 -1
- package/lib/typeorm/migration/MigrationExecutor.js.map +1 -1
- package/lib/typeorm/migration/MigrationInterface.js.map +1 -1
- package/lib/typeorm/naming-strategy/DefaultNamingStrategy.js.map +1 -1
- package/lib/typeorm/naming-strategy/NamingStrategyInterface.js.map +1 -1
- package/lib/typeorm/persistence/EntityPersistExecutor.js.map +1 -1
- package/lib/typeorm/persistence/Subject.js.map +1 -1
- package/lib/typeorm/persistence/SubjectChangeMap.js.map +1 -1
- package/lib/typeorm/persistence/SubjectChangedColumnsComputer.js.map +1 -1
- package/lib/typeorm/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
- package/lib/typeorm/persistence/SubjectExecutor.js.map +1 -1
- package/lib/typeorm/persistence/SubjectTopoligicalSorter.js.map +1 -1
- package/lib/typeorm/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
- package/lib/typeorm/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
- package/lib/typeorm/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
- package/lib/typeorm/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
- package/lib/typeorm/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
- package/lib/typeorm/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
- package/lib/typeorm/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
- package/lib/typeorm/platform/PlatformTools.js.map +1 -1
- package/lib/typeorm/query-builder/Alias.js.map +1 -1
- package/lib/typeorm/query-builder/Brackets.js.map +1 -1
- package/lib/typeorm/query-builder/DeleteQueryBuilder.js.map +1 -1
- package/lib/typeorm/query-builder/InsertOrUpdateOptions.js.map +1 -1
- package/lib/typeorm/query-builder/InsertQueryBuilder.js.map +1 -1
- package/lib/typeorm/query-builder/JoinAttribute.js.map +1 -1
- package/lib/typeorm/query-builder/JoinOptions.js.map +1 -1
- package/lib/typeorm/query-builder/NotBrackets.js.map +1 -1
- package/lib/typeorm/query-builder/QueryBuilder.js.map +1 -1
- package/lib/typeorm/query-builder/QueryBuilderCte.js.map +1 -1
- package/lib/typeorm/query-builder/QueryBuilderUtils.js.map +1 -1
- package/lib/typeorm/query-builder/QueryExpressionMap.js.map +1 -1
- package/lib/typeorm/query-builder/QueryPartialEntity.js.map +1 -1
- package/lib/typeorm/query-builder/RelationIdLoader.js.map +1 -1
- package/lib/typeorm/query-builder/RelationLoader.js.map +1 -1
- package/lib/typeorm/query-builder/RelationQueryBuilder.js.map +1 -1
- package/lib/typeorm/query-builder/RelationRemover.js.map +1 -1
- package/lib/typeorm/query-builder/RelationUpdater.js.map +1 -1
- package/lib/typeorm/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
- package/lib/typeorm/query-builder/SelectQuery.js.map +1 -1
- package/lib/typeorm/query-builder/SelectQueryBuilder.js.map +1 -1
- package/lib/typeorm/query-builder/SelectQueryBuilderOption.js.map +1 -1
- package/lib/typeorm/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
- package/lib/typeorm/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/lib/typeorm/query-builder/WhereClause.js.map +1 -1
- package/lib/typeorm/query-builder/WhereExpressionBuilder.js.map +1 -1
- package/lib/typeorm/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
- package/lib/typeorm/query-builder/relation-count/RelationCountLoadResult.js.map +1 -1
- package/lib/typeorm/query-builder/relation-count/RelationCountLoader.js.map +1 -1
- package/lib/typeorm/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js.map +1 -1
- package/lib/typeorm/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
- package/lib/typeorm/query-builder/relation-id/RelationIdLoadResult.js.map +1 -1
- package/lib/typeorm/query-builder/relation-id/RelationIdLoader.js.map +1 -1
- package/lib/typeorm/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js.map +1 -1
- package/lib/typeorm/query-builder/result/DeleteResult.js.map +1 -1
- package/lib/typeorm/query-builder/result/InsertResult.js.map +1 -1
- package/lib/typeorm/query-builder/result/UpdateResult.js.map +1 -1
- package/lib/typeorm/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
- package/lib/typeorm/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
- package/lib/typeorm/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
- package/lib/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
- package/lib/typeorm/query-runner/BaseQueryRunner.js.map +1 -1
- package/lib/typeorm/query-runner/QueryLock.js.map +1 -1
- package/lib/typeorm/query-runner/QueryResult.js.map +1 -1
- package/lib/typeorm/query-runner/QueryRunner.js.map +1 -1
- package/lib/typeorm/repository/AbstractRepository.js.map +1 -1
- package/lib/typeorm/repository/BaseEntity.js.map +1 -1
- package/lib/typeorm/repository/EntityId.js.map +1 -1
- package/lib/typeorm/repository/FindTreesOptions.js.map +1 -1
- package/lib/typeorm/repository/MongoRepository.js.map +1 -1
- package/lib/typeorm/repository/RemoveOptions.js.map +1 -1
- package/lib/typeorm/repository/Repository.js.map +1 -1
- package/lib/typeorm/repository/SaveOptions.js.map +1 -1
- package/lib/typeorm/repository/TreeRepository.js.map +1 -1
- package/lib/typeorm/repository/UpsertOptions.js.map +1 -1
- package/lib/typeorm/schema-builder/MongoSchemaBuilder.js.map +1 -1
- package/lib/typeorm/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
- package/lib/typeorm/schema-builder/SchemaBuilder.js.map +1 -1
- package/lib/typeorm/schema-builder/options/TableCheckOptions.js.map +1 -1
- package/lib/typeorm/schema-builder/options/TableColumnOptions.js.map +1 -1
- package/lib/typeorm/schema-builder/options/TableExclusionOptions.js.map +1 -1
- package/lib/typeorm/schema-builder/options/TableForeignKeyOptions.js.map +1 -1
- package/lib/typeorm/schema-builder/options/TableIndexOptions.js.map +1 -1
- package/lib/typeorm/schema-builder/options/TableOptions.js.map +1 -1
- package/lib/typeorm/schema-builder/options/TableUniqueOptions.js.map +1 -1
- package/lib/typeorm/schema-builder/options/ViewOptions.js.map +1 -1
- package/lib/typeorm/schema-builder/table/Table.js.map +1 -1
- package/lib/typeorm/schema-builder/table/TableCheck.js.map +1 -1
- package/lib/typeorm/schema-builder/table/TableColumn.js.map +1 -1
- package/lib/typeorm/schema-builder/table/TableExclusion.js.map +1 -1
- package/lib/typeorm/schema-builder/table/TableForeignKey.js.map +1 -1
- package/lib/typeorm/schema-builder/table/TableIndex.js.map +1 -1
- package/lib/typeorm/schema-builder/table/TableUnique.js.map +1 -1
- package/lib/typeorm/schema-builder/util/TableUtils.js.map +1 -1
- package/lib/typeorm/schema-builder/util/ViewUtils.js.map +1 -1
- package/lib/typeorm/schema-builder/view/View.js.map +1 -1
- package/lib/typeorm/subscriber/Broadcaster.js.map +1 -1
- package/lib/typeorm/subscriber/BroadcasterResult.js.map +1 -1
- package/lib/typeorm/subscriber/EntitySubscriberInterface.js.map +1 -1
- package/lib/typeorm/subscriber/event/InsertEvent.js.map +1 -1
- package/lib/typeorm/subscriber/event/LoadEvent.js.map +1 -1
- package/lib/typeorm/subscriber/event/RecoverEvent.js.map +1 -1
- package/lib/typeorm/subscriber/event/RemoveEvent.js.map +1 -1
- package/lib/typeorm/subscriber/event/SoftRemoveEvent.js.map +1 -1
- package/lib/typeorm/subscriber/event/TransactionCommitEvent.js.map +1 -1
- package/lib/typeorm/subscriber/event/TransactionRollbackEvent.js.map +1 -1
- package/lib/typeorm/subscriber/event/TransactionStartEvent.js.map +1 -1
- package/lib/typeorm/subscriber/event/UpdateEvent.js.map +1 -1
- package/lib/typeorm/util/ApplyValueTransformers.js.map +1 -1
- package/lib/typeorm/util/DateUtils.js.map +1 -1
- package/lib/typeorm/util/DepGraph.js.map +1 -1
- package/lib/typeorm/util/DirectoryExportedClassesLoader.js.map +1 -1
- package/lib/typeorm/util/ImportUtils.js.map +1 -1
- package/lib/typeorm/util/InstanceChecker.js.map +1 -1
- package/lib/typeorm/util/ObjectUtils.js.map +1 -1
- package/lib/typeorm/util/OrmUtils.js.map +1 -1
- package/lib/typeorm/util/PathUtils.js.map +1 -1
- package/lib/typeorm/util/RandomGenerator.js.map +1 -1
- package/lib/typeorm/util/StringUtils.js.map +1 -1
- package/lib/typeorm/util/TreeRepositoryUtils.js.map +1 -1
- package/lib/typeorm/util/VersionUtils.js.map +1 -1
- package/lib/typeorm/util/escapeRegExp.js.map +1 -1
- package/migrations/index.js.map +1 -1
- package/migrations/migrations_index._auto-generated_.js.map +1 -1
- package/package.json +2 -2
- package/src.d.ts +3 -3
- package/taon.jsonc +7 -9
- package/tmp-environment.json +4 -3
- package/websql/README.md +24 -24
- package/browser/esm2022/lib/index.mjs +0 -4
- package/browser/esm2022/lib/typeorm/cache/DbQueryResultCache.mjs +0 -251
- package/browser/esm2022/lib/typeorm/cache/QueryResultCache.mjs +0 -4
- package/browser/esm2022/lib/typeorm/cache/QueryResultCacheFactory.mjs +0 -33
- package/browser/esm2022/lib/typeorm/cache/QueryResultCacheOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/cache/RedisQueryResultCache.mjs +0 -185
- package/browser/esm2022/lib/typeorm/common/DeepPartial.mjs +0 -3
- package/browser/esm2022/lib/typeorm/common/EntityTarget.mjs +0 -3
- package/browser/esm2022/lib/typeorm/common/MixedList.mjs +0 -3
- package/browser/esm2022/lib/typeorm/common/ObjectLiteral.mjs +0 -4
- package/browser/esm2022/lib/typeorm/common/ObjectType.mjs +0 -3
- package/browser/esm2022/lib/typeorm/common/RelationType.mjs +0 -3
- package/browser/esm2022/lib/typeorm/connection/Connection.mjs +0 -13
- package/browser/esm2022/lib/typeorm/connection/ConnectionManager.mjs +0 -57
- package/browser/esm2022/lib/typeorm/connection/ConnectionMetadataBuilder.mjs +0 -63
- package/browser/esm2022/lib/typeorm/connection/ConnectionOptions.mjs +0 -3
- package/browser/esm2022/lib/typeorm/connection/ConnectionOptionsReader.mjs +0 -237
- package/browser/esm2022/lib/typeorm/constants.mjs +0 -4
- package/browser/esm2022/lib/typeorm/container.mjs +0 -57
- package/browser/esm2022/lib/typeorm/data-source/BaseDataSourceOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/data-source/DataSource.mjs +0 -458
- package/browser/esm2022/lib/typeorm/data-source/DataSourceOptions.mjs +0 -11
- package/browser/esm2022/lib/typeorm/data-source/index.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/Check.mjs +0 -25
- package/browser/esm2022/lib/typeorm/decorator/EntityRepository.mjs +0 -19
- package/browser/esm2022/lib/typeorm/decorator/Exclusion.mjs +0 -25
- package/browser/esm2022/lib/typeorm/decorator/Generated.mjs +0 -22
- package/browser/esm2022/lib/typeorm/decorator/Index.mjs +0 -52
- package/browser/esm2022/lib/typeorm/decorator/Unique.mjs +0 -48
- package/browser/esm2022/lib/typeorm/decorator/columns/Column.mjs +0 -67
- package/browser/esm2022/lib/typeorm/decorator/columns/CreateDateColumn.mjs +0 -19
- package/browser/esm2022/lib/typeorm/decorator/columns/DeleteDateColumn.mjs +0 -18
- package/browser/esm2022/lib/typeorm/decorator/columns/ObjectIdColumn.mjs +0 -23
- package/browser/esm2022/lib/typeorm/decorator/columns/PrimaryColumn.mjs +0 -54
- package/browser/esm2022/lib/typeorm/decorator/columns/PrimaryGeneratedColumn.mjs +0 -52
- package/browser/esm2022/lib/typeorm/decorator/columns/UpdateDateColumn.mjs +0 -18
- package/browser/esm2022/lib/typeorm/decorator/columns/VersionColumn.mjs +0 -19
- package/browser/esm2022/lib/typeorm/decorator/columns/ViewColumn.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/columns/VirtualColumn.mjs +0 -41
- package/browser/esm2022/lib/typeorm/decorator/entity/ChildEntity.mjs +0 -21
- package/browser/esm2022/lib/typeorm/decorator/entity/Entity.mjs +0 -28
- package/browser/esm2022/lib/typeorm/decorator/entity/TableInheritance.mjs +0 -20
- package/browser/esm2022/lib/typeorm/decorator/entity-view/ViewEntity.mjs +0 -30
- package/browser/esm2022/lib/typeorm/decorator/listeners/AfterInsert.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/listeners/AfterLoad.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/listeners/AfterRecover.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/listeners/AfterRemove.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/listeners/AfterSoftRemove.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/listeners/AfterUpdate.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeInsert.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeRecover.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeRemove.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeSoftRemove.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeUpdate.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/listeners/EventSubscriber.mjs +0 -15
- package/browser/esm2022/lib/typeorm/decorator/options/ColumnCommonOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/ColumnEmbeddedOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/ColumnEnumOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/ColumnHstoreOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/ColumnNumericOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/ColumnOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/ColumnWithLengthOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/ColumnWithWidthOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/EntityOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/IndexOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/JoinColumnOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/JoinTableMultipleColumnsOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/JoinTableOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnIdentityOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnNumericOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnUUIDOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/RelationOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/SpatialColumnOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/UniqueOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/ValueTransformer.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/ViewColumnOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/ViewEntityOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/VirtualColumnOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/relations/JoinColumn.mjs +0 -25
- package/browser/esm2022/lib/typeorm/decorator/relations/JoinTable.mjs +0 -31
- package/browser/esm2022/lib/typeorm/decorator/relations/ManyToMany.mjs +0 -40
- package/browser/esm2022/lib/typeorm/decorator/relations/ManyToOne.mjs +0 -40
- package/browser/esm2022/lib/typeorm/decorator/relations/OneToMany.mjs +0 -32
- package/browser/esm2022/lib/typeorm/decorator/relations/OneToOne.mjs +0 -39
- package/browser/esm2022/lib/typeorm/decorator/relations/RelationCount.mjs +0 -20
- package/browser/esm2022/lib/typeorm/decorator/relations/RelationId.mjs +0 -20
- package/browser/esm2022/lib/typeorm/decorator/tree/Tree.mjs +0 -19
- package/browser/esm2022/lib/typeorm/decorator/tree/TreeChildren.mjs +0 -34
- package/browser/esm2022/lib/typeorm/decorator/tree/TreeLevelColumn.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/tree/TreeParent.mjs +0 -34
- package/browser/esm2022/lib/typeorm/driver/Driver.mjs +0 -4
- package/browser/esm2022/lib/typeorm/driver/DriverFactory.mjs +0 -99
- package/browser/esm2022/lib/typeorm/driver/DriverUtils.mjs +0 -213
- package/browser/esm2022/lib/typeorm/driver/Query.mjs +0 -13
- package/browser/esm2022/lib/typeorm/driver/SqlInMemory.mjs +0 -12
- package/browser/esm2022/lib/typeorm/driver/cordova/CordovaConnectionOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/driver/cordova/CordovaDriver.mjs +0 -63
- package/browser/esm2022/lib/typeorm/driver/cordova/CordovaQueryRunner.mjs +0 -152
- package/browser/esm2022/lib/typeorm/driver/mongodb/typings.mjs +0 -6516
- package/browser/esm2022/lib/typeorm/driver/nativescript/NativescriptConnectionOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/driver/nativescript/NativescriptDriver.mjs +0 -82
- package/browser/esm2022/lib/typeorm/driver/nativescript/NativescriptQueryRunner.mjs +0 -82
- package/browser/esm2022/lib/typeorm/driver/react-native/ReactNativeConnectionOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/driver/react-native/ReactNativeDriver.mjs +0 -69
- package/browser/esm2022/lib/typeorm/driver/react-native/ReactNativeQueryRunner.mjs +0 -81
- package/browser/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteDriver.mjs +0 -582
- package/browser/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteQueryRunner.mjs +0 -1421
- package/browser/esm2022/lib/typeorm/driver/sqljs/SqljsConnectionOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/driver/sqljs/SqljsDriver.mjs +0 -249
- package/browser/esm2022/lib/typeorm/driver/sqljs/SqljsQueryRunner.mjs +0 -107
- package/browser/esm2022/lib/typeorm/driver/types/ColumnTypes.mjs +0 -3
- package/browser/esm2022/lib/typeorm/driver/types/CteCapabilities.mjs +0 -4
- package/browser/esm2022/lib/typeorm/driver/types/DataTypeDefaults.mjs +0 -4
- package/browser/esm2022/lib/typeorm/driver/types/DatabaseType.mjs +0 -3
- package/browser/esm2022/lib/typeorm/driver/types/IsolationLevel.mjs +0 -3
- package/browser/esm2022/lib/typeorm/driver/types/MappedColumnTypes.mjs +0 -4
- package/browser/esm2022/lib/typeorm/driver/types/MetadataTableType.mjs +0 -9
- package/browser/esm2022/lib/typeorm/driver/types/ReplicationMode.mjs +0 -3
- package/browser/esm2022/lib/typeorm/driver/types/UpsertType.mjs +0 -3
- package/browser/esm2022/lib/typeorm/entity-manager/EntityManager.mjs +0 -743
- package/browser/esm2022/lib/typeorm/entity-manager/EntityManagerFactory.mjs +0 -23
- package/browser/esm2022/lib/typeorm/entity-manager/SqljsEntityManager.mjs +0 -35
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchema.mjs +0 -12
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaCheckOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaColumnOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedColumnOptions.mjs +0 -5
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedError.mjs +0 -15
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaExclusionOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaIndexOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaOptions.mjs +0 -8
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationIdOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaTransformer.mjs +0 -268
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaUniqueOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/error/AlreadyHasActiveConnectionError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/CannotAttachTreeChildrenEntityError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/CannotConnectAlreadyConnectedError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/CannotCreateEntityIdMapError.mjs +0 -18
- package/browser/esm2022/lib/typeorm/error/CannotDetermineEntityError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/CannotExecuteNotConnectedError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/CannotGetEntityManagerNotConnectedError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/CannotReflectMethodParameterTypeError.mjs +0 -15
- package/browser/esm2022/lib/typeorm/error/CircularRelationsError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/ColumnTypeUndefinedError.mjs +0 -16
- package/browser/esm2022/lib/typeorm/error/ConnectionIsNotSetError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/ConnectionNotFoundError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/CustomRepositoryCannotInheritRepositoryError.mjs +0 -15
- package/browser/esm2022/lib/typeorm/error/CustomRepositoryDoesNotHaveEntityError.mjs +0 -15
- package/browser/esm2022/lib/typeorm/error/CustomRepositoryNotFoundError.mjs +0 -15
- package/browser/esm2022/lib/typeorm/error/DataTypeNotSupportedError.mjs +0 -11
- package/browser/esm2022/lib/typeorm/error/DriverOptionNotSetError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/DriverPackageNotInstalledError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/EntityMetadataNotFoundError.mjs +0 -26
- package/browser/esm2022/lib/typeorm/error/EntityNotFoundError.mjs +0 -37
- package/browser/esm2022/lib/typeorm/error/EntityPropertyNotFoundError.mjs +0 -14
- package/browser/esm2022/lib/typeorm/error/FindRelationsNotFoundError.mjs +0 -20
- package/browser/esm2022/lib/typeorm/error/InitializedRelationError.mjs +0 -17
- package/browser/esm2022/lib/typeorm/error/InsertValuesMissingError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/LimitOnUpdateNotSupportedError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/LockNotSupportedOnGivenDriverError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/MetadataAlreadyExistsError.mjs +0 -15
- package/browser/esm2022/lib/typeorm/error/MetadataWithSuchNameAlreadyExistsError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/MissingDeleteDateColumnError.mjs +0 -9
- package/browser/esm2022/lib/typeorm/error/MissingDriverError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/MissingJoinColumnError.mjs +0 -20
- package/browser/esm2022/lib/typeorm/error/MissingJoinTableError.mjs +0 -20
- package/browser/esm2022/lib/typeorm/error/MissingPrimaryColumnError.mjs +0 -10
- package/browser/esm2022/lib/typeorm/error/MustBeEntityError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/NamingStrategyNotFoundError.mjs +0 -18
- package/browser/esm2022/lib/typeorm/error/NestedSetMultipleRootError.mjs +0 -9
- package/browser/esm2022/lib/typeorm/error/NoConnectionForRepositoryError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/NoConnectionOptionError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/NoNeedToReleaseEntityManagerError.mjs +0 -14
- package/browser/esm2022/lib/typeorm/error/NoVersionOrUpdateDateColumnError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/OffsetWithoutLimitNotSupportedError.mjs +0 -14
- package/browser/esm2022/lib/typeorm/error/OptimisticLockCanNotBeUsedError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/OptimisticLockVersionMismatchError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/PersistedEntityNotFoundError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/PessimisticLockTransactionRequiredError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/PrimaryColumnCannotBeNullableError.mjs +0 -10
- package/browser/esm2022/lib/typeorm/error/QueryFailedError.mjs +0 -27
- package/browser/esm2022/lib/typeorm/error/QueryRunnerAlreadyReleasedError.mjs +0 -9
- package/browser/esm2022/lib/typeorm/error/QueryRunnerProviderAlreadyReleasedError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/RepositoryNotTreeError.mjs +0 -29
- package/browser/esm2022/lib/typeorm/error/ReturningStatementNotSupportedError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/SubjectRemovedAndUpdatedError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/SubjectWithoutIdentifierError.mjs +0 -14
- package/browser/esm2022/lib/typeorm/error/TransactionAlreadyStartedError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/TransactionNotStartedError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/TreeRepositoryNotSupportedError.mjs +0 -9
- package/browser/esm2022/lib/typeorm/error/TypeORMError.mjs +0 -18
- package/browser/esm2022/lib/typeorm/error/UpdateValuesMissingError.mjs +0 -9
- package/browser/esm2022/lib/typeorm/error/UsingJoinColumnIsNotAllowedError.mjs +0 -10
- package/browser/esm2022/lib/typeorm/error/UsingJoinColumnOnlyOnOneSideAllowedError.mjs +0 -11
- package/browser/esm2022/lib/typeorm/error/UsingJoinTableIsNotAllowedError.mjs +0 -11
- package/browser/esm2022/lib/typeorm/error/UsingJoinTableOnlyOnOneSideAllowedError.mjs +0 -11
- package/browser/esm2022/lib/typeorm/error/index.mjs +0 -63
- package/browser/esm2022/lib/typeorm/find-options/EqualOperator.mjs +0 -10
- package/browser/esm2022/lib/typeorm/find-options/FindManyOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/find-options/FindOneOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/find-options/FindOperator.mjs +0 -74
- package/browser/esm2022/lib/typeorm/find-options/FindOperatorType.mjs +0 -3
- package/browser/esm2022/lib/typeorm/find-options/FindOptionsOrder.mjs +0 -3
- package/browser/esm2022/lib/typeorm/find-options/FindOptionsRelations.mjs +0 -3
- package/browser/esm2022/lib/typeorm/find-options/FindOptionsSelect.mjs +0 -5
- package/browser/esm2022/lib/typeorm/find-options/FindOptionsUtils.mjs +0 -293
- package/browser/esm2022/lib/typeorm/find-options/FindOptionsWhere.mjs +0 -3
- package/browser/esm2022/lib/typeorm/find-options/FindTreeOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/find-options/JoinOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/find-options/OrderByCondition.mjs +0 -3
- package/browser/esm2022/lib/typeorm/find-options/operator/Any.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/ArrayContainedBy.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/ArrayContains.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/ArrayOverlap.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/Between.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/Equal.mjs +0 -15
- package/browser/esm2022/lib/typeorm/find-options/operator/ILike.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/In.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/IsNull.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/LessThan.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/LessThanOrEqual.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/Like.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/MoreThan.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/MoreThanOrEqual.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/Not.mjs +0 -12
- package/browser/esm2022/lib/typeorm/find-options/operator/Raw.mjs +0 -10
- package/browser/esm2022/lib/typeorm/globals.mjs +0 -165
- package/browser/esm2022/lib/typeorm/index.mjs +0 -157
- package/browser/esm2022/lib/typeorm/logger/AdvancedConsoleLogger.mjs +0 -109
- package/browser/esm2022/lib/typeorm/logger/DebugLogger.mjs +0 -94
- package/browser/esm2022/lib/typeorm/logger/Logger.mjs +0 -4
- package/browser/esm2022/lib/typeorm/logger/LoggerFactory.mjs +0 -36
- package/browser/esm2022/lib/typeorm/logger/LoggerOptions.mjs +0 -3
- package/browser/esm2022/lib/typeorm/logger/SimpleConsoleLogger.mjs +0 -108
- package/browser/esm2022/lib/typeorm/metadata/CheckMetadata.mjs +0 -26
- package/browser/esm2022/lib/typeorm/metadata/ColumnMetadata.mjs +0 -553
- package/browser/esm2022/lib/typeorm/metadata/EmbeddedMetadata.mjs +0 -206
- package/browser/esm2022/lib/typeorm/metadata/EntityListenerMetadata.mjs +0 -52
- package/browser/esm2022/lib/typeorm/metadata/EntityMetadata.mjs +0 -636
- package/browser/esm2022/lib/typeorm/metadata/ExclusionMetadata.mjs +0 -26
- package/browser/esm2022/lib/typeorm/metadata/ForeignKeyMetadata.mjs +0 -48
- package/browser/esm2022/lib/typeorm/metadata/IndexMetadata.mjs +0 -131
- package/browser/esm2022/lib/typeorm/metadata/RelationCountMetadata.mjs +0 -30
- package/browser/esm2022/lib/typeorm/metadata/RelationIdMetadata.mjs +0 -50
- package/browser/esm2022/lib/typeorm/metadata/RelationMetadata.mjs +0 -398
- package/browser/esm2022/lib/typeorm/metadata/UniqueMetadata.mjs +0 -90
- package/browser/esm2022/lib/typeorm/metadata/types/ClosureTreeOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata/types/DeferrableType.mjs +0 -3
- package/browser/esm2022/lib/typeorm/metadata/types/EventListenerTypes.mjs +0 -19
- package/browser/esm2022/lib/typeorm/metadata/types/OnDeleteType.mjs +0 -3
- package/browser/esm2022/lib/typeorm/metadata/types/OnUpdateType.mjs +0 -3
- package/browser/esm2022/lib/typeorm/metadata/types/PropertyTypeInFunction.mjs +0 -3
- package/browser/esm2022/lib/typeorm/metadata/types/RelationTypeInFunction.mjs +0 -3
- package/browser/esm2022/lib/typeorm/metadata/types/RelationTypes.mjs +0 -3
- package/browser/esm2022/lib/typeorm/metadata/types/TableTypes.mjs +0 -3
- package/browser/esm2022/lib/typeorm/metadata/types/TreeTypes.mjs +0 -3
- package/browser/esm2022/lib/typeorm/metadata-args/CheckMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/ColumnMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/DiscriminatorValueMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/EmbeddedMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/EntityListenerMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/EntityRepositoryMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/EntitySubscriberMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/ExclusionMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/GeneratedMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/IndexMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/InheritanceMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/JoinColumnMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/JoinTableMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/MetadataArgsStorage.mjs +0 -217
- package/browser/esm2022/lib/typeorm/metadata-args/NamingStrategyMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/RelationCountMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/RelationIdMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/RelationMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/TableMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/TransactionEntityMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/TransactionRepositoryMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/TreeMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/UniqueMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/types/ColumnMode.mjs +0 -3
- package/browser/esm2022/lib/typeorm/metadata-builder/ClosureJunctionEntityMetadataBuilder.mjs +0 -131
- package/browser/esm2022/lib/typeorm/metadata-builder/EntityMetadataBuilder.mjs +0 -678
- package/browser/esm2022/lib/typeorm/metadata-builder/EntityMetadataValidator.mjs +0 -183
- package/browser/esm2022/lib/typeorm/metadata-builder/JunctionEntityMetadataBuilder.mjs +0 -262
- package/browser/esm2022/lib/typeorm/metadata-builder/MetadataUtils.mjs +0 -41
- package/browser/esm2022/lib/typeorm/metadata-builder/RelationJoinColumnBuilder.mjs +0 -167
- package/browser/esm2022/lib/typeorm/migration/Migration.mjs +0 -14
- package/browser/esm2022/lib/typeorm/migration/MigrationExecutor.mjs +0 -454
- package/browser/esm2022/lib/typeorm/migration/MigrationInterface.mjs +0 -4
- package/browser/esm2022/lib/typeorm/naming-strategy/DefaultNamingStrategy.mjs +0 -140
- package/browser/esm2022/lib/typeorm/naming-strategy/NamingStrategyInterface.mjs +0 -4
- package/browser/esm2022/lib/typeorm/persistence/EntityPersistExecutor.mjs +0 -125
- package/browser/esm2022/lib/typeorm/persistence/Subject.mjs +0 -212
- package/browser/esm2022/lib/typeorm/persistence/SubjectChangeMap.mjs +0 -4
- package/browser/esm2022/lib/typeorm/persistence/SubjectChangedColumnsComputer.mjs +0 -164
- package/browser/esm2022/lib/typeorm/persistence/SubjectDatabaseEntityLoader.mjs +0 -125
- package/browser/esm2022/lib/typeorm/persistence/SubjectExecutor.mjs +0 -721
- package/browser/esm2022/lib/typeorm/persistence/SubjectTopoligicalSorter.mjs +0 -151
- package/browser/esm2022/lib/typeorm/persistence/subject-builder/CascadesSubjectBuilder.mjs +0 -84
- package/browser/esm2022/lib/typeorm/persistence/subject-builder/ManyToManySubjectBuilder.mjs +0 -153
- package/browser/esm2022/lib/typeorm/persistence/subject-builder/OneToManySubjectBuilder.mjs +0 -117
- package/browser/esm2022/lib/typeorm/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.mjs +0 -95
- package/browser/esm2022/lib/typeorm/persistence/tree/ClosureSubjectExecutor.mjs +0 -220
- package/browser/esm2022/lib/typeorm/persistence/tree/MaterializedPathSubjectExecutor.mjs +0 -97
- package/browser/esm2022/lib/typeorm/persistence/tree/NestedSetSubjectExecutor.mjs +0 -250
- package/browser/esm2022/lib/typeorm/platform/PlatformTools.mjs +0 -346
- package/browser/esm2022/lib/typeorm/query-builder/Alias.mjs +0 -26
- package/browser/esm2022/lib/typeorm/query-builder/Brackets.mjs +0 -16
- package/browser/esm2022/lib/typeorm/query-builder/DeleteQueryBuilder.mjs +0 -181
- package/browser/esm2022/lib/typeorm/query-builder/InsertOrUpdateOptions.mjs +0 -3
- package/browser/esm2022/lib/typeorm/query-builder/InsertQueryBuilder.mjs +0 -651
- package/browser/esm2022/lib/typeorm/query-builder/JoinAttribute.mjs +0 -153
- package/browser/esm2022/lib/typeorm/query-builder/NotBrackets.mjs +0 -14
- package/browser/esm2022/lib/typeorm/query-builder/QueryBuilder.mjs +0 -967
- package/browser/esm2022/lib/typeorm/query-builder/QueryBuilderCte.mjs +0 -4
- package/browser/esm2022/lib/typeorm/query-builder/QueryBuilderUtils.mjs +0 -22
- package/browser/esm2022/lib/typeorm/query-builder/QueryExpressionMap.mjs +0 -309
- package/browser/esm2022/lib/typeorm/query-builder/QueryPartialEntity.mjs +0 -3
- package/browser/esm2022/lib/typeorm/query-builder/RelationIdLoader.mjs +0 -452
- package/browser/esm2022/lib/typeorm/query-builder/RelationLoader.mjs +0 -262
- package/browser/esm2022/lib/typeorm/query-builder/RelationQueryBuilder.mjs +0 -147
- package/browser/esm2022/lib/typeorm/query-builder/RelationRemover.mjs +0 -130
- package/browser/esm2022/lib/typeorm/query-builder/RelationUpdater.mjs +0 -141
- package/browser/esm2022/lib/typeorm/query-builder/ReturningResultsEntityUpdator.mjs +0 -141
- package/browser/esm2022/lib/typeorm/query-builder/SelectQuery.mjs +0 -4
- package/browser/esm2022/lib/typeorm/query-builder/SelectQueryBuilder.mjs +0 -2278
- package/browser/esm2022/lib/typeorm/query-builder/SelectQueryBuilderOption.mjs +0 -3
- package/browser/esm2022/lib/typeorm/query-builder/SoftDeleteQueryBuilder.mjs +0 -348
- package/browser/esm2022/lib/typeorm/query-builder/UpdateQueryBuilder.mjs +0 -510
- package/browser/esm2022/lib/typeorm/query-builder/WhereClause.mjs +0 -3
- package/browser/esm2022/lib/typeorm/query-builder/WhereExpressionBuilder.mjs +0 -4
- package/browser/esm2022/lib/typeorm/query-builder/relation-count/RelationCountAttribute.mjs +0 -71
- package/browser/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoadResult.mjs +0 -4
- package/browser/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoader.mjs +0 -142
- package/browser/esm2022/lib/typeorm/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.mjs +0 -33
- package/browser/esm2022/lib/typeorm/query-builder/relation-id/RelationIdAttribute.mjs +0 -79
- package/browser/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoadResult.mjs +0 -4
- package/browser/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoader.mjs +0 -247
- package/browser/esm2022/lib/typeorm/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.mjs +0 -33
- package/browser/esm2022/lib/typeorm/query-builder/result/DeleteResult.mjs +0 -14
- package/browser/esm2022/lib/typeorm/query-builder/result/InsertResult.mjs +0 -25
- package/browser/esm2022/lib/typeorm/query-builder/result/UpdateResult.mjs +0 -25
- package/browser/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.mjs +0 -101
- package/browser/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToNewEntityTransformer.mjs +0 -67
- package/browser/esm2022/lib/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.mjs +0 -366
- package/browser/esm2022/lib/typeorm/query-runner/BaseQueryRunner.mjs +0 -392
- package/browser/esm2022/lib/typeorm/query-runner/QueryResult.mjs +0 -14
- package/browser/esm2022/lib/typeorm/query-runner/QueryRunner.mjs +0 -4
- package/browser/esm2022/lib/typeorm/repository/AbstractRepository.mjs +0 -80
- package/browser/esm2022/lib/typeorm/repository/BaseEntity.mjs +0 -283
- package/browser/esm2022/lib/typeorm/repository/FindTreesOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/repository/RemoveOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/repository/Repository.mjs +0 -275
- package/browser/esm2022/lib/typeorm/repository/SaveOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/repository/TreeRepository.mjs +0 -254
- package/browser/esm2022/lib/typeorm/repository/UpsertOptions.mjs +0 -7
- package/browser/esm2022/lib/typeorm/schema-builder/RdbmsSchemaBuilder.mjs +0 -770
- package/browser/esm2022/lib/typeorm/schema-builder/SchemaBuilder.mjs +0 -4
- package/browser/esm2022/lib/typeorm/schema-builder/options/TableCheckOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/schema-builder/options/TableColumnOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/schema-builder/options/TableExclusionOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/schema-builder/options/TableForeignKeyOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/schema-builder/options/TableIndexOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/schema-builder/options/TableOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/schema-builder/options/TableUniqueOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/schema-builder/options/ViewOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/schema-builder/table/Table.mjs +0 -274
- package/browser/esm2022/lib/typeorm/schema-builder/table/TableCheck.mjs +0 -37
- package/browser/esm2022/lib/typeorm/schema-builder/table/TableColumn.mjs +0 -108
- package/browser/esm2022/lib/typeorm/schema-builder/table/TableExclusion.mjs +0 -31
- package/browser/esm2022/lib/typeorm/schema-builder/table/TableForeignKey.mjs +0 -60
- package/browser/esm2022/lib/typeorm/schema-builder/table/TableIndex.mjs +0 -53
- package/browser/esm2022/lib/typeorm/schema-builder/table/TableUnique.mjs +0 -38
- package/browser/esm2022/lib/typeorm/schema-builder/util/TableUtils.mjs +0 -38
- package/browser/esm2022/lib/typeorm/schema-builder/util/ViewUtils.mjs +0 -24
- package/browser/esm2022/lib/typeorm/schema-builder/view/View.mjs +0 -43
- package/browser/esm2022/lib/typeorm/subscriber/Broadcaster.mjs +0 -596
- package/browser/esm2022/lib/typeorm/subscriber/BroadcasterResult.mjs +0 -27
- package/browser/esm2022/lib/typeorm/subscriber/EntitySubscriberInterface.mjs +0 -4
- package/browser/esm2022/lib/typeorm/subscriber/event/InsertEvent.mjs +0 -4
- package/browser/esm2022/lib/typeorm/subscriber/event/LoadEvent.mjs +0 -4
- package/browser/esm2022/lib/typeorm/subscriber/event/RecoverEvent.mjs +0 -4
- package/browser/esm2022/lib/typeorm/subscriber/event/RemoveEvent.mjs +0 -4
- package/browser/esm2022/lib/typeorm/subscriber/event/SoftRemoveEvent.mjs +0 -4
- package/browser/esm2022/lib/typeorm/subscriber/event/TransactionCommitEvent.mjs +0 -4
- package/browser/esm2022/lib/typeorm/subscriber/event/TransactionRollbackEvent.mjs +0 -4
- package/browser/esm2022/lib/typeorm/subscriber/event/TransactionStartEvent.mjs +0 -4
- package/browser/esm2022/lib/typeorm/subscriber/event/UpdateEvent.mjs +0 -4
- package/browser/esm2022/lib/typeorm/util/ApplyValueTransformers.mjs +0 -22
- package/browser/esm2022/lib/typeorm/util/DateUtils.mjs +0 -216
- package/browser/esm2022/lib/typeorm/util/DepGraph.mjs +0 -222
- package/browser/esm2022/lib/typeorm/util/DirectoryExportedClassesLoader.mjs +0 -76
- package/browser/esm2022/lib/typeorm/util/ImportUtils.mjs +0 -86
- package/browser/esm2022/lib/typeorm/util/InstanceChecker.mjs +0 -114
- package/browser/esm2022/lib/typeorm/util/ObjectUtils.mjs +0 -38
- package/browser/esm2022/lib/typeorm/util/OrmUtils.mjs +0 -310
- package/browser/esm2022/lib/typeorm/util/PathUtils.mjs +0 -38
- package/browser/esm2022/lib/typeorm/util/RandomGenerator.mjs +0 -150
- package/browser/esm2022/lib/typeorm/util/StringUtils.mjs +0 -108
- package/browser/esm2022/lib/typeorm/util/TreeRepositoryUtils.mjs +0 -53
- package/browser/esm2022/lib/typeorm/util/VersionUtils.mjs +0 -17
- package/browser/esm2022/lib/typeorm/util/escapeRegExp.mjs +0 -4
- package/browser/esm2022/public-api.mjs +0 -2
- package/browser/esm2022/taon-typeorm.mjs +0 -5
- package/client/esm2022/lib/index.mjs +0 -4
- package/client/esm2022/lib/typeorm/cache/DbQueryResultCache.mjs +0 -251
- package/client/esm2022/lib/typeorm/cache/QueryResultCache.mjs +0 -4
- package/client/esm2022/lib/typeorm/cache/QueryResultCacheFactory.mjs +0 -33
- package/client/esm2022/lib/typeorm/cache/QueryResultCacheOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/cache/RedisQueryResultCache.mjs +0 -185
- package/client/esm2022/lib/typeorm/common/DeepPartial.mjs +0 -3
- package/client/esm2022/lib/typeorm/common/EntityTarget.mjs +0 -3
- package/client/esm2022/lib/typeorm/common/MixedList.mjs +0 -3
- package/client/esm2022/lib/typeorm/common/ObjectLiteral.mjs +0 -4
- package/client/esm2022/lib/typeorm/common/ObjectType.mjs +0 -3
- package/client/esm2022/lib/typeorm/common/RelationType.mjs +0 -3
- package/client/esm2022/lib/typeorm/connection/Connection.mjs +0 -13
- package/client/esm2022/lib/typeorm/connection/ConnectionManager.mjs +0 -57
- package/client/esm2022/lib/typeorm/connection/ConnectionMetadataBuilder.mjs +0 -63
- package/client/esm2022/lib/typeorm/connection/ConnectionOptions.mjs +0 -3
- package/client/esm2022/lib/typeorm/connection/ConnectionOptionsReader.mjs +0 -237
- package/client/esm2022/lib/typeorm/constants.mjs +0 -4
- package/client/esm2022/lib/typeorm/container.mjs +0 -57
- package/client/esm2022/lib/typeorm/data-source/BaseDataSourceOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/data-source/DataSource.mjs +0 -458
- package/client/esm2022/lib/typeorm/data-source/DataSourceOptions.mjs +0 -11
- package/client/esm2022/lib/typeorm/data-source/index.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/Check.mjs +0 -25
- package/client/esm2022/lib/typeorm/decorator/EntityRepository.mjs +0 -19
- package/client/esm2022/lib/typeorm/decorator/Exclusion.mjs +0 -25
- package/client/esm2022/lib/typeorm/decorator/Generated.mjs +0 -22
- package/client/esm2022/lib/typeorm/decorator/Index.mjs +0 -52
- package/client/esm2022/lib/typeorm/decorator/Unique.mjs +0 -48
- package/client/esm2022/lib/typeorm/decorator/columns/Column.mjs +0 -67
- package/client/esm2022/lib/typeorm/decorator/columns/CreateDateColumn.mjs +0 -19
- package/client/esm2022/lib/typeorm/decorator/columns/DeleteDateColumn.mjs +0 -18
- package/client/esm2022/lib/typeorm/decorator/columns/ObjectIdColumn.mjs +0 -23
- package/client/esm2022/lib/typeorm/decorator/columns/PrimaryColumn.mjs +0 -54
- package/client/esm2022/lib/typeorm/decorator/columns/PrimaryGeneratedColumn.mjs +0 -52
- package/client/esm2022/lib/typeorm/decorator/columns/UpdateDateColumn.mjs +0 -18
- package/client/esm2022/lib/typeorm/decorator/columns/VersionColumn.mjs +0 -19
- package/client/esm2022/lib/typeorm/decorator/columns/ViewColumn.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/columns/VirtualColumn.mjs +0 -41
- package/client/esm2022/lib/typeorm/decorator/entity/ChildEntity.mjs +0 -21
- package/client/esm2022/lib/typeorm/decorator/entity/Entity.mjs +0 -28
- package/client/esm2022/lib/typeorm/decorator/entity/TableInheritance.mjs +0 -20
- package/client/esm2022/lib/typeorm/decorator/entity-view/ViewEntity.mjs +0 -30
- package/client/esm2022/lib/typeorm/decorator/listeners/AfterInsert.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/listeners/AfterLoad.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/listeners/AfterRecover.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/listeners/AfterRemove.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/listeners/AfterSoftRemove.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/listeners/AfterUpdate.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/listeners/BeforeInsert.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/listeners/BeforeRecover.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/listeners/BeforeRemove.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/listeners/BeforeSoftRemove.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/listeners/BeforeUpdate.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/listeners/EventSubscriber.mjs +0 -15
- package/client/esm2022/lib/typeorm/decorator/options/ColumnCommonOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/ColumnEmbeddedOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/ColumnEnumOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/ColumnHstoreOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/ColumnNumericOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/ColumnOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/ColumnWithLengthOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/ColumnWithWidthOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/EntityOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/IndexOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/JoinColumnOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/JoinTableMultipleColumnsOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/JoinTableOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnIdentityOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnNumericOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnUUIDOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/RelationOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/SpatialColumnOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/UniqueOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/ValueTransformer.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/ViewColumnOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/ViewEntityOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/VirtualColumnOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/relations/JoinColumn.mjs +0 -25
- package/client/esm2022/lib/typeorm/decorator/relations/JoinTable.mjs +0 -31
- package/client/esm2022/lib/typeorm/decorator/relations/ManyToMany.mjs +0 -40
- package/client/esm2022/lib/typeorm/decorator/relations/ManyToOne.mjs +0 -40
- package/client/esm2022/lib/typeorm/decorator/relations/OneToMany.mjs +0 -32
- package/client/esm2022/lib/typeorm/decorator/relations/OneToOne.mjs +0 -39
- package/client/esm2022/lib/typeorm/decorator/relations/RelationCount.mjs +0 -20
- package/client/esm2022/lib/typeorm/decorator/relations/RelationId.mjs +0 -20
- package/client/esm2022/lib/typeorm/decorator/tree/Tree.mjs +0 -19
- package/client/esm2022/lib/typeorm/decorator/tree/TreeChildren.mjs +0 -34
- package/client/esm2022/lib/typeorm/decorator/tree/TreeLevelColumn.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/tree/TreeParent.mjs +0 -34
- package/client/esm2022/lib/typeorm/driver/Driver.mjs +0 -4
- package/client/esm2022/lib/typeorm/driver/DriverFactory.mjs +0 -99
- package/client/esm2022/lib/typeorm/driver/DriverUtils.mjs +0 -213
- package/client/esm2022/lib/typeorm/driver/Query.mjs +0 -13
- package/client/esm2022/lib/typeorm/driver/SqlInMemory.mjs +0 -12
- package/client/esm2022/lib/typeorm/driver/cordova/CordovaConnectionOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/driver/cordova/CordovaDriver.mjs +0 -63
- package/client/esm2022/lib/typeorm/driver/cordova/CordovaQueryRunner.mjs +0 -152
- package/client/esm2022/lib/typeorm/driver/mongodb/typings.mjs +0 -6516
- package/client/esm2022/lib/typeorm/driver/nativescript/NativescriptConnectionOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/driver/nativescript/NativescriptDriver.mjs +0 -82
- package/client/esm2022/lib/typeorm/driver/nativescript/NativescriptQueryRunner.mjs +0 -82
- package/client/esm2022/lib/typeorm/driver/react-native/ReactNativeConnectionOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/driver/react-native/ReactNativeDriver.mjs +0 -69
- package/client/esm2022/lib/typeorm/driver/react-native/ReactNativeQueryRunner.mjs +0 -81
- package/client/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteDriver.mjs +0 -582
- package/client/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteQueryRunner.mjs +0 -1421
- package/client/esm2022/lib/typeorm/driver/sqljs/SqljsConnectionOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/driver/sqljs/SqljsDriver.mjs +0 -249
- package/client/esm2022/lib/typeorm/driver/sqljs/SqljsQueryRunner.mjs +0 -107
- package/client/esm2022/lib/typeorm/driver/types/ColumnTypes.mjs +0 -3
- package/client/esm2022/lib/typeorm/driver/types/CteCapabilities.mjs +0 -4
- package/client/esm2022/lib/typeorm/driver/types/DataTypeDefaults.mjs +0 -4
- package/client/esm2022/lib/typeorm/driver/types/DatabaseType.mjs +0 -3
- package/client/esm2022/lib/typeorm/driver/types/IsolationLevel.mjs +0 -3
- package/client/esm2022/lib/typeorm/driver/types/MappedColumnTypes.mjs +0 -4
- package/client/esm2022/lib/typeorm/driver/types/MetadataTableType.mjs +0 -9
- package/client/esm2022/lib/typeorm/driver/types/ReplicationMode.mjs +0 -3
- package/client/esm2022/lib/typeorm/driver/types/UpsertType.mjs +0 -3
- package/client/esm2022/lib/typeorm/entity-manager/EntityManager.mjs +0 -743
- package/client/esm2022/lib/typeorm/entity-manager/EntityManagerFactory.mjs +0 -23
- package/client/esm2022/lib/typeorm/entity-manager/SqljsEntityManager.mjs +0 -35
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchema.mjs +0 -12
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaCheckOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaColumnOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedColumnOptions.mjs +0 -5
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedError.mjs +0 -15
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaExclusionOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaIndexOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaOptions.mjs +0 -8
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationIdOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaTransformer.mjs +0 -268
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaUniqueOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/error/AlreadyHasActiveConnectionError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/CannotAttachTreeChildrenEntityError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/CannotConnectAlreadyConnectedError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/CannotCreateEntityIdMapError.mjs +0 -18
- package/client/esm2022/lib/typeorm/error/CannotDetermineEntityError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/CannotExecuteNotConnectedError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/CannotGetEntityManagerNotConnectedError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/CannotReflectMethodParameterTypeError.mjs +0 -15
- package/client/esm2022/lib/typeorm/error/CircularRelationsError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/ColumnTypeUndefinedError.mjs +0 -16
- package/client/esm2022/lib/typeorm/error/ConnectionIsNotSetError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/ConnectionNotFoundError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/CustomRepositoryCannotInheritRepositoryError.mjs +0 -15
- package/client/esm2022/lib/typeorm/error/CustomRepositoryDoesNotHaveEntityError.mjs +0 -15
- package/client/esm2022/lib/typeorm/error/CustomRepositoryNotFoundError.mjs +0 -15
- package/client/esm2022/lib/typeorm/error/DataTypeNotSupportedError.mjs +0 -11
- package/client/esm2022/lib/typeorm/error/DriverOptionNotSetError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/DriverPackageNotInstalledError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/EntityMetadataNotFoundError.mjs +0 -26
- package/client/esm2022/lib/typeorm/error/EntityNotFoundError.mjs +0 -37
- package/client/esm2022/lib/typeorm/error/EntityPropertyNotFoundError.mjs +0 -14
- package/client/esm2022/lib/typeorm/error/FindRelationsNotFoundError.mjs +0 -20
- package/client/esm2022/lib/typeorm/error/InitializedRelationError.mjs +0 -17
- package/client/esm2022/lib/typeorm/error/InsertValuesMissingError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/LimitOnUpdateNotSupportedError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/LockNotSupportedOnGivenDriverError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/MetadataAlreadyExistsError.mjs +0 -15
- package/client/esm2022/lib/typeorm/error/MetadataWithSuchNameAlreadyExistsError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/MissingDeleteDateColumnError.mjs +0 -9
- package/client/esm2022/lib/typeorm/error/MissingDriverError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/MissingJoinColumnError.mjs +0 -20
- package/client/esm2022/lib/typeorm/error/MissingJoinTableError.mjs +0 -20
- package/client/esm2022/lib/typeorm/error/MissingPrimaryColumnError.mjs +0 -10
- package/client/esm2022/lib/typeorm/error/MustBeEntityError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/NamingStrategyNotFoundError.mjs +0 -18
- package/client/esm2022/lib/typeorm/error/NestedSetMultipleRootError.mjs +0 -9
- package/client/esm2022/lib/typeorm/error/NoConnectionForRepositoryError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/NoConnectionOptionError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/NoNeedToReleaseEntityManagerError.mjs +0 -14
- package/client/esm2022/lib/typeorm/error/NoVersionOrUpdateDateColumnError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/OffsetWithoutLimitNotSupportedError.mjs +0 -14
- package/client/esm2022/lib/typeorm/error/OptimisticLockCanNotBeUsedError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/OptimisticLockVersionMismatchError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/PersistedEntityNotFoundError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/PessimisticLockTransactionRequiredError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/PrimaryColumnCannotBeNullableError.mjs +0 -10
- package/client/esm2022/lib/typeorm/error/QueryFailedError.mjs +0 -27
- package/client/esm2022/lib/typeorm/error/QueryRunnerAlreadyReleasedError.mjs +0 -9
- package/client/esm2022/lib/typeorm/error/QueryRunnerProviderAlreadyReleasedError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/RepositoryNotTreeError.mjs +0 -29
- package/client/esm2022/lib/typeorm/error/ReturningStatementNotSupportedError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/SubjectRemovedAndUpdatedError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/SubjectWithoutIdentifierError.mjs +0 -14
- package/client/esm2022/lib/typeorm/error/TransactionAlreadyStartedError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/TransactionNotStartedError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/TreeRepositoryNotSupportedError.mjs +0 -9
- package/client/esm2022/lib/typeorm/error/TypeORMError.mjs +0 -18
- package/client/esm2022/lib/typeorm/error/UpdateValuesMissingError.mjs +0 -9
- package/client/esm2022/lib/typeorm/error/UsingJoinColumnIsNotAllowedError.mjs +0 -10
- package/client/esm2022/lib/typeorm/error/UsingJoinColumnOnlyOnOneSideAllowedError.mjs +0 -11
- package/client/esm2022/lib/typeorm/error/UsingJoinTableIsNotAllowedError.mjs +0 -11
- package/client/esm2022/lib/typeorm/error/UsingJoinTableOnlyOnOneSideAllowedError.mjs +0 -11
- package/client/esm2022/lib/typeorm/error/index.mjs +0 -63
- package/client/esm2022/lib/typeorm/find-options/EqualOperator.mjs +0 -10
- package/client/esm2022/lib/typeorm/find-options/FindManyOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/find-options/FindOneOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/find-options/FindOperator.mjs +0 -74
- package/client/esm2022/lib/typeorm/find-options/FindOperatorType.mjs +0 -3
- package/client/esm2022/lib/typeorm/find-options/FindOptionsOrder.mjs +0 -3
- package/client/esm2022/lib/typeorm/find-options/FindOptionsRelations.mjs +0 -3
- package/client/esm2022/lib/typeorm/find-options/FindOptionsSelect.mjs +0 -5
- package/client/esm2022/lib/typeorm/find-options/FindOptionsUtils.mjs +0 -293
- package/client/esm2022/lib/typeorm/find-options/FindOptionsWhere.mjs +0 -3
- package/client/esm2022/lib/typeorm/find-options/FindTreeOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/find-options/JoinOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/find-options/OrderByCondition.mjs +0 -3
- package/client/esm2022/lib/typeorm/find-options/operator/Any.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/ArrayContainedBy.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/ArrayContains.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/ArrayOverlap.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/Between.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/Equal.mjs +0 -15
- package/client/esm2022/lib/typeorm/find-options/operator/ILike.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/In.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/IsNull.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/LessThan.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/LessThanOrEqual.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/Like.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/MoreThan.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/MoreThanOrEqual.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/Not.mjs +0 -12
- package/client/esm2022/lib/typeorm/find-options/operator/Raw.mjs +0 -10
- package/client/esm2022/lib/typeorm/globals.mjs +0 -165
- package/client/esm2022/lib/typeorm/index.mjs +0 -157
- package/client/esm2022/lib/typeorm/logger/AdvancedConsoleLogger.mjs +0 -109
- package/client/esm2022/lib/typeorm/logger/DebugLogger.mjs +0 -94
- package/client/esm2022/lib/typeorm/logger/Logger.mjs +0 -4
- package/client/esm2022/lib/typeorm/logger/LoggerFactory.mjs +0 -36
- package/client/esm2022/lib/typeorm/logger/LoggerOptions.mjs +0 -3
- package/client/esm2022/lib/typeorm/logger/SimpleConsoleLogger.mjs +0 -108
- package/client/esm2022/lib/typeorm/metadata/CheckMetadata.mjs +0 -26
- package/client/esm2022/lib/typeorm/metadata/ColumnMetadata.mjs +0 -553
- package/client/esm2022/lib/typeorm/metadata/EmbeddedMetadata.mjs +0 -206
- package/client/esm2022/lib/typeorm/metadata/EntityListenerMetadata.mjs +0 -52
- package/client/esm2022/lib/typeorm/metadata/EntityMetadata.mjs +0 -636
- package/client/esm2022/lib/typeorm/metadata/ExclusionMetadata.mjs +0 -26
- package/client/esm2022/lib/typeorm/metadata/ForeignKeyMetadata.mjs +0 -48
- package/client/esm2022/lib/typeorm/metadata/IndexMetadata.mjs +0 -131
- package/client/esm2022/lib/typeorm/metadata/RelationCountMetadata.mjs +0 -30
- package/client/esm2022/lib/typeorm/metadata/RelationIdMetadata.mjs +0 -50
- package/client/esm2022/lib/typeorm/metadata/RelationMetadata.mjs +0 -398
- package/client/esm2022/lib/typeorm/metadata/UniqueMetadata.mjs +0 -90
- package/client/esm2022/lib/typeorm/metadata/types/ClosureTreeOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata/types/DeferrableType.mjs +0 -3
- package/client/esm2022/lib/typeorm/metadata/types/EventListenerTypes.mjs +0 -19
- package/client/esm2022/lib/typeorm/metadata/types/OnDeleteType.mjs +0 -3
- package/client/esm2022/lib/typeorm/metadata/types/OnUpdateType.mjs +0 -3
- package/client/esm2022/lib/typeorm/metadata/types/PropertyTypeInFunction.mjs +0 -3
- package/client/esm2022/lib/typeorm/metadata/types/RelationTypeInFunction.mjs +0 -3
- package/client/esm2022/lib/typeorm/metadata/types/RelationTypes.mjs +0 -3
- package/client/esm2022/lib/typeorm/metadata/types/TableTypes.mjs +0 -3
- package/client/esm2022/lib/typeorm/metadata/types/TreeTypes.mjs +0 -3
- package/client/esm2022/lib/typeorm/metadata-args/CheckMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/ColumnMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/DiscriminatorValueMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/EmbeddedMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/EntityListenerMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/EntityRepositoryMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/EntitySubscriberMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/ExclusionMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/GeneratedMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/IndexMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/InheritanceMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/JoinColumnMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/JoinTableMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/MetadataArgsStorage.mjs +0 -217
- package/client/esm2022/lib/typeorm/metadata-args/NamingStrategyMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/RelationCountMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/RelationIdMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/RelationMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/TableMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/TransactionEntityMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/TransactionRepositoryMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/TreeMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/UniqueMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/types/ColumnMode.mjs +0 -3
- package/client/esm2022/lib/typeorm/metadata-builder/ClosureJunctionEntityMetadataBuilder.mjs +0 -131
- package/client/esm2022/lib/typeorm/metadata-builder/EntityMetadataBuilder.mjs +0 -678
- package/client/esm2022/lib/typeorm/metadata-builder/EntityMetadataValidator.mjs +0 -183
- package/client/esm2022/lib/typeorm/metadata-builder/JunctionEntityMetadataBuilder.mjs +0 -262
- package/client/esm2022/lib/typeorm/metadata-builder/MetadataUtils.mjs +0 -41
- package/client/esm2022/lib/typeorm/metadata-builder/RelationJoinColumnBuilder.mjs +0 -167
- package/client/esm2022/lib/typeorm/migration/Migration.mjs +0 -14
- package/client/esm2022/lib/typeorm/migration/MigrationExecutor.mjs +0 -454
- package/client/esm2022/lib/typeorm/migration/MigrationInterface.mjs +0 -4
- package/client/esm2022/lib/typeorm/naming-strategy/DefaultNamingStrategy.mjs +0 -140
- package/client/esm2022/lib/typeorm/naming-strategy/NamingStrategyInterface.mjs +0 -4
- package/client/esm2022/lib/typeorm/persistence/EntityPersistExecutor.mjs +0 -125
- package/client/esm2022/lib/typeorm/persistence/Subject.mjs +0 -212
- package/client/esm2022/lib/typeorm/persistence/SubjectChangeMap.mjs +0 -4
- package/client/esm2022/lib/typeorm/persistence/SubjectChangedColumnsComputer.mjs +0 -164
- package/client/esm2022/lib/typeorm/persistence/SubjectDatabaseEntityLoader.mjs +0 -125
- package/client/esm2022/lib/typeorm/persistence/SubjectExecutor.mjs +0 -721
- package/client/esm2022/lib/typeorm/persistence/SubjectTopoligicalSorter.mjs +0 -151
- package/client/esm2022/lib/typeorm/persistence/subject-builder/CascadesSubjectBuilder.mjs +0 -84
- package/client/esm2022/lib/typeorm/persistence/subject-builder/ManyToManySubjectBuilder.mjs +0 -153
- package/client/esm2022/lib/typeorm/persistence/subject-builder/OneToManySubjectBuilder.mjs +0 -117
- package/client/esm2022/lib/typeorm/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.mjs +0 -95
- package/client/esm2022/lib/typeorm/persistence/tree/ClosureSubjectExecutor.mjs +0 -220
- package/client/esm2022/lib/typeorm/persistence/tree/MaterializedPathSubjectExecutor.mjs +0 -97
- package/client/esm2022/lib/typeorm/persistence/tree/NestedSetSubjectExecutor.mjs +0 -250
- package/client/esm2022/lib/typeorm/platform/PlatformTools.mjs +0 -346
- package/client/esm2022/lib/typeorm/query-builder/Alias.mjs +0 -26
- package/client/esm2022/lib/typeorm/query-builder/Brackets.mjs +0 -16
- package/client/esm2022/lib/typeorm/query-builder/DeleteQueryBuilder.mjs +0 -181
- package/client/esm2022/lib/typeorm/query-builder/InsertOrUpdateOptions.mjs +0 -3
- package/client/esm2022/lib/typeorm/query-builder/InsertQueryBuilder.mjs +0 -651
- package/client/esm2022/lib/typeorm/query-builder/JoinAttribute.mjs +0 -153
- package/client/esm2022/lib/typeorm/query-builder/NotBrackets.mjs +0 -14
- package/client/esm2022/lib/typeorm/query-builder/QueryBuilder.mjs +0 -967
- package/client/esm2022/lib/typeorm/query-builder/QueryBuilderCte.mjs +0 -4
- package/client/esm2022/lib/typeorm/query-builder/QueryBuilderUtils.mjs +0 -22
- package/client/esm2022/lib/typeorm/query-builder/QueryExpressionMap.mjs +0 -309
- package/client/esm2022/lib/typeorm/query-builder/QueryPartialEntity.mjs +0 -3
- package/client/esm2022/lib/typeorm/query-builder/RelationIdLoader.mjs +0 -452
- package/client/esm2022/lib/typeorm/query-builder/RelationLoader.mjs +0 -262
- package/client/esm2022/lib/typeorm/query-builder/RelationQueryBuilder.mjs +0 -147
- package/client/esm2022/lib/typeorm/query-builder/RelationRemover.mjs +0 -130
- package/client/esm2022/lib/typeorm/query-builder/RelationUpdater.mjs +0 -141
- package/client/esm2022/lib/typeorm/query-builder/ReturningResultsEntityUpdator.mjs +0 -141
- package/client/esm2022/lib/typeorm/query-builder/SelectQuery.mjs +0 -4
- package/client/esm2022/lib/typeorm/query-builder/SelectQueryBuilder.mjs +0 -2278
- package/client/esm2022/lib/typeorm/query-builder/SelectQueryBuilderOption.mjs +0 -3
- package/client/esm2022/lib/typeorm/query-builder/SoftDeleteQueryBuilder.mjs +0 -348
- package/client/esm2022/lib/typeorm/query-builder/UpdateQueryBuilder.mjs +0 -510
- package/client/esm2022/lib/typeorm/query-builder/WhereClause.mjs +0 -3
- package/client/esm2022/lib/typeorm/query-builder/WhereExpressionBuilder.mjs +0 -4
- package/client/esm2022/lib/typeorm/query-builder/relation-count/RelationCountAttribute.mjs +0 -71
- package/client/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoadResult.mjs +0 -4
- package/client/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoader.mjs +0 -142
- package/client/esm2022/lib/typeorm/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.mjs +0 -33
- package/client/esm2022/lib/typeorm/query-builder/relation-id/RelationIdAttribute.mjs +0 -79
- package/client/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoadResult.mjs +0 -4
- package/client/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoader.mjs +0 -247
- package/client/esm2022/lib/typeorm/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.mjs +0 -33
- package/client/esm2022/lib/typeorm/query-builder/result/DeleteResult.mjs +0 -14
- package/client/esm2022/lib/typeorm/query-builder/result/InsertResult.mjs +0 -25
- package/client/esm2022/lib/typeorm/query-builder/result/UpdateResult.mjs +0 -25
- package/client/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.mjs +0 -101
- package/client/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToNewEntityTransformer.mjs +0 -67
- package/client/esm2022/lib/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.mjs +0 -366
- package/client/esm2022/lib/typeorm/query-runner/BaseQueryRunner.mjs +0 -392
- package/client/esm2022/lib/typeorm/query-runner/QueryResult.mjs +0 -14
- package/client/esm2022/lib/typeorm/query-runner/QueryRunner.mjs +0 -4
- package/client/esm2022/lib/typeorm/repository/AbstractRepository.mjs +0 -80
- package/client/esm2022/lib/typeorm/repository/BaseEntity.mjs +0 -283
- package/client/esm2022/lib/typeorm/repository/FindTreesOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/repository/RemoveOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/repository/Repository.mjs +0 -275
- package/client/esm2022/lib/typeorm/repository/SaveOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/repository/TreeRepository.mjs +0 -254
- package/client/esm2022/lib/typeorm/repository/UpsertOptions.mjs +0 -7
- package/client/esm2022/lib/typeorm/schema-builder/RdbmsSchemaBuilder.mjs +0 -770
- package/client/esm2022/lib/typeorm/schema-builder/SchemaBuilder.mjs +0 -4
- package/client/esm2022/lib/typeorm/schema-builder/options/TableCheckOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/schema-builder/options/TableColumnOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/schema-builder/options/TableExclusionOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/schema-builder/options/TableForeignKeyOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/schema-builder/options/TableIndexOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/schema-builder/options/TableOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/schema-builder/options/TableUniqueOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/schema-builder/options/ViewOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/schema-builder/table/Table.mjs +0 -274
- package/client/esm2022/lib/typeorm/schema-builder/table/TableCheck.mjs +0 -37
- package/client/esm2022/lib/typeorm/schema-builder/table/TableColumn.mjs +0 -108
- package/client/esm2022/lib/typeorm/schema-builder/table/TableExclusion.mjs +0 -31
- package/client/esm2022/lib/typeorm/schema-builder/table/TableForeignKey.mjs +0 -60
- package/client/esm2022/lib/typeorm/schema-builder/table/TableIndex.mjs +0 -53
- package/client/esm2022/lib/typeorm/schema-builder/table/TableUnique.mjs +0 -38
- package/client/esm2022/lib/typeorm/schema-builder/util/TableUtils.mjs +0 -38
- package/client/esm2022/lib/typeorm/schema-builder/util/ViewUtils.mjs +0 -24
- package/client/esm2022/lib/typeorm/schema-builder/view/View.mjs +0 -43
- package/client/esm2022/lib/typeorm/subscriber/Broadcaster.mjs +0 -596
- package/client/esm2022/lib/typeorm/subscriber/BroadcasterResult.mjs +0 -27
- package/client/esm2022/lib/typeorm/subscriber/EntitySubscriberInterface.mjs +0 -4
- package/client/esm2022/lib/typeorm/subscriber/event/InsertEvent.mjs +0 -4
- package/client/esm2022/lib/typeorm/subscriber/event/LoadEvent.mjs +0 -4
- package/client/esm2022/lib/typeorm/subscriber/event/RecoverEvent.mjs +0 -4
- package/client/esm2022/lib/typeorm/subscriber/event/RemoveEvent.mjs +0 -4
- package/client/esm2022/lib/typeorm/subscriber/event/SoftRemoveEvent.mjs +0 -4
- package/client/esm2022/lib/typeorm/subscriber/event/TransactionCommitEvent.mjs +0 -4
- package/client/esm2022/lib/typeorm/subscriber/event/TransactionRollbackEvent.mjs +0 -4
- package/client/esm2022/lib/typeorm/subscriber/event/TransactionStartEvent.mjs +0 -4
- package/client/esm2022/lib/typeorm/subscriber/event/UpdateEvent.mjs +0 -4
- package/client/esm2022/lib/typeorm/util/ApplyValueTransformers.mjs +0 -22
- package/client/esm2022/lib/typeorm/util/DateUtils.mjs +0 -216
- package/client/esm2022/lib/typeorm/util/DepGraph.mjs +0 -222
- package/client/esm2022/lib/typeorm/util/DirectoryExportedClassesLoader.mjs +0 -76
- package/client/esm2022/lib/typeorm/util/ImportUtils.mjs +0 -86
- package/client/esm2022/lib/typeorm/util/InstanceChecker.mjs +0 -114
- package/client/esm2022/lib/typeorm/util/ObjectUtils.mjs +0 -38
- package/client/esm2022/lib/typeorm/util/OrmUtils.mjs +0 -310
- package/client/esm2022/lib/typeorm/util/PathUtils.mjs +0 -38
- package/client/esm2022/lib/typeorm/util/RandomGenerator.mjs +0 -150
- package/client/esm2022/lib/typeorm/util/StringUtils.mjs +0 -108
- package/client/esm2022/lib/typeorm/util/TreeRepositoryUtils.mjs +0 -53
- package/client/esm2022/lib/typeorm/util/VersionUtils.mjs +0 -17
- package/client/esm2022/lib/typeorm/util/escapeRegExp.mjs +0 -4
- package/client/esm2022/public-api.mjs +0 -2
- package/client/esm2022/taon-typeorm.mjs +0 -5
- package/websql/esm2022/lib/index.mjs +0 -4
- package/websql/esm2022/lib/typeorm/cache/DbQueryResultCache.mjs +0 -251
- package/websql/esm2022/lib/typeorm/cache/QueryResultCache.mjs +0 -4
- package/websql/esm2022/lib/typeorm/cache/QueryResultCacheFactory.mjs +0 -33
- package/websql/esm2022/lib/typeorm/cache/QueryResultCacheOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/cache/RedisQueryResultCache.mjs +0 -185
- package/websql/esm2022/lib/typeorm/common/DeepPartial.mjs +0 -3
- package/websql/esm2022/lib/typeorm/common/EntityTarget.mjs +0 -3
- package/websql/esm2022/lib/typeorm/common/MixedList.mjs +0 -3
- package/websql/esm2022/lib/typeorm/common/ObjectLiteral.mjs +0 -4
- package/websql/esm2022/lib/typeorm/common/ObjectType.mjs +0 -3
- package/websql/esm2022/lib/typeorm/common/RelationType.mjs +0 -3
- package/websql/esm2022/lib/typeorm/connection/Connection.mjs +0 -13
- package/websql/esm2022/lib/typeorm/connection/ConnectionManager.mjs +0 -57
- package/websql/esm2022/lib/typeorm/connection/ConnectionMetadataBuilder.mjs +0 -63
- package/websql/esm2022/lib/typeorm/connection/ConnectionOptions.mjs +0 -3
- package/websql/esm2022/lib/typeorm/connection/ConnectionOptionsReader.mjs +0 -237
- package/websql/esm2022/lib/typeorm/constants.mjs +0 -4
- package/websql/esm2022/lib/typeorm/container.mjs +0 -57
- package/websql/esm2022/lib/typeorm/data-source/BaseDataSourceOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/data-source/DataSource.mjs +0 -458
- package/websql/esm2022/lib/typeorm/data-source/DataSourceOptions.mjs +0 -11
- package/websql/esm2022/lib/typeorm/data-source/index.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/Check.mjs +0 -25
- package/websql/esm2022/lib/typeorm/decorator/EntityRepository.mjs +0 -19
- package/websql/esm2022/lib/typeorm/decorator/Exclusion.mjs +0 -25
- package/websql/esm2022/lib/typeorm/decorator/Generated.mjs +0 -22
- package/websql/esm2022/lib/typeorm/decorator/Index.mjs +0 -52
- package/websql/esm2022/lib/typeorm/decorator/Unique.mjs +0 -48
- package/websql/esm2022/lib/typeorm/decorator/columns/Column.mjs +0 -67
- package/websql/esm2022/lib/typeorm/decorator/columns/CreateDateColumn.mjs +0 -19
- package/websql/esm2022/lib/typeorm/decorator/columns/DeleteDateColumn.mjs +0 -18
- package/websql/esm2022/lib/typeorm/decorator/columns/ObjectIdColumn.mjs +0 -23
- package/websql/esm2022/lib/typeorm/decorator/columns/PrimaryColumn.mjs +0 -54
- package/websql/esm2022/lib/typeorm/decorator/columns/PrimaryGeneratedColumn.mjs +0 -52
- package/websql/esm2022/lib/typeorm/decorator/columns/UpdateDateColumn.mjs +0 -18
- package/websql/esm2022/lib/typeorm/decorator/columns/VersionColumn.mjs +0 -19
- package/websql/esm2022/lib/typeorm/decorator/columns/ViewColumn.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/columns/VirtualColumn.mjs +0 -41
- package/websql/esm2022/lib/typeorm/decorator/entity/ChildEntity.mjs +0 -21
- package/websql/esm2022/lib/typeorm/decorator/entity/Entity.mjs +0 -28
- package/websql/esm2022/lib/typeorm/decorator/entity/TableInheritance.mjs +0 -20
- package/websql/esm2022/lib/typeorm/decorator/entity-view/ViewEntity.mjs +0 -30
- package/websql/esm2022/lib/typeorm/decorator/listeners/AfterInsert.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/listeners/AfterLoad.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/listeners/AfterRecover.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/listeners/AfterRemove.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/listeners/AfterSoftRemove.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/listeners/AfterUpdate.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeInsert.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeRecover.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeRemove.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeSoftRemove.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeUpdate.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/listeners/EventSubscriber.mjs +0 -15
- package/websql/esm2022/lib/typeorm/decorator/options/ColumnCommonOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/ColumnEmbeddedOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/ColumnEnumOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/ColumnHstoreOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/ColumnNumericOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/ColumnOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/ColumnWithLengthOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/ColumnWithWidthOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/EntityOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/IndexOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/JoinColumnOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/JoinTableMultipleColumnsOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/JoinTableOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnIdentityOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnNumericOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnUUIDOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/RelationOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/SpatialColumnOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/UniqueOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/ValueTransformer.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/ViewColumnOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/ViewEntityOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/VirtualColumnOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/relations/JoinColumn.mjs +0 -25
- package/websql/esm2022/lib/typeorm/decorator/relations/JoinTable.mjs +0 -31
- package/websql/esm2022/lib/typeorm/decorator/relations/ManyToMany.mjs +0 -40
- package/websql/esm2022/lib/typeorm/decorator/relations/ManyToOne.mjs +0 -40
- package/websql/esm2022/lib/typeorm/decorator/relations/OneToMany.mjs +0 -32
- package/websql/esm2022/lib/typeorm/decorator/relations/OneToOne.mjs +0 -39
- package/websql/esm2022/lib/typeorm/decorator/relations/RelationCount.mjs +0 -20
- package/websql/esm2022/lib/typeorm/decorator/relations/RelationId.mjs +0 -20
- package/websql/esm2022/lib/typeorm/decorator/tree/Tree.mjs +0 -19
- package/websql/esm2022/lib/typeorm/decorator/tree/TreeChildren.mjs +0 -34
- package/websql/esm2022/lib/typeorm/decorator/tree/TreeLevelColumn.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/tree/TreeParent.mjs +0 -34
- package/websql/esm2022/lib/typeorm/driver/Driver.mjs +0 -4
- package/websql/esm2022/lib/typeorm/driver/DriverFactory.mjs +0 -99
- package/websql/esm2022/lib/typeorm/driver/DriverUtils.mjs +0 -213
- package/websql/esm2022/lib/typeorm/driver/Query.mjs +0 -13
- package/websql/esm2022/lib/typeorm/driver/SqlInMemory.mjs +0 -12
- package/websql/esm2022/lib/typeorm/driver/cordova/CordovaConnectionOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/driver/cordova/CordovaDriver.mjs +0 -63
- package/websql/esm2022/lib/typeorm/driver/cordova/CordovaQueryRunner.mjs +0 -152
- package/websql/esm2022/lib/typeorm/driver/mongodb/typings.mjs +0 -6516
- package/websql/esm2022/lib/typeorm/driver/nativescript/NativescriptConnectionOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/driver/nativescript/NativescriptDriver.mjs +0 -82
- package/websql/esm2022/lib/typeorm/driver/nativescript/NativescriptQueryRunner.mjs +0 -82
- package/websql/esm2022/lib/typeorm/driver/react-native/ReactNativeConnectionOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/driver/react-native/ReactNativeDriver.mjs +0 -69
- package/websql/esm2022/lib/typeorm/driver/react-native/ReactNativeQueryRunner.mjs +0 -81
- package/websql/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteDriver.mjs +0 -582
- package/websql/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteQueryRunner.mjs +0 -1421
- package/websql/esm2022/lib/typeorm/driver/sqljs/SqljsConnectionOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/driver/sqljs/SqljsDriver.mjs +0 -249
- package/websql/esm2022/lib/typeorm/driver/sqljs/SqljsQueryRunner.mjs +0 -107
- package/websql/esm2022/lib/typeorm/driver/types/ColumnTypes.mjs +0 -3
- package/websql/esm2022/lib/typeorm/driver/types/CteCapabilities.mjs +0 -4
- package/websql/esm2022/lib/typeorm/driver/types/DataTypeDefaults.mjs +0 -4
- package/websql/esm2022/lib/typeorm/driver/types/DatabaseType.mjs +0 -3
- package/websql/esm2022/lib/typeorm/driver/types/IsolationLevel.mjs +0 -3
- package/websql/esm2022/lib/typeorm/driver/types/MappedColumnTypes.mjs +0 -4
- package/websql/esm2022/lib/typeorm/driver/types/MetadataTableType.mjs +0 -9
- package/websql/esm2022/lib/typeorm/driver/types/ReplicationMode.mjs +0 -3
- package/websql/esm2022/lib/typeorm/driver/types/UpsertType.mjs +0 -3
- package/websql/esm2022/lib/typeorm/entity-manager/EntityManager.mjs +0 -743
- package/websql/esm2022/lib/typeorm/entity-manager/EntityManagerFactory.mjs +0 -23
- package/websql/esm2022/lib/typeorm/entity-manager/SqljsEntityManager.mjs +0 -35
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchema.mjs +0 -12
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaCheckOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaColumnOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedColumnOptions.mjs +0 -5
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedError.mjs +0 -15
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaExclusionOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaIndexOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaOptions.mjs +0 -8
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationIdOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaTransformer.mjs +0 -268
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaUniqueOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/error/AlreadyHasActiveConnectionError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/CannotAttachTreeChildrenEntityError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/CannotConnectAlreadyConnectedError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/CannotCreateEntityIdMapError.mjs +0 -18
- package/websql/esm2022/lib/typeorm/error/CannotDetermineEntityError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/CannotExecuteNotConnectedError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/CannotGetEntityManagerNotConnectedError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/CannotReflectMethodParameterTypeError.mjs +0 -15
- package/websql/esm2022/lib/typeorm/error/CircularRelationsError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/ColumnTypeUndefinedError.mjs +0 -16
- package/websql/esm2022/lib/typeorm/error/ConnectionIsNotSetError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/ConnectionNotFoundError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/CustomRepositoryCannotInheritRepositoryError.mjs +0 -15
- package/websql/esm2022/lib/typeorm/error/CustomRepositoryDoesNotHaveEntityError.mjs +0 -15
- package/websql/esm2022/lib/typeorm/error/CustomRepositoryNotFoundError.mjs +0 -15
- package/websql/esm2022/lib/typeorm/error/DataTypeNotSupportedError.mjs +0 -11
- package/websql/esm2022/lib/typeorm/error/DriverOptionNotSetError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/DriverPackageNotInstalledError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/EntityMetadataNotFoundError.mjs +0 -26
- package/websql/esm2022/lib/typeorm/error/EntityNotFoundError.mjs +0 -37
- package/websql/esm2022/lib/typeorm/error/EntityPropertyNotFoundError.mjs +0 -14
- package/websql/esm2022/lib/typeorm/error/FindRelationsNotFoundError.mjs +0 -20
- package/websql/esm2022/lib/typeorm/error/InitializedRelationError.mjs +0 -17
- package/websql/esm2022/lib/typeorm/error/InsertValuesMissingError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/LimitOnUpdateNotSupportedError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/LockNotSupportedOnGivenDriverError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/MetadataAlreadyExistsError.mjs +0 -15
- package/websql/esm2022/lib/typeorm/error/MetadataWithSuchNameAlreadyExistsError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/MissingDeleteDateColumnError.mjs +0 -9
- package/websql/esm2022/lib/typeorm/error/MissingDriverError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/MissingJoinColumnError.mjs +0 -20
- package/websql/esm2022/lib/typeorm/error/MissingJoinTableError.mjs +0 -20
- package/websql/esm2022/lib/typeorm/error/MissingPrimaryColumnError.mjs +0 -10
- package/websql/esm2022/lib/typeorm/error/MustBeEntityError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/NamingStrategyNotFoundError.mjs +0 -18
- package/websql/esm2022/lib/typeorm/error/NestedSetMultipleRootError.mjs +0 -9
- package/websql/esm2022/lib/typeorm/error/NoConnectionForRepositoryError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/NoConnectionOptionError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/NoNeedToReleaseEntityManagerError.mjs +0 -14
- package/websql/esm2022/lib/typeorm/error/NoVersionOrUpdateDateColumnError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/OffsetWithoutLimitNotSupportedError.mjs +0 -14
- package/websql/esm2022/lib/typeorm/error/OptimisticLockCanNotBeUsedError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/OptimisticLockVersionMismatchError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/PersistedEntityNotFoundError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/PessimisticLockTransactionRequiredError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/PrimaryColumnCannotBeNullableError.mjs +0 -10
- package/websql/esm2022/lib/typeorm/error/QueryFailedError.mjs +0 -27
- package/websql/esm2022/lib/typeorm/error/QueryRunnerAlreadyReleasedError.mjs +0 -9
- package/websql/esm2022/lib/typeorm/error/QueryRunnerProviderAlreadyReleasedError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/RepositoryNotTreeError.mjs +0 -29
- package/websql/esm2022/lib/typeorm/error/ReturningStatementNotSupportedError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/SubjectRemovedAndUpdatedError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/SubjectWithoutIdentifierError.mjs +0 -14
- package/websql/esm2022/lib/typeorm/error/TransactionAlreadyStartedError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/TransactionNotStartedError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/TreeRepositoryNotSupportedError.mjs +0 -9
- package/websql/esm2022/lib/typeorm/error/TypeORMError.mjs +0 -18
- package/websql/esm2022/lib/typeorm/error/UpdateValuesMissingError.mjs +0 -9
- package/websql/esm2022/lib/typeorm/error/UsingJoinColumnIsNotAllowedError.mjs +0 -10
- package/websql/esm2022/lib/typeorm/error/UsingJoinColumnOnlyOnOneSideAllowedError.mjs +0 -11
- package/websql/esm2022/lib/typeorm/error/UsingJoinTableIsNotAllowedError.mjs +0 -11
- package/websql/esm2022/lib/typeorm/error/UsingJoinTableOnlyOnOneSideAllowedError.mjs +0 -11
- package/websql/esm2022/lib/typeorm/error/index.mjs +0 -63
- package/websql/esm2022/lib/typeorm/find-options/EqualOperator.mjs +0 -10
- package/websql/esm2022/lib/typeorm/find-options/FindManyOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/find-options/FindOneOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/find-options/FindOperator.mjs +0 -74
- package/websql/esm2022/lib/typeorm/find-options/FindOperatorType.mjs +0 -3
- package/websql/esm2022/lib/typeorm/find-options/FindOptionsOrder.mjs +0 -3
- package/websql/esm2022/lib/typeorm/find-options/FindOptionsRelations.mjs +0 -3
- package/websql/esm2022/lib/typeorm/find-options/FindOptionsSelect.mjs +0 -5
- package/websql/esm2022/lib/typeorm/find-options/FindOptionsUtils.mjs +0 -293
- package/websql/esm2022/lib/typeorm/find-options/FindOptionsWhere.mjs +0 -3
- package/websql/esm2022/lib/typeorm/find-options/FindTreeOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/find-options/JoinOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/find-options/OrderByCondition.mjs +0 -3
- package/websql/esm2022/lib/typeorm/find-options/operator/Any.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/ArrayContainedBy.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/ArrayContains.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/ArrayOverlap.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/Between.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/Equal.mjs +0 -15
- package/websql/esm2022/lib/typeorm/find-options/operator/ILike.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/In.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/IsNull.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/LessThan.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/LessThanOrEqual.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/Like.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/MoreThan.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/MoreThanOrEqual.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/Not.mjs +0 -12
- package/websql/esm2022/lib/typeorm/find-options/operator/Raw.mjs +0 -10
- package/websql/esm2022/lib/typeorm/globals.mjs +0 -165
- package/websql/esm2022/lib/typeorm/index.mjs +0 -157
- package/websql/esm2022/lib/typeorm/logger/AdvancedConsoleLogger.mjs +0 -109
- package/websql/esm2022/lib/typeorm/logger/DebugLogger.mjs +0 -94
- package/websql/esm2022/lib/typeorm/logger/Logger.mjs +0 -4
- package/websql/esm2022/lib/typeorm/logger/LoggerFactory.mjs +0 -36
- package/websql/esm2022/lib/typeorm/logger/LoggerOptions.mjs +0 -3
- package/websql/esm2022/lib/typeorm/logger/SimpleConsoleLogger.mjs +0 -108
- package/websql/esm2022/lib/typeorm/metadata/CheckMetadata.mjs +0 -26
- package/websql/esm2022/lib/typeorm/metadata/ColumnMetadata.mjs +0 -553
- package/websql/esm2022/lib/typeorm/metadata/EmbeddedMetadata.mjs +0 -206
- package/websql/esm2022/lib/typeorm/metadata/EntityListenerMetadata.mjs +0 -52
- package/websql/esm2022/lib/typeorm/metadata/EntityMetadata.mjs +0 -636
- package/websql/esm2022/lib/typeorm/metadata/ExclusionMetadata.mjs +0 -26
- package/websql/esm2022/lib/typeorm/metadata/ForeignKeyMetadata.mjs +0 -48
- package/websql/esm2022/lib/typeorm/metadata/IndexMetadata.mjs +0 -131
- package/websql/esm2022/lib/typeorm/metadata/RelationCountMetadata.mjs +0 -30
- package/websql/esm2022/lib/typeorm/metadata/RelationIdMetadata.mjs +0 -50
- package/websql/esm2022/lib/typeorm/metadata/RelationMetadata.mjs +0 -398
- package/websql/esm2022/lib/typeorm/metadata/UniqueMetadata.mjs +0 -90
- package/websql/esm2022/lib/typeorm/metadata/types/ClosureTreeOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata/types/DeferrableType.mjs +0 -3
- package/websql/esm2022/lib/typeorm/metadata/types/EventListenerTypes.mjs +0 -19
- package/websql/esm2022/lib/typeorm/metadata/types/OnDeleteType.mjs +0 -3
- package/websql/esm2022/lib/typeorm/metadata/types/OnUpdateType.mjs +0 -3
- package/websql/esm2022/lib/typeorm/metadata/types/PropertyTypeInFunction.mjs +0 -3
- package/websql/esm2022/lib/typeorm/metadata/types/RelationTypeInFunction.mjs +0 -3
- package/websql/esm2022/lib/typeorm/metadata/types/RelationTypes.mjs +0 -3
- package/websql/esm2022/lib/typeorm/metadata/types/TableTypes.mjs +0 -3
- package/websql/esm2022/lib/typeorm/metadata/types/TreeTypes.mjs +0 -3
- package/websql/esm2022/lib/typeorm/metadata-args/CheckMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/ColumnMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/DiscriminatorValueMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/EmbeddedMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/EntityListenerMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/EntityRepositoryMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/EntitySubscriberMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/ExclusionMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/GeneratedMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/IndexMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/InheritanceMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/JoinColumnMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/JoinTableMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/MetadataArgsStorage.mjs +0 -217
- package/websql/esm2022/lib/typeorm/metadata-args/NamingStrategyMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/RelationCountMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/RelationIdMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/RelationMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/TableMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/TransactionEntityMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/TransactionRepositoryMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/TreeMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/UniqueMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/types/ColumnMode.mjs +0 -3
- package/websql/esm2022/lib/typeorm/metadata-builder/ClosureJunctionEntityMetadataBuilder.mjs +0 -131
- package/websql/esm2022/lib/typeorm/metadata-builder/EntityMetadataBuilder.mjs +0 -678
- package/websql/esm2022/lib/typeorm/metadata-builder/EntityMetadataValidator.mjs +0 -183
- package/websql/esm2022/lib/typeorm/metadata-builder/JunctionEntityMetadataBuilder.mjs +0 -262
- package/websql/esm2022/lib/typeorm/metadata-builder/MetadataUtils.mjs +0 -41
- package/websql/esm2022/lib/typeorm/metadata-builder/RelationJoinColumnBuilder.mjs +0 -167
- package/websql/esm2022/lib/typeorm/migration/Migration.mjs +0 -14
- package/websql/esm2022/lib/typeorm/migration/MigrationExecutor.mjs +0 -454
- package/websql/esm2022/lib/typeorm/migration/MigrationInterface.mjs +0 -4
- package/websql/esm2022/lib/typeorm/naming-strategy/DefaultNamingStrategy.mjs +0 -140
- package/websql/esm2022/lib/typeorm/naming-strategy/NamingStrategyInterface.mjs +0 -4
- package/websql/esm2022/lib/typeorm/persistence/EntityPersistExecutor.mjs +0 -125
- package/websql/esm2022/lib/typeorm/persistence/Subject.mjs +0 -212
- package/websql/esm2022/lib/typeorm/persistence/SubjectChangeMap.mjs +0 -4
- package/websql/esm2022/lib/typeorm/persistence/SubjectChangedColumnsComputer.mjs +0 -164
- package/websql/esm2022/lib/typeorm/persistence/SubjectDatabaseEntityLoader.mjs +0 -125
- package/websql/esm2022/lib/typeorm/persistence/SubjectExecutor.mjs +0 -721
- package/websql/esm2022/lib/typeorm/persistence/SubjectTopoligicalSorter.mjs +0 -151
- package/websql/esm2022/lib/typeorm/persistence/subject-builder/CascadesSubjectBuilder.mjs +0 -84
- package/websql/esm2022/lib/typeorm/persistence/subject-builder/ManyToManySubjectBuilder.mjs +0 -153
- package/websql/esm2022/lib/typeorm/persistence/subject-builder/OneToManySubjectBuilder.mjs +0 -117
- package/websql/esm2022/lib/typeorm/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.mjs +0 -95
- package/websql/esm2022/lib/typeorm/persistence/tree/ClosureSubjectExecutor.mjs +0 -220
- package/websql/esm2022/lib/typeorm/persistence/tree/MaterializedPathSubjectExecutor.mjs +0 -97
- package/websql/esm2022/lib/typeorm/persistence/tree/NestedSetSubjectExecutor.mjs +0 -250
- package/websql/esm2022/lib/typeorm/platform/PlatformTools.mjs +0 -331
- package/websql/esm2022/lib/typeorm/query-builder/Alias.mjs +0 -26
- package/websql/esm2022/lib/typeorm/query-builder/Brackets.mjs +0 -16
- package/websql/esm2022/lib/typeorm/query-builder/DeleteQueryBuilder.mjs +0 -181
- package/websql/esm2022/lib/typeorm/query-builder/InsertOrUpdateOptions.mjs +0 -3
- package/websql/esm2022/lib/typeorm/query-builder/InsertQueryBuilder.mjs +0 -651
- package/websql/esm2022/lib/typeorm/query-builder/JoinAttribute.mjs +0 -153
- package/websql/esm2022/lib/typeorm/query-builder/NotBrackets.mjs +0 -14
- package/websql/esm2022/lib/typeorm/query-builder/QueryBuilder.mjs +0 -967
- package/websql/esm2022/lib/typeorm/query-builder/QueryBuilderCte.mjs +0 -4
- package/websql/esm2022/lib/typeorm/query-builder/QueryBuilderUtils.mjs +0 -22
- package/websql/esm2022/lib/typeorm/query-builder/QueryExpressionMap.mjs +0 -309
- package/websql/esm2022/lib/typeorm/query-builder/QueryPartialEntity.mjs +0 -3
- package/websql/esm2022/lib/typeorm/query-builder/RelationIdLoader.mjs +0 -452
- package/websql/esm2022/lib/typeorm/query-builder/RelationLoader.mjs +0 -262
- package/websql/esm2022/lib/typeorm/query-builder/RelationQueryBuilder.mjs +0 -147
- package/websql/esm2022/lib/typeorm/query-builder/RelationRemover.mjs +0 -130
- package/websql/esm2022/lib/typeorm/query-builder/RelationUpdater.mjs +0 -141
- package/websql/esm2022/lib/typeorm/query-builder/ReturningResultsEntityUpdator.mjs +0 -141
- package/websql/esm2022/lib/typeorm/query-builder/SelectQuery.mjs +0 -4
- package/websql/esm2022/lib/typeorm/query-builder/SelectQueryBuilder.mjs +0 -2278
- package/websql/esm2022/lib/typeorm/query-builder/SelectQueryBuilderOption.mjs +0 -3
- package/websql/esm2022/lib/typeorm/query-builder/SoftDeleteQueryBuilder.mjs +0 -348
- package/websql/esm2022/lib/typeorm/query-builder/UpdateQueryBuilder.mjs +0 -510
- package/websql/esm2022/lib/typeorm/query-builder/WhereClause.mjs +0 -3
- package/websql/esm2022/lib/typeorm/query-builder/WhereExpressionBuilder.mjs +0 -4
- package/websql/esm2022/lib/typeorm/query-builder/relation-count/RelationCountAttribute.mjs +0 -71
- package/websql/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoadResult.mjs +0 -4
- package/websql/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoader.mjs +0 -142
- package/websql/esm2022/lib/typeorm/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.mjs +0 -33
- package/websql/esm2022/lib/typeorm/query-builder/relation-id/RelationIdAttribute.mjs +0 -79
- package/websql/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoadResult.mjs +0 -4
- package/websql/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoader.mjs +0 -247
- package/websql/esm2022/lib/typeorm/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.mjs +0 -33
- package/websql/esm2022/lib/typeorm/query-builder/result/DeleteResult.mjs +0 -14
- package/websql/esm2022/lib/typeorm/query-builder/result/InsertResult.mjs +0 -25
- package/websql/esm2022/lib/typeorm/query-builder/result/UpdateResult.mjs +0 -25
- package/websql/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.mjs +0 -101
- package/websql/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToNewEntityTransformer.mjs +0 -67
- package/websql/esm2022/lib/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.mjs +0 -366
- package/websql/esm2022/lib/typeorm/query-runner/BaseQueryRunner.mjs +0 -392
- package/websql/esm2022/lib/typeorm/query-runner/QueryResult.mjs +0 -14
- package/websql/esm2022/lib/typeorm/query-runner/QueryRunner.mjs +0 -4
- package/websql/esm2022/lib/typeorm/repository/AbstractRepository.mjs +0 -80
- package/websql/esm2022/lib/typeorm/repository/BaseEntity.mjs +0 -283
- package/websql/esm2022/lib/typeorm/repository/FindTreesOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/repository/RemoveOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/repository/Repository.mjs +0 -275
- package/websql/esm2022/lib/typeorm/repository/SaveOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/repository/TreeRepository.mjs +0 -254
- package/websql/esm2022/lib/typeorm/repository/UpsertOptions.mjs +0 -7
- package/websql/esm2022/lib/typeorm/schema-builder/RdbmsSchemaBuilder.mjs +0 -770
- package/websql/esm2022/lib/typeorm/schema-builder/SchemaBuilder.mjs +0 -4
- package/websql/esm2022/lib/typeorm/schema-builder/options/TableCheckOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/schema-builder/options/TableColumnOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/schema-builder/options/TableExclusionOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/schema-builder/options/TableForeignKeyOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/schema-builder/options/TableIndexOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/schema-builder/options/TableOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/schema-builder/options/TableUniqueOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/schema-builder/options/ViewOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/schema-builder/table/Table.mjs +0 -274
- package/websql/esm2022/lib/typeorm/schema-builder/table/TableCheck.mjs +0 -37
- package/websql/esm2022/lib/typeorm/schema-builder/table/TableColumn.mjs +0 -108
- package/websql/esm2022/lib/typeorm/schema-builder/table/TableExclusion.mjs +0 -31
- package/websql/esm2022/lib/typeorm/schema-builder/table/TableForeignKey.mjs +0 -60
- package/websql/esm2022/lib/typeorm/schema-builder/table/TableIndex.mjs +0 -53
- package/websql/esm2022/lib/typeorm/schema-builder/table/TableUnique.mjs +0 -38
- package/websql/esm2022/lib/typeorm/schema-builder/util/TableUtils.mjs +0 -38
- package/websql/esm2022/lib/typeorm/schema-builder/util/ViewUtils.mjs +0 -24
- package/websql/esm2022/lib/typeorm/schema-builder/view/View.mjs +0 -43
- package/websql/esm2022/lib/typeorm/subscriber/Broadcaster.mjs +0 -596
- package/websql/esm2022/lib/typeorm/subscriber/BroadcasterResult.mjs +0 -27
- package/websql/esm2022/lib/typeorm/subscriber/EntitySubscriberInterface.mjs +0 -4
- package/websql/esm2022/lib/typeorm/subscriber/event/InsertEvent.mjs +0 -4
- package/websql/esm2022/lib/typeorm/subscriber/event/LoadEvent.mjs +0 -4
- package/websql/esm2022/lib/typeorm/subscriber/event/RecoverEvent.mjs +0 -4
- package/websql/esm2022/lib/typeorm/subscriber/event/RemoveEvent.mjs +0 -4
- package/websql/esm2022/lib/typeorm/subscriber/event/SoftRemoveEvent.mjs +0 -4
- package/websql/esm2022/lib/typeorm/subscriber/event/TransactionCommitEvent.mjs +0 -4
- package/websql/esm2022/lib/typeorm/subscriber/event/TransactionRollbackEvent.mjs +0 -4
- package/websql/esm2022/lib/typeorm/subscriber/event/TransactionStartEvent.mjs +0 -4
- package/websql/esm2022/lib/typeorm/subscriber/event/UpdateEvent.mjs +0 -4
- package/websql/esm2022/lib/typeorm/util/ApplyValueTransformers.mjs +0 -22
- package/websql/esm2022/lib/typeorm/util/DateUtils.mjs +0 -216
- package/websql/esm2022/lib/typeorm/util/DepGraph.mjs +0 -222
- package/websql/esm2022/lib/typeorm/util/DirectoryExportedClassesLoader.mjs +0 -76
- package/websql/esm2022/lib/typeorm/util/ImportUtils.mjs +0 -86
- package/websql/esm2022/lib/typeorm/util/InstanceChecker.mjs +0 -114
- package/websql/esm2022/lib/typeorm/util/ObjectUtils.mjs +0 -38
- package/websql/esm2022/lib/typeorm/util/OrmUtils.mjs +0 -310
- package/websql/esm2022/lib/typeorm/util/PathUtils.mjs +0 -38
- package/websql/esm2022/lib/typeorm/util/RandomGenerator.mjs +0 -150
- package/websql/esm2022/lib/typeorm/util/StringUtils.mjs +0 -108
- package/websql/esm2022/lib/typeorm/util/TreeRepositoryUtils.mjs +0 -53
- package/websql/esm2022/lib/typeorm/util/VersionUtils.mjs +0 -17
- package/websql/esm2022/lib/typeorm/util/escapeRegExp.mjs +0 -4
- package/websql/esm2022/public-api.mjs +0 -2
- package/websql/esm2022/taon-typeorm.mjs +0 -5
|
@@ -1,743 +0,0 @@
|
|
|
1
|
-
import { EntityNotFoundError } from "../error/EntityNotFoundError";
|
|
2
|
-
import { QueryRunnerProviderAlreadyReleasedError } from "../error/QueryRunnerProviderAlreadyReleasedError";
|
|
3
|
-
import { NoNeedToReleaseEntityManagerError } from "../error/NoNeedToReleaseEntityManagerError";
|
|
4
|
-
/* */
|
|
5
|
-
/* */
|
|
6
|
-
import { TreeRepository } from "../repository/TreeRepository";
|
|
7
|
-
import { Repository } from "../repository/Repository";
|
|
8
|
-
import { FindOptionsUtils } from "../find-options/FindOptionsUtils";
|
|
9
|
-
import { PlainObjectToNewEntityTransformer } from "../query-builder/transformer/PlainObjectToNewEntityTransformer";
|
|
10
|
-
import { PlainObjectToDatabaseEntityTransformer } from "../query-builder/transformer/PlainObjectToDatabaseEntityTransformer";
|
|
11
|
-
import { CustomRepositoryCannotInheritRepositoryError, CustomRepositoryNotFoundError, TreeRepositoryNotSupportedError, TypeORMError, } from "../error"; /* */
|
|
12
|
-
/* */
|
|
13
|
-
/* */
|
|
14
|
-
/* */
|
|
15
|
-
/* */
|
|
16
|
-
import { AbstractRepository } from "../repository/AbstractRepository";
|
|
17
|
-
import { EntityPersistExecutor } from "../persistence/EntityPersistExecutor";
|
|
18
|
-
import { ObjectUtils } from "../util/ObjectUtils";
|
|
19
|
-
import { getMetadataArgsStorage } from "../globals";
|
|
20
|
-
import { InstanceChecker } from "../util/InstanceChecker";
|
|
21
|
-
/**
|
|
22
|
-
* Entity manager supposed to work with any entity, automatically find its repository and call its methods,
|
|
23
|
-
* whatever entity type are you passing.
|
|
24
|
-
*/
|
|
25
|
-
export class EntityManager {
|
|
26
|
-
constructor(connection, queryRunner) {
|
|
27
|
-
this["@instanceof"] = Symbol.for("EntityManager");
|
|
28
|
-
/**
|
|
29
|
-
* Once created and then reused by repositories.
|
|
30
|
-
*/
|
|
31
|
-
this.repositories = [];
|
|
32
|
-
/**
|
|
33
|
-
* Once created and then reused by repositories.
|
|
34
|
-
*/
|
|
35
|
-
this.treeRepositories = [];
|
|
36
|
-
/**
|
|
37
|
-
* Plain to object transformer used in create and merge operations.
|
|
38
|
-
*/
|
|
39
|
-
this.plainObjectToEntityTransformer = new PlainObjectToNewEntityTransformer();
|
|
40
|
-
this.connection = connection;
|
|
41
|
-
if (queryRunner) {
|
|
42
|
-
this.queryRunner = queryRunner;
|
|
43
|
-
ObjectUtils.assign(this.queryRunner, { manager: this });
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Wraps given function execution (and all operations made there) in a transaction.
|
|
48
|
-
* All database operations must be executed using provided entity manager.
|
|
49
|
-
*/
|
|
50
|
-
async transaction(isolationOrRunInTransaction, runInTransactionParam) {
|
|
51
|
-
const isolation = typeof isolationOrRunInTransaction === "string"
|
|
52
|
-
? isolationOrRunInTransaction
|
|
53
|
-
: undefined;
|
|
54
|
-
const runInTransaction = typeof isolationOrRunInTransaction === "function"
|
|
55
|
-
? isolationOrRunInTransaction
|
|
56
|
-
: runInTransactionParam;
|
|
57
|
-
if (!runInTransaction) {
|
|
58
|
-
throw new TypeORMError(`Transaction method requires callback in second parameter if isolation level is supplied.`);
|
|
59
|
-
}
|
|
60
|
-
if (this.queryRunner && this.queryRunner.isReleased)
|
|
61
|
-
throw new QueryRunnerProviderAlreadyReleasedError();
|
|
62
|
-
const queryRunner = this.queryRunner || this.connection.createQueryRunner();
|
|
63
|
-
try {
|
|
64
|
-
await queryRunner.startTransaction(isolation);
|
|
65
|
-
const result = await runInTransaction(queryRunner.manager);
|
|
66
|
-
await queryRunner.commitTransaction();
|
|
67
|
-
return result;
|
|
68
|
-
}
|
|
69
|
-
catch (err) {
|
|
70
|
-
try {
|
|
71
|
-
await queryRunner.rollbackTransaction();
|
|
72
|
-
}
|
|
73
|
-
catch (rollbackError) { }
|
|
74
|
-
throw err;
|
|
75
|
-
}
|
|
76
|
-
finally {
|
|
77
|
-
if (!this.queryRunner)
|
|
78
|
-
await queryRunner.release();
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Executes raw SQL query and returns raw database results.
|
|
83
|
-
*/
|
|
84
|
-
async query(query, parameters) {
|
|
85
|
-
return this.connection.query(query, parameters, this.queryRunner);
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Creates a new query builder that can be used to build a SQL query.
|
|
89
|
-
*/
|
|
90
|
-
createQueryBuilder(entityClass, alias, queryRunner) {
|
|
91
|
-
if (alias) {
|
|
92
|
-
return this.connection.createQueryBuilder(entityClass, alias, queryRunner || this.queryRunner);
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
return this.connection.createQueryBuilder(entityClass ||
|
|
96
|
-
queryRunner ||
|
|
97
|
-
this.queryRunner);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Checks if entity has an id by its Function type or schema name.
|
|
102
|
-
*/
|
|
103
|
-
hasId(targetOrEntity, maybeEntity) {
|
|
104
|
-
const target = arguments.length === 2 ? targetOrEntity : targetOrEntity.constructor;
|
|
105
|
-
const entity = arguments.length === 2 ? maybeEntity : targetOrEntity;
|
|
106
|
-
const metadata = this.connection.getMetadata(target);
|
|
107
|
-
return metadata.hasId(entity);
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Gets entity mixed id.
|
|
111
|
-
*/
|
|
112
|
-
getId(targetOrEntity, maybeEntity) {
|
|
113
|
-
const target = arguments.length === 2 ? targetOrEntity : targetOrEntity.constructor;
|
|
114
|
-
const entity = arguments.length === 2 ? maybeEntity : targetOrEntity;
|
|
115
|
-
const metadata = this.connection.getMetadata(target);
|
|
116
|
-
return metadata.getEntityIdMixedMap(entity);
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Creates a new entity instance or instances.
|
|
120
|
-
* Can copy properties from the given object into new entities.
|
|
121
|
-
*/
|
|
122
|
-
create(entityClass, plainObjectOrObjects) {
|
|
123
|
-
const metadata = this.connection.getMetadata(entityClass);
|
|
124
|
-
if (!plainObjectOrObjects)
|
|
125
|
-
return metadata.create(this.queryRunner);
|
|
126
|
-
if (Array.isArray(plainObjectOrObjects))
|
|
127
|
-
return plainObjectOrObjects.map((plainEntityLike) => this.create(entityClass, plainEntityLike));
|
|
128
|
-
const mergeIntoEntity = metadata.create(this.queryRunner);
|
|
129
|
-
this.plainObjectToEntityTransformer.transform(mergeIntoEntity, plainObjectOrObjects, metadata, true);
|
|
130
|
-
return mergeIntoEntity;
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Merges two entities into one new entity.
|
|
134
|
-
*/
|
|
135
|
-
merge(entityClass, mergeIntoEntity, ...entityLikes) {
|
|
136
|
-
const metadata = this.connection.getMetadata(entityClass);
|
|
137
|
-
entityLikes.forEach((object) => this.plainObjectToEntityTransformer.transform(mergeIntoEntity, object, metadata));
|
|
138
|
-
return mergeIntoEntity;
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Creates a new entity from the given plain javascript object. If entity already exist in the database, then
|
|
142
|
-
* it loads it (and everything related to it), replaces all values with the new ones from the given object
|
|
143
|
-
* and returns this new entity. This new entity is actually a loaded from the db entity with all properties
|
|
144
|
-
* replaced from the new object.
|
|
145
|
-
*/
|
|
146
|
-
async preload(entityClass, entityLike) {
|
|
147
|
-
const metadata = this.connection.getMetadata(entityClass);
|
|
148
|
-
const plainObjectToDatabaseEntityTransformer = new PlainObjectToDatabaseEntityTransformer(this.connection.manager);
|
|
149
|
-
const transformedEntity = await plainObjectToDatabaseEntityTransformer.transform(entityLike, metadata);
|
|
150
|
-
if (transformedEntity)
|
|
151
|
-
return this.merge(entityClass, transformedEntity, entityLike);
|
|
152
|
-
return undefined;
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Saves a given entity in the database.
|
|
156
|
-
*/
|
|
157
|
-
save(targetOrEntity, maybeEntityOrOptions, maybeOptions) {
|
|
158
|
-
let target = arguments.length > 1 &&
|
|
159
|
-
(typeof targetOrEntity === "function" ||
|
|
160
|
-
InstanceChecker.isEntitySchema(targetOrEntity) ||
|
|
161
|
-
typeof targetOrEntity === "string")
|
|
162
|
-
? targetOrEntity
|
|
163
|
-
: undefined;
|
|
164
|
-
const entity = target
|
|
165
|
-
? maybeEntityOrOptions
|
|
166
|
-
: targetOrEntity;
|
|
167
|
-
const options = target
|
|
168
|
-
? maybeOptions
|
|
169
|
-
: maybeEntityOrOptions;
|
|
170
|
-
if (InstanceChecker.isEntitySchema(target))
|
|
171
|
-
target = target.options.name;
|
|
172
|
-
if (Array.isArray(entity) && entity.length === 0)
|
|
173
|
-
return Promise.resolve(entity);
|
|
174
|
-
return new EntityPersistExecutor(this.connection, this.queryRunner, "save", target, entity, options)
|
|
175
|
-
.execute()
|
|
176
|
-
.then(() => entity);
|
|
177
|
-
}
|
|
178
|
-
/**
|
|
179
|
-
* Removes a given entity from the database.
|
|
180
|
-
*/
|
|
181
|
-
remove(targetOrEntity, maybeEntityOrOptions, maybeOptions) {
|
|
182
|
-
const target = arguments.length > 1 &&
|
|
183
|
-
(typeof targetOrEntity === "function" ||
|
|
184
|
-
InstanceChecker.isEntitySchema(targetOrEntity) ||
|
|
185
|
-
typeof targetOrEntity === "string")
|
|
186
|
-
? targetOrEntity
|
|
187
|
-
: undefined;
|
|
188
|
-
const entity = target
|
|
189
|
-
? maybeEntityOrOptions
|
|
190
|
-
: targetOrEntity;
|
|
191
|
-
const options = target
|
|
192
|
-
? maybeOptions
|
|
193
|
-
: maybeEntityOrOptions;
|
|
194
|
-
if (Array.isArray(entity) && entity.length === 0)
|
|
195
|
-
return Promise.resolve(entity);
|
|
196
|
-
return new EntityPersistExecutor(this.connection, this.queryRunner, "remove", target, entity, options)
|
|
197
|
-
.execute()
|
|
198
|
-
.then(() => entity);
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Records the delete date of one or many given entities.
|
|
202
|
-
*/
|
|
203
|
-
softRemove(targetOrEntity, maybeEntityOrOptions, maybeOptions) {
|
|
204
|
-
let target = arguments.length > 1 &&
|
|
205
|
-
(typeof targetOrEntity === "function" ||
|
|
206
|
-
InstanceChecker.isEntitySchema(targetOrEntity) ||
|
|
207
|
-
typeof targetOrEntity === "string")
|
|
208
|
-
? targetOrEntity
|
|
209
|
-
: undefined;
|
|
210
|
-
const entity = target
|
|
211
|
-
? maybeEntityOrOptions
|
|
212
|
-
: targetOrEntity;
|
|
213
|
-
const options = target
|
|
214
|
-
? maybeOptions
|
|
215
|
-
: maybeEntityOrOptions;
|
|
216
|
-
if (InstanceChecker.isEntitySchema(target))
|
|
217
|
-
target = target.options.name;
|
|
218
|
-
if (Array.isArray(entity) && entity.length === 0)
|
|
219
|
-
return Promise.resolve(entity);
|
|
220
|
-
return new EntityPersistExecutor(this.connection, this.queryRunner, "soft-remove", target, entity, options)
|
|
221
|
-
.execute()
|
|
222
|
-
.then(() => entity);
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
225
|
-
* Recovers one or many given entities.
|
|
226
|
-
*/
|
|
227
|
-
recover(targetOrEntity, maybeEntityOrOptions, maybeOptions) {
|
|
228
|
-
let target = arguments.length > 1 &&
|
|
229
|
-
(typeof targetOrEntity === "function" ||
|
|
230
|
-
InstanceChecker.isEntitySchema(targetOrEntity) ||
|
|
231
|
-
typeof targetOrEntity === "string")
|
|
232
|
-
? targetOrEntity
|
|
233
|
-
: undefined;
|
|
234
|
-
const entity = target
|
|
235
|
-
? maybeEntityOrOptions
|
|
236
|
-
: targetOrEntity;
|
|
237
|
-
const options = target
|
|
238
|
-
? maybeOptions
|
|
239
|
-
: maybeEntityOrOptions;
|
|
240
|
-
if (InstanceChecker.isEntitySchema(target))
|
|
241
|
-
target = target.options.name;
|
|
242
|
-
if (Array.isArray(entity) && entity.length === 0)
|
|
243
|
-
return Promise.resolve(entity);
|
|
244
|
-
return new EntityPersistExecutor(this.connection, this.queryRunner, "recover", target, entity, options)
|
|
245
|
-
.execute()
|
|
246
|
-
.then(() => entity);
|
|
247
|
-
}
|
|
248
|
-
/**
|
|
249
|
-
* Inserts a given entity into the database.
|
|
250
|
-
* Unlike save method executes a primitive operation without cascades, relations and other operations included.
|
|
251
|
-
* Executes fast and efficient INSERT query.
|
|
252
|
-
* Does not check if entity exist in the database, so query will fail if duplicate entity is being inserted.
|
|
253
|
-
* You can execute bulk inserts using this method.
|
|
254
|
-
*/
|
|
255
|
-
async insert(target, entity) {
|
|
256
|
-
return this.createQueryBuilder()
|
|
257
|
-
.insert()
|
|
258
|
-
.into(target)
|
|
259
|
-
.values(entity)
|
|
260
|
-
.execute();
|
|
261
|
-
}
|
|
262
|
-
async upsert(target, entityOrEntities, conflictPathsOrOptions) {
|
|
263
|
-
const metadata = this.connection.getMetadata(target);
|
|
264
|
-
let options;
|
|
265
|
-
if (Array.isArray(conflictPathsOrOptions)) {
|
|
266
|
-
options = {
|
|
267
|
-
conflictPaths: conflictPathsOrOptions,
|
|
268
|
-
};
|
|
269
|
-
}
|
|
270
|
-
else {
|
|
271
|
-
options = conflictPathsOrOptions;
|
|
272
|
-
}
|
|
273
|
-
let entities;
|
|
274
|
-
if (!Array.isArray(entityOrEntities)) {
|
|
275
|
-
entities = [entityOrEntities];
|
|
276
|
-
}
|
|
277
|
-
else {
|
|
278
|
-
entities = entityOrEntities;
|
|
279
|
-
}
|
|
280
|
-
const conflictColumns = metadata.mapPropertyPathsToColumns(options.conflictPaths);
|
|
281
|
-
const overwriteColumns = metadata.columns.filter((col) => !conflictColumns.includes(col) &&
|
|
282
|
-
entities.some((entity) => typeof col.getEntityValue(entity) !== "undefined"));
|
|
283
|
-
return this.createQueryBuilder()
|
|
284
|
-
.insert()
|
|
285
|
-
.into(target)
|
|
286
|
-
.values(entities)
|
|
287
|
-
.orUpdate([...conflictColumns, ...overwriteColumns].map((col) => col.databaseName), conflictColumns.map((col) => col.databaseName), {
|
|
288
|
-
skipUpdateIfNoValuesChanged: options.skipUpdateIfNoValuesChanged,
|
|
289
|
-
})
|
|
290
|
-
.execute();
|
|
291
|
-
}
|
|
292
|
-
/**
|
|
293
|
-
* Updates entity partially. Entity can be found by a given condition(s).
|
|
294
|
-
* Unlike save method executes a primitive operation without cascades, relations and other operations included.
|
|
295
|
-
* Executes fast and efficient UPDATE query.
|
|
296
|
-
* Does not check if entity exist in the database.
|
|
297
|
-
* Condition(s) cannot be empty.
|
|
298
|
-
*/
|
|
299
|
-
update(target, criteria, partialEntity) {
|
|
300
|
-
if (criteria === undefined ||
|
|
301
|
-
criteria === null ||
|
|
302
|
-
criteria === "" ||
|
|
303
|
-
(Array.isArray(criteria) && criteria.length === 0)) {
|
|
304
|
-
return Promise.reject(new TypeORMError(`Empty criteria(s) are not allowed for the update method.`));
|
|
305
|
-
}
|
|
306
|
-
if (typeof criteria === "string" ||
|
|
307
|
-
typeof criteria === "number" ||
|
|
308
|
-
criteria instanceof Date ||
|
|
309
|
-
Array.isArray(criteria)) {
|
|
310
|
-
return this.createQueryBuilder()
|
|
311
|
-
.update(target)
|
|
312
|
-
.set(partialEntity)
|
|
313
|
-
.whereInIds(criteria)
|
|
314
|
-
.execute();
|
|
315
|
-
}
|
|
316
|
-
else {
|
|
317
|
-
return this.createQueryBuilder()
|
|
318
|
-
.update(target)
|
|
319
|
-
.set(partialEntity)
|
|
320
|
-
.where(criteria)
|
|
321
|
-
.execute();
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
/**
|
|
325
|
-
* Deletes entities by a given condition(s).
|
|
326
|
-
* Unlike save method executes a primitive operation without cascades, relations and other operations included.
|
|
327
|
-
* Executes fast and efficient DELETE query.
|
|
328
|
-
* Does not check if entity exist in the database.
|
|
329
|
-
* Condition(s) cannot be empty.
|
|
330
|
-
*/
|
|
331
|
-
delete(targetOrEntity, criteria) {
|
|
332
|
-
if (criteria === undefined ||
|
|
333
|
-
criteria === null ||
|
|
334
|
-
criteria === "" ||
|
|
335
|
-
(Array.isArray(criteria) && criteria.length === 0)) {
|
|
336
|
-
return Promise.reject(new TypeORMError(`Empty criteria(s) are not allowed for the delete method.`));
|
|
337
|
-
}
|
|
338
|
-
if (typeof criteria === "string" ||
|
|
339
|
-
typeof criteria === "number" ||
|
|
340
|
-
criteria instanceof Date ||
|
|
341
|
-
Array.isArray(criteria)) {
|
|
342
|
-
return this.createQueryBuilder()
|
|
343
|
-
.delete()
|
|
344
|
-
.from(targetOrEntity)
|
|
345
|
-
.whereInIds(criteria)
|
|
346
|
-
.execute();
|
|
347
|
-
}
|
|
348
|
-
else {
|
|
349
|
-
return this.createQueryBuilder()
|
|
350
|
-
.delete()
|
|
351
|
-
.from(targetOrEntity)
|
|
352
|
-
.where(criteria)
|
|
353
|
-
.execute();
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
/**
|
|
357
|
-
* Records the delete date of entities by a given condition(s).
|
|
358
|
-
* Unlike save method executes a primitive operation without cascades, relations and other operations included.
|
|
359
|
-
* Executes fast and efficient DELETE query.
|
|
360
|
-
* Does not check if entity exist in the database.
|
|
361
|
-
* Condition(s) cannot be empty.
|
|
362
|
-
*/
|
|
363
|
-
softDelete(targetOrEntity, criteria) {
|
|
364
|
-
if (criteria === undefined ||
|
|
365
|
-
criteria === null ||
|
|
366
|
-
criteria === "" ||
|
|
367
|
-
(Array.isArray(criteria) && criteria.length === 0)) {
|
|
368
|
-
return Promise.reject(new TypeORMError(`Empty criteria(s) are not allowed for the delete method.`));
|
|
369
|
-
}
|
|
370
|
-
if (typeof criteria === "string" ||
|
|
371
|
-
typeof criteria === "number" ||
|
|
372
|
-
criteria instanceof Date ||
|
|
373
|
-
Array.isArray(criteria)) {
|
|
374
|
-
return this.createQueryBuilder()
|
|
375
|
-
.softDelete()
|
|
376
|
-
.from(targetOrEntity)
|
|
377
|
-
.whereInIds(criteria)
|
|
378
|
-
.execute();
|
|
379
|
-
}
|
|
380
|
-
else {
|
|
381
|
-
return this.createQueryBuilder()
|
|
382
|
-
.softDelete()
|
|
383
|
-
.from(targetOrEntity)
|
|
384
|
-
.where(criteria)
|
|
385
|
-
.execute();
|
|
386
|
-
}
|
|
387
|
-
}
|
|
388
|
-
/**
|
|
389
|
-
* Restores entities by a given condition(s).
|
|
390
|
-
* Unlike save method executes a primitive operation without cascades, relations and other operations included.
|
|
391
|
-
* Executes fast and efficient DELETE query.
|
|
392
|
-
* Does not check if entity exist in the database.
|
|
393
|
-
* Condition(s) cannot be empty.
|
|
394
|
-
*/
|
|
395
|
-
restore(targetOrEntity, criteria) {
|
|
396
|
-
if (criteria === undefined ||
|
|
397
|
-
criteria === null ||
|
|
398
|
-
criteria === "" ||
|
|
399
|
-
(Array.isArray(criteria) && criteria.length === 0)) {
|
|
400
|
-
return Promise.reject(new TypeORMError(`Empty criteria(s) are not allowed for the delete method.`));
|
|
401
|
-
}
|
|
402
|
-
if (typeof criteria === "string" ||
|
|
403
|
-
typeof criteria === "number" ||
|
|
404
|
-
criteria instanceof Date ||
|
|
405
|
-
Array.isArray(criteria)) {
|
|
406
|
-
return this.createQueryBuilder()
|
|
407
|
-
.restore()
|
|
408
|
-
.from(targetOrEntity)
|
|
409
|
-
.whereInIds(criteria)
|
|
410
|
-
.execute();
|
|
411
|
-
}
|
|
412
|
-
else {
|
|
413
|
-
return this.createQueryBuilder()
|
|
414
|
-
.restore()
|
|
415
|
-
.from(targetOrEntity)
|
|
416
|
-
.where(criteria)
|
|
417
|
-
.execute();
|
|
418
|
-
}
|
|
419
|
-
}
|
|
420
|
-
/**
|
|
421
|
-
* Counts entities that match given options.
|
|
422
|
-
* Useful for pagination.
|
|
423
|
-
*/
|
|
424
|
-
count(entityClass, options) {
|
|
425
|
-
const metadata = this.connection.getMetadata(entityClass);
|
|
426
|
-
return this.createQueryBuilder(entityClass, FindOptionsUtils.extractFindManyOptionsAlias(options) ||
|
|
427
|
-
metadata.name)
|
|
428
|
-
.setFindOptions(options || {})
|
|
429
|
-
.getCount();
|
|
430
|
-
}
|
|
431
|
-
/**
|
|
432
|
-
* Counts entities that match given conditions.
|
|
433
|
-
* Useful for pagination.
|
|
434
|
-
*/
|
|
435
|
-
countBy(entityClass, where) {
|
|
436
|
-
const metadata = this.connection.getMetadata(entityClass);
|
|
437
|
-
return this.createQueryBuilder(entityClass, metadata.name)
|
|
438
|
-
.setFindOptions({ where })
|
|
439
|
-
.getCount();
|
|
440
|
-
}
|
|
441
|
-
/**
|
|
442
|
-
* Finds entities that match given find options.
|
|
443
|
-
*/
|
|
444
|
-
async find(entityClass, options) {
|
|
445
|
-
const metadata = this.connection.getMetadata(entityClass);
|
|
446
|
-
return this.createQueryBuilder(entityClass, FindOptionsUtils.extractFindManyOptionsAlias(options) ||
|
|
447
|
-
metadata.name)
|
|
448
|
-
.setFindOptions(options || {})
|
|
449
|
-
.getMany();
|
|
450
|
-
}
|
|
451
|
-
/**
|
|
452
|
-
* Finds entities that match given find options.
|
|
453
|
-
*/
|
|
454
|
-
async findBy(entityClass, where) {
|
|
455
|
-
const metadata = this.connection.getMetadata(entityClass);
|
|
456
|
-
return this.createQueryBuilder(entityClass, metadata.name)
|
|
457
|
-
.setFindOptions({ where: where })
|
|
458
|
-
.getMany();
|
|
459
|
-
}
|
|
460
|
-
/**
|
|
461
|
-
* Finds entities that match given find options.
|
|
462
|
-
* Also counts all entities that match given conditions,
|
|
463
|
-
* but ignores pagination settings (from and take options).
|
|
464
|
-
*/
|
|
465
|
-
findAndCount(entityClass, options) {
|
|
466
|
-
const metadata = this.connection.getMetadata(entityClass);
|
|
467
|
-
return this.createQueryBuilder(entityClass, FindOptionsUtils.extractFindManyOptionsAlias(options) ||
|
|
468
|
-
metadata.name)
|
|
469
|
-
.setFindOptions(options || {})
|
|
470
|
-
.getManyAndCount();
|
|
471
|
-
}
|
|
472
|
-
/**
|
|
473
|
-
* Finds entities that match given WHERE conditions.
|
|
474
|
-
* Also counts all entities that match given conditions,
|
|
475
|
-
* but ignores pagination settings (from and take options).
|
|
476
|
-
*/
|
|
477
|
-
findAndCountBy(entityClass, where) {
|
|
478
|
-
const metadata = this.connection.getMetadata(entityClass);
|
|
479
|
-
return this.createQueryBuilder(entityClass, metadata.name)
|
|
480
|
-
.setFindOptions({ where })
|
|
481
|
-
.getManyAndCount();
|
|
482
|
-
}
|
|
483
|
-
/**
|
|
484
|
-
* Finds entities with ids.
|
|
485
|
-
* Optionally find options or conditions can be applied.
|
|
486
|
-
*
|
|
487
|
-
* @deprecated use `findBy` method instead in conjunction with `In` operator, for example:
|
|
488
|
-
*
|
|
489
|
-
* .findBy({
|
|
490
|
-
* id: In([1, 2, 3])
|
|
491
|
-
* })
|
|
492
|
-
*/
|
|
493
|
-
async findByIds(entityClass, ids) {
|
|
494
|
-
if (!ids.length)
|
|
495
|
-
return Promise.resolve([]);
|
|
496
|
-
const metadata = this.connection.getMetadata(entityClass);
|
|
497
|
-
return this.createQueryBuilder(entityClass, metadata.name)
|
|
498
|
-
.andWhereInIds(ids)
|
|
499
|
-
.getMany();
|
|
500
|
-
}
|
|
501
|
-
/**
|
|
502
|
-
* Finds first entity by a given find options.
|
|
503
|
-
* If entity was not found in the database - returns null.
|
|
504
|
-
*/
|
|
505
|
-
async findOne(entityClass, options) {
|
|
506
|
-
const metadata = this.connection.getMetadata(entityClass);
|
|
507
|
-
let alias = metadata.name;
|
|
508
|
-
if (options && options.join) {
|
|
509
|
-
alias = options.join.alias;
|
|
510
|
-
}
|
|
511
|
-
if (!options.where) {
|
|
512
|
-
throw new Error(`You must provide selection conditions in order to find a single row.`);
|
|
513
|
-
}
|
|
514
|
-
return this.createQueryBuilder(entityClass, alias)
|
|
515
|
-
.setFindOptions({
|
|
516
|
-
...options,
|
|
517
|
-
take: 1,
|
|
518
|
-
})
|
|
519
|
-
.getOne();
|
|
520
|
-
}
|
|
521
|
-
/**
|
|
522
|
-
* Finds first entity that matches given where condition.
|
|
523
|
-
* If entity was not found in the database - returns null.
|
|
524
|
-
*/
|
|
525
|
-
async findOneBy(entityClass, where) {
|
|
526
|
-
const metadata = this.connection.getMetadata(entityClass);
|
|
527
|
-
return this.createQueryBuilder(entityClass, metadata.name)
|
|
528
|
-
.setFindOptions({
|
|
529
|
-
where,
|
|
530
|
-
take: 1,
|
|
531
|
-
})
|
|
532
|
-
.getOne();
|
|
533
|
-
}
|
|
534
|
-
/**
|
|
535
|
-
* Finds first entity that matches given id.
|
|
536
|
-
* If entity was not found in the database - returns null.
|
|
537
|
-
*
|
|
538
|
-
* @deprecated use `findOneBy` method instead in conjunction with `In` operator, for example:
|
|
539
|
-
*
|
|
540
|
-
* .findOneBy({
|
|
541
|
-
* id: 1 // where "id" is your primary column name
|
|
542
|
-
* })
|
|
543
|
-
*/
|
|
544
|
-
async findOneById(entityClass, id) {
|
|
545
|
-
const metadata = this.connection.getMetadata(entityClass);
|
|
546
|
-
return this.createQueryBuilder(entityClass, metadata.name)
|
|
547
|
-
.setFindOptions({
|
|
548
|
-
take: 1,
|
|
549
|
-
})
|
|
550
|
-
.whereInIds(metadata.ensureEntityIdMap(id))
|
|
551
|
-
.getOne();
|
|
552
|
-
}
|
|
553
|
-
/**
|
|
554
|
-
* Finds first entity by a given find options.
|
|
555
|
-
* If entity was not found in the database - rejects with error.
|
|
556
|
-
*/
|
|
557
|
-
async findOneOrFail(entityClass, options) {
|
|
558
|
-
return this.findOne(entityClass, options).then((value) => {
|
|
559
|
-
if (value === null) {
|
|
560
|
-
return Promise.reject(new EntityNotFoundError(entityClass, options));
|
|
561
|
-
}
|
|
562
|
-
return Promise.resolve(value);
|
|
563
|
-
});
|
|
564
|
-
}
|
|
565
|
-
/**
|
|
566
|
-
* Finds first entity that matches given where condition.
|
|
567
|
-
* If entity was not found in the database - rejects with error.
|
|
568
|
-
*/
|
|
569
|
-
async findOneByOrFail(entityClass, where) {
|
|
570
|
-
return this.findOneBy(entityClass, where).then((value) => {
|
|
571
|
-
if (value === null) {
|
|
572
|
-
return Promise.reject(new EntityNotFoundError(entityClass, where));
|
|
573
|
-
}
|
|
574
|
-
return Promise.resolve(value);
|
|
575
|
-
});
|
|
576
|
-
}
|
|
577
|
-
/**
|
|
578
|
-
* Clears all the data from the given table (truncates/drops it).
|
|
579
|
-
*
|
|
580
|
-
* Note: this method uses TRUNCATE and may not work as you expect in transactions on some platforms.
|
|
581
|
-
* @see https://stackoverflow.com/a/5972738/925151
|
|
582
|
-
*/
|
|
583
|
-
async clear(entityClass) {
|
|
584
|
-
const metadata = this.connection.getMetadata(entityClass);
|
|
585
|
-
const queryRunner = this.queryRunner || this.connection.createQueryRunner();
|
|
586
|
-
try {
|
|
587
|
-
return await queryRunner.clearTable(metadata.tablePath); // await is needed here because we are using finally
|
|
588
|
-
}
|
|
589
|
-
finally {
|
|
590
|
-
if (!this.queryRunner)
|
|
591
|
-
await queryRunner.release();
|
|
592
|
-
}
|
|
593
|
-
}
|
|
594
|
-
/**
|
|
595
|
-
* Increments some column by provided value of the entities matched given conditions.
|
|
596
|
-
*/
|
|
597
|
-
async increment(entityClass, conditions, propertyPath, value) {
|
|
598
|
-
const metadata = this.connection.getMetadata(entityClass);
|
|
599
|
-
const column = metadata.findColumnWithPropertyPath(propertyPath);
|
|
600
|
-
if (!column)
|
|
601
|
-
throw new TypeORMError(`Column ${propertyPath} was not found in ${metadata.targetName} entity.`);
|
|
602
|
-
if (isNaN(Number(value)))
|
|
603
|
-
throw new TypeORMError(`Value "${value}" is not a number.`);
|
|
604
|
-
const values = propertyPath
|
|
605
|
-
.split(".")
|
|
606
|
-
.reduceRight((value, key) => ({ [key]: value }), () => this.connection.driver.escape(column.databaseName) +
|
|
607
|
-
" + " +
|
|
608
|
-
value);
|
|
609
|
-
return this.createQueryBuilder(entityClass, "entity")
|
|
610
|
-
.update(entityClass)
|
|
611
|
-
.set(values)
|
|
612
|
-
.where(conditions)
|
|
613
|
-
.execute();
|
|
614
|
-
}
|
|
615
|
-
/**
|
|
616
|
-
* Decrements some column by provided value of the entities matched given conditions.
|
|
617
|
-
*/
|
|
618
|
-
async decrement(entityClass, conditions, propertyPath, value) {
|
|
619
|
-
const metadata = this.connection.getMetadata(entityClass);
|
|
620
|
-
const column = metadata.findColumnWithPropertyPath(propertyPath);
|
|
621
|
-
if (!column)
|
|
622
|
-
throw new TypeORMError(`Column ${propertyPath} was not found in ${metadata.targetName} entity.`);
|
|
623
|
-
if (isNaN(Number(value)))
|
|
624
|
-
throw new TypeORMError(`Value "${value}" is not a number.`);
|
|
625
|
-
const values = propertyPath
|
|
626
|
-
.split(".")
|
|
627
|
-
.reduceRight((value, key) => ({ [key]: value }), () => this.connection.driver.escape(column.databaseName) +
|
|
628
|
-
" - " +
|
|
629
|
-
value);
|
|
630
|
-
return this.createQueryBuilder(entityClass, "entity")
|
|
631
|
-
.update(entityClass)
|
|
632
|
-
.set(values)
|
|
633
|
-
.where(conditions)
|
|
634
|
-
.execute();
|
|
635
|
-
}
|
|
636
|
-
/**
|
|
637
|
-
* Gets repository for the given entity class or name.
|
|
638
|
-
* If single database connection mode is used, then repository is obtained from the
|
|
639
|
-
* repository aggregator, where each repository is individually created for this entity manager.
|
|
640
|
-
* When single database connection is not used, repository is being obtained from the connection.
|
|
641
|
-
*/
|
|
642
|
-
getRepository(target) {
|
|
643
|
-
const repository = this.repositories.find((repository) => repository.target === target);
|
|
644
|
-
if (repository)
|
|
645
|
-
return repository;
|
|
646
|
-
if (this.connection.driver.options.type === "mongodb") {
|
|
647
|
-
/* */
|
|
648
|
-
/* */
|
|
649
|
-
/* */
|
|
650
|
-
/* */
|
|
651
|
-
/* */
|
|
652
|
-
/* */
|
|
653
|
-
/* */
|
|
654
|
-
/* */
|
|
655
|
-
return (void 0);
|
|
656
|
-
}
|
|
657
|
-
else {
|
|
658
|
-
const newRepository = new Repository(target, this, this.queryRunner);
|
|
659
|
-
this.repositories.push(newRepository);
|
|
660
|
-
return newRepository;
|
|
661
|
-
}
|
|
662
|
-
}
|
|
663
|
-
/**
|
|
664
|
-
* Gets tree repository for the given entity class or name.
|
|
665
|
-
* If single database connection mode is used, then repository is obtained from the
|
|
666
|
-
* repository aggregator, where each repository is individually created for this entity manager.
|
|
667
|
-
* When single database connection is not used, repository is being obtained from the connection.
|
|
668
|
-
*/
|
|
669
|
-
getTreeRepository(target) {
|
|
670
|
-
if (this.connection.driver.treeSupport === false)
|
|
671
|
-
throw new TreeRepositoryNotSupportedError(this.connection.driver);
|
|
672
|
-
const repository = this.treeRepositories.find((repository) => repository.target === target);
|
|
673
|
-
if (repository)
|
|
674
|
-
return repository;
|
|
675
|
-
const newRepository = new TreeRepository(target, this, this.queryRunner);
|
|
676
|
-
this.treeRepositories.push(newRepository);
|
|
677
|
-
return newRepository;
|
|
678
|
-
}
|
|
679
|
-
/* */
|
|
680
|
-
/* */
|
|
681
|
-
/* */
|
|
682
|
-
/* */
|
|
683
|
-
/* */
|
|
684
|
-
/* */
|
|
685
|
-
/* */
|
|
686
|
-
/* */
|
|
687
|
-
/* */
|
|
688
|
-
/**
|
|
689
|
-
* Creates a new repository instance out of a given Repository and
|
|
690
|
-
* sets current EntityManager instance to it. Used to work with custom repositories
|
|
691
|
-
* in transactions.
|
|
692
|
-
*/
|
|
693
|
-
withRepository(repository) {
|
|
694
|
-
const repositoryConstructor = repository.constructor;
|
|
695
|
-
const { target, manager, queryRunner, ...otherRepositoryProperties } = repository;
|
|
696
|
-
return Object.assign(new repositoryConstructor(repository.target, this), {
|
|
697
|
-
...otherRepositoryProperties,
|
|
698
|
-
});
|
|
699
|
-
}
|
|
700
|
-
/**
|
|
701
|
-
* Gets custom entity repository marked with @EntityRepository decorator.
|
|
702
|
-
*
|
|
703
|
-
* @deprecated use Repository.extend to create custom repositories
|
|
704
|
-
*/
|
|
705
|
-
getCustomRepository(customRepository) {
|
|
706
|
-
const entityRepositoryMetadataArgs = getMetadataArgsStorage().entityRepositories.find((repository) => {
|
|
707
|
-
return (repository.target ===
|
|
708
|
-
(typeof customRepository === "function"
|
|
709
|
-
? customRepository
|
|
710
|
-
: customRepository.constructor));
|
|
711
|
-
});
|
|
712
|
-
if (!entityRepositoryMetadataArgs)
|
|
713
|
-
throw new CustomRepositoryNotFoundError(customRepository);
|
|
714
|
-
const entityMetadata = entityRepositoryMetadataArgs.entity
|
|
715
|
-
? this.connection.getMetadata(entityRepositoryMetadataArgs.entity)
|
|
716
|
-
: undefined;
|
|
717
|
-
const entityRepositoryInstance = new entityRepositoryMetadataArgs.target(this, entityMetadata);
|
|
718
|
-
if (entityRepositoryInstance instanceof AbstractRepository) {
|
|
719
|
-
if (!entityRepositoryInstance["manager"])
|
|
720
|
-
entityRepositoryInstance["manager"] = this;
|
|
721
|
-
}
|
|
722
|
-
else {
|
|
723
|
-
if (!entityMetadata)
|
|
724
|
-
throw new CustomRepositoryCannotInheritRepositoryError(customRepository);
|
|
725
|
-
entityRepositoryInstance["manager"] = this;
|
|
726
|
-
entityRepositoryInstance["metadata"] = entityMetadata;
|
|
727
|
-
}
|
|
728
|
-
return entityRepositoryInstance;
|
|
729
|
-
}
|
|
730
|
-
/**
|
|
731
|
-
* Releases all resources used by entity manager.
|
|
732
|
-
* This is used when entity manager is created with a single query runner,
|
|
733
|
-
* and this single query runner needs to be released after job with entity manager is done.
|
|
734
|
-
*/
|
|
735
|
-
async release() {
|
|
736
|
-
if (!this.queryRunner)
|
|
737
|
-
throw new NoNeedToReleaseEntityManagerError();
|
|
738
|
-
return this.queryRunner.release();
|
|
739
|
-
}
|
|
740
|
-
}
|
|
741
|
-
;
|
|
742
|
-
({}); // @--end-of-file-for-module=taon-typeorm lib/typeorm/entity-manager/EntityManager.ts
|
|
743
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW50aXR5TWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0L3Rhb24tdHlwZW9ybS9wcm9qZWN0cy90YW9uLXR5cGVvcm0vc3JjL2xpYi90eXBlb3JtL2VudGl0eS1tYW5hZ2VyL0VudGl0eU1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFDbEUsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0sa0RBQWtELENBQUE7QUFLMUcsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sNENBQTRDLENBQUE7QUFDOUYsS0FBSztBQUNMLEtBQUs7QUFFTCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFBO0FBQ25FLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLGdFQUFnRSxDQUFBO0FBQ2xILE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLHFFQUFxRSxDQUFBO0FBQzVILE9BQU8sRUFBTSw0Q0FBNEMsRUFBTSw2QkFBNkIsRUFBTSwrQkFBK0IsRUFBTSxZQUFZLEdBQUcsTUFBTSxVQUFVLENBQUEsQ0FBQSxLQUFLO0FBQzNLLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFFTCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQTtBQUlyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTtBQU81RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDakQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRW5ELE9BQU8s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QUE0QyxDQUNsRCxnQkFBZ0IsQ0FDbkIsQ0FDSjtZQUFDLHdCQUFnQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FDbkQ7WUFBQyx3QkFBZ0MsQ0FBQyxVQUFVLENBQUMsR0FBRyxjQUFjLENBQUE7UUFDbkUsQ0FBQztRQUVELE9BQU8sd0JBQXdCLENBQUE7SUFDbkMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsT0FBTztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVztZQUFFLE1BQU0sSUFBSSxpQ0FBaUMsRUFBRSxDQUFBO1FBRXBFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUNyQyxDQUFDO0NBQ0o7QUFFQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHFGQUFxRiIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSBcIi4uL2RhdGEtc291cmNlL0RhdGFTb3VyY2VcIlxuaW1wb3J0IHsgRmluZE1hbnlPcHRpb25zIH0gZnJvbSBcIi4uL2ZpbmQtb3B0aW9ucy9GaW5kTWFueU9wdGlvbnNcIlxuaW1wb3J0IHsgRW50aXR5VGFyZ2V0IH0gZnJvbSBcIi4uL2NvbW1vbi9FbnRpdHlUYXJnZXRcIlxuaW1wb3J0IHsgT2JqZWN0VHlwZSB9IGZyb20gXCIuLi9jb21tb24vT2JqZWN0VHlwZVwiXG5pbXBvcnQgeyBFbnRpdHlOb3RGb3VuZEVycm9yIH0gZnJvbSBcIi4uL2Vycm9yL0VudGl0eU5vdEZvdW5kRXJyb3JcIlxuaW1wb3J0IHsgUXVlcnlSdW5uZXJQcm92aWRlckFscmVhZHlSZWxlYXNlZEVycm9yIH0gZnJvbSBcIi4uL2Vycm9yL1F1ZXJ5UnVubmVyUHJvdmlkZXJBbHJlYWR5UmVsZWFzZWRFcnJvclwiXG5pbXBvcnQgeyBGaW5kT25lT3B0aW9ucyB9IGZyb20gXCIuLi9maW5kLW9wdGlvbnMvRmluZE9uZU9wdGlvbnNcIlxuaW1wb3J0IHsgRGVlcFBhcnRpYWwgfSBmcm9tIFwiLi4vY29tbW9uL0RlZXBQYXJ0aWFsXCJcbmltcG9ydCB7IFJlbW92ZU9wdGlvbnMgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeS9SZW1vdmVPcHRpb25zXCJcbmltcG9ydCB7IFNhdmVPcHRpb25zIH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvU2F2ZU9wdGlvbnNcIlxuaW1wb3J0IHsgTm9OZWVkVG9SZWxlYXNlRW50aXR5TWFuYWdlckVycm9yIH0gZnJvbSBcIi4uL2Vycm9yL05vTmVlZFRvUmVsZWFzZUVudGl0eU1hbmFnZXJFcnJvclwiXG4vKiAqL1xuLyogKi9cbiAgXG5pbXBvcnQgeyBUcmVlUmVwb3NpdG9yeSB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L1RyZWVSZXBvc2l0b3J5XCJcbmltcG9ydCB7IFJlcG9zaXRvcnkgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeS9SZXBvc2l0b3J5XCJcbmltcG9ydCB7IEZpbmRPcHRpb25zVXRpbHMgfSBmcm9tIFwiLi4vZmluZC1vcHRpb25zL0ZpbmRPcHRpb25zVXRpbHNcIlxuaW1wb3J0IHsgUGxhaW5PYmplY3RUb05ld0VudGl0eVRyYW5zZm9ybWVyIH0gZnJvbSBcIi4uL3F1ZXJ5LWJ1aWxkZXIvdHJhbnNmb3JtZXIvUGxhaW5PYmplY3RUb05ld0VudGl0eVRyYW5zZm9ybWVyXCJcbmltcG9ydCB7IFBsYWluT2JqZWN0VG9EYXRhYmFzZUVudGl0eVRyYW5zZm9ybWVyIH0gZnJvbSBcIi4uL3F1ZXJ5LWJ1aWxkZXIvdHJhbnNmb3JtZXIvUGxhaW5PYmplY3RUb0RhdGFiYXNlRW50aXR5VHJhbnNmb3JtZXJcIlxuaW1wb3J0IHsgICAgIEN1c3RvbVJlcG9zaXRvcnlDYW5ub3RJbmhlcml0UmVwb3NpdG9yeUVycm9yLCAgICAgQ3VzdG9tUmVwb3NpdG9yeU5vdEZvdW5kRXJyb3IsICAgICBUcmVlUmVwb3NpdG9yeU5vdFN1cHBvcnRlZEVycm9yLCAgICAgVHlwZU9STUVycm9yLCB9IGZyb20gXCIuLi9lcnJvclwiLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG5cbmltcG9ydCB7IEFic3RyYWN0UmVwb3NpdG9yeSB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L0Fic3RyYWN0UmVwb3NpdG9yeVwiXG5pbXBvcnQgeyBRdWVyeVJ1bm5lciB9IGZyb20gXCIuLi9xdWVyeS1ydW5uZXIvUXVlcnlSdW5uZXJcIlxuaW1wb3J0IHsgU2VsZWN0UXVlcnlCdWlsZGVyIH0gZnJvbSBcIi4uL3F1ZXJ5LWJ1aWxkZXIvU2VsZWN0UXVlcnlCdWlsZGVyXCJcbmltcG9ydCB7IFF1ZXJ5RGVlcFBhcnRpYWxFbnRpdHkgfSBmcm9tIFwiLi4vcXVlcnktYnVpbGRlci9RdWVyeVBhcnRpYWxFbnRpdHlcIlxuaW1wb3J0IHsgRW50aXR5UGVyc2lzdEV4ZWN1dG9yIH0gZnJvbSBcIi4uL3BlcnNpc3RlbmNlL0VudGl0eVBlcnNpc3RFeGVjdXRvclwiXG5pbXBvcnQgeyBPYmplY3RJRCB9IGZyb20gXCIuLi9kcml2ZXIvbW9uZ29kYi90eXBpbmdzXCJcbmltcG9ydCB7IEluc2VydFJlc3VsdCB9IGZyb20gXCIuLi9xdWVyeS1idWlsZGVyL3Jlc3VsdC9JbnNlcnRSZXN1bHRcIlxuaW1wb3J0IHsgVXBkYXRlUmVzdWx0IH0gZnJvbSBcIi4uL3F1ZXJ5LWJ1aWxkZXIvcmVzdWx0L1VwZGF0ZVJlc3VsdFwiXG5pbXBvcnQgeyBEZWxldGVSZXN1bHQgfSBmcm9tIFwiLi4vcXVlcnktYnVpbGRlci9yZXN1bHQvRGVsZXRlUmVzdWx0XCJcbmltcG9ydCB7IEZpbmRPcHRpb25zV2hlcmUgfSBmcm9tIFwiLi4vZmluZC1vcHRpb25zL0ZpbmRPcHRpb25zV2hlcmVcIlxuaW1wb3J0IHsgSXNvbGF0aW9uTGV2ZWwgfSBmcm9tIFwiLi4vZHJpdmVyL3R5cGVzL0lzb2xhdGlvbkxldmVsXCJcbmltcG9ydCB7IE9iamVjdFV0aWxzIH0gZnJvbSBcIi4uL3V0aWwvT2JqZWN0VXRpbHNcIlxuaW1wb3J0IHsgZ2V0TWV0YWRhdGFBcmdzU3RvcmFnZSB9IGZyb20gXCIuLi9nbG9iYWxzXCJcbmltcG9ydCB7IFVwc2VydE9wdGlvbnMgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeS9VcHNlcnRPcHRpb25zXCJcbmltcG9ydCB7IEluc3RhbmNlQ2hlY2tlciB9IGZyb20gXCIuLi91dGlsL0luc3RhbmNlQ2hlY2tlclwiXG5pbXBvcnQgeyBPYmplY3RMaXRlcmFsIH0gZnJvbSBcIi4uL2NvbW1vbi9PYmplY3RMaXRlcmFsXCJcblxuLyoqXG4gKiBFbnRpdHkgbWFuYWdlciBzdXBwb3NlZCB0byB3b3JrIHdpdGggYW55IGVudGl0eSwgYXV0b21hdGljYWxseSBmaW5kIGl0cyByZXBvc2l0b3J5IGFuZCBjYWxsIGl0cyBtZXRob2RzLFxuICogd2hhdGV2ZXIgZW50aXR5IHR5cGUgYXJlIHlvdSBwYXNzaW5nLlxuICovXG5leHBvcnQgY2xhc3MgRW50aXR5TWFuYWdlciB7XG4gICAgcmVhZG9ubHkgXCJAaW5zdGFuY2VvZlwiID0gU3ltYm9sLmZvcihcIkVudGl0eU1hbmFnZXJcIilcblxuXG5cblxuXG4gICAgLyoqXG4gICAgICogQ29ubmVjdGlvbiB1c2VkIGJ5IHRoaXMgZW50aXR5IG1hbmFnZXIuXG4gICAgICovXG4gICAgcmVhZG9ubHkgY29ubmVjdGlvbjogRGF0YVNvdXJjZVxuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIHF1ZXJ5IHJ1bm5lciB0byBiZSB1c2VkIGZvciBvcGVyYXRpb25zIGluIHRoaXMgZW50aXR5IG1hbmFnZXIuXG4gICAgICogVXNlZCBvbmx5IGluIG5vbi1nbG9iYWwgZW50aXR5IG1hbmFnZXIuXG4gICAgICovXG4gICAgcmVhZG9ubHkgcXVlcnlSdW5uZXI/OiBRdWVyeVJ1bm5lclxuXG5cblxuXG5cbiAgICAvKipcbiAgICAgKiBPbmNlIGNyZWF0ZWQgYW5kIHRoZW4gcmV1c2VkIGJ5IHJlcG9zaXRvcmllcy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVwb3NpdG9yaWVzOiBSZXBvc2l0b3J5PGFueT5bXSA9IFtdXG5cbiAgICAvKipcbiAgICAgKiBPbmNlIGNyZWF0ZWQgYW5kIHRoZW4gcmV1c2VkIGJ5IHJlcG9zaXRvcmllcy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgdHJlZVJlcG9zaXRvcmllczogVHJlZVJlcG9zaXRvcnk8YW55PltdID0gW11cblxuICAgIC8qKlxuICAgICAqIFBsYWluIHRvIG9iamVjdCB0cmFuc2Zvcm1lciB1c2VkIGluIGNyZWF0ZSBhbmQgbWVyZ2Ugb3BlcmF0aW9ucy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcGxhaW5PYmplY3RUb0VudGl0eVRyYW5zZm9ybWVyID1cbiAgICAgICAgbmV3IFBsYWluT2JqZWN0VG9OZXdFbnRpdHlUcmFuc2Zvcm1lcigpXG5cblxuXG5cblxuICAgIGNvbnN0cnVjdG9yKGNvbm5lY3Rpb246IERhdGFTb3VyY2UsIHF1ZXJ5UnVubmVyPzogUXVlcnlSdW5uZXIpIHtcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uID0gY29ubmVjdGlvblxuICAgICAgICBpZiAocXVlcnlSdW5uZXIpIHtcbiAgICAgICAgICAgIHRoaXMucXVlcnlSdW5uZXIgPSBxdWVyeVJ1bm5lclxuXG4gICAgICAgICAgICBPYmplY3RVdGlscy5hc3NpZ24odGhpcy5xdWVyeVJ1bm5lciwgeyBtYW5hZ2VyOiB0aGlzIH0pXG4gICAgICAgIH1cbiAgICB9XG5cblxuXG5cblxuICAgIC8qKlxuICAgICAqIFdyYXBzIGdpdmVuIGZ1bmN0aW9uIGV4ZWN1dGlvbiAoYW5kIGFsbCBvcGVyYXRpb25zIG1hZGUgdGhlcmUpIGluIGEgdHJhbnNhY3Rpb24uXG4gICAgICogQWxsIGRhdGFiYXNlIG9wZXJhdGlvbnMgbXVzdCBiZSBleGVjdXRlZCB1c2luZyBwcm92aWRlZCBlbnRpdHkgbWFuYWdlci5cbiAgICAgKi9cbiAgICBhc3luYyB0cmFuc2FjdGlvbjxUPihcbiAgICAgICAgcnVuSW5UcmFuc2FjdGlvbjogKGVudGl0eU1hbmFnZXI6IEVudGl0eU1hbmFnZXIpID0+IFByb21pc2U8VD4sXG4gICAgKTogUHJvbWlzZTxUPlxuXG4gICAgLyoqXG4gICAgICogV3JhcHMgZ2l2ZW4gZnVuY3Rpb24gZXhlY3V0aW9uIChhbmQgYWxsIG9wZXJhdGlvbnMgbWFkZSB0aGVyZSkgaW4gYSB0cmFuc2FjdGlvbi5cbiAgICAgKiBBbGwgZGF0YWJhc2Ugb3BlcmF0aW9ucyBtdXN0IGJlIGV4ZWN1dGVkIHVzaW5nIHByb3ZpZGVkIGVudGl0eSBtYW5hZ2VyLlxuICAgICAqL1xuICAgIGFzeW5jIHRyYW5zYWN0aW9uPFQ+KFxuICAgICAgICBpc29sYXRpb25MZXZlbDogSXNvbGF0aW9uTGV2ZWwsXG4gICAgICAgIHJ1bkluVHJhbnNhY3Rpb246IChlbnRpdHlNYW5hZ2VyOiBFbnRpdHlNYW5hZ2VyKSA9PiBQcm9taXNlPFQ+LFxuICAgICk6IFByb21pc2U8VD5cblxuICAgIC8qKlxuICAgICAqIFdyYXBzIGdpdmVuIGZ1bmN0aW9uIGV4ZWN1dGlvbiAoYW5kIGFsbCBvcGVyYXRpb25zIG1hZGUgdGhlcmUpIGluIGEgdHJhbnNhY3Rpb24uXG4gICAgICogQWxsIGRhdGFiYXNlIG9wZXJhdGlvbnMgbXVzdCBiZSBleGVjdXRlZCB1c2luZyBwcm92aWRlZCBlbnRpdHkgbWFuYWdlci5cbiAgICAgKi9cbiAgICBhc3luYyB0cmFuc2FjdGlvbjxUPihcbiAgICAgICAgaXNvbGF0aW9uT3JSdW5JblRyYW5zYWN0aW9uOlxuICAgICAgICAgICAgfCBJc29sYXRpb25MZXZlbFxuICAgICAgICAgICAgfCAoKGVudGl0eU1hbmFnZXI6IEVudGl0eU1hbmFnZXIpID0+IFByb21pc2U8VD4pLFxuICAgICAgICBydW5JblRyYW5zYWN0aW9uUGFyYW0/OiAoZW50aXR5TWFuYWdlcjogRW50aXR5TWFuYWdlcikgPT4gUHJvbWlzZTxUPixcbiAgICApOiBQcm9taXNlPFQ+IHtcbiAgICAgICAgY29uc3QgaXNvbGF0aW9uID1cbiAgICAgICAgICAgIHR5cGVvZiBpc29sYXRpb25PclJ1bkluVHJhbnNhY3Rpb24gPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgICAgICA/IGlzb2xhdGlvbk9yUnVuSW5UcmFuc2FjdGlvblxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgIGNvbnN0IHJ1bkluVHJhbnNhY3Rpb24gPVxuICAgICAgICAgICAgdHlwZW9mIGlzb2xhdGlvbk9yUnVuSW5UcmFuc2FjdGlvbiA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgICAgICAgPyBpc29sYXRpb25PclJ1bkluVHJhbnNhY3Rpb25cbiAgICAgICAgICAgICAgICA6IHJ1bkluVHJhbnNhY3Rpb25QYXJhbVxuXG4gICAgICAgIGlmICghcnVuSW5UcmFuc2FjdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVPUk1FcnJvcihcbiAgICAgICAgICAgICAgICBgVHJhbnNhY3Rpb24gbWV0aG9kIHJlcXVpcmVzIGNhbGxiYWNrIGluIHNlY29uZCBwYXJhbWV0ZXIgaWYgaXNvbGF0aW9uIGxldmVsIGlzIHN1cHBsaWVkLmAsXG4gICAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5xdWVyeVJ1bm5lciAmJiB0aGlzLnF1ZXJ5UnVubmVyLmlzUmVsZWFzZWQpXG4gICAgICAgICAgICB0aHJvdyBuZXcgUXVlcnlSdW5uZXJQcm92aWRlckFscmVhZHlSZWxlYXNlZEVycm9yKClcblxuXG5cbiAgICAgICAgY29uc3QgcXVlcnlSdW5uZXIgPVxuICAgICAgICAgICAgdGhpcy5xdWVyeVJ1bm5lciB8fCB0aGlzLmNvbm5lY3Rpb24uY3JlYXRlUXVlcnlSdW5uZXIoKVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBxdWVyeVJ1bm5lci5zdGFydFRyYW5zYWN0aW9uKGlzb2xhdGlvbilcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJ1bkluVHJhbnNhY3Rpb24ocXVlcnlSdW5uZXIubWFuYWdlcilcbiAgICAgICAgICAgIGF3YWl0IHF1ZXJ5UnVubmVyLmNvbW1pdFRyYW5zYWN0aW9uKClcbiAgICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICB0cnkge1xuXG4gICAgICAgICAgICAgICAgYXdhaXQgcXVlcnlSdW5uZXIucm9sbGJhY2tUcmFuc2FjdGlvbigpXG4gICAgICAgICAgICB9IGNhdGNoIChyb2xsYmFja0Vycm9yKSB7fVxuICAgICAgICAgICAgdGhyb3cgZXJyXG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMucXVlcnlSdW5uZXIpXG5cbiAgICAgICAgICAgICAgICBhd2FpdCBxdWVyeVJ1bm5lci5yZWxlYXNlKClcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIHJhdyBTUUwgcXVlcnkgYW5kIHJldHVybnMgcmF3IGRhdGFiYXNlIHJlc3VsdHMuXG4gICAgICovXG4gICAgYXN5bmMgcXVlcnkocXVlcnk6IHN0cmluZywgcGFyYW1ldGVycz86IGFueVtdKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbi5xdWVyeShxdWVyeSwgcGFyYW1ldGVycywgdGhpcy5xdWVyeVJ1bm5lcilcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHF1ZXJ5IGJ1aWxkZXIgdGhhdCBjYW4gYmUgdXNlZCB0byBidWlsZCBhIFNRTCBxdWVyeS5cbiAgICAgKi9cbiAgICBjcmVhdGVRdWVyeUJ1aWxkZXI8RW50aXR5IGV4dGVuZHMgT2JqZWN0TGl0ZXJhbD4oXG4gICAgICAgIGVudGl0eUNsYXNzOiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgYWxpYXM6IHN0cmluZyxcbiAgICAgICAgcXVlcnlSdW5uZXI/OiBRdWVyeVJ1bm5lcixcbiAgICApOiBTZWxlY3RRdWVyeUJ1aWxkZXI8RW50aXR5PlxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBxdWVyeSBidWlsZGVyIHRoYXQgY2FuIGJlIHVzZWQgdG8gYnVpbGQgYSBTUUwgcXVlcnkuXG4gICAgICovXG4gICAgY3JlYXRlUXVlcnlCdWlsZGVyKHF1ZXJ5UnVubmVyPzogUXVlcnlSdW5uZXIpOiBTZWxlY3RRdWVyeUJ1aWxkZXI8YW55PlxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBxdWVyeSBidWlsZGVyIHRoYXQgY2FuIGJlIHVzZWQgdG8gYnVpbGQgYSBTUUwgcXVlcnkuXG4gICAgICovXG4gICAgY3JlYXRlUXVlcnlCdWlsZGVyPEVudGl0eSBleHRlbmRzIE9iamVjdExpdGVyYWw+KFxuICAgICAgICBlbnRpdHlDbGFzcz86IEVudGl0eVRhcmdldDxFbnRpdHk+IHwgUXVlcnlSdW5uZXIsXG4gICAgICAgIGFsaWFzPzogc3RyaW5nLFxuICAgICAgICBxdWVyeVJ1bm5lcj86IFF1ZXJ5UnVubmVyLFxuICAgICk6IFNlbGVjdFF1ZXJ5QnVpbGRlcjxFbnRpdHk+IHtcbiAgICAgICAgaWYgKGFsaWFzKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb25uZWN0aW9uLmNyZWF0ZVF1ZXJ5QnVpbGRlcihcbiAgICAgICAgICAgICAgICBlbnRpdHlDbGFzcyBhcyBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgICAgICAgICBhbGlhcyxcbiAgICAgICAgICAgICAgICBxdWVyeVJ1bm5lciB8fCB0aGlzLnF1ZXJ5UnVubmVyLFxuICAgICAgICAgICAgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbi5jcmVhdGVRdWVyeUJ1aWxkZXIoXG4gICAgICAgICAgICAgICAgKGVudGl0eUNsYXNzIGFzIFF1ZXJ5UnVubmVyIHwgdW5kZWZpbmVkKSB8fFxuICAgICAgICAgICAgICAgICAgICBxdWVyeVJ1bm5lciB8fFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5UnVubmVyLFxuICAgICAgICAgICAgKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGVudGl0eSBoYXMgYW4gaWQuXG4gICAgICovXG4gICAgaGFzSWQoZW50aXR5OiBhbnkpOiBib29sZWFuXG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgZW50aXR5IG9mIGdpdmVuIHNjaGVtYSBuYW1lIGhhcyBhbiBpZC5cbiAgICAgKi9cbiAgICBoYXNJZCh0YXJnZXQ6IEZ1bmN0aW9uIHwgc3RyaW5nLCBlbnRpdHk6IGFueSk6IGJvb2xlYW5cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBlbnRpdHkgaGFzIGFuIGlkIGJ5IGl0cyBGdW5jdGlvbiB0eXBlIG9yIHNjaGVtYSBuYW1lLlxuICAgICAqL1xuICAgIGhhc0lkKHRhcmdldE9yRW50aXR5OiBhbnkgfCBGdW5jdGlvbiB8IHN0cmluZywgbWF5YmVFbnRpdHk/OiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID1cbiAgICAgICAgICAgIGFyZ3VtZW50cy5sZW5ndGggPT09IDIgPyB0YXJnZXRPckVudGl0eSA6IHRhcmdldE9yRW50aXR5LmNvbnN0cnVjdG9yXG4gICAgICAgIGNvbnN0IGVudGl0eSA9IGFyZ3VtZW50cy5sZW5ndGggPT09IDIgPyBtYXliZUVudGl0eSA6IHRhcmdldE9yRW50aXR5XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jb25uZWN0aW9uLmdldE1ldGFkYXRhKHRhcmdldClcbiAgICAgICAgcmV0dXJuIG1ldGFkYXRhLmhhc0lkKGVudGl0eSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGVudGl0eSBtaXhlZCBpZC5cbiAgICAgKi9cbiAgICBnZXRJZChlbnRpdHk6IGFueSk6IGFueVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBlbnRpdHkgbWl4ZWQgaWQuXG4gICAgICovXG4gICAgZ2V0SWQodGFyZ2V0OiBFbnRpdHlUYXJnZXQ8YW55PiwgZW50aXR5OiBhbnkpOiBhbnlcblxuICAgIC8qKlxuICAgICAqIEdldHMgZW50aXR5IG1peGVkIGlkLlxuICAgICAqL1xuICAgIGdldElkKHRhcmdldE9yRW50aXR5OiBhbnkgfCBFbnRpdHlUYXJnZXQ8YW55PiwgbWF5YmVFbnRpdHk/OiBhbnkpOiBhbnkge1xuICAgICAgICBjb25zdCB0YXJnZXQgPVxuICAgICAgICAgICAgYXJndW1lbnRzLmxlbmd0aCA9PT0gMiA/IHRhcmdldE9yRW50aXR5IDogdGFyZ2V0T3JFbnRpdHkuY29uc3RydWN0b3JcbiAgICAgICAgY29uc3QgZW50aXR5ID0gYXJndW1lbnRzLmxlbmd0aCA9PT0gMiA/IG1heWJlRW50aXR5IDogdGFyZ2V0T3JFbnRpdHlcbiAgICAgICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmNvbm5lY3Rpb24uZ2V0TWV0YWRhdGEodGFyZ2V0KVxuICAgICAgICByZXR1cm4gbWV0YWRhdGEuZ2V0RW50aXR5SWRNaXhlZE1hcChlbnRpdHkpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBlbnRpdHkgaW5zdGFuY2UgYW5kIGNvcGllcyBhbGwgZW50aXR5IHByb3BlcnRpZXMgZnJvbSB0aGlzIG9iamVjdCBpbnRvIGEgbmV3IGVudGl0eS5cbiAgICAgKiBOb3RlIHRoYXQgaXQgY29waWVzIG9ubHkgcHJvcGVydGllcyB0aGF0IHByZXNlbnQgaW4gZW50aXR5IHNjaGVtYS5cbiAgICAgKi9cbiAgICBjcmVhdGU8RW50aXR5PihcbiAgICAgICAgZW50aXR5Q2xhc3M6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBwbGFpbk9iamVjdD86IERlZXBQYXJ0aWFsPEVudGl0eT4sXG4gICAgKTogRW50aXR5XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGVudGl0aWVzIGFuZCBjb3BpZXMgYWxsIGVudGl0eSBwcm9wZXJ0aWVzIGZyb20gZ2l2ZW4gb2JqZWN0cyBpbnRvIHRoZWlyIG5ldyBlbnRpdGllcy5cbiAgICAgKiBOb3RlIHRoYXQgaXQgY29waWVzIG9ubHkgcHJvcGVydGllcyB0aGF0IHByZXNlbnQgaW4gZW50aXR5IHNjaGVtYS5cbiAgICAgKi9cbiAgICBjcmVhdGU8RW50aXR5PihcbiAgICAgICAgZW50aXR5Q2xhc3M6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBwbGFpbk9iamVjdHM/OiBEZWVwUGFydGlhbDxFbnRpdHk+W10sXG4gICAgKTogRW50aXR5W11cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgZW50aXR5IGluc3RhbmNlIG9yIGluc3RhbmNlcy5cbiAgICAgKiBDYW4gY29weSBwcm9wZXJ0aWVzIGZyb20gdGhlIGdpdmVuIG9iamVjdCBpbnRvIG5ldyBlbnRpdGllcy5cbiAgICAgKi9cbiAgICBjcmVhdGU8RW50aXR5PihcbiAgICAgICAgZW50aXR5Q2xhc3M6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBwbGFpbk9iamVjdE9yT2JqZWN0cz86IERlZXBQYXJ0aWFsPEVudGl0eT4gfCBEZWVwUGFydGlhbDxFbnRpdHk+W10sXG4gICAgKTogRW50aXR5IHwgRW50aXR5W10ge1xuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY29ubmVjdGlvbi5nZXRNZXRhZGF0YShlbnRpdHlDbGFzcylcblxuICAgICAgICBpZiAoIXBsYWluT2JqZWN0T3JPYmplY3RzKSByZXR1cm4gbWV0YWRhdGEuY3JlYXRlKHRoaXMucXVlcnlSdW5uZXIpXG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocGxhaW5PYmplY3RPck9iamVjdHMpKVxuICAgICAgICAgICAgcmV0dXJuIChwbGFpbk9iamVjdE9yT2JqZWN0cyBhcyBEZWVwUGFydGlhbDxFbnRpdHk+W10pLm1hcChcbiAgICAgICAgICAgICAgICAocGxhaW5FbnRpdHlMaWtlKSA9PiB0aGlzLmNyZWF0ZShlbnRpdHlDbGFzcywgcGxhaW5FbnRpdHlMaWtlKSxcbiAgICAgICAgICAgIClcblxuICAgICAgICBjb25zdCBtZXJnZUludG9FbnRpdHkgPSBtZXRhZGF0YS5jcmVhdGUodGhpcy5xdWVyeVJ1bm5lcilcbiAgICAgICAgdGhpcy5wbGFpbk9iamVjdFRvRW50aXR5VHJhbnNmb3JtZXIudHJhbnNmb3JtKFxuICAgICAgICAgICAgbWVyZ2VJbnRvRW50aXR5LFxuICAgICAgICAgICAgcGxhaW5PYmplY3RPck9iamVjdHMsXG4gICAgICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAgICAgIHRydWUsXG4gICAgICAgIClcbiAgICAgICAgcmV0dXJuIG1lcmdlSW50b0VudGl0eVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1lcmdlcyB0d28gZW50aXRpZXMgaW50byBvbmUgbmV3IGVudGl0eS5cbiAgICAgKi9cbiAgICBtZXJnZTxFbnRpdHkgZXh0ZW5kcyBPYmplY3RMaXRlcmFsPihcbiAgICAgICAgZW50aXR5Q2xhc3M6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBtZXJnZUludG9FbnRpdHk6IEVudGl0eSxcbiAgICAgICAgLi4uZW50aXR5TGlrZXM6IERlZXBQYXJ0aWFsPEVudGl0eT5bXVxuICAgICk6IEVudGl0eSB7XG5cbiAgICAgICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmNvbm5lY3Rpb24uZ2V0TWV0YWRhdGEoZW50aXR5Q2xhc3MpXG4gICAgICAgIGVudGl0eUxpa2VzLmZvckVhY2goKG9iamVjdCkgPT5cbiAgICAgICAgICAgIHRoaXMucGxhaW5PYmplY3RUb0VudGl0eVRyYW5zZm9ybWVyLnRyYW5zZm9ybShcbiAgICAgICAgICAgICAgICBtZXJnZUludG9FbnRpdHksXG4gICAgICAgICAgICAgICAgb2JqZWN0LFxuICAgICAgICAgICAgICAgIG1ldGFkYXRhLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgICByZXR1cm4gbWVyZ2VJbnRvRW50aXR5XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBlbnRpdHkgZnJvbSB0aGUgZ2l2ZW4gcGxhaW4gamF2YXNjcmlwdCBvYmplY3QuIElmIGVudGl0eSBhbHJlYWR5IGV4aXN0IGluIHRoZSBkYXRhYmFzZSwgdGhlblxuICAgICAqIGl0IGxvYWRzIGl0IChhbmQgZXZlcnl0aGluZyByZWxhdGVkIHRvIGl0KSwgcmVwbGFjZXMgYWxsIHZhbHVlcyB3aXRoIHRoZSBuZXcgb25lcyBmcm9tIHRoZSBnaXZlbiBvYmplY3RcbiAgICAgKiBhbmQgcmV0dXJucyB0aGlzIG5ldyBlbnRpdHkuIFRoaXMgbmV3IGVudGl0eSBpcyBhY3R1YWxseSBhIGxvYWRlZCBmcm9tIHRoZSBkYiBlbnRpdHkgd2l0aCBhbGwgcHJvcGVydGllc1xuICAgICAqIHJlcGxhY2VkIGZyb20gdGhlIG5ldyBvYmplY3QuXG4gICAgICovXG4gICAgYXN5bmMgcHJlbG9hZDxFbnRpdHkgZXh0ZW5kcyBPYmplY3RMaXRlcmFsPihcbiAgICAgICAgZW50aXR5Q2xhc3M6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBlbnRpdHlMaWtlOiBEZWVwUGFydGlhbDxFbnRpdHk+LFxuICAgICk6IFByb21pc2U8RW50aXR5IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jb25uZWN0aW9uLmdldE1ldGFkYXRhKGVudGl0eUNsYXNzKVxuICAgICAgICBjb25zdCBwbGFpbk9iamVjdFRvRGF0YWJhc2VFbnRpdHlUcmFuc2Zvcm1lciA9XG4gICAgICAgICAgICBuZXcgUGxhaW5PYmplY3RUb0RhdGFiYXNlRW50aXR5VHJhbnNmb3JtZXIodGhpcy5jb25uZWN0aW9uLm1hbmFnZXIpXG4gICAgICAgIGNvbnN0IHRyYW5zZm9ybWVkRW50aXR5ID1cbiAgICAgICAgICAgIGF3YWl0IHBsYWluT2JqZWN0VG9EYXRhYmFzZUVudGl0eVRyYW5zZm9ybWVyLnRyYW5zZm9ybShcbiAgICAgICAgICAgICAgICBlbnRpdHlMaWtlLFxuICAgICAgICAgICAgICAgIG1ldGFkYXRhLFxuICAgICAgICAgICAgKVxuICAgICAgICBpZiAodHJhbnNmb3JtZWRFbnRpdHkpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tZXJnZShcbiAgICAgICAgICAgICAgICBlbnRpdHlDbGFzcyBhcyBhbnksXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtZWRFbnRpdHkgYXMgRW50aXR5LFxuICAgICAgICAgICAgICAgIGVudGl0eUxpa2UsXG4gICAgICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNhdmVzIGFsbCBnaXZlbiBlbnRpdGllcyBpbiB0aGUgZGF0YWJhc2UuXG4gICAgICogSWYgZW50aXRpZXMgZG8gbm90IGV4aXN0IGluIHRoZSBkYXRhYmFzZSB0aGVuIGluc2VydHMsIG90aGVyd2lzZSB1cGRhdGVzLlxuICAgICAqL1xuICAgIHNhdmU8RW50aXR5PihlbnRpdGllczogRW50aXR5W10sIG9wdGlvbnM/OiBTYXZlT3B0aW9ucyk6IFByb21pc2U8RW50aXR5W10+XG5cbiAgICAvKipcbiAgICAgKiBTYXZlcyBhbGwgZ2l2ZW4gZW50aXRpZXMgaW4gdGhlIGRhdGFiYXNlLlxuICAgICAqIElmIGVudGl0aWVzIGRvIG5vdCBleGlzdCBpbiB0aGUgZGF0YWJhc2UgdGhlbiBpbnNlcnRzLCBvdGhlcndpc2UgdXBkYXRlcy5cbiAgICAgKi9cbiAgICBzYXZlPEVudGl0eT4oZW50aXR5OiBFbnRpdHksIG9wdGlvbnM/OiBTYXZlT3B0aW9ucyk6IFByb21pc2U8RW50aXR5PlxuXG4gICAgLyoqXG4gICAgICogU2F2ZXMgYWxsIGdpdmVuIGVudGl0aWVzIGluIHRoZSBkYXRhYmFzZS5cbiAgICAgKiBJZiBlbnRpdGllcyBkbyBub3QgZXhpc3QgaW4gdGhlIGRhdGFiYXNlIHRoZW4gaW5zZXJ0cywgb3RoZXJ3aXNlIHVwZGF0ZXMuXG4gICAgICovXG4gICAgc2F2ZTxFbnRpdHksIFQgZXh0ZW5kcyBEZWVwUGFydGlhbDxFbnRpdHk+PihcbiAgICAgICAgdGFyZ2V0T3JFbnRpdHk6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBlbnRpdGllczogVFtdLFxuICAgICAgICBvcHRpb25zOiBTYXZlT3B0aW9ucyAmIHsgcmVsb2FkOiBmYWxzZSB9LFxuICAgICk6IFByb21pc2U8VFtdPlxuXG4gICAgLyoqXG4gICAgICogU2F2ZXMgYWxsIGdpdmVuIGVudGl0aWVzIGluIHRoZSBkYXRhYmFzZS5cbiAgICAgKiBJZiBlbnRpdGllcyBkbyBub3QgZXhpc3QgaW4gdGhlIGRhdGFiYXNlIHRoZW4gaW5zZXJ0cywgb3RoZXJ3aXNlIHVwZGF0ZXMuXG4gICAgICovXG4gICAgc2F2ZTxFbnRpdHksIFQgZXh0ZW5kcyBEZWVwUGFydGlhbDxFbnRpdHk+PihcbiAgICAgICAgdGFyZ2V0T3JFbnRpdHk6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBlbnRpdGllczogVFtdLFxuICAgICAgICBvcHRpb25zPzogU2F2ZU9wdGlvbnMsXG4gICAgKTogUHJvbWlzZTwoVCAmIEVudGl0eSlbXT5cblxuICAgIC8qKlxuICAgICAqIFNhdmVzIGEgZ2l2ZW4gZW50aXR5IGluIHRoZSBkYXRhYmFzZS5cbiAgICAgKiBJZiBlbnRpdHkgZG9lcyBub3QgZXhpc3QgaW4gdGhlIGRhdGFiYXNlIHRoZW4gaW5zZXJ0cywgb3RoZXJ3aXNlIHVwZGF0ZXMuXG4gICAgICovXG4gICAgc2F2ZTxFbnRpdHksIFQgZXh0ZW5kcyBEZWVwUGFydGlhbDxFbnRpdHk+PihcbiAgICAgICAgdGFyZ2V0T3JFbnRpdHk6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBlbnRpdHk6IFQsXG4gICAgICAgIG9wdGlvbnM6IFNhdmVPcHRpb25zICYgeyByZWxvYWQ6IGZhbHNlIH0sXG4gICAgKTogUHJvbWlzZTxUPlxuXG4gICAgLyoqXG4gICAgICogU2F2ZXMgYSBnaXZlbiBlbnRpdHkgaW4gdGhlIGRhdGFiYXNlLlxuICAgICAqIElmIGVudGl0eSBkb2VzIG5vdCBleGlzdCBpbiB0aGUgZGF0YWJhc2UgdGhlbiBpbnNlcnRzLCBvdGhlcndpc2UgdXBkYXRlcy5cbiAgICAgKi9cbiAgICBzYXZlPEVudGl0eSwgVCBleHRlbmRzIERlZXBQYXJ0aWFsPEVudGl0eT4+KFxuICAgICAgICB0YXJnZXRPckVudGl0eTogRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgICAgIGVudGl0eTogVCxcbiAgICAgICAgb3B0aW9ucz86IFNhdmVPcHRpb25zLFxuICAgICk6IFByb21pc2U8VCAmIEVudGl0eT5cblxuICAgIC8qKlxuICAgICAqIFNhdmVzIGEgZ2l2ZW4gZW50aXR5IGluIHRoZSBkYXRhYmFzZS5cbiAgICAgKi9cbiAgICBzYXZlPEVudGl0eSBleHRlbmRzIE9iamVjdExpdGVyYWwsIFQgZXh0ZW5kcyBEZWVwUGFydGlhbDxFbnRpdHk+PihcbiAgICAgICAgdGFyZ2V0T3JFbnRpdHk6IChUIHwgVFtdKSB8IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBtYXliZUVudGl0eU9yT3B0aW9ucz86IFQgfCBUW10sXG4gICAgICAgIG1heWJlT3B0aW9ucz86IFNhdmVPcHRpb25zLFxuICAgICk6IFByb21pc2U8VCB8IFRbXT4ge1xuXG4gICAgICAgIGxldCB0YXJnZXQgPVxuICAgICAgICAgICAgYXJndW1lbnRzLmxlbmd0aCA+IDEgJiZcbiAgICAgICAgICAgICh0eXBlb2YgdGFyZ2V0T3JFbnRpdHkgPT09IFwiZnVuY3Rpb25cIiB8fFxuICAgICAgICAgICAgICAgIEluc3RhbmNlQ2hlY2tlci5pc0VudGl0eVNjaGVtYSh0YXJnZXRPckVudGl0eSkgfHxcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGFyZ2V0T3JFbnRpdHkgPT09IFwic3RyaW5nXCIpXG4gICAgICAgICAgICAgICAgPyAodGFyZ2V0T3JFbnRpdHkgYXMgRnVuY3Rpb24gfCBzdHJpbmcpXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgY29uc3QgZW50aXR5OiBUIHwgVFtdID0gdGFyZ2V0XG4gICAgICAgICAgICA/IChtYXliZUVudGl0eU9yT3B0aW9ucyBhcyBUIHwgVFtdKVxuICAgICAgICAgICAgOiAodGFyZ2V0T3JFbnRpdHkgYXMgVCB8IFRbXSlcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHRhcmdldFxuICAgICAgICAgICAgPyBtYXliZU9wdGlvbnNcbiAgICAgICAgICAgIDogKG1heWJlRW50aXR5T3JPcHRpb25zIGFzIFNhdmVPcHRpb25zKVxuXG4gICAgICAgIGlmIChJbnN0YW5jZUNoZWNrZXIuaXNFbnRpdHlTY2hlbWEodGFyZ2V0KSkgdGFyZ2V0ID0gdGFyZ2V0Lm9wdGlvbnMubmFtZVxuXG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZW50aXR5KSAmJiBlbnRpdHkubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShlbnRpdHkpXG5cblxuICAgICAgICByZXR1cm4gbmV3IEVudGl0eVBlcnNpc3RFeGVjdXRvcihcbiAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbixcbiAgICAgICAgICAgIHRoaXMucXVlcnlSdW5uZXIsXG4gICAgICAgICAgICBcInNhdmVcIixcbiAgICAgICAgICAgIHRhcmdldCxcbiAgICAgICAgICAgIGVudGl0eSxcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgIClcbiAgICAgICAgICAgIC5leGVjdXRlKClcbiAgICAgICAgICAgIC50aGVuKCgpID0+IGVudGl0eSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGEgZ2l2ZW4gZW50aXR5IGZyb20gdGhlIGRhdGFiYXNlLlxuICAgICAqL1xuICAgIHJlbW92ZTxFbnRpdHk+KGVudGl0eTogRW50aXR5LCBvcHRpb25zPzogUmVtb3ZlT3B0aW9ucyk6IFByb21pc2U8RW50aXR5PlxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhIGdpdmVuIGVudGl0eSBmcm9tIHRoZSBkYXRhYmFzZS5cbiAgICAgKi9cbiAgICByZW1vdmU8RW50aXR5PihcbiAgICAgICAgdGFyZ2V0T3JFbnRpdHk6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBlbnRpdHk6IEVudGl0eSxcbiAgICAgICAgb3B0aW9ucz86IFJlbW92ZU9wdGlvbnMsXG4gICAgKTogUHJvbWlzZTxFbnRpdHk+XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGEgZ2l2ZW4gZW50aXR5IGZyb20gdGhlIGRhdGFiYXNlLlxuICAgICAqL1xuICAgIHJlbW92ZTxFbnRpdHk+KGVudGl0eTogRW50aXR5W10sIG9wdGlvbnM/OiBSZW1vdmVPcHRpb25zKTogUHJvbWlzZTxFbnRpdHk+XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGEgZ2l2ZW4gZW50aXR5IGZyb20gdGhlIGRhdGFiYXNlLlxuICAgICAqL1xuICAgIHJlbW92ZTxFbnRpdHk+KFxuICAgICAgICB0YXJnZXRPckVudGl0eTogRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgICAgIGVudGl0eTogRW50aXR5W10sXG4gICAgICAgIG9wdGlvbnM/OiBSZW1vdmVPcHRpb25zLFxuICAgICk6IFByb21pc2U8RW50aXR5W10+XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGEgZ2l2ZW4gZW50aXR5IGZyb20gdGhlIGRhdGFiYXNlLlxuICAgICAqL1xuICAgIHJlbW92ZTxFbnRpdHkgZXh0ZW5kcyBPYmplY3RMaXRlcmFsPihcbiAgICAgICAgdGFyZ2V0T3JFbnRpdHk6IChFbnRpdHkgfCBFbnRpdHlbXSkgfCBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgbWF5YmVFbnRpdHlPck9wdGlvbnM/OiBFbnRpdHkgfCBFbnRpdHlbXSxcbiAgICAgICAgbWF5YmVPcHRpb25zPzogUmVtb3ZlT3B0aW9ucyxcbiAgICApOiBQcm9taXNlPEVudGl0eSB8IEVudGl0eVtdPiB7XG5cbiAgICAgICAgY29uc3QgdGFyZ2V0ID1cbiAgICAgICAgICAgIGFyZ3VtZW50cy5sZW5ndGggPiAxICYmXG4gICAgICAgICAgICAodHlwZW9mIHRhcmdldE9yRW50aXR5ID09PSBcImZ1bmN0aW9uXCIgfHxcbiAgICAgICAgICAgICAgICBJbnN0YW5jZUNoZWNrZXIuaXNFbnRpdHlTY2hlbWEodGFyZ2V0T3JFbnRpdHkpIHx8XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRhcmdldE9yRW50aXR5ID09PSBcInN0cmluZ1wiKVxuICAgICAgICAgICAgICAgID8gKHRhcmdldE9yRW50aXR5IGFzIEZ1bmN0aW9uIHwgc3RyaW5nKVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgIGNvbnN0IGVudGl0eTogRW50aXR5IHwgRW50aXR5W10gPSB0YXJnZXRcbiAgICAgICAgICAgID8gKG1heWJlRW50aXR5T3JPcHRpb25zIGFzIEVudGl0eSB8IEVudGl0eVtdKVxuICAgICAgICAgICAgOiAodGFyZ2V0T3JFbnRpdHkgYXMgRW50aXR5IHwgRW50aXR5W10pXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0YXJnZXRcbiAgICAgICAgICAgID8gbWF5YmVPcHRpb25zXG4gICAgICAgICAgICA6IChtYXliZUVudGl0eU9yT3B0aW9ucyBhcyBTYXZlT3B0aW9ucylcblxuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVudGl0eSkgJiYgZW50aXR5Lmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZW50aXR5KVxuXG5cbiAgICAgICAgcmV0dXJuIG5ldyBFbnRpdHlQZXJzaXN0RXhlY3V0b3IoXG4gICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb24sXG4gICAgICAgICAgICB0aGlzLnF1ZXJ5UnVubmVyLFxuICAgICAgICAgICAgXCJyZW1vdmVcIixcbiAgICAgICAgICAgIHRhcmdldCxcbiAgICAgICAgICAgIGVudGl0eSxcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgIClcbiAgICAgICAgICAgIC5leGVjdXRlKClcbiAgICAgICAgICAgIC50aGVuKCgpID0+IGVudGl0eSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWNvcmRzIHRoZSBkZWxldGUgZGF0ZSBvZiBhbGwgZ2l2ZW4gZW50aXRpZXMuXG4gICAgICovXG4gICAgc29mdFJlbW92ZTxFbnRpdHk+KFxuICAgICAgICBlbnRpdGllczogRW50aXR5W10sXG4gICAgICAgIG9wdGlvbnM/OiBTYXZlT3B0aW9ucyxcbiAgICApOiBQcm9taXNlPEVudGl0eVtdPlxuXG4gICAgLyoqXG4gICAgICogUmVjb3JkcyB0aGUgZGVsZXRlIGRhdGUgb2YgYSBnaXZlbiBlbnRpdHkuXG4gICAgICovXG4gICAgc29mdFJlbW92ZTxFbnRpdHk+KGVudGl0eTogRW50aXR5LCBvcHRpb25zPzogU2F2ZU9wdGlvbnMpOiBQcm9taXNlPEVudGl0eT5cblxuICAgIC8qKlxuICAgICAqIFJlY29yZHMgdGhlIGRlbGV0ZSBkYXRlIG9mIGFsbCBnaXZlbiBlbnRpdGllcy5cbiAgICAgKi9cbiAgICBzb2Z0UmVtb3ZlPEVudGl0eSwgVCBleHRlbmRzIERlZXBQYXJ0aWFsPEVudGl0eT4+KFxuICAgICAgICB0YXJnZXRPckVudGl0eTogRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgICAgIGVudGl0aWVzOiBUW10sXG4gICAgICAgIG9wdGlvbnM/OiBTYXZlT3B0aW9ucyxcbiAgICApOiBQcm9taXNlPFRbXT5cblxuICAgIC8qKlxuICAgICAqIFJlY29yZHMgdGhlIGRlbGV0ZSBkYXRlIG9mIGEgZ2l2ZW4gZW50aXR5LlxuICAgICAqL1xuICAgIHNvZnRSZW1vdmU8RW50aXR5LCBUIGV4dGVuZHMgRGVlcFBhcnRpYWw8RW50aXR5Pj4oXG4gICAgICAgIHRhcmdldE9yRW50aXR5OiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgZW50aXR5OiBULFxuICAgICAgICBvcHRpb25zPzogU2F2ZU9wdGlvbnMsXG4gICAgKTogUHJvbWlzZTxUPlxuXG4gICAgLyoqXG4gICAgICogUmVjb3JkcyB0aGUgZGVsZXRlIGRhdGUgb2Ygb25lIG9yIG1hbnkgZ2l2ZW4gZW50aXRpZXMuXG4gICAgICovXG4gICAgc29mdFJlbW92ZTxFbnRpdHkgZXh0ZW5kcyBPYmplY3RMaXRlcmFsLCBUIGV4dGVuZHMgRGVlcFBhcnRpYWw8RW50aXR5Pj4oXG4gICAgICAgIHRhcmdldE9yRW50aXR5OiAoVCB8IFRbXSkgfCBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgbWF5YmVFbnRpdHlPck9wdGlvbnM/OiBUIHwgVFtdLFxuICAgICAgICBtYXliZU9wdGlvbnM/OiBTYXZlT3B0aW9ucyxcbiAgICApOiBQcm9taXNlPFQgfCBUW10+IHtcblxuICAgICAgICBsZXQgdGFyZ2V0ID1cbiAgICAgICAgICAgIGFyZ3VtZW50cy5sZW5ndGggPiAxICYmXG4gICAgICAgICAgICAodHlwZW9mIHRhcmdldE9yRW50aXR5ID09PSBcImZ1bmN0aW9uXCIgfHxcbiAgICAgICAgICAgICAgICBJbnN0YW5jZUNoZWNrZXIuaXNFbnRpdHlTY2hlbWEodGFyZ2V0T3JFbnRpdHkpIHx8XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRhcmdldE9yRW50aXR5ID09PSBcInN0cmluZ1wiKVxuICAgICAgICAgICAgICAgID8gKHRhcmdldE9yRW50aXR5IGFzIEZ1bmN0aW9uIHwgc3RyaW5nKVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgIGNvbnN0IGVudGl0eTogVCB8IFRbXSA9IHRhcmdldFxuICAgICAgICAgICAgPyAobWF5YmVFbnRpdHlPck9wdGlvbnMgYXMgVCB8IFRbXSlcbiAgICAgICAgICAgIDogKHRhcmdldE9yRW50aXR5IGFzIFQgfCBUW10pXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0YXJnZXRcbiAgICAgICAgICAgID8gbWF5YmVPcHRpb25zXG4gICAgICAgICAgICA6IChtYXliZUVudGl0eU9yT3B0aW9ucyBhcyBTYXZlT3B0aW9ucylcblxuICAgICAgICBpZiAoSW5zdGFuY2VDaGVja2VyLmlzRW50aXR5U2NoZW1hKHRhcmdldCkpIHRhcmdldCA9IHRhcmdldC5vcHRpb25zLm5hbWVcblxuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVudGl0eSkgJiYgZW50aXR5Lmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZW50aXR5KVxuXG5cbiAgICAgICAgcmV0dXJuIG5ldyBFbnRpdHlQZXJzaXN0RXhlY3V0b3IoXG4gICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb24sXG4gICAgICAgICAgICB0aGlzLnF1ZXJ5UnVubmVyLFxuICAgICAgICAgICAgXCJzb2Z0LXJlbW92ZVwiLFxuICAgICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgKVxuICAgICAgICAgICAgLmV4ZWN1dGUoKVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4gZW50aXR5KVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlY292ZXJzIGFsbCBnaXZlbiBlbnRpdGllcy5cbiAgICAgKi9cbiAgICByZWNvdmVyPEVudGl0eT4oXG4gICAgICAgIGVudGl0aWVzOiBFbnRpdHlbXSxcbiAgICAgICAgb3B0aW9ucz86IFNhdmVPcHRpb25zLFxuICAgICk6IFByb21pc2U8RW50aXR5W10+XG5cbiAgICAvKipcbiAgICAgKiBSZWNvdmVycyBhIGdpdmVuIGVudGl0eS5cbiAgICAgKi9cbiAgICByZWNvdmVyPEVudGl0eT4oZW50aXR5OiBFbnRpdHksIG9wdGlvbnM/OiBTYXZlT3B0aW9ucyk6IFByb21pc2U8RW50aXR5PlxuXG4gICAgLyoqXG4gICAgICogUmVjb3ZlcnMgYWxsIGdpdmVuIGVudGl0aWVzLlxuICAgICAqL1xuICAgIHJlY292ZXI8RW50aXR5LCBUIGV4dGVuZHMgRGVlcFBhcnRpYWw8RW50aXR5Pj4oXG4gICAgICAgIHRhcmdldE9yRW50aXR5OiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgZW50aXRpZXM6IFRbXSxcbiAgICAgICAgb3B0aW9ucz86IFNhdmVPcHRpb25zLFxuICAgICk6IFByb21pc2U8VFtdPlxuXG4gICAgLyoqXG4gICAgICogUmVjb3ZlcnMgYSBnaXZlbiBlbnRpdHkuXG4gICAgICovXG4gICAgcmVjb3ZlcjxFbnRpdHksIFQgZXh0ZW5kcyBEZWVwUGFydGlhbDxFbnRpdHk+PihcbiAgICAgICAgdGFyZ2V0T3JFbnRpdHk6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBlbnRpdHk6IFQsXG4gICAgICAgIG9wdGlvbnM/OiBTYXZlT3B0aW9ucyxcbiAgICApOiBQcm9taXNlPFQ+XG5cbiAgICAvKipcbiAgICAgKiBSZWNvdmVycyBvbmUgb3IgbWFueSBnaXZlbiBlbnRpdGllcy5cbiAgICAgKi9cbiAgICByZWNvdmVyPEVudGl0eSBleHRlbmRzIE9iamVjdExpdGVyYWwsIFQgZXh0ZW5kcyBEZWVwUGFydGlhbDxFbnRpdHk+PihcbiAgICAgICAgdGFyZ2V0T3JFbnRpdHk6IChUIHwgVFtdKSB8IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBtYXliZUVudGl0eU9yT3B0aW9ucz86IFQgfCBUW10sXG4gICAgICAgIG1heWJlT3B0aW9ucz86IFNhdmVPcHRpb25zLFxuICAgICk6IFByb21pc2U8VCB8IFRbXT4ge1xuXG4gICAgICAgIGxldCB0YXJnZXQgPVxuICAgICAgICAgICAgYXJndW1lbnRzLmxlbmd0aCA+IDEgJiZcbiAgICAgICAgICAgICh0eXBlb2YgdGFyZ2V0T3JFbnRpdHkgPT09IFwiZnVuY3Rpb25cIiB8fFxuICAgICAgICAgICAgICAgIEluc3RhbmNlQ2hlY2tlci5pc0VudGl0eVNjaGVtYSh0YXJnZXRPckVudGl0eSkgfHxcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGFyZ2V0T3JFbnRpdHkgPT09IFwic3RyaW5nXCIpXG4gICAgICAgICAgICAgICAgPyAodGFyZ2V0T3JFbnRpdHkgYXMgRnVuY3Rpb24gfCBzdHJpbmcpXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgY29uc3QgZW50aXR5OiBUIHwgVFtdID0gdGFyZ2V0XG4gICAgICAgICAgICA/IChtYXliZUVudGl0eU9yT3B0aW9ucyBhcyBUIHwgVFtdKVxuICAgICAgICAgICAgOiAodGFyZ2V0T3JFbnRpdHkgYXMgVCB8IFRbXSlcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHRhcmdldFxuICAgICAgICAgICAgPyBtYXliZU9wdGlvbnNcbiAgICAgICAgICAgIDogKG1heWJlRW50aXR5T3JPcHRpb25zIGFzIFNhdmVPcHRpb25zKVxuXG4gICAgICAgIGlmIChJbnN0YW5jZUNoZWNrZXIuaXNFbnRpdHlTY2hlbWEodGFyZ2V0KSkgdGFyZ2V0ID0gdGFyZ2V0Lm9wdGlvbnMubmFtZVxuXG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZW50aXR5KSAmJiBlbnRpdHkubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShlbnRpdHkpXG5cblxuICAgICAgICByZXR1cm4gbmV3IEVudGl0eVBlcnNpc3RFeGVjdXRvcihcbiAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbixcbiAgICAgICAgICAgIHRoaXMucXVlcnlSdW5uZXIsXG4gICAgICAgICAgICBcInJlY292ZXJcIixcbiAgICAgICAgICAgIHRhcmdldCxcbiAgICAgICAgICAgIGVudGl0eSxcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgIClcbiAgICAgICAgICAgIC5leGVjdXRlKClcbiAgICAgICAgICAgIC50aGVuKCgpID0+IGVudGl0eSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbnNlcnRzIGEgZ2l2ZW4gZW50aXR5IGludG8gdGhlIGRhdGFiYXNlLlxuICAgICAqIFVubGlrZSBzYXZlIG1ldGhvZCBleGVjdXRlcyBhIHByaW1pdGl2ZSBvcGVyYXRpb24gd2l0aG91dCBjYXNjYWRlcywgcmVsYXRpb25zIGFuZCBvdGhlciBvcGVyYXRpb25zIGluY2x1ZGVkLlxuICAgICAqIEV4ZWN1dGVzIGZhc3QgYW5kIGVmZmljaWVudCBJTlNFUlQgcXVlcnkuXG4gICAgICogRG9lcyBub3QgY2hlY2sgaWYgZW50aXR5IGV4aXN0IGluIHRoZSBkYXRhYmFzZSwgc28gcXVlcnkgd2lsbCBmYWlsIGlmIGR1cGxpY2F0ZSBlbnRpdHkgaXMgYmVpbmcgaW5zZXJ0ZWQuXG4gICAgICogWW91IGNhbiBleGVjdXRlIGJ1bGsgaW5zZXJ0cyB1c2luZyB0aGlzIG1ldGhvZC5cbiAgICAgKi9cbiAgICBhc3luYyBpbnNlcnQ8RW50aXR5IGV4dGVuZHMgT2JqZWN0TGl0ZXJhbD4oXG4gICAgICAgIHRhcmdldDogRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgICAgIGVudGl0eTpcbiAgICAgICAgICAgIHwgUXVlcnlEZWVwUGFydGlhbEVudGl0eTxFbnRpdHk+XG4gICAgICAgICAgICB8IFF1ZXJ5RGVlcFBhcnRpYWxFbnRpdHk8RW50aXR5PltdLFxuICAgICk6IFByb21pc2U8SW5zZXJ0UmVzdWx0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVF1ZXJ5QnVpbGRlcigpXG4gICAgICAgICAgICAuaW5zZXJ0KClcbiAgICAgICAgICAgIC5pbnRvKHRhcmdldClcbiAgICAgICAgICAgIC52YWx1ZXMoZW50aXR5KVxuICAgICAgICAgICAgLmV4ZWN1dGUoKVxuICAgIH1cblxuICAgIGFzeW5jIHVwc2VydDxFbnRpdHkgZXh0ZW5kcyBPYmplY3RMaXRlcmFsPihcbiAgICAgICAgdGFyZ2V0OiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgZW50aXR5T3JFbnRpdGllczpcbiAgICAgICAgICAgIHwgUXVlcnlEZWVwUGFydGlhbEVudGl0eTxFbnRpdHk+XG4gICAgICAgICAgICB8IFF1ZXJ5RGVlcFBhcnRpYWxFbnRpdHk8RW50aXR5PltdLFxuICAgICAgICBjb25mbGljdFBhdGhzT3JPcHRpb25zOiBzdHJpbmdbXSB8IFVwc2VydE9wdGlvbnM8RW50aXR5PixcbiAgICApOiBQcm9taXNlPEluc2VydFJlc3VsdD4ge1xuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY29ubmVjdGlvbi5nZXRNZXRhZGF0YSh0YXJnZXQpXG5cbiAgICAgICAgbGV0IG9wdGlvbnM6IFVwc2VydE9wdGlvbnM8RW50aXR5PlxuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbmZsaWN0UGF0aHNPck9wdGlvbnMpKSB7XG4gICAgICAgICAgICBvcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIGNvbmZsaWN0UGF0aHM6IGNvbmZsaWN0UGF0aHNPck9wdGlvbnMsXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvcHRpb25zID0gY29uZmxpY3RQYXRoc09yT3B0aW9uc1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGVudGl0aWVzOiBRdWVyeURlZXBQYXJ0aWFsRW50aXR5PEVudGl0eT5bXVxuXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShlbnRpdHlPckVudGl0aWVzKSkge1xuICAgICAgICAgICAgZW50aXRpZXMgPSBbZW50aXR5T3JFbnRpdGllc11cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVudGl0aWVzID0gZW50aXR5T3JFbnRpdGllc1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29uZmxpY3RDb2x1bW5zID0gbWV0YWRhdGEubWFwUHJvcGVydHlQYXRoc1RvQ29sdW1ucyhcbiAgICAgICAgICAgIG9wdGlvbnMuY29uZmxpY3RQYXRocyxcbiAgICAgICAgKVxuXG4gICAgICAgIGNvbnN0IG92ZXJ3cml0ZUNvbHVtbnMgPSBtZXRhZGF0YS5jb2x1bW5zLmZpbHRlcihcbiAgICAgICAgICAgIChjb2wpID0+XG4gICAgICAgICAgICAgICAgIWNvbmZsaWN0Q29sdW1ucy5pbmNsdWRlcyhjb2wpICYmXG4gICAgICAgICAgICAgICAgZW50aXRpZXMuc29tZShcbiAgICAgICAgICAgICAgICAgICAgKGVudGl0eSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBjb2wuZ2V0RW50aXR5VmFsdWUoZW50aXR5KSAhPT0gXCJ1bmRlZmluZWRcIixcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUXVlcnlCdWlsZGVyKClcbiAgICAgICAgICAgIC5pbnNlcnQoKVxuICAgICAgICAgICAgLmludG8odGFyZ2V0KVxuICAgICAgICAgICAgLnZhbHVlcyhlbnRpdGllcylcbiAgICAgICAgICAgIC5vclVwZGF0ZShcbiAgICAgICAgICAgICAgICBbLi4uY29uZmxpY3RDb2x1bW5zLCAuLi5vdmVyd3JpdGVDb2x1bW5zXS5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChjb2wpID0+IGNvbC5kYXRhYmFzZU5hbWUsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjb25mbGljdENvbHVtbnMubWFwKChjb2wpID0+IGNvbC5kYXRhYmFzZU5hbWUpLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgc2tpcFVwZGF0ZUlmTm9WYWx1ZXNDaGFuZ2VkOlxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5za2lwVXBkYXRlSWZOb1ZhbHVlc0NoYW5nZWQsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5leGVjdXRlKClcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIGVudGl0eSBwYXJ0aWFsbHkuIEVudGl0eSBjYW4gYmUgZm91bmQgYnkgYSBnaXZlbiBjb25kaXRpb24ocykuXG4gICAgICogVW5saWtlIHNhdmUgbWV0aG9kIGV4ZWN1dGVzIGEgcHJpbWl0aXZlIG9wZXJhdGlvbiB3aXRob3V0IGNhc2NhZGVzLCByZWxhdGlvbnMgYW5kIG90aGVyIG9wZXJhdGlvbnMgaW5jbHVkZWQuXG4gICAgICogRXhlY3V0ZXMgZmFzdCBhbmQgZWZmaWNpZW50IFVQREFURSBxdWVyeS5cbiAgICAgKiBEb2VzIG5vdCBjaGVjayBpZiBlbnRpdHkgZXhpc3QgaW4gdGhlIGRhdGFiYXNlLlxuICAgICAqIENvbmRpdGlvbihzKSBjYW5ub3QgYmUgZW1wdHkuXG4gICAgICovXG4gICAgdXBkYXRlPEVudGl0eSBleHRlbmRzIE9iamVjdExpdGVyYWw+KFxuICAgICAgICB0YXJnZXQ6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBjcml0ZXJpYTpcbiAgICAgICAgICAgIHwgc3RyaW5nXG4gICAgICAgICAgICB8IHN0cmluZ1tdXG4gICAgICAgICAgICB8IG51bWJlclxuICAgICAgICAgICAgfCBudW1iZXJbXVxuICAgICAgICAgICAgfCBEYXRlXG4gICAgICAgICAgICB8IERhdGVbXVxuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgICAgICAgICAgIHwgYW55LFxuICAgICAgICBwYXJ0aWFsRW50aXR5OiBRdWVyeURlZXBQYXJ0aWFsRW50aXR5PEVudGl0eT4sXG4gICAgKTogUHJvbWlzZTxVcGRhdGVSZXN1bHQ+IHtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjcml0ZXJpYSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICBjcml0ZXJpYSA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgY3JpdGVyaWEgPT09IFwiXCIgfHxcbiAgICAgICAgICAgIChBcnJheS5pc0FycmF5KGNyaXRlcmlhKSAmJiBjcml0ZXJpYS5sZW5ndGggPT09IDApXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFxuICAgICAgICAgICAgICAgIG5ldyBUeXBlT1JNRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGBFbXB0eSBjcml0ZXJpYShzKSBhcmUgbm90IGFsbG93ZWQgZm9yIHRoZSB1cGRhdGUgbWV0aG9kLmAsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHR5cGVvZiBjcml0ZXJpYSA9PT0gXCJzdHJpbmdcIiB8fFxuICAgICAgICAgICAgdHlwZW9mIGNyaXRlcmlhID09PSBcIm51bWJlclwiIHx8XG4gICAgICAgICAgICBjcml0ZXJpYSBpbnN0YW5jZW9mIERhdGUgfHxcbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkoY3JpdGVyaWEpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUXVlcnlCdWlsZGVyKClcbiAgICAgICAgICAgICAgICAudXBkYXRlKHRhcmdldClcbiAgICAgICAgICAgICAgICAuc2V0KHBhcnRpYWxFbnRpdHkpXG4gICAgICAgICAgICAgICAgLndoZXJlSW5JZHMoY3JpdGVyaWEpXG4gICAgICAgICAgICAgICAgLmV4ZWN1dGUoKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUXVlcnlCdWlsZGVyKClcbiAgICAgICAgICAgICAgICAudXBkYXRlKHRhcmdldClcbiAgICAgICAgICAgICAgICAuc2V0KHBhcnRpYWxFbnRpdHkpXG4gICAgICAgICAgICAgICAgLndoZXJlKGNyaXRlcmlhKVxuICAgICAgICAgICAgICAgIC5leGVjdXRlKClcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlbGV0ZXMgZW50aXRpZXMgYnkgYSBnaXZlbiBjb25kaXRpb24ocykuXG4gICAgICogVW5saWtlIHNhdmUgbWV0aG9kIGV4ZWN1dGVzIGEgcHJpbWl0aXZlIG9wZXJhdGlvbiB3aXRob3V0IGNhc2NhZGVzLCByZWxhdGlvbnMgYW5kIG90aGVyIG9wZXJhdGlvbnMgaW5jbHVkZWQuXG4gICAgICogRXhlY3V0ZXMgZmFzdCBhbmQgZWZmaWNpZW50IERFTEVURSBxdWVyeS5cbiAgICAgKiBEb2VzIG5vdCBjaGVjayBpZiBlbnRpdHkgZXhpc3QgaW4gdGhlIGRhdGFiYXNlLlxuICAgICAqIENvbmRpdGlvbihzKSBjYW5ub3QgYmUgZW1wdHkuXG4gICAgICovXG4gICAgZGVsZXRlPEVudGl0eSBleHRlbmRzIE9iamVjdExpdGVyYWw+KFxuICAgICAgICB0YXJnZXRPckVudGl0eTogRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgICAgIGNyaXRlcmlhOlxuICAgICAgICAgICAgfCBzdHJpbmdcbiAgICAgICAgICAgIHwgc3RyaW5nW11cbiAgICAgICAgICAgIHwgbnVtYmVyXG4gICAgICAgICAgICB8IG51bWJlcltdXG4gICAgICAgICAgICB8IERhdGVcbiAgICAgICAgICAgIHwgRGF0ZVtdXG4gICAgICAgICAgICB8IE9iamVjdElEXG4gICAgICAgICAgICB8IE9iamVjdElEW11cbiAgICAgICAgICAgIHwgYW55LFxuICAgICk6IFByb21pc2U8RGVsZXRlUmVzdWx0PiB7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgY3JpdGVyaWEgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgY3JpdGVyaWEgPT09IG51bGwgfHxcbiAgICAgICAgICAgIGNyaXRlcmlhID09PSBcIlwiIHx8XG4gICAgICAgICAgICAoQXJyYXkuaXNBcnJheShjcml0ZXJpYSkgJiYgY3JpdGVyaWEubGVuZ3RoID09PSAwKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgICAgICAgICAgICBuZXcgVHlwZU9STUVycm9yKFxuICAgICAgICAgICAgICAgICAgICBgRW1wdHkgY3JpdGVyaWEocykgYXJlIG5vdCBhbGxvd2VkIGZvciB0aGUgZGVsZXRlIG1ldGhvZC5gLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0eXBlb2YgY3JpdGVyaWEgPT09IFwic3RyaW5nXCIgfHxcbiAgICAgICAgICAgIHR5cGVvZiBjcml0ZXJpYSA9PT0gXCJudW1iZXJcIiB8fFxuICAgICAgICAgICAgY3JpdGVyaWEgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgICAgICAgICBBcnJheS5pc0FycmF5KGNyaXRlcmlhKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVF1ZXJ5QnVpbGRlcigpXG4gICAgICAgICAgICAgICAgLmRlbGV0ZSgpXG4gICAgICAgICAgICAgICAgLmZyb20odGFyZ2V0T3JFbnRpdHkpXG4gICAgICAgICAgICAgICAgLndoZXJlSW5JZHMoY3JpdGVyaWEpXG4gICAgICAgICAgICAgICAgLmV4ZWN1dGUoKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUXVlcnlCdWlsZGVyKClcbiAgICAgICAgICAgICAgICAuZGVsZXRlKClcbiAgICAgICAgICAgICAgICAuZnJvbSh0YXJnZXRPckVudGl0eSlcbiAgICAgICAgICAgICAgICAud2hlcmUoY3JpdGVyaWEpXG4gICAgICAgICAgICAgICAgLmV4ZWN1dGUoKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVjb3JkcyB0aGUgZGVsZXRlIGRhdGUgb2YgZW50aXRpZXMgYnkgYSBnaXZlbiBjb25kaXRpb24ocykuXG4gICAgICogVW5saWtlIHNhdmUgbWV0aG9kIGV4ZWN1dGVzIGEgcHJpbWl0aXZlIG9wZXJhdGlvbiB3aXRob3V0IGNhc2NhZGVzLCByZWxhdGlvbnMgYW5kIG90aGVyIG9wZXJhdGlvbnMgaW5jbHVkZWQuXG4gICAgICogRXhlY3V0ZXMgZmFzdCBhbmQgZWZmaWNpZW50IERFTEVURSBxdWVyeS5cbiAgICAgKiBEb2VzIG5vdCBjaGVjayBpZiBlbnRpdHkgZXhpc3QgaW4gdGhlIGRhdGFiYXNlLlxuICAgICAqIENvbmRpdGlvbihzKSBjYW5ub3QgYmUgZW1wdHkuXG4gICAgICovXG4gICAgc29mdERlbGV0ZTxFbnRpdHkgZXh0ZW5kcyBPYmplY3RMaXRlcmFsPihcbiAgICAgICAgdGFyZ2V0T3JFbnRpdHk6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBjcml0ZXJpYTpcbiAgICAgICAgICAgIHwgc3RyaW5nXG4gICAgICAgICAgICB8IHN0cmluZ1tdXG4gICAgICAgICAgICB8IG51bWJlclxuICAgICAgICAgICAgfCBudW1iZXJbXVxuICAgICAgICAgICAgfCBEYXRlXG4gICAgICAgICAgICB8IERhdGVbXVxuICAgICAgICAgICAgfCBPYmplY3RJRFxuICAgICAgICAgICAgfCBPYmplY3RJRFtdXG4gICAgICAgICAgICB8IGFueSxcbiAgICApOiBQcm9taXNlPFVwZGF0ZVJlc3VsdD4ge1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGNyaXRlcmlhID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIGNyaXRlcmlhID09PSBudWxsIHx8XG4gICAgICAgICAgICBjcml0ZXJpYSA9PT0gXCJcIiB8fFxuICAgICAgICAgICAgKEFycmF5LmlzQXJyYXkoY3JpdGVyaWEpICYmIGNyaXRlcmlhLmxlbmd0aCA9PT0gMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoXG4gICAgICAgICAgICAgICAgbmV3IFR5cGVPUk1FcnJvcihcbiAgICAgICAgICAgICAgICAgICAgYEVtcHR5IGNyaXRlcmlhKHMpIGFyZSBub3QgYWxsb3dlZCBmb3IgdGhlIGRlbGV0ZSBtZXRob2QuYCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdHlwZW9mIGNyaXRlcmlhID09PSBcInN0cmluZ1wiIHx8XG4gICAgICAgICAgICB0eXBlb2YgY3JpdGVyaWEgPT09IFwibnVtYmVyXCIgfHxcbiAgICAgICAgICAgIGNyaXRlcmlhIGluc3RhbmNlb2YgRGF0ZSB8fFxuICAgICAgICAgICAgQXJyYXkuaXNBcnJheShjcml0ZXJpYSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVRdWVyeUJ1aWxkZXIoKVxuICAgICAgICAgICAgICAgIC5zb2Z0RGVsZXRlKClcbiAgICAgICAgICAgICAgICAuZnJvbSh0YXJnZXRPckVudGl0eSlcbiAgICAgICAgICAgICAgICAud2hlcmVJbklkcyhjcml0ZXJpYSlcbiAgICAgICAgICAgICAgICAuZXhlY3V0ZSgpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVRdWVyeUJ1aWxkZXIoKVxuICAgICAgICAgICAgICAgIC5zb2Z0RGVsZXRlKClcbiAgICAgICAgICAgICAgICAuZnJvbSh0YXJnZXRPckVudGl0eSlcbiAgICAgICAgICAgICAgICAud2hlcmUoY3JpdGVyaWEpXG4gICAgICAgICAgICAgICAgLmV4ZWN1dGUoKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVzdG9yZXMgZW50aXRpZXMgYnkgYSBnaXZlbiBjb25kaXRpb24ocykuXG4gICAgICogVW5saWtlIHNhdmUgbWV0aG9kIGV4ZWN1dGVzIGEgcHJpbWl0aXZlIG9wZXJhdGlvbiB3aXRob3V0IGNhc2NhZGVzLCByZWxhdGlvbnMgYW5kIG90aGVyIG9wZXJhdGlvbnMgaW5jbHVkZWQuXG4gICAgICogRXhlY3V0ZXMgZmFzdCBhbmQgZWZmaWNpZW50IERFTEVURSBxdWVyeS5cbiAgICAgKiBEb2VzIG5vdCBjaGVjayBpZiBlbnRpdHkgZXhpc3QgaW4gdGhlIGRhdGFiYXNlLlxuICAgICAqIENvbmRpdGlvbihzKSBjYW5ub3QgYmUgZW1wdHkuXG4gICAgICovXG4gICAgcmVzdG9yZTxFbnRpdHkgZXh0ZW5kcyBPYmplY3RMaXRlcmFsPihcbiAgICAgICAgdGFyZ2V0T3JFbnRpdHk6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBjcml0ZXJpYTpcbiAgICAgICAgICAgIHwgc3RyaW5nXG4gICAgICAgICAgICB8IHN0cmluZ1tdXG4gICAgICAgICAgICB8IG51bWJlclxuICAgICAgICAgICAgfCBudW1iZXJbXVxuICAgICAgICAgICAgfCBEYXRlXG4gICAgICAgICAgICB8IERhdGVbXVxuICAgICAgICAgICAgfCBPYmplY3RJRFxuICAgICAgICAgICAgfCBPYmplY3RJRFtdXG4gICAgICAgICAgICB8IGFueSxcbiAgICApOiBQcm9taXNlPFVwZGF0ZVJlc3VsdD4ge1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGNyaXRlcmlhID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIGNyaXRlcmlhID09PSBudWxsIHx8XG4gICAgICAgICAgICBjcml0ZXJpYSA9PT0gXCJcIiB8fFxuICAgICAgICAgICAgKEFycmF5LmlzQXJyYXkoY3JpdGVyaWEpICYmIGNyaXRlcmlhLmxlbmd0aCA9PT0gMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoXG4gICAgICAgICAgICAgICAgbmV3IFR5cGVPUk1FcnJvcihcbiAgICAgICAgICAgICAgICAgICAgYEVtcHR5IGNyaXRlcmlhKHMpIGFyZSBub3QgYWxsb3dlZCBmb3IgdGhlIGRlbGV0ZSBtZXRob2QuYCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdHlwZW9mIGNyaXRlcmlhID09PSBcInN0cmluZ1wiIHx8XG4gICAgICAgICAgICB0eXBlb2YgY3JpdGVyaWEgPT09IFwibnVtYmVyXCIgfHxcbiAgICAgICAgICAgIGNyaXRlcmlhIGluc3RhbmNlb2YgRGF0ZSB8fFxuICAgICAgICAgICAgQXJyYXkuaXNBcnJheShjcml0ZXJpYSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVRdWVyeUJ1aWxkZXIoKVxuICAgICAgICAgICAgICAgIC5yZXN0b3JlKClcbiAgICAgICAgICAgICAgICAuZnJvbSh0YXJnZXRPckVudGl0eSlcbiAgICAgICAgICAgICAgICAud2hlcmVJbklkcyhjcml0ZXJpYSlcbiAgICAgICAgICAgICAgICAuZXhlY3V0ZSgpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVRdWVyeUJ1aWxkZXIoKVxuICAgICAgICAgICAgICAgIC5yZXN0b3JlKClcbiAgICAgICAgICAgICAgICAuZnJvbSh0YXJnZXRPckVudGl0eSlcbiAgICAgICAgICAgICAgICAud2hlcmUoY3JpdGVyaWEpXG4gICAgICAgICAgICAgICAgLmV4ZWN1dGUoKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ291bnRzIGVudGl0aWVzIHRoYXQgbWF0Y2ggZ2l2ZW4gb3B0aW9ucy5cbiAgICAgKiBVc2VmdWwgZm9yIHBhZ2luYXRpb24uXG4gICAgICovXG4gICAgY291bnQ8RW50aXR5IGV4dGVuZHMgT2JqZWN0TGl0ZXJhbD4oXG4gICAgICAgIGVudGl0eUNsYXNzOiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgb3B0aW9ucz86IEZpbmRNYW55T3B0aW9uczxFbnRpdHk+LFxuICAgICk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jb25uZWN0aW9uLmdldE1ldGFkYXRhKGVudGl0eUNsYXNzKVxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVRdWVyeUJ1aWxkZXIoXG4gICAgICAgICAgICBlbnRpdHlDbGFzcyxcbiAgICAgICAgICAgIEZpbmRPcHRpb25zVXRpbHMuZXh0cmFjdEZpbmRNYW55T3B0aW9uc0FsaWFzKG9wdGlvbnMpIHx8XG4gICAgICAgICAgICAgICAgbWV0YWRhdGEubmFtZSxcbiAgICAgICAgKVxuICAgICAgICAgICAgLnNldEZpbmRPcHRpb25zKG9wdGlvbnMgfHwge30pXG4gICAgICAgICAgICAuZ2V0Q291bnQoKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvdW50cyBlbnRpdGllcyB0aGF0IG1hdGNoIGdpdmVuIGNvbmRpdGlvbnMuXG4gICAgICogVXNlZnVsIGZvciBwYWdpbmF0aW9uLlxuICAgICAqL1xuICAgIGNvdW50Qnk8RW50aXR5IGV4dGVuZHMgT2JqZWN0TGl0ZXJhbD4oXG4gICAgICAgIGVudGl0eUNsYXNzOiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgd2hlcmU6IEZpbmRPcHRpb25zV2hlcmU8RW50aXR5PiB8IEZpbmRPcHRpb25zV2hlcmU8RW50aXR5PltdLFxuICAgICk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jb25uZWN0aW9uLmdldE1ldGFkYXRhKGVudGl0eUNsYXNzKVxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVRdWVyeUJ1aWxkZXIoZW50aXR5Q2xhc3MsIG1ldGFkYXRhLm5hbWUpXG4gICAgICAgICAgICAuc2V0RmluZE9wdGlvbnMoeyB3aGVyZSB9KVxuICAgICAgICAgICAgLmdldENvdW50KClcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaW5kcyBlbnRpdGllcyB0aGF0IG1hdGNoIGdpdmVuIGZpbmQgb3B0aW9ucy5cbiAgICAgKi9cbiAgICBhc3luYyBmaW5kPEVudGl0eSBleHRlbmRzIE9iamVjdExpdGVyYWw+KFxuICAgICAgICBlbnRpdHlDbGFzczogRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgICAgIG9wdGlvbnM/OiBGaW5kTWFueU9wdGlvbnM8RW50aXR5PixcbiAgICApOiBQcm9taXNlPEVudGl0eVtdPiB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jb25uZWN0aW9uLmdldE1ldGFkYXRhKGVudGl0eUNsYXNzKVxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVRdWVyeUJ1aWxkZXI8RW50aXR5PihcbiAgICAgICAgICAgIGVudGl0eUNsYXNzIGFzIGFueSxcbiAgICAgICAgICAgIEZpbmRPcHRpb25zVXRpbHMuZXh0cmFjdEZpbmRNYW55T3B0aW9uc0FsaWFzKG9wdGlvbnMpIHx8XG4gICAgICAgICAgICAgICAgbWV0YWRhdGEubmFtZSxcbiAgICAgICAgKVxuICAgICAgICAgICAgLnNldEZpbmRPcHRpb25zKG9wdGlvbnMgfHwge30pXG4gICAgICAgICAgICAuZ2V0TWFueSgpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgZW50aXRpZXMgdGhhdCBtYXRjaCBnaXZlbiBmaW5kIG9wdGlvbnMuXG4gICAgICovXG4gICAgYXN5bmMgZmluZEJ5PEVudGl0eSBleHRlbmRzIE9iamVjdExpdGVyYWw+KFxuICAgICAgICBlbnRpdHlDbGFzczogRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgICAgIHdoZXJlOiBGaW5kT3B0aW9uc1doZXJlPEVudGl0eT4gfCBGaW5kT3B0aW9uc1doZXJlPEVudGl0eT5bXSxcbiAgICApOiBQcm9taXNlPEVudGl0eVtdPiB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jb25uZWN0aW9uLmdldE1ldGFkYXRhKGVudGl0eUNsYXNzKVxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVRdWVyeUJ1aWxkZXI8RW50aXR5PihcbiAgICAgICAgICAgIGVudGl0eUNsYXNzIGFzIGFueSxcbiAgICAgICAgICAgIG1ldGFkYXRhLm5hbWUsXG4gICAgICAgIClcbiAgICAgICAgICAgIC5zZXRGaW5kT3B0aW9ucyh7IHdoZXJlOiB3aGVyZSB9KVxuICAgICAgICAgICAgLmdldE1hbnkoKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbmRzIGVudGl0aWVzIHRoYXQgbWF0Y2ggZ2l2ZW4gZmluZCBvcHRpb25zLlxuICAgICAqIEFsc28gY291bnRzIGFsbCBlbnRpdGllcyB0aGF0IG1hdGNoIGdpdmVuIGNvbmRpdGlvbnMsXG4gICAgICogYnV0IGlnbm9yZXMgcGFnaW5hdGlvbiBzZXR0aW5ncyAoZnJvbSBhbmQgdGFrZSBvcHRpb25zKS5cbiAgICAgKi9cbiAgICBmaW5kQW5kQ291bnQ8RW50aXR5IGV4dGVuZHMgT2JqZWN0TGl0ZXJhbD4oXG4gICAgICAgIGVudGl0eUNsYXNzOiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgb3B0aW9ucz86IEZpbmRNYW55T3B0aW9uczxFbnRpdHk+LFxuICAgICk6IFByb21pc2U8W0VudGl0eVtdLCBudW1iZXJdPiB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jb25uZWN0aW9uLmdldE1ldGFkYXRhKGVudGl0eUNsYXNzKVxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVRdWVyeUJ1aWxkZXI8RW50aXR5PihcbiAgICAgICAgICAgIGVudGl0eUNsYXNzIGFzIGFueSxcbiAgICAgICAgICAgIEZpbmRPcHRpb25zVXRpbHMuZXh0cmFjdEZpbmRNYW55T3B0aW9uc0FsaWFzKG9wdGlvbnMpIHx8XG4gICAgICAgICAgICAgICAgbWV0YWRhdGEubmFtZSxcbiAgICAgICAgKVxuICAgICAgICAgICAgLnNldEZpbmRPcHRpb25zKG9wdGlvbnMgfHwge30pXG4gICAgICAgICAgICAuZ2V0TWFueUFuZENvdW50KClcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaW5kcyBlbnRpdGllcyB0aGF0IG1hdGNoIGdpdmVuIFdIRVJFIGNvbmRpdGlvbnMuXG4gICAgICogQWxzbyBjb3VudHMgYWxsIGVudGl0aWVzIHRoYXQgbWF0Y2ggZ2l2ZW4gY29uZGl0aW9ucyxcbiAgICAgKiBidXQgaWdub3JlcyBwYWdpbmF0aW9uIHNldHRpbmdzIChmcm9tIGFuZCB0YWtlIG9wdGlvbnMpLlxuICAgICAqL1xuICAgIGZpbmRBbmRDb3VudEJ5PEVudGl0eSBleHRlbmRzIE9iamVjdExpdGVyYWw+KFxuICAgICAgICBlbnRpdHlDbGFzczogRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgICAgIHdoZXJlOiBGaW5kT3B0aW9uc1doZXJlPEVudGl0eT4gfCBGaW5kT3B0aW9uc1doZXJlPEVudGl0eT5bXSxcbiAgICApOiBQcm9taXNlPFtFbnRpdHlbXSwgbnVtYmVyXT4ge1xuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY29ubmVjdGlvbi5nZXRNZXRhZGF0YShlbnRpdHlDbGFzcylcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUXVlcnlCdWlsZGVyPEVudGl0eT4oXG4gICAgICAgICAgICBlbnRpdHlDbGFzcyBhcyBhbnksXG4gICAgICAgICAgICBtZXRhZGF0YS5uYW1lLFxuICAgICAgICApXG4gICAgICAgICAgICAuc2V0RmluZE9wdGlvbnMoeyB3aGVyZSB9KVxuICAgICAgICAgICAgLmdldE1hbnlBbmRDb3VudCgpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgZW50aXRpZXMgd2l0aCBpZHMuXG4gICAgICogT3B0aW9uYWxseSBmaW5kIG9wdGlvbnMgb3IgY29uZGl0aW9ucyBjYW4gYmUgYXBwbGllZC5cbiAgICAgKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBgZmluZEJ5YCBtZXRob2QgaW5zdGVhZCBpbiBjb25qdW5jdGlvbiB3aXRoIGBJbmAgb3BlcmF0b3IsIGZvciBleGFtcGxlOlxuICAgICAqXG4gICAgICogLmZpbmRCeSh7XG4gICAgICogICAgIGlkOiBJbihbMSwgMiwgM10pXG4gICAgICogfSlcbiAgICAgKi9cbiAgICBhc3luYyBmaW5kQnlJZHM8RW50aXR5IGV4dGVuZHMgT2JqZWN0TGl0ZXJhbD4oXG4gICAgICAgIGVudGl0eUNsYXNzOiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgaWRzOiBhbnlbXSxcbiAgICApOiBQcm9taXNlPEVudGl0eVtdPiB7XG5cbiAgICAgICAgaWYgKCFpZHMubGVuZ3RoKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKVxuXG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jb25uZWN0aW9uLmdldE1ldGFkYXRhKGVudGl0eUNsYXNzKVxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVRdWVyeUJ1aWxkZXI8RW50aXR5PihcbiAgICAgICAgICAgIGVudGl0eUNsYXNzIGFzIGFueSxcbiAgICAgICAgICAgIG1ldGFkYXRhLm5hbWUsXG4gICAgICAgIClcbiAgICAgICAgICAgIC5hbmRXaGVyZUluSWRzKGlkcylcbiAgICAgICAgICAgIC5nZXRNYW55KClcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaW5kcyBmaXJzdCBlbnRpdHkgYnkgYSBnaXZlbiBmaW5kIG9wdGlvbnMuXG4gICAgICogSWYgZW50aXR5IHdhcyBub3QgZm91bmQgaW4gdGhlIGRhdGFiYXNlIC0gcmV0dXJucyBudWxsLlxuICAgICAqL1xuICAgIGFzeW5jIGZpbmRPbmU8RW50aXR5IGV4dGVuZHMgT2JqZWN0TGl0ZXJhbD4oXG4gICAgICAgIGVudGl0eUNsYXNzOiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgb3B0aW9uczogRmluZE9uZU9wdGlvbnM8RW50aXR5PixcbiAgICApOiBQcm9taXNlPEVudGl0eSB8IG51bGw+IHtcbiAgICAgICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmNvbm5lY3Rpb24uZ2V0TWV0YWRhdGEoZW50aXR5Q2xhc3MpXG5cblxuICAgICAgICBsZXQgYWxpYXM6IHN0cmluZyA9IG1ldGFkYXRhLm5hbWVcbiAgICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5qb2luKSB7XG4gICAgICAgICAgICBhbGlhcyA9IG9wdGlvbnMuam9pbi5hbGlhc1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFvcHRpb25zLndoZXJlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgYFlvdSBtdXN0IHByb3ZpZGUgc2VsZWN0aW9uIGNvbmRpdGlvbnMgaW4gb3JkZXIgdG8gZmluZCBhIHNpbmdsZSByb3cuYCxcbiAgICAgICAgICAgIClcbiAgICAgICAgfVxuXG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUXVlcnlCdWlsZGVyPEVudGl0eT4oZW50aXR5Q2xhc3MsIGFsaWFzKVxuICAgICAgICAgICAgLnNldEZpbmRPcHRpb25zKHtcbiAgICAgICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgICAgIHRha2U6IDEsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmdldE9uZSgpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgZmlyc3QgZW50aXR5IHRoYXQgbWF0Y2hlcyBnaXZlbiB3aGVyZSBjb25kaXRpb24uXG4gICAgICogSWYgZW50aXR5IHdhcyBub3QgZm91bmQgaW4gdGhlIGRhdGFiYXNlIC0gcmV0dXJucyBudWxsLlxuICAgICAqL1xuICAgIGFzeW5jIGZpbmRPbmVCeTxFbnRpdHkgZXh0ZW5kcyBPYmplY3RMaXRlcmFsPihcbiAgICAgICAgZW50aXR5Q2xhc3M6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICB3aGVyZTogRmluZE9wdGlvbnNXaGVyZTxFbnRpdHk+IHwgRmluZE9wdGlvbnNXaGVyZTxFbnRpdHk+W10sXG4gICAgKTogUHJvbWlzZTxFbnRpdHkgfCBudWxsPiB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jb25uZWN0aW9uLmdldE1ldGFkYXRhKGVudGl0eUNsYXNzKVxuXG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUXVlcnlCdWlsZGVyPEVudGl0eT4oZW50aXR5Q2xhc3MsIG1ldGFkYXRhLm5hbWUpXG4gICAgICAgICAgICAuc2V0RmluZE9wdGlvbnMoe1xuICAgICAgICAgICAgICAgIHdoZXJlLFxuICAgICAgICAgICAgICAgIHRha2U6IDEsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmdldE9uZSgpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgZmlyc3QgZW50aXR5IHRoYXQgbWF0Y2hlcyBnaXZlbiBpZC5cbiAgICAgKiBJZiBlbnRpdHkgd2FzIG5vdCBmb3VuZCBpbiB0aGUgZGF0YWJhc2UgLSByZXR1cm5zIG51bGwuXG4gICAgICpcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgYGZpbmRPbmVCeWAgbWV0aG9kIGluc3RlYWQgaW4gY29uanVuY3Rpb24gd2l0aCBgSW5gIG9wZXJhdG9yLCBmb3IgZXhhbXBsZTpcbiAgICAgKlxuICAgICAqIC5maW5kT25lQnkoe1xuICAgICAqICAgICBpZDogMSAvLyB3aGVyZSBcImlkXCIgaXMgeW91ciBwcmltYXJ5IGNvbHVtbiBuYW1lXG4gICAgICogfSlcbiAgICAgKi9cbiAgICBhc3luYyBmaW5kT25lQnlJZDxFbnRpdHkgZXh0ZW5kcyBPYmplY3RMaXRlcmFsPihcbiAgICAgICAgZW50aXR5Q2xhc3M6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBpZDogbnVtYmVyIHwgc3RyaW5nIHwgRGF0ZSB8IE9iamVjdElELFxuICAgICk6IFByb21pc2U8RW50aXR5IHwgbnVsbD4ge1xuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY29ubmVjdGlvbi5nZXRNZXRhZGF0YShlbnRpdHlDbGFzcylcblxuXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVF1ZXJ5QnVpbGRlcjxFbnRpdHk+KGVudGl0eUNsYXNzLCBtZXRhZGF0YS5uYW1lKVxuICAgICAgICAgICAgLnNldEZpbmRPcHRpb25zKHtcbiAgICAgICAgICAgICAgICB0YWtlOiAxLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC53aGVyZUluSWRzKG1ldGFkYXRhLmVuc3VyZUVudGl0eUlkTWFwKGlkKSlcbiAgICAgICAgICAgIC5nZXRPbmUoKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbmRzIGZpcnN0IGVudGl0eSBieSBhIGdpdmVuIGZpbmQgb3B0aW9ucy5cbiAgICAgKiBJZiBlbnRpdHkgd2FzIG5vdCBmb3VuZCBpbiB0aGUgZGF0YWJhc2UgLSByZWplY3RzIHdpdGggZXJyb3IuXG4gICAgICovXG4gICAgYXN5bmMgZmluZE9uZU9yRmFpbDxFbnRpdHkgZXh0ZW5kcyBPYmplY3RMaXRlcmFsPihcbiAgICAgICAgZW50aXR5Q2xhc3M6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICBvcHRpb25zOiBGaW5kT25lT3B0aW9uczxFbnRpdHk+LFxuICAgICk6IFByb21pc2U8RW50aXR5PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmRPbmU8RW50aXR5PihlbnRpdHlDbGFzcyBhcyBhbnksIG9wdGlvbnMpLnRoZW4oXG4gICAgICAgICAgICAodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEVudGl0eU5vdEZvdW5kRXJyb3IoZW50aXR5Q2xhc3MsIG9wdGlvbnMpLFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUpXG4gICAgICAgICAgICB9LFxuICAgICAgICApXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgZmlyc3QgZW50aXR5IHRoYXQgbWF0Y2hlcyBnaXZlbiB3aGVyZSBjb25kaXRpb24uXG4gICAgICogSWYgZW50aXR5IHdhcyBub3QgZm91bmQgaW4gdGhlIGRhdGFiYXNlIC0gcmVqZWN0cyB3aXRoIGVycm9yLlxuICAgICAqL1xuICAgIGFzeW5jIGZpbmRPbmVCeU9yRmFpbDxFbnRpdHkgZXh0ZW5kcyBPYmplY3RMaXRlcmFsPihcbiAgICAgICAgZW50aXR5Q2xhc3M6IEVudGl0eVRhcmdldDxFbnRpdHk+LFxuICAgICAgICB3aGVyZTogRmluZE9wdGlvbnNXaGVyZTxFbnRpdHk+IHwgRmluZE9wdGlvbnNXaGVyZTxFbnRpdHk+W10sXG4gICAgKTogUHJvbWlzZTxFbnRpdHk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZE9uZUJ5PEVudGl0eT4oZW50aXR5Q2xhc3MgYXMgYW55LCB3aGVyZSkudGhlbihcbiAgICAgICAgICAgICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgRW50aXR5Tm90Rm91bmRFcnJvcihlbnRpdHlDbGFzcywgd2hlcmUpLFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUpXG4gICAgICAgICAgICB9LFxuICAgICAgICApXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xlYXJzIGFsbCB0aGUgZGF0YSBmcm9tIHRoZSBnaXZlbiB0YWJsZSAodHJ1bmNhdGVzL2Ryb3BzIGl0KS5cbiAgICAgKlxuICAgICAqIE5vdGU6IHRoaXMgbWV0aG9kIHVzZXMgVFJVTkNBVEUgYW5kIG1heSBub3Qgd29yayBhcyB5b3UgZXhwZWN0IGluIHRyYW5zYWN0aW9ucyBvbiBzb21lIHBsYXRmb3Jtcy5cbiAgICAgKiBAc2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS81OTcyNzM4LzkyNTE1MVxuICAgICAqL1xuICAgIGFzeW5jIGNsZWFyPEVudGl0eT4oZW50aXR5Q2xhc3M6IEVudGl0eVRhcmdldDxFbnRpdHk+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jb25uZWN0aW9uLmdldE1ldGFkYXRhKGVudGl0eUNsYXNzKVxuICAgICAgICBjb25zdCBxdWVyeVJ1bm5lciA9XG4gICAgICAgICAgICB0aGlzLnF1ZXJ5UnVubmVyIHx8IHRoaXMuY29ubmVjdGlvbi5jcmVhdGVRdWVyeVJ1bm5lcigpXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgcXVlcnlSdW5uZXIuY2xlYXJUYWJsZShtZXRhZGF0YS50YWJsZVBhdGgpIC8vIGF3YWl0IGlzIG5lZWRlZCBoZXJlIGJlY2F1c2Ugd2UgYXJlIHVzaW5nIGZpbmFsbHlcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5xdWVyeVJ1bm5lcikgYXdhaXQgcXVlcnlSdW5uZXIucmVsZWFzZSgpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbmNyZW1lbnRzIHNvbWUgY29sdW1uIGJ5IHByb3ZpZGVkIHZhbHVlIG9mIHRoZSBlbnRpdGllcyBtYXRjaGVkIGdpdmVuIGNvbmRpdGlvbnMuXG4gICAgICovXG4gICAgYXN5bmMgaW5jcmVtZW50PEVudGl0eSBleHRlbmRzIE9iamVjdExpdGVyYWw+KFxuICAgICAgICBlbnRpdHlDbGFzczogRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgICAgIGNvbmRpdGlvbnM6IGFueSxcbiAgICAgICAgcHJvcGVydHlQYXRoOiBzdHJpbmcsXG4gICAgICAgIHZhbHVlOiBudW1iZXIgfCBzdHJpbmcsXG4gICAgKTogUHJvbWlzZTxVcGRhdGVSZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmNvbm5lY3Rpb24uZ2V0TWV0YWRhdGEoZW50aXR5Q2xhc3MpXG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IG1ldGFkYXRhLmZpbmRDb2x1bW5XaXRoUHJvcGVydHlQYXRoKHByb3BlcnR5UGF0aClcbiAgICAgICAgaWYgKCFjb2x1bW4pXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZU9STUVycm9yKFxuICAgICAgICAgICAgICAgIGBDb2x1bW4gJHtwcm9wZXJ0eVBhdGh9IHdhcyBub3QgZm91bmQgaW4gJHttZXRhZGF0YS50YXJnZXROYW1lfSBlbnRpdHkuYCxcbiAgICAgICAgICAgIClcblxuICAgICAgICBpZiAoaXNOYU4oTnVtYmVyKHZhbHVlKSkpXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZU9STUVycm9yKGBWYWx1ZSBcIiR7dmFsdWV9XCIgaXMgbm90IGEgbnVtYmVyLmApXG5cblxuICAgICAgICBjb25zdCB2YWx1ZXM6IFF1ZXJ5RGVlcFBhcnRpYWxFbnRpdHk8RW50aXR5PiA9IHByb3BlcnR5UGF0aFxuICAgICAgICAgICAgLnNwbGl0KFwiLlwiKVxuICAgICAgICAgICAgLnJlZHVjZVJpZ2h0KFxuICAgICAgICAgICAgICAgICh2YWx1ZSwga2V5KSA9PiAoeyBba2V5XTogdmFsdWUgfSBhcyBhbnkpLFxuICAgICAgICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbi5kcml2ZXIuZXNjYXBlKGNvbHVtbi5kYXRhYmFzZU5hbWUpICtcbiAgICAgICAgICAgICAgICAgICAgXCIgKyBcIiArXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgKVxuXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVF1ZXJ5QnVpbGRlcjxFbnRpdHk+KGVudGl0eUNsYXNzIGFzIGFueSwgXCJlbnRpdHlcIilcbiAgICAgICAgICAgIC51cGRhdGUoZW50aXR5Q2xhc3MpXG4gICAgICAgICAgICAuc2V0KHZhbHVlcylcbiAgICAgICAgICAgIC53aGVyZShjb25kaXRpb25zKVxuICAgICAgICAgICAgLmV4ZWN1dGUoKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlY3JlbWVudHMgc29tZSBjb2x1bW4gYnkgcHJvdmlkZWQgdmFsdWUgb2YgdGhlIGVudGl0aWVzIG1hdGNoZWQgZ2l2ZW4gY29uZGl0aW9ucy5cbiAgICAgKi9cbiAgICBhc3luYyBkZWNyZW1lbnQ8RW50aXR5IGV4dGVuZHMgT2JqZWN0TGl0ZXJhbD4oXG4gICAgICAgIGVudGl0eUNsYXNzOiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICAgICAgY29uZGl0aW9uczogYW55LFxuICAgICAgICBwcm9wZXJ0eVBhdGg6IHN0cmluZyxcbiAgICAgICAgdmFsdWU6IG51bWJlciB8IHN0cmluZyxcbiAgICApOiBQcm9taXNlPFVwZGF0ZVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY29ubmVjdGlvbi5nZXRNZXRhZGF0YShlbnRpdHlDbGFzcylcbiAgICAgICAgY29uc3QgY29sdW1uID0gbWV0YWRhdGEuZmluZENvbHVtbldpdGhQcm9wZXJ0eVBhdGgocHJvcGVydHlQYXRoKVxuICAgICAgICBpZiAoIWNvbHVtbilcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlT1JNRXJyb3IoXG4gICAgICAgICAgICAgICAgYENvbHVtbiAke3Byb3BlcnR5UGF0aH0gd2FzIG5vdCBmb3VuZCBpbiAke21ldGFkYXRhLnRhcmdldE5hbWV9IGVudGl0eS5gLFxuICAgICAgICAgICAgKVxuXG4gICAgICAgIGlmIChpc05hTihOdW1iZXIodmFsdWUpKSlcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlT1JNRXJyb3IoYFZhbHVlIFwiJHt2YWx1ZX1cIiBpcyBub3QgYSBudW1iZXIuYClcblxuXG4gICAgICAgIGNvbnN0IHZhbHVlczogUXVlcnlEZWVwUGFydGlhbEVudGl0eTxFbnRpdHk+ID0gcHJvcGVydHlQYXRoXG4gICAgICAgICAgICAuc3BsaXQoXCIuXCIpXG4gICAgICAgICAgICAucmVkdWNlUmlnaHQoXG4gICAgICAgICAgICAgICAgKHZhbHVlLCBrZXkpID0+ICh7IFtrZXldOiB2YWx1ZSB9IGFzIGFueSksXG4gICAgICAgICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uLmRyaXZlci5lc2NhcGUoY29sdW1uLmRhdGFiYXNlTmFtZSkgK1xuICAgICAgICAgICAgICAgICAgICBcIiAtIFwiICtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUXVlcnlCdWlsZGVyPEVudGl0eT4oZW50aXR5Q2xhc3MgYXMgYW55LCBcImVudGl0eVwiKVxuICAgICAgICAgICAgLnVwZGF0ZShlbnRpdHlDbGFzcylcbiAgICAgICAgICAgIC5zZXQodmFsdWVzKVxuICAgICAgICAgICAgLndoZXJlKGNvbmRpdGlvbnMpXG4gICAgICAgICAgICAuZXhlY3V0ZSgpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyByZXBvc2l0b3J5IGZvciB0aGUgZ2l2ZW4gZW50aXR5IGNsYXNzIG9yIG5hbWUuXG4gICAgICogSWYgc2luZ2xlIGRhdGFiYXNlIGNvbm5lY3Rpb24gbW9kZSBpcyB1c2VkLCB0aGVuIHJlcG9zaXRvcnkgaXMgb2J0YWluZWQgZnJvbSB0aGVcbiAgICAgKiByZXBvc2l0b3J5IGFnZ3JlZ2F0b3IsIHdoZXJlIGVhY2ggcmVwb3NpdG9yeSBpcyBpbmRpdmlkdWFsbHkgY3JlYXRlZCBmb3IgdGhpcyBlbnRpdHkgbWFuYWdlci5cbiAgICAgKiBXaGVuIHNpbmdsZSBkYXRhYmFzZSBjb25uZWN0aW9uIGlzIG5vdCB1c2VkLCByZXBvc2l0b3J5IGlzIGJlaW5nIG9idGFpbmVkIGZyb20gdGhlIGNvbm5lY3Rpb24uXG4gICAgICovXG4gICAgZ2V0UmVwb3NpdG9yeTxFbnRpdHkgZXh0ZW5kcyBPYmplY3RMaXRlcmFsPihcbiAgICAgICAgdGFyZ2V0OiBFbnRpdHlUYXJnZXQ8RW50aXR5PixcbiAgICApOiBSZXBvc2l0b3J5PEVudGl0eT4ge1xuXG4gICAgICAgIGNvbnN0IHJlcG9zaXRvcnkgPSB0aGlzLnJlcG9zaXRvcmllcy5maW5kKFxuICAgICAgICAgICAgKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkudGFyZ2V0ID09PSB0YXJnZXQsXG4gICAgICAgIClcbiAgICAgICAgaWYgKHJlcG9zaXRvcnkpIHJldHVybiByZXBvc2l0b3J5XG5cblxuICAgICAgICBpZiAodGhpcy5jb25uZWN0aW9uLmRyaXZlci5vcHRpb25zLnR5cGUgPT09IFwibW9uZ29kYlwiKSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICAgICAgICByZXR1cm4gKHZvaWQgMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBuZXdSZXBvc2l0b3J5ID0gbmV3IFJlcG9zaXRvcnk8YW55PihcbiAgICAgICAgICAgICAgICB0YXJnZXQsXG4gICAgICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5UnVubmVyLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgdGhpcy5yZXBvc2l0b3JpZXMucHVzaChuZXdSZXBvc2l0b3J5KVxuICAgICAgICAgICAgcmV0dXJuIG5ld1JlcG9zaXRvcnlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdHJlZSByZXBvc2l0b3J5IGZvciB0aGUgZ2l2ZW4gZW50aXR5IGNsYXNzIG9yIG5hbWUuXG4gICAgICogSWYgc2luZ2xlIGRhdGFiYXNlIGNvbm5lY3Rpb24gbW9kZSBpcyB1c2VkLCB0aGVuIHJlcG9zaXRvcnkgaXMgb2J0YWluZWQgZnJvbSB0aGVcbiAgICAgKiByZXBvc2l0b3J5IGFnZ3JlZ2F0b3IsIHdoZXJlIGVhY2ggcmVwb3NpdG9yeSBpcyBpbmRpdmlkdWFsbHkgY3JlYXRlZCBmb3IgdGhpcyBlbnRpdHkgbWFuYWdlci5cbiAgICAgKiBXaGVuIHNpbmdsZSBkYXRhYmFzZSBjb25uZWN0aW9uIGlzIG5vdCB1c2VkLCByZXBvc2l0b3J5IGlzIGJlaW5nIG9idGFpbmVkIGZyb20gdGhlIGNvbm5lY3Rpb24uXG4gICAgICovXG4gICAgZ2V0VHJlZVJlcG9zaXRvcnk8RW50aXR5IGV4dGVuZHMgT2JqZWN0TGl0ZXJhbD4oXG4gICAgICAgIHRhcmdldDogRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgKTogVHJlZVJlcG9zaXRvcnk8RW50aXR5PiB7XG5cbiAgICAgICAgaWYgKHRoaXMuY29ubmVjdGlvbi5kcml2ZXIudHJlZVN1cHBvcnQgPT09IGZhbHNlKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFRyZWVSZXBvc2l0b3J5Tm90U3VwcG9ydGVkRXJyb3IodGhpcy5jb25uZWN0aW9uLmRyaXZlcilcblxuXG4gICAgICAgIGNvbnN0IHJlcG9zaXRvcnkgPSB0aGlzLnRyZWVSZXBvc2l0b3JpZXMuZmluZChcbiAgICAgICAgICAgIChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5LnRhcmdldCA9PT0gdGFyZ2V0LFxuICAgICAgICApXG4gICAgICAgIGlmIChyZXBvc2l0b3J5KSByZXR1cm4gcmVwb3NpdG9yeVxuXG5cbiAgICAgICAgY29uc3QgbmV3UmVwb3NpdG9yeSA9IG5ldyBUcmVlUmVwb3NpdG9yeSh0YXJnZXQsIHRoaXMsIHRoaXMucXVlcnlSdW5uZXIpXG4gICAgICAgIHRoaXMudHJlZVJlcG9zaXRvcmllcy5wdXNoKG5ld1JlcG9zaXRvcnkpXG4gICAgICAgIHJldHVybiBuZXdSZXBvc2l0b3J5XG4gICAgfVxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyByZXBvc2l0b3J5IGluc3RhbmNlIG91dCBvZiBhIGdpdmVuIFJlcG9zaXRvcnkgYW5kXG4gICAgICogc2V0cyBjdXJyZW50IEVudGl0eU1hbmFnZXIgaW5zdGFuY2UgdG8gaXQuIFVzZWQgdG8gd29yayB3aXRoIGN1c3RvbSByZXBvc2l0b3JpZXNcbiAgICAgKiBpbiB0cmFuc2FjdGlvbnMuXG4gICAgICovXG4gICAgd2l0aFJlcG9zaXRvcnk8RW50aXR5IGV4dGVuZHMgT2JqZWN0TGl0ZXJhbCwgUiBleHRlbmRzIFJlcG9zaXRvcnk8YW55Pj4oXG4gICAgICAgIHJlcG9zaXRvcnk6IFIgJiBSZXBvc2l0b3J5PEVudGl0eT4sXG4gICAgKTogUiB7XG4gICAgICAgIGNvbnN0IHJlcG9zaXRvcnlDb25zdHJ1Y3RvciA9XG4gICAgICAgICAgICByZXBvc2l0b3J5LmNvbnN0cnVjdG9yIGFzIHR5cGVvZiBSZXBvc2l0b3J5XG4gICAgICAgIGNvbnN0IHsgdGFyZ2V0LCBtYW5hZ2VyLCBxdWVyeVJ1bm5lciwgLi4ub3RoZXJSZXBvc2l0b3J5UHJvcGVydGllcyB9ID1cbiAgICAgICAgICAgIHJlcG9zaXRvcnlcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAgICBuZXcgcmVwb3NpdG9yeUNvbnN0cnVjdG9yKHJlcG9zaXRvcnkudGFyZ2V0LCB0aGlzKSBhcyBSLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC4uLm90aGVyUmVwb3NpdG9yeVByb3BlcnRpZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICApXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBjdXN0b20gZW50aXR5IHJlcG9zaXRvcnkgbWFya2VkIHdpdGggQEVudGl0eVJlcG9zaXRvcnkgZGVjb3JhdG9yLlxuICAgICAqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIFJlcG9zaXRvcnkuZXh0ZW5kIHRvIGNyZWF0ZSBjdXN0b20gcmVwb3NpdG9yaWVzXG4gICAgICovXG4gICAgZ2V0Q3VzdG9tUmVwb3NpdG9yeTxUPihjdXN0b21SZXBvc2l0b3J5OiBPYmplY3RUeXBlPFQ+KTogVCB7XG4gICAgICAgIGNvbnN0IGVudGl0eVJlcG9zaXRvcnlNZXRhZGF0YUFyZ3MgPVxuICAgICAgICAgICAgZ2V0TWV0YWRhdGFBcmdzU3RvcmFnZSgpLmVudGl0eVJlcG9zaXRvcmllcy5maW5kKChyZXBvc2l0b3J5KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeS50YXJnZXQgPT09XG4gICAgICAgICAgICAgICAgICAgICh0eXBlb2YgY3VzdG9tUmVwb3NpdG9yeSA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGN1c3RvbVJlcG9zaXRvcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogKGN1c3RvbVJlcG9zaXRvcnkgYXMgYW55KS5jb25zdHJ1Y3RvcilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KVxuICAgICAgICBpZiAoIWVudGl0eVJlcG9zaXRvcnlNZXRhZGF0YUFyZ3MpXG4gICAgICAgICAgICB0aHJvdyBuZXcgQ3VzdG9tUmVwb3NpdG9yeU5vdEZvdW5kRXJyb3IoY3VzdG9tUmVwb3NpdG9yeSlcblxuICAgICAgICBjb25zdCBlbnRpdHlNZXRhZGF0YSA9IGVudGl0eVJlcG9zaXRvcnlNZXRhZGF0YUFyZ3MuZW50aXR5XG4gICAgICAgICAgICA/IHRoaXMuY29ubmVjdGlvbi5nZXRNZXRhZGF0YShlbnRpdHlSZXBvc2l0b3J5TWV0YWRhdGFBcmdzLmVudGl0eSlcbiAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgIGNvbnN0IGVudGl0eVJlcG9zaXRvcnlJbnN0YW5jZSA9XG4gICAgICAgICAgICBuZXcgKGVudGl0eVJlcG9zaXRvcnlNZXRhZGF0YUFyZ3MudGFyZ2V0IGFzIGFueSkoXG4gICAgICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgICAgICBlbnRpdHlNZXRhZGF0YSxcbiAgICAgICAgICAgIClcblxuXG5cbiAgICAgICAgaWYgKGVudGl0eVJlcG9zaXRvcnlJbnN0YW5jZSBpbnN0YW5jZW9mIEFic3RyYWN0UmVwb3NpdG9yeSkge1xuICAgICAgICAgICAgaWYgKCEoZW50aXR5UmVwb3NpdG9yeUluc3RhbmNlIGFzIGFueSlbXCJtYW5hZ2VyXCJdKVxuICAgICAgICAgICAgICAgIChlbnRpdHlSZXBvc2l0b3J5SW5zdGFuY2UgYXMgYW55KVtcIm1hbmFnZXJcIl0gPSB0aGlzXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWVudGl0eU1ldGFkYXRhKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBDdXN0b21SZXBvc2l0b3J5Q2Fubm90SW5oZXJpdFJlcG9zaXRvcnlFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgY3VzdG9tUmVwb3NpdG9yeSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICA7KGVudGl0eVJlcG9zaXRvcnlJbnN0YW5jZSBhcyBhbnkpW1wibWFuYWdlclwiXSA9IHRoaXNcbiAgICAgICAgICAgIDsoZW50aXR5UmVwb3NpdG9yeUluc3RhbmNlIGFzIGFueSlbXCJtZXRhZGF0YVwiXSA9IGVudGl0eU1ldGFkYXRhXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZW50aXR5UmVwb3NpdG9yeUluc3RhbmNlXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVsZWFzZXMgYWxsIHJlc291cmNlcyB1c2VkIGJ5IGVudGl0eSBtYW5hZ2VyLlxuICAgICAqIFRoaXMgaXMgdXNlZCB3aGVuIGVudGl0eSBtYW5hZ2VyIGlzIGNyZWF0ZWQgd2l0aCBhIHNpbmdsZSBxdWVyeSBydW5uZXIsXG4gICAgICogYW5kIHRoaXMgc2luZ2xlIHF1ZXJ5IHJ1bm5lciBuZWVkcyB0byBiZSByZWxlYXNlZCBhZnRlciBqb2Igd2l0aCBlbnRpdHkgbWFuYWdlciBpcyBkb25lLlxuICAgICAqL1xuICAgIGFzeW5jIHJlbGVhc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICghdGhpcy5xdWVyeVJ1bm5lcikgdGhyb3cgbmV3IE5vTmVlZFRvUmVsZWFzZUVudGl0eU1hbmFnZXJFcnJvcigpXG5cbiAgICAgICAgcmV0dXJuIHRoaXMucXVlcnlSdW5uZXIucmVsZWFzZSgpXG4gICAgfVxufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dGFvbi10eXBlb3JtIGxpYi90eXBlb3JtL2VudGl0eS1tYW5hZ2VyL0VudGl0eU1hbmFnZXIudHMiXX0=
|