taon-typeorm 18.0.23 → 19.0.0
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 +1 -1
- package/package.json +1 -1
- package/tmp-environment.json +24 -3
- 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/taon.jsonc +0 -8
- 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,721 +0,0 @@
|
|
|
1
|
-
import { SubjectTopoligicalSorter } from "./SubjectTopoligicalSorter";
|
|
2
|
-
import { SubjectChangedColumnsComputer } from "./SubjectChangedColumnsComputer";
|
|
3
|
-
import { SubjectWithoutIdentifierError } from "../error/SubjectWithoutIdentifierError";
|
|
4
|
-
import { SubjectRemovedAndUpdatedError } from "../error/SubjectRemovedAndUpdatedError";
|
|
5
|
-
import { BroadcasterResult } from "../subscriber/BroadcasterResult";
|
|
6
|
-
import { NestedSetSubjectExecutor } from "./tree/NestedSetSubjectExecutor";
|
|
7
|
-
import { ClosureSubjectExecutor } from "./tree/ClosureSubjectExecutor";
|
|
8
|
-
import { MaterializedPathSubjectExecutor } from "./tree/MaterializedPathSubjectExecutor";
|
|
9
|
-
import { OrmUtils } from "../util/OrmUtils";
|
|
10
|
-
import { ObjectUtils } from "../util/ObjectUtils";
|
|
11
|
-
/**
|
|
12
|
-
* Executes all database operations (inserts, updated, deletes) that must be executed
|
|
13
|
-
* with given persistence subjects.
|
|
14
|
-
*/
|
|
15
|
-
export class SubjectExecutor {
|
|
16
|
-
constructor(queryRunner, subjects, options) {
|
|
17
|
-
/**
|
|
18
|
-
* Indicates if executor has any operations to execute (e.g. has insert / update / delete operations to be executed).
|
|
19
|
-
*/
|
|
20
|
-
this.hasExecutableOperations = false;
|
|
21
|
-
/**
|
|
22
|
-
* Subjects that must be inserted.
|
|
23
|
-
*/
|
|
24
|
-
this.insertSubjects = [];
|
|
25
|
-
/**
|
|
26
|
-
* Subjects that must be updated.
|
|
27
|
-
*/
|
|
28
|
-
this.updateSubjects = [];
|
|
29
|
-
/**
|
|
30
|
-
* Subjects that must be removed.
|
|
31
|
-
*/
|
|
32
|
-
this.removeSubjects = [];
|
|
33
|
-
/**
|
|
34
|
-
* Subjects that must be soft-removed.
|
|
35
|
-
*/
|
|
36
|
-
this.softRemoveSubjects = [];
|
|
37
|
-
/**
|
|
38
|
-
* Subjects that must be recovered.
|
|
39
|
-
*/
|
|
40
|
-
this.recoverSubjects = [];
|
|
41
|
-
this.queryRunner = queryRunner;
|
|
42
|
-
this.allSubjects = subjects;
|
|
43
|
-
this.options = options;
|
|
44
|
-
this.validate();
|
|
45
|
-
this.recompute();
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Executes all operations over given array of subjects.
|
|
49
|
-
* Executes queries using given query runner.
|
|
50
|
-
*/
|
|
51
|
-
async execute() {
|
|
52
|
-
let broadcasterResult = undefined;
|
|
53
|
-
if (!this.options || this.options.listeners !== false) {
|
|
54
|
-
broadcasterResult = this.broadcastBeforeEventsForAll();
|
|
55
|
-
if (broadcasterResult.promises.length > 0)
|
|
56
|
-
await Promise.all(broadcasterResult.promises);
|
|
57
|
-
}
|
|
58
|
-
if (broadcasterResult && broadcasterResult.count > 0) {
|
|
59
|
-
this.insertSubjects.forEach((subject) => subject.recompute());
|
|
60
|
-
this.updateSubjects.forEach((subject) => subject.recompute());
|
|
61
|
-
this.removeSubjects.forEach((subject) => subject.recompute());
|
|
62
|
-
this.softRemoveSubjects.forEach((subject) => subject.recompute());
|
|
63
|
-
this.recoverSubjects.forEach((subject) => subject.recompute());
|
|
64
|
-
this.recompute();
|
|
65
|
-
}
|
|
66
|
-
this.insertSubjects = new SubjectTopoligicalSorter(this.insertSubjects).sort("insert");
|
|
67
|
-
await this.executeInsertOperations();
|
|
68
|
-
this.updateSubjects = this.allSubjects.filter((subject) => subject.mustBeUpdated);
|
|
69
|
-
await this.executeUpdateOperations();
|
|
70
|
-
this.removeSubjects = new SubjectTopoligicalSorter(this.removeSubjects).sort("delete");
|
|
71
|
-
await this.executeRemoveOperations();
|
|
72
|
-
this.softRemoveSubjects = this.allSubjects.filter((subject) => subject.mustBeSoftRemoved);
|
|
73
|
-
await this.executeSoftRemoveOperations();
|
|
74
|
-
this.recoverSubjects = this.allSubjects.filter((subject) => subject.mustBeRecovered);
|
|
75
|
-
await this.executeRecoverOperations();
|
|
76
|
-
await this.updateSpecialColumnsInPersistedEntities();
|
|
77
|
-
if (!this.options || this.options.listeners !== false) {
|
|
78
|
-
broadcasterResult = this.broadcastAfterEventsForAll();
|
|
79
|
-
if (broadcasterResult.promises.length > 0)
|
|
80
|
-
await Promise.all(broadcasterResult.promises);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Validates all given subjects.
|
|
85
|
-
*/
|
|
86
|
-
validate() {
|
|
87
|
-
this.allSubjects.forEach((subject) => {
|
|
88
|
-
if (subject.mustBeUpdated && subject.mustBeRemoved)
|
|
89
|
-
throw new SubjectRemovedAndUpdatedError(subject);
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Performs entity re-computations - finds changed columns, re-builds insert/update/remove subjects.
|
|
94
|
-
*/
|
|
95
|
-
recompute() {
|
|
96
|
-
new SubjectChangedColumnsComputer().compute(this.allSubjects);
|
|
97
|
-
this.insertSubjects = this.allSubjects.filter((subject) => subject.mustBeInserted);
|
|
98
|
-
this.updateSubjects = this.allSubjects.filter((subject) => subject.mustBeUpdated);
|
|
99
|
-
this.removeSubjects = this.allSubjects.filter((subject) => subject.mustBeRemoved);
|
|
100
|
-
this.softRemoveSubjects = this.allSubjects.filter((subject) => subject.mustBeSoftRemoved);
|
|
101
|
-
this.recoverSubjects = this.allSubjects.filter((subject) => subject.mustBeRecovered);
|
|
102
|
-
this.hasExecutableOperations =
|
|
103
|
-
this.insertSubjects.length > 0 ||
|
|
104
|
-
this.updateSubjects.length > 0 ||
|
|
105
|
-
this.removeSubjects.length > 0 ||
|
|
106
|
-
this.softRemoveSubjects.length > 0 ||
|
|
107
|
-
this.recoverSubjects.length > 0;
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Broadcasts "BEFORE_INSERT", "BEFORE_UPDATE", "BEFORE_REMOVE", "BEFORE_SOFT_REMOVE", "BEFORE_RECOVER" events for all given subjects.
|
|
111
|
-
*/
|
|
112
|
-
broadcastBeforeEventsForAll() {
|
|
113
|
-
const result = new BroadcasterResult();
|
|
114
|
-
if (this.insertSubjects.length)
|
|
115
|
-
this.insertSubjects.forEach((subject) => this.queryRunner.broadcaster.broadcastBeforeInsertEvent(result, subject.metadata, subject.entity));
|
|
116
|
-
if (this.updateSubjects.length)
|
|
117
|
-
this.updateSubjects.forEach((subject) => this.queryRunner.broadcaster.broadcastBeforeUpdateEvent(result, subject.metadata, subject.entity, subject.databaseEntity, subject.diffColumns, subject.diffRelations));
|
|
118
|
-
if (this.removeSubjects.length)
|
|
119
|
-
this.removeSubjects.forEach((subject) => this.queryRunner.broadcaster.broadcastBeforeRemoveEvent(result, subject.metadata, subject.entity, subject.databaseEntity));
|
|
120
|
-
if (this.softRemoveSubjects.length)
|
|
121
|
-
this.softRemoveSubjects.forEach((subject) => this.queryRunner.broadcaster.broadcastBeforeSoftRemoveEvent(result, subject.metadata, subject.entity, subject.databaseEntity));
|
|
122
|
-
if (this.recoverSubjects.length)
|
|
123
|
-
this.recoverSubjects.forEach((subject) => this.queryRunner.broadcaster.broadcastBeforeRecoverEvent(result, subject.metadata, subject.entity, subject.databaseEntity));
|
|
124
|
-
return result;
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Broadcasts "AFTER_INSERT", "AFTER_UPDATE", "AFTER_REMOVE", "AFTER_SOFT_REMOVE", "AFTER_RECOVER" events for all given subjects.
|
|
128
|
-
* Returns void if there wasn't any listener or subscriber executed.
|
|
129
|
-
* Note: this method has a performance-optimized code organization.
|
|
130
|
-
*/
|
|
131
|
-
broadcastAfterEventsForAll() {
|
|
132
|
-
const result = new BroadcasterResult();
|
|
133
|
-
if (this.insertSubjects.length)
|
|
134
|
-
this.insertSubjects.forEach((subject) => this.queryRunner.broadcaster.broadcastAfterInsertEvent(result, subject.metadata, subject.entity));
|
|
135
|
-
if (this.updateSubjects.length)
|
|
136
|
-
this.updateSubjects.forEach((subject) => this.queryRunner.broadcaster.broadcastAfterUpdateEvent(result, subject.metadata, subject.entity, subject.databaseEntity, subject.diffColumns, subject.diffRelations));
|
|
137
|
-
if (this.removeSubjects.length)
|
|
138
|
-
this.removeSubjects.forEach((subject) => this.queryRunner.broadcaster.broadcastAfterRemoveEvent(result, subject.metadata, subject.entity, subject.databaseEntity));
|
|
139
|
-
if (this.softRemoveSubjects.length)
|
|
140
|
-
this.softRemoveSubjects.forEach((subject) => this.queryRunner.broadcaster.broadcastAfterSoftRemoveEvent(result, subject.metadata, subject.entity, subject.databaseEntity));
|
|
141
|
-
if (this.recoverSubjects.length)
|
|
142
|
-
this.recoverSubjects.forEach((subject) => this.queryRunner.broadcaster.broadcastAfterRecoverEvent(result, subject.metadata, subject.entity, subject.databaseEntity));
|
|
143
|
-
return result;
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Executes insert operations.
|
|
147
|
-
*/
|
|
148
|
-
async executeInsertOperations() {
|
|
149
|
-
const [groupedInsertSubjects, groupedInsertSubjectKeys] = this.groupBulkSubjects(this.insertSubjects, "insert");
|
|
150
|
-
for (const groupName of groupedInsertSubjectKeys) {
|
|
151
|
-
const subjects = groupedInsertSubjects[groupName];
|
|
152
|
-
const bulkInsertMaps = [];
|
|
153
|
-
const bulkInsertSubjects = [];
|
|
154
|
-
const singleInsertSubjects = [];
|
|
155
|
-
if (this.queryRunner.connection.driver.options.type === "mongodb") {
|
|
156
|
-
subjects.forEach((subject) => {
|
|
157
|
-
if (subject.metadata.createDateColumn && subject.entity) {
|
|
158
|
-
subject.entity[subject.metadata.createDateColumn.databaseName] = new Date();
|
|
159
|
-
}
|
|
160
|
-
if (subject.metadata.updateDateColumn && subject.entity) {
|
|
161
|
-
subject.entity[subject.metadata.updateDateColumn.databaseName] = new Date();
|
|
162
|
-
}
|
|
163
|
-
subject.createValueSetAndPopChangeMap();
|
|
164
|
-
bulkInsertSubjects.push(subject);
|
|
165
|
-
bulkInsertMaps.push(subject.entity);
|
|
166
|
-
});
|
|
167
|
-
}
|
|
168
|
-
else if (this.queryRunner.connection.driver.options.type === "oracle") {
|
|
169
|
-
subjects.forEach((subject) => {
|
|
170
|
-
singleInsertSubjects.push(subject);
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
else {
|
|
174
|
-
subjects.forEach((subject) => {
|
|
175
|
-
if (subject.changeMaps.length === 0 ||
|
|
176
|
-
subject.metadata.treeType ||
|
|
177
|
-
this.queryRunner.connection.driver.options.type ===
|
|
178
|
-
"oracle" ||
|
|
179
|
-
this.queryRunner.connection.driver.options.type ===
|
|
180
|
-
"sap") {
|
|
181
|
-
singleInsertSubjects.push(subject);
|
|
182
|
-
}
|
|
183
|
-
else {
|
|
184
|
-
bulkInsertSubjects.push(subject);
|
|
185
|
-
bulkInsertMaps.push(subject.createValueSetAndPopChangeMap());
|
|
186
|
-
}
|
|
187
|
-
});
|
|
188
|
-
}
|
|
189
|
-
if (
|
|
190
|
-
/* */
|
|
191
|
-
/* */
|
|
192
|
-
/* */
|
|
193
|
-
/* */
|
|
194
|
-
false) {
|
|
195
|
-
/* */
|
|
196
|
-
/* */
|
|
197
|
-
/* */
|
|
198
|
-
/* */
|
|
199
|
-
/* */
|
|
200
|
-
/* */
|
|
201
|
-
/* */
|
|
202
|
-
/* */
|
|
203
|
-
/* */
|
|
204
|
-
/* */
|
|
205
|
-
}
|
|
206
|
-
else {
|
|
207
|
-
if (bulkInsertMaps.length > 0) {
|
|
208
|
-
const insertResult = await this.queryRunner.manager
|
|
209
|
-
.createQueryBuilder()
|
|
210
|
-
.insert()
|
|
211
|
-
.into(subjects[0].metadata.target)
|
|
212
|
-
.values(bulkInsertMaps)
|
|
213
|
-
.updateEntity(this.options && this.options.reload === false
|
|
214
|
-
? false
|
|
215
|
-
: true)
|
|
216
|
-
.callListeners(false)
|
|
217
|
-
.execute();
|
|
218
|
-
bulkInsertSubjects.forEach((subject, index) => {
|
|
219
|
-
subject.identifier = insertResult.identifiers[index];
|
|
220
|
-
subject.generatedMap = insertResult.generatedMaps[index];
|
|
221
|
-
subject.insertedValueSet = bulkInsertMaps[index];
|
|
222
|
-
});
|
|
223
|
-
}
|
|
224
|
-
if (singleInsertSubjects.length > 0) {
|
|
225
|
-
for (const subject of singleInsertSubjects) {
|
|
226
|
-
subject.insertedValueSet =
|
|
227
|
-
subject.createValueSetAndPopChangeMap(); // important to have because query builder sets inserted values into it
|
|
228
|
-
if (subject.metadata.treeType === "nested-set")
|
|
229
|
-
await new NestedSetSubjectExecutor(this.queryRunner).insert(subject);
|
|
230
|
-
await this.queryRunner.manager
|
|
231
|
-
.createQueryBuilder()
|
|
232
|
-
.insert()
|
|
233
|
-
.into(subject.metadata.target)
|
|
234
|
-
.values(subject.insertedValueSet)
|
|
235
|
-
.updateEntity(this.options && this.options.reload === false
|
|
236
|
-
? false
|
|
237
|
-
: true)
|
|
238
|
-
.callListeners(false)
|
|
239
|
-
.execute()
|
|
240
|
-
.then((insertResult) => {
|
|
241
|
-
subject.identifier = insertResult.identifiers[0];
|
|
242
|
-
subject.generatedMap =
|
|
243
|
-
insertResult.generatedMaps[0];
|
|
244
|
-
});
|
|
245
|
-
if (subject.metadata.treeType === "closure-table") {
|
|
246
|
-
await new ClosureSubjectExecutor(this.queryRunner).insert(subject);
|
|
247
|
-
}
|
|
248
|
-
else if (subject.metadata.treeType === "materialized-path") {
|
|
249
|
-
await new MaterializedPathSubjectExecutor(this.queryRunner).insert(subject);
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
subjects.forEach((subject) => {
|
|
255
|
-
if (subject.generatedMap) {
|
|
256
|
-
subject.metadata.columns.forEach((column) => {
|
|
257
|
-
const value = column.getEntityValue(subject.generatedMap);
|
|
258
|
-
if (value !== undefined && value !== null) {
|
|
259
|
-
const preparedValue = this.queryRunner.connection.driver.prepareHydratedValue(value, column);
|
|
260
|
-
column.setEntityValue(subject.generatedMap, preparedValue);
|
|
261
|
-
}
|
|
262
|
-
});
|
|
263
|
-
}
|
|
264
|
-
});
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
/**
|
|
268
|
-
* Updates all given subjects in the database.
|
|
269
|
-
*/
|
|
270
|
-
async executeUpdateOperations() {
|
|
271
|
-
const updateSubject = async (subject) => {
|
|
272
|
-
if (!subject.identifier)
|
|
273
|
-
throw new SubjectWithoutIdentifierError(subject);
|
|
274
|
-
if (
|
|
275
|
-
/* */
|
|
276
|
-
/* */
|
|
277
|
-
/* */
|
|
278
|
-
/* */
|
|
279
|
-
false) {
|
|
280
|
-
/* */
|
|
281
|
-
/* */
|
|
282
|
-
/* */
|
|
283
|
-
/* */
|
|
284
|
-
/* */
|
|
285
|
-
/* */
|
|
286
|
-
/* */
|
|
287
|
-
/* */
|
|
288
|
-
/* */
|
|
289
|
-
/* */
|
|
290
|
-
/* */
|
|
291
|
-
/* */
|
|
292
|
-
/* */
|
|
293
|
-
/* */
|
|
294
|
-
/* */
|
|
295
|
-
/* */
|
|
296
|
-
/* */
|
|
297
|
-
/* */
|
|
298
|
-
/* */
|
|
299
|
-
/* */
|
|
300
|
-
/* */
|
|
301
|
-
/* */
|
|
302
|
-
/* */
|
|
303
|
-
/* */
|
|
304
|
-
/* */
|
|
305
|
-
/* */
|
|
306
|
-
/* */
|
|
307
|
-
/* */
|
|
308
|
-
/* */
|
|
309
|
-
/* */
|
|
310
|
-
/* */
|
|
311
|
-
/* */
|
|
312
|
-
/* */
|
|
313
|
-
/* */
|
|
314
|
-
/* */
|
|
315
|
-
/* */
|
|
316
|
-
}
|
|
317
|
-
else {
|
|
318
|
-
const updateMap = subject.createValueSetAndPopChangeMap();
|
|
319
|
-
switch (subject.metadata.treeType) {
|
|
320
|
-
case "nested-set":
|
|
321
|
-
await new NestedSetSubjectExecutor(this.queryRunner).update(subject);
|
|
322
|
-
break;
|
|
323
|
-
case "closure-table":
|
|
324
|
-
await new ClosureSubjectExecutor(this.queryRunner).update(subject);
|
|
325
|
-
break;
|
|
326
|
-
case "materialized-path":
|
|
327
|
-
await new MaterializedPathSubjectExecutor(this.queryRunner).update(subject);
|
|
328
|
-
break;
|
|
329
|
-
}
|
|
330
|
-
const updateQueryBuilder = this.queryRunner.manager
|
|
331
|
-
.createQueryBuilder()
|
|
332
|
-
.update(subject.metadata.target)
|
|
333
|
-
.set(updateMap)
|
|
334
|
-
.updateEntity(this.options && this.options.reload === false
|
|
335
|
-
? false
|
|
336
|
-
: true)
|
|
337
|
-
.callListeners(false);
|
|
338
|
-
if (subject.entity) {
|
|
339
|
-
updateQueryBuilder.whereEntity(subject.identifier);
|
|
340
|
-
}
|
|
341
|
-
else {
|
|
342
|
-
updateQueryBuilder.where(subject.identifier);
|
|
343
|
-
}
|
|
344
|
-
const updateResult = await updateQueryBuilder.execute();
|
|
345
|
-
let updateGeneratedMap = updateResult.generatedMaps[0];
|
|
346
|
-
if (updateGeneratedMap) {
|
|
347
|
-
subject.metadata.columns.forEach((column) => {
|
|
348
|
-
const value = column.getEntityValue(updateGeneratedMap);
|
|
349
|
-
if (value !== undefined && value !== null) {
|
|
350
|
-
const preparedValue = this.queryRunner.connection.driver.prepareHydratedValue(value, column);
|
|
351
|
-
column.setEntityValue(updateGeneratedMap, preparedValue);
|
|
352
|
-
}
|
|
353
|
-
});
|
|
354
|
-
if (!subject.generatedMap) {
|
|
355
|
-
subject.generatedMap = {};
|
|
356
|
-
}
|
|
357
|
-
Object.assign(subject.generatedMap, updateGeneratedMap);
|
|
358
|
-
}
|
|
359
|
-
}
|
|
360
|
-
};
|
|
361
|
-
const nestedSetSubjects = [];
|
|
362
|
-
const remainingSubjects = [];
|
|
363
|
-
for (const subject of this.updateSubjects) {
|
|
364
|
-
if (subject.metadata.treeType === "nested-set") {
|
|
365
|
-
nestedSetSubjects.push(subject);
|
|
366
|
-
}
|
|
367
|
-
else {
|
|
368
|
-
remainingSubjects.push(subject);
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
const nestedSetPromise = new Promise(async (ok, fail) => {
|
|
372
|
-
for (const subject of nestedSetSubjects) {
|
|
373
|
-
try {
|
|
374
|
-
await updateSubject(subject);
|
|
375
|
-
}
|
|
376
|
-
catch (error) {
|
|
377
|
-
fail(error);
|
|
378
|
-
}
|
|
379
|
-
}
|
|
380
|
-
ok();
|
|
381
|
-
});
|
|
382
|
-
await Promise.all([
|
|
383
|
-
...remainingSubjects.map(updateSubject),
|
|
384
|
-
nestedSetPromise,
|
|
385
|
-
]);
|
|
386
|
-
}
|
|
387
|
-
/**
|
|
388
|
-
* Removes all given subjects from the database.
|
|
389
|
-
*
|
|
390
|
-
* todo: we need to apply topological sort here as well
|
|
391
|
-
*/
|
|
392
|
-
async executeRemoveOperations() {
|
|
393
|
-
const [groupedRemoveSubjects, groupedRemoveSubjectKeys] = this.groupBulkSubjects(this.removeSubjects, "delete");
|
|
394
|
-
for (const groupName of groupedRemoveSubjectKeys) {
|
|
395
|
-
const subjects = groupedRemoveSubjects[groupName];
|
|
396
|
-
const deleteMaps = subjects.map((subject) => {
|
|
397
|
-
if (!subject.identifier)
|
|
398
|
-
throw new SubjectWithoutIdentifierError(subject);
|
|
399
|
-
return subject.identifier;
|
|
400
|
-
});
|
|
401
|
-
if (
|
|
402
|
-
/* */
|
|
403
|
-
/* */
|
|
404
|
-
/* */
|
|
405
|
-
/* */
|
|
406
|
-
false) {
|
|
407
|
-
/* */
|
|
408
|
-
/* */
|
|
409
|
-
/* */
|
|
410
|
-
}
|
|
411
|
-
else {
|
|
412
|
-
switch (subjects[0].metadata.treeType) {
|
|
413
|
-
case "nested-set":
|
|
414
|
-
await new NestedSetSubjectExecutor(this.queryRunner).remove(subjects);
|
|
415
|
-
break;
|
|
416
|
-
case "closure-table":
|
|
417
|
-
await new ClosureSubjectExecutor(this.queryRunner).remove(subjects);
|
|
418
|
-
break;
|
|
419
|
-
}
|
|
420
|
-
await this.queryRunner.manager
|
|
421
|
-
.createQueryBuilder()
|
|
422
|
-
.delete()
|
|
423
|
-
.from(subjects[0].metadata.target)
|
|
424
|
-
.where(deleteMaps)
|
|
425
|
-
.callListeners(false)
|
|
426
|
-
.execute();
|
|
427
|
-
}
|
|
428
|
-
}
|
|
429
|
-
}
|
|
430
|
-
cloneMongoSubjectEntity(subject) {
|
|
431
|
-
const target = {};
|
|
432
|
-
if (subject.entity) {
|
|
433
|
-
for (const column of subject.metadata.columns) {
|
|
434
|
-
OrmUtils.mergeDeep(target, column.getEntityValueMap(subject.entity));
|
|
435
|
-
}
|
|
436
|
-
}
|
|
437
|
-
return target;
|
|
438
|
-
}
|
|
439
|
-
/**
|
|
440
|
-
* Soft-removes all given subjects in the database.
|
|
441
|
-
*/
|
|
442
|
-
async executeSoftRemoveOperations() {
|
|
443
|
-
await Promise.all(this.softRemoveSubjects.map(async (subject) => {
|
|
444
|
-
if (!subject.identifier)
|
|
445
|
-
throw new SubjectWithoutIdentifierError(subject);
|
|
446
|
-
let updateResult;
|
|
447
|
-
if (
|
|
448
|
-
/* */
|
|
449
|
-
/* */
|
|
450
|
-
/* */
|
|
451
|
-
/* */
|
|
452
|
-
/* */
|
|
453
|
-
/* */
|
|
454
|
-
false) {
|
|
455
|
-
const partialEntity = this.cloneMongoSubjectEntity(subject);
|
|
456
|
-
if (subject.metadata.objectIdColumn &&
|
|
457
|
-
subject.metadata.objectIdColumn.propertyName) {
|
|
458
|
-
delete partialEntity[subject.metadata.objectIdColumn.propertyName];
|
|
459
|
-
}
|
|
460
|
-
if (subject.metadata.createDateColumn &&
|
|
461
|
-
subject.metadata.createDateColumn.propertyName) {
|
|
462
|
-
delete partialEntity[subject.metadata.createDateColumn.propertyName];
|
|
463
|
-
}
|
|
464
|
-
if (subject.metadata.updateDateColumn &&
|
|
465
|
-
subject.metadata.updateDateColumn.propertyName) {
|
|
466
|
-
partialEntity[subject.metadata.updateDateColumn.propertyName] = new Date();
|
|
467
|
-
}
|
|
468
|
-
if (subject.metadata.deleteDateColumn &&
|
|
469
|
-
subject.metadata.deleteDateColumn.propertyName) {
|
|
470
|
-
partialEntity[subject.metadata.deleteDateColumn.propertyName] = new Date();
|
|
471
|
-
}
|
|
472
|
-
let manager;
|
|
473
|
-
/* */
|
|
474
|
-
/* */
|
|
475
|
-
manager = this.queryRunner.manager;
|
|
476
|
-
updateResult = await manager.update(subject.metadata.target, subject.identifier, partialEntity);
|
|
477
|
-
}
|
|
478
|
-
else {
|
|
479
|
-
const softDeleteQueryBuilder = this.queryRunner.manager
|
|
480
|
-
.createQueryBuilder()
|
|
481
|
-
.softDelete()
|
|
482
|
-
.from(subject.metadata.target)
|
|
483
|
-
.updateEntity(this.options && this.options.reload === false
|
|
484
|
-
? false
|
|
485
|
-
: true)
|
|
486
|
-
.callListeners(false);
|
|
487
|
-
if (subject.entity) {
|
|
488
|
-
softDeleteQueryBuilder.whereEntity(subject.identifier);
|
|
489
|
-
}
|
|
490
|
-
else {
|
|
491
|
-
softDeleteQueryBuilder.where(subject.identifier);
|
|
492
|
-
}
|
|
493
|
-
updateResult = await softDeleteQueryBuilder.execute();
|
|
494
|
-
}
|
|
495
|
-
subject.generatedMap = updateResult.generatedMaps[0];
|
|
496
|
-
if (subject.generatedMap) {
|
|
497
|
-
subject.metadata.columns.forEach((column) => {
|
|
498
|
-
const value = column.getEntityValue(subject.generatedMap);
|
|
499
|
-
if (value !== undefined && value !== null) {
|
|
500
|
-
const preparedValue = this.queryRunner.connection.driver.prepareHydratedValue(value, column);
|
|
501
|
-
column.setEntityValue(subject.generatedMap, preparedValue);
|
|
502
|
-
}
|
|
503
|
-
});
|
|
504
|
-
}
|
|
505
|
-
//
|
|
506
|
-
}));
|
|
507
|
-
}
|
|
508
|
-
/**
|
|
509
|
-
* Recovers all given subjects in the database.
|
|
510
|
-
*/
|
|
511
|
-
async executeRecoverOperations() {
|
|
512
|
-
await Promise.all(this.recoverSubjects.map(async (subject) => {
|
|
513
|
-
if (!subject.identifier)
|
|
514
|
-
throw new SubjectWithoutIdentifierError(subject);
|
|
515
|
-
let updateResult;
|
|
516
|
-
if (
|
|
517
|
-
/* */
|
|
518
|
-
/* */
|
|
519
|
-
/* */
|
|
520
|
-
/* */
|
|
521
|
-
/* */
|
|
522
|
-
/* */
|
|
523
|
-
false) {
|
|
524
|
-
/* */
|
|
525
|
-
/* */
|
|
526
|
-
/* */
|
|
527
|
-
/* */
|
|
528
|
-
/* */
|
|
529
|
-
/* */
|
|
530
|
-
/* */
|
|
531
|
-
/* */
|
|
532
|
-
/* */
|
|
533
|
-
/* */
|
|
534
|
-
/* */
|
|
535
|
-
/* */
|
|
536
|
-
/* */
|
|
537
|
-
/* */
|
|
538
|
-
/* */
|
|
539
|
-
/* */
|
|
540
|
-
/* */
|
|
541
|
-
/* */
|
|
542
|
-
/* */
|
|
543
|
-
/* */
|
|
544
|
-
/* */
|
|
545
|
-
/* */
|
|
546
|
-
/* */
|
|
547
|
-
/* */
|
|
548
|
-
/* */
|
|
549
|
-
/* */
|
|
550
|
-
/* */
|
|
551
|
-
/* */
|
|
552
|
-
/* */
|
|
553
|
-
/* */
|
|
554
|
-
/* */
|
|
555
|
-
/* */
|
|
556
|
-
/* */
|
|
557
|
-
/* */
|
|
558
|
-
/* */
|
|
559
|
-
/* */
|
|
560
|
-
/* */
|
|
561
|
-
/* */
|
|
562
|
-
/* */
|
|
563
|
-
/* */
|
|
564
|
-
/* */
|
|
565
|
-
/* */
|
|
566
|
-
/* */
|
|
567
|
-
/* */
|
|
568
|
-
/* */
|
|
569
|
-
/* */
|
|
570
|
-
}
|
|
571
|
-
else {
|
|
572
|
-
const softDeleteQueryBuilder = this.queryRunner.manager
|
|
573
|
-
.createQueryBuilder()
|
|
574
|
-
.restore()
|
|
575
|
-
.from(subject.metadata.target)
|
|
576
|
-
.updateEntity(this.options && this.options.reload === false
|
|
577
|
-
? false
|
|
578
|
-
: true)
|
|
579
|
-
.callListeners(false);
|
|
580
|
-
if (subject.entity) {
|
|
581
|
-
softDeleteQueryBuilder.whereEntity(subject.identifier);
|
|
582
|
-
}
|
|
583
|
-
else {
|
|
584
|
-
softDeleteQueryBuilder.where(subject.identifier);
|
|
585
|
-
}
|
|
586
|
-
updateResult = await softDeleteQueryBuilder.execute();
|
|
587
|
-
}
|
|
588
|
-
subject.generatedMap = updateResult.generatedMaps[0];
|
|
589
|
-
if (subject.generatedMap) {
|
|
590
|
-
subject.metadata.columns.forEach((column) => {
|
|
591
|
-
const value = column.getEntityValue(subject.generatedMap);
|
|
592
|
-
if (value !== undefined && value !== null) {
|
|
593
|
-
const preparedValue = this.queryRunner.connection.driver.prepareHydratedValue(value, column);
|
|
594
|
-
column.setEntityValue(subject.generatedMap, preparedValue);
|
|
595
|
-
}
|
|
596
|
-
});
|
|
597
|
-
}
|
|
598
|
-
//
|
|
599
|
-
}));
|
|
600
|
-
}
|
|
601
|
-
/**
|
|
602
|
-
* Updates all special columns of the saving entities (create date, update date, version, etc.).
|
|
603
|
-
* Also updates nullable columns and columns with default values.
|
|
604
|
-
*/
|
|
605
|
-
updateSpecialColumnsInPersistedEntities() {
|
|
606
|
-
if (this.insertSubjects.length)
|
|
607
|
-
this.updateSpecialColumnsInInsertedAndUpdatedEntities(this.insertSubjects);
|
|
608
|
-
if (this.updateSubjects.length)
|
|
609
|
-
this.updateSpecialColumnsInInsertedAndUpdatedEntities(this.updateSubjects);
|
|
610
|
-
if (this.softRemoveSubjects.length)
|
|
611
|
-
this.updateSpecialColumnsInInsertedAndUpdatedEntities(this.softRemoveSubjects);
|
|
612
|
-
if (this.recoverSubjects.length)
|
|
613
|
-
this.updateSpecialColumnsInInsertedAndUpdatedEntities(this.recoverSubjects);
|
|
614
|
-
if (this.removeSubjects.length) {
|
|
615
|
-
this.removeSubjects.forEach((subject) => {
|
|
616
|
-
if (!subject.entity)
|
|
617
|
-
return;
|
|
618
|
-
subject.metadata.primaryColumns.forEach((primaryColumn) => {
|
|
619
|
-
primaryColumn.setEntityValue(subject.entity, undefined);
|
|
620
|
-
});
|
|
621
|
-
});
|
|
622
|
-
}
|
|
623
|
-
this.allSubjects.forEach((subject) => {
|
|
624
|
-
if (!subject.entity)
|
|
625
|
-
return;
|
|
626
|
-
subject.metadata.relationIds.forEach((relationId) => {
|
|
627
|
-
relationId.setValue(subject.entity);
|
|
628
|
-
});
|
|
629
|
-
/* */
|
|
630
|
-
/* */
|
|
631
|
-
/* */
|
|
632
|
-
/* */
|
|
633
|
-
/* */
|
|
634
|
-
/* */
|
|
635
|
-
/* */
|
|
636
|
-
/* */
|
|
637
|
-
/* */
|
|
638
|
-
/* */
|
|
639
|
-
/* */
|
|
640
|
-
/* */
|
|
641
|
-
/* */
|
|
642
|
-
/* */
|
|
643
|
-
/* */
|
|
644
|
-
/* */
|
|
645
|
-
});
|
|
646
|
-
}
|
|
647
|
-
/**
|
|
648
|
-
* Updates all special columns of the saving entities (create date, update date, version, etc.).
|
|
649
|
-
* Also updates nullable columns and columns with default values.
|
|
650
|
-
*/
|
|
651
|
-
updateSpecialColumnsInInsertedAndUpdatedEntities(subjects) {
|
|
652
|
-
subjects.forEach((subject) => {
|
|
653
|
-
if (!subject.entity)
|
|
654
|
-
return;
|
|
655
|
-
subject.metadata.columns.forEach((column) => {
|
|
656
|
-
if (subject.metadata.childEntityMetadatas.length > 0 &&
|
|
657
|
-
subject.metadata.childEntityMetadatas
|
|
658
|
-
.map((metadata) => metadata.target)
|
|
659
|
-
.indexOf(column.target) !== -1)
|
|
660
|
-
return;
|
|
661
|
-
if (column.isVirtual)
|
|
662
|
-
return;
|
|
663
|
-
if (column.isNullable) {
|
|
664
|
-
const columnValue = column.getEntityValue(subject.entity);
|
|
665
|
-
if (columnValue === undefined)
|
|
666
|
-
column.setEntityValue(subject.entity, null);
|
|
667
|
-
}
|
|
668
|
-
if (subject.updatedRelationMaps.length > 0) {
|
|
669
|
-
subject.updatedRelationMaps.forEach((updatedRelationMap) => {
|
|
670
|
-
updatedRelationMap.relation.joinColumns.forEach((column) => {
|
|
671
|
-
if (column.isVirtual === true)
|
|
672
|
-
return;
|
|
673
|
-
column.setEntityValue(subject.entity, ObjectUtils.isObject(updatedRelationMap.value)
|
|
674
|
-
? column.referencedColumn.getEntityValue(updatedRelationMap.value)
|
|
675
|
-
: updatedRelationMap.value);
|
|
676
|
-
});
|
|
677
|
-
});
|
|
678
|
-
}
|
|
679
|
-
});
|
|
680
|
-
if (subject.generatedMap)
|
|
681
|
-
this.queryRunner.manager.merge(subject.metadata.target, subject.entity, subject.generatedMap);
|
|
682
|
-
});
|
|
683
|
-
}
|
|
684
|
-
/**
|
|
685
|
-
* Groups subjects by metadata names (by tables) to make bulk insertions and deletions possible.
|
|
686
|
-
* However there are some limitations with bulk insertions of data into tables with generated (increment) columns
|
|
687
|
-
* in some drivers. Some drivers like mysql and sqlite does not support returning multiple generated columns
|
|
688
|
-
* after insertion and can only return a single generated column value, that's why its not possible to do bulk insertion,
|
|
689
|
-
* because it breaks insertion result's generatedMap and leads to problems when this subject is used in other subjects saves.
|
|
690
|
-
* That's why we only support bulking in junction tables for those drivers.
|
|
691
|
-
*
|
|
692
|
-
* Other drivers like postgres and sql server support RETURNING / OUTPUT statement which allows to return generated
|
|
693
|
-
* id for each inserted row, that's why bulk insertion is not limited to junction tables in there.
|
|
694
|
-
*/
|
|
695
|
-
groupBulkSubjects(subjects, type) {
|
|
696
|
-
const group = {};
|
|
697
|
-
const keys = [];
|
|
698
|
-
const hasReturningDependColumns = subjects.some((subject) => {
|
|
699
|
-
return subject.metadata.getInsertionReturningColumns().length > 0;
|
|
700
|
-
});
|
|
701
|
-
const groupingAllowed = type === "delete" ||
|
|
702
|
-
this.queryRunner.connection.driver.isReturningSqlSupported("insert") ||
|
|
703
|
-
hasReturningDependColumns === false;
|
|
704
|
-
subjects.forEach((subject, index) => {
|
|
705
|
-
const key = groupingAllowed || subject.metadata.isJunction
|
|
706
|
-
? subject.metadata.name
|
|
707
|
-
: subject.metadata.name + "_" + index;
|
|
708
|
-
if (!group[key]) {
|
|
709
|
-
group[key] = [subject];
|
|
710
|
-
keys.push(key);
|
|
711
|
-
}
|
|
712
|
-
else {
|
|
713
|
-
group[key].push(subject);
|
|
714
|
-
}
|
|
715
|
-
});
|
|
716
|
-
return [group, keys];
|
|
717
|
-
}
|
|
718
|
-
}
|
|
719
|
-
;
|
|
720
|
-
({}); // @--end-of-file-for-module=taon-typeorm lib/typeorm/persistence/SubjectExecutor.ts
|
|
721
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3ViamVjdEV4ZWN1dG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3QvdGFvbi10eXBlb3JtL3Byb2plY3RzL3Rhb24tdHlwZW9ybS9zcmMvbGliL3R5cGVvcm0vcGVyc2lzdGVuY2UvU3ViamVjdEV4ZWN1dG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQ3JFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQy9FLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHdDQUF3QyxDQUFBO0FBQ3RGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHdDQUF3QyxDQUFBO0FBT3RGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQ25FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQzFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBQ3RFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFBO0FBQ3hGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUUzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFHakQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGVBQWU7SUEwRHhCLFlBQ0ksV0FBd0IsRUFDeEIsUUFBbUIsRUFDbkIsT0FBcUM7UUF4RHpDOztXQUVHO1FBQ0gsNEJBQXVCLEdBQVksS0FBSyxDQUFBO1FBcUJ4Qzs7V0FFRztRQUNPLG1CQUFjLEdBQWMsRUFBRSxDQUFBO1FBRXhDOztXQUVHO1FBQ08sbUJBQWMsR0FBYyxFQUFFLENBQUE7UUFFeEM7O1dBRUc7UUFDTyxtQkFBYyxHQUFjLEVBQUUsQ0FBQTtRQUV4Qzs7V0FFRztR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TyxDQUFDLENBQUE7Z0JBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDbEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDNUIsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFBO1FBRUYsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUN4QixDQUFDO0NBQ0o7QUFFQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLG9GQUFvRiIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5pbXBvcnQgeyBRdWVyeVJ1bm5lciB9IGZyb20gXCIuLi9xdWVyeS1ydW5uZXIvUXVlcnlSdW5uZXJcIlxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCIuL1N1YmplY3RcIlxuaW1wb3J0IHsgU3ViamVjdFRvcG9saWdpY2FsU29ydGVyIH0gZnJvbSBcIi4vU3ViamVjdFRvcG9saWdpY2FsU29ydGVyXCJcbmltcG9ydCB7IFN1YmplY3RDaGFuZ2VkQ29sdW1uc0NvbXB1dGVyIH0gZnJvbSBcIi4vU3ViamVjdENoYW5nZWRDb2x1bW5zQ29tcHV0ZXJcIlxuaW1wb3J0IHsgU3ViamVjdFdpdGhvdXRJZGVudGlmaWVyRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3IvU3ViamVjdFdpdGhvdXRJZGVudGlmaWVyRXJyb3JcIlxuaW1wb3J0IHsgU3ViamVjdFJlbW92ZWRBbmRVcGRhdGVkRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3IvU3ViamVjdFJlbW92ZWRBbmRVcGRhdGVkRXJyb3JcIlxuLyogKi9cbi8qICovXG4gIFxuaW1wb3J0IHsgT2JqZWN0TGl0ZXJhbCB9IGZyb20gXCIuLi9jb21tb24vT2JqZWN0TGl0ZXJhbFwiXG5pbXBvcnQgeyBTYXZlT3B0aW9ucyB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L1NhdmVPcHRpb25zXCJcbmltcG9ydCB7IFJlbW92ZU9wdGlvbnMgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeS9SZW1vdmVPcHRpb25zXCJcbmltcG9ydCB7IEJyb2FkY2FzdGVyUmVzdWx0IH0gZnJvbSBcIi4uL3N1YnNjcmliZXIvQnJvYWRjYXN0ZXJSZXN1bHRcIlxuaW1wb3J0IHsgTmVzdGVkU2V0U3ViamVjdEV4ZWN1dG9yIH0gZnJvbSBcIi4vdHJlZS9OZXN0ZWRTZXRTdWJqZWN0RXhlY3V0b3JcIlxuaW1wb3J0IHsgQ2xvc3VyZVN1YmplY3RFeGVjdXRvciB9IGZyb20gXCIuL3RyZWUvQ2xvc3VyZVN1YmplY3RFeGVjdXRvclwiXG5pbXBvcnQgeyBNYXRlcmlhbGl6ZWRQYXRoU3ViamVjdEV4ZWN1dG9yIH0gZnJvbSBcIi4vdHJlZS9NYXRlcmlhbGl6ZWRQYXRoU3ViamVjdEV4ZWN1dG9yXCJcbmltcG9ydCB7IE9ybVV0aWxzIH0gZnJvbSBcIi4uL3V0aWwvT3JtVXRpbHNcIlxuaW1wb3J0IHsgVXBkYXRlUmVzdWx0IH0gZnJvbSBcIi4uL3F1ZXJ5LWJ1aWxkZXIvcmVzdWx0L1VwZGF0ZVJlc3VsdFwiXG5pbXBvcnQgeyBPYmplY3RVdGlscyB9IGZyb20gXCIuLi91dGlsL09iamVjdFV0aWxzXCJcbmltcG9ydCB7IEluc3RhbmNlQ2hlY2tlciB9IGZyb20gXCIuLi91dGlsL0luc3RhbmNlQ2hlY2tlclwiXG5cbi8qKlxuICogRXhlY3V0ZXMgYWxsIGRhdGFiYXNlIG9wZXJhdGlvbnMgKGluc2VydHMsIHVwZGF0ZWQsIGRlbGV0ZXMpIHRoYXQgbXVzdCBiZSBleGVjdXRlZFxuICogd2l0aCBnaXZlbiBwZXJzaXN0ZW5jZSBzdWJqZWN0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIFN1YmplY3RFeGVjdXRvciB7XG5cblxuXG5cbiAgICAvKipcbiAgICAgKiBJbmRpY2F0ZXMgaWYgZXhlY3V0b3IgaGFzIGFueSBvcGVyYXRpb25zIHRvIGV4ZWN1dGUgKGUuZy4gaGFzIGluc2VydCAvIHVwZGF0ZSAvIGRlbGV0ZSBvcGVyYXRpb25zIHRvIGJlIGV4ZWN1dGVkKS5cbiAgICAgKi9cbiAgICBoYXNFeGVjdXRhYmxlT3BlcmF0aW9uczogYm9vbGVhbiA9IGZhbHNlXG5cblxuXG5cblxuICAgIC8qKlxuICAgICAqIFF1ZXJ5UnVubmVyIHVzZWQgdG8gZXhlY3V0ZSBhbGwgcXVlcmllcyB3aXRoIGEgZ2l2ZW4gc3ViamVjdHMuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHF1ZXJ5UnVubmVyOiBRdWVyeVJ1bm5lclxuXG4gICAgLyoqXG4gICAgICogUGVyc2lzdGVuY2Ugb3B0aW9ucy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgb3B0aW9ucz86IFNhdmVPcHRpb25zICYgUmVtb3ZlT3B0aW9uc1xuXG4gICAgLyoqXG4gICAgICogQWxsIHN1YmplY3RzIHRoYXQgbmVlZHMgdG8gYmUgb3BlcmF0ZWQuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFsbFN1YmplY3RzOiBTdWJqZWN0W11cblxuICAgIC8qKlxuICAgICAqIFN1YmplY3RzIHRoYXQgbXVzdCBiZSBpbnNlcnRlZC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaW5zZXJ0U3ViamVjdHM6IFN1YmplY3RbXSA9IFtdXG5cbiAgICAvKipcbiAgICAgKiBTdWJqZWN0cyB0aGF0IG11c3QgYmUgdXBkYXRlZC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgdXBkYXRlU3ViamVjdHM6IFN1YmplY3RbXSA9IFtdXG5cbiAgICAvKipcbiAgICAgKiBTdWJqZWN0cyB0aGF0IG11c3QgYmUgcmVtb3ZlZC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVtb3ZlU3ViamVjdHM6IFN1YmplY3RbXSA9IFtdXG5cbiAgICAvKipcbiAgICAgKiBTdWJqZWN0cyB0aGF0IG11c3QgYmUgc29mdC1yZW1vdmVkLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzb2Z0UmVtb3ZlU3ViamVjdHM6IFN1YmplY3RbXSA9IFtdXG5cbiAgICAvKipcbiAgICAgKiBTdWJqZWN0cyB0aGF0IG11c3QgYmUgcmVjb3ZlcmVkLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWNvdmVyU3ViamVjdHM6IFN1YmplY3RbXSA9IFtdXG5cblxuXG5cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBxdWVyeVJ1bm5lcjogUXVlcnlSdW5uZXIsXG4gICAgICAgIHN1YmplY3RzOiBTdWJqZWN0W10sXG4gICAgICAgIG9wdGlvbnM/OiBTYXZlT3B0aW9ucyAmIFJlbW92ZU9wdGlvbnMsXG4gICAgKSB7XG4gICAgICAgIHRoaXMucXVlcnlSdW5uZXIgPSBxdWVyeVJ1bm5lclxuICAgICAgICB0aGlzLmFsbFN1YmplY3RzID0gc3ViamVjdHNcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9uc1xuICAgICAgICB0aGlzLnZhbGlkYXRlKClcbiAgICAgICAgdGhpcy5yZWNvbXB1dGUoKVxuICAgIH1cblxuXG5cblxuXG4gICAgLyoqXG4gICAgICogRXhlY3V0ZXMgYWxsIG9wZXJhdGlvbnMgb3ZlciBnaXZlbiBhcnJheSBvZiBzdWJqZWN0cy5cbiAgICAgKiBFeGVjdXRlcyBxdWVyaWVzIHVzaW5nIGdpdmVuIHF1ZXJ5IHJ1bm5lci5cbiAgICAgKi9cbiAgICBhc3luYyBleGVjdXRlKCk6IFByb21pc2U8dm9pZD4ge1xuXG5cblxuICAgICAgICBsZXQgYnJvYWRjYXN0ZXJSZXN1bHQ6IEJyb2FkY2FzdGVyUmVzdWx0IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkXG4gICAgICAgIGlmICghdGhpcy5vcHRpb25zIHx8IHRoaXMub3B0aW9ucy5saXN0ZW5lcnMgIT09IGZhbHNlKSB7XG5cbiAgICAgICAgICAgIGJyb2FkY2FzdGVyUmVzdWx0ID0gdGhpcy5icm9hZGNhc3RCZWZvcmVFdmVudHNGb3JBbGwoKVxuICAgICAgICAgICAgaWYgKGJyb2FkY2FzdGVyUmVzdWx0LnByb21pc2VzLmxlbmd0aCA+IDApXG4gICAgICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoYnJvYWRjYXN0ZXJSZXN1bHQucHJvbWlzZXMpXG5cbiAgICAgICAgfVxuXG5cblxuICAgICAgICBpZiAoYnJvYWRjYXN0ZXJSZXN1bHQgJiYgYnJvYWRjYXN0ZXJSZXN1bHQuY291bnQgPiAwKSB7XG5cbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0U3ViamVjdHMuZm9yRWFjaCgoc3ViamVjdCkgPT4gc3ViamVjdC5yZWNvbXB1dGUoKSlcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU3ViamVjdHMuZm9yRWFjaCgoc3ViamVjdCkgPT4gc3ViamVjdC5yZWNvbXB1dGUoKSlcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlU3ViamVjdHMuZm9yRWFjaCgoc3ViamVjdCkgPT4gc3ViamVjdC5yZWNvbXB1dGUoKSlcbiAgICAgICAgICAgIHRoaXMuc29mdFJlbW92ZVN1YmplY3RzLmZvckVhY2goKHN1YmplY3QpID0+IHN1YmplY3QucmVjb21wdXRlKCkpXG4gICAgICAgICAgICB0aGlzLnJlY292ZXJTdWJqZWN0cy5mb3JFYWNoKChzdWJqZWN0KSA9PiBzdWJqZWN0LnJlY29tcHV0ZSgpKVxuICAgICAgICAgICAgdGhpcy5yZWNvbXB1dGUoKVxuXG4gICAgICAgIH1cblxuXG5cblxuXG5cblxuICAgICAgICB0aGlzLmluc2VydFN1YmplY3RzID0gbmV3IFN1YmplY3RUb3BvbGlnaWNhbFNvcnRlcihcbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0U3ViamVjdHMsXG4gICAgICAgICkuc29ydChcImluc2VydFwiKVxuICAgICAgICBhd2FpdCB0aGlzLmV4ZWN1dGVJbnNlcnRPcGVyYXRpb25zKClcblxuXG5cblxuICAgICAgICB0aGlzLnVwZGF0ZVN1YmplY3RzID0gdGhpcy5hbGxTdWJqZWN0cy5maWx0ZXIoXG4gICAgICAgICAgICAoc3ViamVjdCkgPT4gc3ViamVjdC5tdXN0QmVVcGRhdGVkLFxuICAgICAgICApXG5cblxuXG4gICAgICAgIGF3YWl0IHRoaXMuZXhlY3V0ZVVwZGF0ZU9wZXJhdGlvbnMoKVxuXG5cblxuXG4gICAgICAgIHRoaXMucmVtb3ZlU3ViamVjdHMgPSBuZXcgU3ViamVjdFRvcG9saWdpY2FsU29ydGVyKFxuICAgICAgICAgICAgdGhpcy5yZW1vdmVTdWJqZWN0cyxcbiAgICAgICAgKS5zb3J0KFwiZGVsZXRlXCIpXG4gICAgICAgIGF3YWl0IHRoaXMuZXhlY3V0ZVJlbW92ZU9wZXJhdGlvbnMoKVxuXG5cblxuICAgICAgICB0aGlzLnNvZnRSZW1vdmVTdWJqZWN0cyA9IHRoaXMuYWxsU3ViamVjdHMuZmlsdGVyKFxuICAgICAgICAgICAgKHN1YmplY3QpID0+IHN1YmplY3QubXVzdEJlU29mdFJlbW92ZWQsXG4gICAgICAgIClcblxuXG4gICAgICAgIGF3YWl0IHRoaXMuZXhlY3V0ZVNvZnRSZW1vdmVPcGVyYXRpb25zKClcblxuXG4gICAgICAgIHRoaXMucmVjb3ZlclN1YmplY3RzID0gdGhpcy5hbGxTdWJqZWN0cy5maWx0ZXIoXG4gICAgICAgICAgICAoc3ViamVjdCkgPT4gc3ViamVjdC5tdXN0QmVSZWNvdmVyZWQsXG4gICAgICAgIClcblxuXG4gICAgICAgIGF3YWl0IHRoaXMuZXhlY3V0ZVJlY292ZXJPcGVyYXRpb25zKClcblxuXG5cbiAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVTcGVjaWFsQ29sdW1uc0luUGVyc2lzdGVkRW50aXRpZXMoKVxuXG5cblxuICAgICAgICBpZiAoIXRoaXMub3B0aW9ucyB8fCB0aGlzLm9wdGlvbnMubGlzdGVuZXJzICE9PSBmYWxzZSkge1xuXG4gICAgICAgICAgICBicm9hZGNhc3RlclJlc3VsdCA9IHRoaXMuYnJvYWRjYXN0QWZ0ZXJFdmVudHNGb3JBbGwoKVxuICAgICAgICAgICAgaWYgKGJyb2FkY2FzdGVyUmVzdWx0LnByb21pc2VzLmxlbmd0aCA+IDApXG4gICAgICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoYnJvYWRjYXN0ZXJSZXN1bHQucHJvbWlzZXMpXG5cbiAgICAgICAgfVxuXG4gICAgfVxuXG5cblxuXG5cbiAgICAvKipcbiAgICAgKiBWYWxpZGF0ZXMgYWxsIGdpdmVuIHN1YmplY3RzLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCB2YWxpZGF0ZSgpIHtcbiAgICAgICAgdGhpcy5hbGxTdWJqZWN0cy5mb3JFYWNoKChzdWJqZWN0KSA9PiB7XG4gICAgICAgICAgICBpZiAoc3ViamVjdC5tdXN0QmVVcGRhdGVkICYmIHN1YmplY3QubXVzdEJlUmVtb3ZlZClcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU3ViamVjdFJlbW92ZWRBbmRVcGRhdGVkRXJyb3Ioc3ViamVjdClcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyBlbnRpdHkgcmUtY29tcHV0YXRpb25zIC0gZmluZHMgY2hhbmdlZCBjb2x1bW5zLCByZS1idWlsZHMgaW5zZXJ0L3VwZGF0ZS9yZW1vdmUgc3ViamVjdHMuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlY29tcHV0ZSgpOiB2b2lkIHtcbiAgICAgICAgbmV3IFN1YmplY3RDaGFuZ2VkQ29sdW1uc0NvbXB1dGVyKCkuY29tcHV0ZSh0aGlzLmFsbFN1YmplY3RzKVxuICAgICAgICB0aGlzLmluc2VydFN1YmplY3RzID0gdGhpcy5hbGxTdWJqZWN0cy5maWx0ZXIoXG4gICAgICAgICAgICAoc3ViamVjdCkgPT4gc3ViamVjdC5tdXN0QmVJbnNlcnRlZCxcbiAgICAgICAgKVxuICAgICAgICB0aGlzLnVwZGF0ZVN1YmplY3RzID0gdGhpcy5hbGxTdWJqZWN0cy5maWx0ZXIoXG4gICAgICAgICAgICAoc3ViamVjdCkgPT4gc3ViamVjdC5tdXN0QmVVcGRhdGVkLFxuICAgICAgICApXG4gICAgICAgIHRoaXMucmVtb3ZlU3ViamVjdHMgPSB0aGlzLmFsbFN1YmplY3RzLmZpbHRlcihcbiAgICAgICAgICAgIChzdWJqZWN0KSA9PiBzdWJqZWN0Lm11c3RCZVJlbW92ZWQsXG4gICAgICAgIClcbiAgICAgICAgdGhpcy5zb2Z0UmVtb3ZlU3ViamVjdHMgPSB0aGlzLmFsbFN1YmplY3RzLmZpbHRlcihcbiAgICAgICAgICAgIChzdWJqZWN0KSA9PiBzdWJqZWN0Lm11c3RCZVNvZnRSZW1vdmVkLFxuICAgICAgICApXG4gICAgICAgIHRoaXMucmVjb3ZlclN1YmplY3RzID0gdGhpcy5hbGxTdWJqZWN0cy5maWx0ZXIoXG4gICAgICAgICAgICAoc3ViamVjdCkgPT4gc3ViamVjdC5tdXN0QmVSZWNvdmVyZWQsXG4gICAgICAgIClcbiAgICAgICAgdGhpcy5oYXNFeGVjdXRhYmxlT3BlcmF0aW9ucyA9XG4gICAgICAgICAgICB0aGlzLmluc2VydFN1YmplY3RzLmxlbmd0aCA+IDAgfHxcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU3ViamVjdHMubGVuZ3RoID4gMCB8fFxuICAgICAgICAgICAgdGhpcy5yZW1vdmVTdWJqZWN0cy5sZW5ndGggPiAwIHx8XG4gICAgICAgICAgICB0aGlzLnNvZnRSZW1vdmVTdWJqZWN0cy5sZW5ndGggPiAwIHx8XG4gICAgICAgICAgICB0aGlzLnJlY292ZXJTdWJqZWN0cy5sZW5ndGggPiAwXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQnJvYWRjYXN0cyBcIkJFRk9SRV9JTlNFUlRcIiwgXCJCRUZPUkVfVVBEQVRFXCIsIFwiQkVGT1JFX1JFTU9WRVwiLCBcIkJFRk9SRV9TT0ZUX1JFTU9WRVwiLCBcIkJFRk9SRV9SRUNPVkVSXCIgZXZlbnRzIGZvciBhbGwgZ2l2ZW4gc3ViamVjdHMuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGJyb2FkY2FzdEJlZm9yZUV2ZW50c0ZvckFsbCgpOiBCcm9hZGNhc3RlclJlc3VsdCB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBCcm9hZGNhc3RlclJlc3VsdCgpXG4gICAgICAgIGlmICh0aGlzLmluc2VydFN1YmplY3RzLmxlbmd0aClcbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0U3ViamVjdHMuZm9yRWFjaCgoc3ViamVjdCkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5UnVubmVyLmJyb2FkY2FzdGVyLmJyb2FkY2FzdEJlZm9yZUluc2VydEV2ZW50KFxuICAgICAgICAgICAgICAgICAgICByZXN1bHQsXG4gICAgICAgICAgICAgICAgICAgIHN1YmplY3QubWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgIHN1YmplY3QuZW50aXR5ISxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKVxuICAgICAgICBpZiAodGhpcy51cGRhdGVTdWJqZWN0cy5sZW5ndGgpXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVN1YmplY3RzLmZvckVhY2goKHN1YmplY3QpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5xdWVyeVJ1bm5lci5icm9hZGNhc3Rlci5icm9hZGNhc3RCZWZvcmVVcGRhdGVFdmVudChcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LFxuICAgICAgICAgICAgICAgICAgICBzdWJqZWN0Lm1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICBzdWJqZWN0LmVudGl0eSEsXG4gICAgICAgICAgICAgICAgICAgIHN1YmplY3QuZGF0YWJhc2VFbnRpdHksXG4gICAgICAgICAgICAgICAgICAgIHN1YmplY3QuZGlmZkNvbHVtbnMsXG4gICAgICAgICAgICAgICAgICAgIHN1YmplY3QuZGlmZlJlbGF0aW9ucyxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKVxuICAgICAgICBpZiAodGhpcy5yZW1vdmVTdWJqZWN0cy5sZW5ndGgpXG4gICAgICAgICAgICB0aGlzLnJlbW92ZVN1YmplY3RzLmZvckVhY2goKHN1YmplY3QpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5xdWVyeVJ1bm5lci5icm9hZGNhc3Rlci5icm9hZGNhc3RCZWZvcmVSZW1vdmVFdmVudChcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LFxuICAgICAgICAgICAgICAgICAgICBzdWJqZWN0Lm1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICBzdWJqZWN0LmVudGl0eSEsXG4gICAgICAgICAgICAgICAgICAgIHN1YmplY3QuZGF0YWJhc2VFbnRpdHksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgaWYgKHRoaXMuc29mdFJlbW92ZVN1YmplY3RzLmxlbmd0aClcbiAgICAgICAgICAgIHRoaXMuc29mdFJlbW92ZVN1YmplY3RzLmZvckVhY2goKHN1YmplY3QpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5xdWVyeVJ1bm5lci5icm9hZGNhc3Rlci5icm9hZGNhc3RCZWZvcmVTb2Z0UmVtb3ZlRXZlbnQoXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCxcbiAgICAgICAgICAgICAgICAgICAgc3ViamVjdC5tZXRhZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgc3ViamVjdC5lbnRpdHkhLFxuICAgICAgICAgICAgICAgICAgICBzdWJqZWN0LmRhdGFiYXNlRW50aXR5LFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApXG4gICAgICAgIGlmICh0aGlzLnJlY292ZXJTdWJqZWN0cy5sZW5ndGgpXG4gICAgICAgICAgICB0aGlzLnJlY292ZXJTdWJqZWN0cy5mb3JFYWNoKChzdWJqZWN0KSA9PlxuICAgICAgICAgICAgICAgIHRoaXMucXVlcnlSdW5uZXIuYnJvYWRjYXN0ZXIuYnJvYWRjYXN0QmVmb3JlUmVjb3ZlckV2ZW50KFxuICAgICAgICAgICAgICAgICAgICByZXN1bHQsXG4gICAgICAgICAgICAgICAgICAgIHN1YmplY3QubWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgIHN1YmplY3QuZW50aXR5ISxcbiAgICAgICAgICAgICAgICAgICAgc3ViamVjdC5kYXRhYmFzZUVudGl0eSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKVxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQnJvYWRjYXN0cyBcIkFGVEVSX0lOU0VSVFwiLCBcIkFGVEVSX1VQREFURVwiLCBcIkFGVEVSX1JFTU9WRVwiLCBcIkFGVEVSX1NPRlRfUkVNT1ZFXCIsIFwiQUZURVJfUkVDT1ZFUlwiIGV2ZW50cyBmb3IgYWxsIGdpdmVuIHN1YmplY3RzLlxuICAgICAqIFJldHVybnMgdm9pZCBpZiB0aGVyZSB3YXNuJ3QgYW55IGxpc3RlbmVyIG9yIHN1YnNjcmliZXIgZXhlY3V0ZWQuXG4gICAgICogTm90ZTogdGhpcyBtZXRob2QgaGFzIGEgcGVyZm9ybWFuY2Utb3B0aW1pemVkIGNvZGUgb3JnYW5pemF0aW9uLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBicm9hZGNhc3RBZnRlckV2ZW50c0ZvckFsbCgpOiBCcm9hZGNhc3RlclJlc3VsdCB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBCcm9hZGNhc3RlclJlc3VsdCgpXG4gICAgICAgIGlmICh0aGlzLmluc2VydFN1YmplY3RzLmxlbmd0aClcbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0U3ViamVjdHMuZm9yRWFjaCgoc3ViamVjdCkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5UnVubmVyLmJyb2FkY2FzdGVyLmJyb2FkY2FzdEFmdGVySW5zZXJ0RXZlbnQoXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCxcbiAgICAgICAgICAgICAgICAgICAgc3ViamVjdC5tZXRhZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgc3ViamVjdC5lbnRpdHkhLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApXG4gICAgICAgIGlmICh0aGlzLnVwZGF0ZVN1YmplY3RzLmxlbmd0aClcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU3ViamVjdHMuZm9yRWFjaCgoc3ViamVjdCkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5UnVubmVyLmJyb2FkY2FzdGVyLmJyb2FkY2FzdEFmdGVyVXBkYXRlRXZlbnQoXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCxcbiAgICAgICAgICAgICAgICAgICAgc3ViamVjdC5tZXRhZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgc3ViamVjdC5lbnRpdHkhLFxuICAgICAgICAgICAgICAgICAgICBzdWJqZWN0LmRhdGFiYXNlRW50aXR5LFxuICAgICAgICAgICAgICAgICAgICBzdWJqZWN0LmRpZmZDb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICBzdWJqZWN0LmRpZmZSZWxhdGlvbnMsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgaWYgKHRoaXMucmVtb3ZlU3ViamVjdHMubGVuZ3RoKVxuICAgICAgICAgICAgdGhpcy5yZW1vdmVTdWJqZWN0cy5mb3JFYWNoKChzdWJqZWN0KSA9PlxuICAgICAgICAgICAgICAgIHRoaXMucXVlcnlSdW5uZXIuYnJvYWRjYXN0ZXIuYnJvYWRjYXN0QWZ0ZXJSZW1vdmVFdmVudChcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LFxuICAgICAgICAgICAgICAgICAgICBzdWJqZWN0Lm1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICBzdWJqZWN0LmVudGl0eSEsXG4gICAgICAgICAgICAgICAgICAgIHN1YmplY3QuZGF0YWJhc2VFbnRpdHksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgaWYgKHRoaXMuc29mdFJlbW92ZVN1YmplY3RzLmxlbmd0aClcbiAgICAgICAgICAgIHRoaXMuc29mdFJlbW92ZVN1YmplY3RzLmZvckVhY2goKHN1YmplY3QpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5xdWVyeVJ1bm5lci5icm9hZGNhc3Rlci5icm9hZGNhc3RBZnRlclNvZnRSZW1vdmVFdmVudChcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LFxuICAgICAgICAgICAgICAgICAgICBzdWJqZWN0Lm1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICBzdWJqZWN0LmVudGl0eSEsXG4gICAgICAgICAgICAgICAgICAgIHN1YmplY3QuZGF0YWJhc2VFbnRpdHksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgaWYgKHRoaXMucmVjb3ZlclN1YmplY3RzLmxlbmd0aClcbiAgICAgICAgICAgIHRoaXMucmVjb3ZlclN1YmplY3RzLmZvckVhY2goKHN1YmplY3QpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5xdWVyeVJ1bm5lci5icm9hZGNhc3Rlci5icm9hZGNhc3RBZnRlclJlY292ZXJFdmVudChcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LFxuICAgICAgICAgICAgICAgICAgICBzdWJqZWN0Lm1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICBzdWJqZWN0LmVudGl0eSEsXG4gICAgICAgICAgICAgICAgICAgIHN1YmplY3QuZGF0YWJhc2VFbnRpdHksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIGluc2VydCBvcGVyYXRpb25zLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhc3luYyBleGVjdXRlSW5zZXJ0T3BlcmF0aW9ucygpOiBQcm9taXNlPHZvaWQ+IHtcblxuICAgICAgICBjb25zdCBbZ3JvdXBlZEluc2VydFN1YmplY3RzLCBncm91cGVkSW5zZXJ0U3ViamVjdEtleXNdID1cbiAgICAgICAgICAgIHRoaXMuZ3JvdXBCdWxrU3ViamVjdHModGhpcy5pbnNlcnRTdWJqZWN0cywgXCJpbnNlcnRcIilcblxuXG4gICAgICAgIGZvciAoY29uc3QgZ3JvdXBOYW1lIG9mIGdyb3VwZWRJbnNlcnRTdWJqZWN0S2V5cykge1xuICAgICAgICAgICAgY29uc3Qgc3ViamVjdHMgPSBncm91cGVkSW5zZXJ0U3ViamVjdHNbZ3JvdXBOYW1lXVxuXG5cblxuICAgICAgICAgICAgY29uc3QgYnVsa0luc2VydE1hcHM6IE9iamVjdExpdGVyYWxbXSA9IFtdXG4gICAgICAgICAgICBjb25zdCBidWxrSW5zZXJ0U3ViamVjdHM6IFN1YmplY3RbXSA9IFtdXG4gICAgICAgICAgICBjb25zdCBzaW5nbGVJbnNlcnRTdWJqZWN0czogU3ViamVjdFtdID0gW11cbiAgICAgICAgICAgIGlmICh0aGlzLnF1ZXJ5UnVubmVyLmNvbm5lY3Rpb24uZHJpdmVyLm9wdGlvbnMudHlwZSA9PT0gXCJtb25nb2RiXCIpIHtcbiAgICAgICAgICAgICAgICBzdWJqZWN0cy5mb3JFYWNoKChzdWJqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdWJqZWN0Lm1ldGFkYXRhLmNyZWF0ZURhdGVDb2x1bW4gJiYgc3ViamVjdC5lbnRpdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YmplY3QuZW50aXR5W1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmplY3QubWV0YWRhdGEuY3JlYXRlRGF0ZUNvbHVtbi5kYXRhYmFzZU5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgIF0gPSBuZXcgRGF0ZSgpXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoc3ViamVjdC5tZXRhZGF0YS51cGRhdGVEYXRlQ29sdW1uICYmIHN1YmplY3QuZW50aXR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJqZWN0LmVudGl0eVtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJqZWN0Lm1ldGFkYXRhLnVwZGF0ZURhdGVDb2x1bW4uZGF0YWJhc2VOYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICBdID0gbmV3IERhdGUoKVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgc3ViamVjdC5jcmVhdGVWYWx1ZVNldEFuZFBvcENoYW5nZU1hcCgpXG5cbiAgICAgICAgICAgICAgICAgICAgYnVsa0luc2VydFN1YmplY3RzLnB1c2goc3ViamVjdClcbiAgICAgICAgICAgICAgICAgICAgYnVsa0luc2VydE1hcHMucHVzaChzdWJqZWN0LmVudGl0eSEpXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5xdWVyeVJ1bm5lci5jb25uZWN0aW9uLmRyaXZlci5vcHRpb25zLnR5cGUgPT09IFwib3JhY2xlXCJcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHN1YmplY3RzLmZvckVhY2goKHN1YmplY3QpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlSW5zZXJ0U3ViamVjdHMucHVzaChzdWJqZWN0KVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHN1YmplY3RzLmZvckVhY2goKHN1YmplY3QpID0+IHtcblxuXG5cblxuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJqZWN0LmNoYW5nZU1hcHMubGVuZ3RoID09PSAwIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJqZWN0Lm1ldGFkYXRhLnRyZWVUeXBlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5UnVubmVyLmNvbm5lY3Rpb24uZHJpdmVyLm9wdGlvbnMudHlwZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm9yYWNsZVwiIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5UnVubmVyLmNvbm5lY3Rpb24uZHJpdmVyLm9wdGlvbnMudHlwZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInNhcFwiXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlSW5zZXJ0U3ViamVjdHMucHVzaChzdWJqZWN0KVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnVsa0luc2VydFN1YmplY3RzLnB1c2goc3ViamVjdClcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1bGtJbnNlcnRNYXBzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViamVjdC5jcmVhdGVWYWx1ZVNldEFuZFBvcENoYW5nZU1hcCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICBpZiAoXG4vKiAqL1xuLyogKi9cbiAgXG5cbi8qICovXG4vKiAqL1xuICBcbiAgICAgICAgICAgICAgICBmYWxzZVxuXG4gICAgICAgICAgICApIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgICAgICAgICAgfSBlbHNlIHtcblxuXG5cblxuICAgICAgICAgICAgICAgIGlmIChidWxrSW5zZXJ0TWFwcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGluc2VydFJlc3VsdCA9IGF3YWl0IHRoaXMucXVlcnlSdW5uZXIubWFuYWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgLmNyZWF0ZVF1ZXJ5QnVpbGRlcigpXG4gICAgICAgICAgICAgICAgICAgICAgICAuaW5zZXJ0KClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5pbnRvKHN1YmplY3RzWzBdLm1ldGFkYXRhLnRhcmdldClcbiAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZXMoYnVsa0luc2VydE1hcHMpXG4gICAgICAgICAgICAgICAgICAgICAgICAudXBkYXRlRW50aXR5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMucmVsb2FkID09PSBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jYWxsTGlzdGVuZXJzKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmV4ZWN1dGUoKVxuXG4gICAgICAgICAgICAgICAgICAgIGJ1bGtJbnNlcnRTdWJqZWN0cy5mb3JFYWNoKChzdWJqZWN0LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3ViamVjdC5pZGVudGlmaWVyID0gaW5zZXJ0UmVzdWx0LmlkZW50aWZpZXJzW2luZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgc3ViamVjdC5nZW5lcmF0ZWRNYXAgPSBpbnNlcnRSZXN1bHQuZ2VuZXJhdGVkTWFwc1tpbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YmplY3QuaW5zZXJ0ZWRWYWx1ZVNldCA9IGJ1bGtJbnNlcnRNYXBzW2luZGV4XVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICAgICAgaWYgKHNpbmdsZUluc2VydFN1YmplY3RzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBzdWJqZWN0IG9mIHNpbmdsZUluc2VydFN1YmplY3RzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJqZWN0Lmluc2VydGVkVmFsdWVTZXQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmplY3QuY3JlYXRlVmFsdWVTZXRBbmRQb3BDaGFuZ2VNYXAoKSAvLyBpbXBvcnRhbnQgdG8gaGF2ZSBiZWNhdXNlIHF1ZXJ5IGJ1aWxkZXIgc2V0cyBpbnNlcnRlZCB2YWx1ZXMgaW50byBpdFxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdWJqZWN0Lm1ldGFkYXRhLnRyZWVUeXBlID09PSBcIm5lc3RlZC1zZXRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBuZXcgTmVzdGVkU2V0U3ViamVjdEV4ZWN1dG9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5UnVubmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkuaW5zZXJ0KHN1YmplY3QpXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucXVlcnlSdW5uZXIubWFuYWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jcmVhdGVRdWVyeUJ1aWxkZXIoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5pbnNlcnQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5pbnRvKHN1YmplY3QubWV0YWRhdGEudGFyZ2V0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZXMoc3ViamVjdC5pbnNlcnRlZFZhbHVlU2V0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC51cGRhdGVFbnRpdHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMucmVsb2FkID09PSBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2FsbExpc3RlbmVycyhmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZXhlY3V0ZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oKGluc2VydFJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJqZWN0LmlkZW50aWZpZXIgPSBpbnNlcnRSZXN1bHQuaWRlbnRpZmllcnNbMF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViamVjdC5nZW5lcmF0ZWRNYXAgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0UmVzdWx0LmdlbmVyYXRlZE1hcHNbMF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdWJqZWN0Lm1ldGFkYXRhLnRyZWVUeXBlID09PSBcImNsb3N1cmUtdGFibGVcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IG5ldyBDbG9zdXJlU3ViamVjdEV4ZWN1dG9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5UnVubmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkuaW5zZXJ0KHN1YmplY3QpXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmplY3QubWV0YWRhdGEudHJlZVR5cGUgPT09IFwibWF0ZXJpYWxpemVkLXBhdGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgbmV3IE1hdGVyaWFsaXplZFBhdGhTdWJqZWN0RXhlY3V0b3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVlcnlSdW5uZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKS5pbnNlcnQoc3ViamVjdClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3ViamVjdHMuZm9yRWFjaCgoc3ViamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdWJqZWN0LmdlbmVyYXRlZE1hcCkge1xuICAgICAgICAgICAgICAgICAgICBzdWJqZWN0Lm1ldGFkYXRhLmNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNvbHVtbi5nZXRFbnRpdHlWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJqZWN0LmdlbmVyYXRlZE1hcCEsXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXBhcmVkVmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5UnVubmVyLmNvbm5lY3Rpb24uZHJpdmVyLnByZXBhcmVIeWRyYXRlZFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4uc2V0RW50aXR5VmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmplY3QuZ2VuZXJhdGVkTWFwISxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlcGFyZWRWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgYWxsIGdpdmVuIHN1YmplY3RzIGluIHRoZSBkYXRhYmFzZS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYXN5bmMgZXhlY3V0ZVVwZGF0ZU9wZXJhdGlvbnMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZVN1YmplY3QgPSBhc3luYyAoc3ViamVjdDogU3ViamVjdCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFzdWJqZWN0LmlkZW50aWZpZXIpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFN1YmplY3RXaXRob3V0SWRlbnRpZmllckVycm9yKHN1YmplY3QpXG5cblxuICAgICAgICAgICAgaWYgKFxuLyogKi9cbi8qICovXG4gIFxuXG4vKiAqL1xuLyogKi9cbiAgXG4gICAgICAgICAgICAgICAgZmFsc2VcblxuICAgICAgICAgICAgKSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVNYXA6IE9iamVjdExpdGVyYWwgPVxuICAgICAgICAgICAgICAgICAgICBzdWJqZWN0LmNyZWF0ZVZhbHVlU2V0QW5kUG9wQ2hhbmdlTWFwKClcblxuXG4gICAgICAgICAgICAgICAgc3dpdGNoIChzdWJqZWN0Lm1ldGFkYXRhLnRyZWVUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJuZXN0ZWQtc2V0XCI6XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBuZXcgTmVzdGVkU2V0U3ViamVjdEV4ZWN1dG9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVlcnlSdW5uZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICApLnVwZGF0ZShzdWJqZWN0KVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY2xvc3VyZS10YWJsZVwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgbmV3IENsb3N1cmVTdWJqZWN0RXhlY3V0b3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWVyeVJ1bm5lcixcbiAgICAgICAgICAgICAgICAgICAgICAgICkudXBkYXRlKHN1YmplY3QpXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJtYXRlcmlhbGl6ZWQtcGF0aFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgbmV3IE1hdGVyaWFsaXplZFBhdGhTdWJqZWN0RXhlY3V0b3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWVyeVJ1bm5lcixcbiAgICAgICAgICAgICAgICAgICAgICAgICkudXBkYXRlKHN1YmplY3QpXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH1cblxuXG5cblxuXG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlUXVlcnlCdWlsZGVyID0gdGhpcy5xdWVyeVJ1bm5lci5tYW5hZ2VyXG4gICAgICAgICAgICAgICAgICAgIC5jcmVhdGVRdWVyeUJ1aWxkZXIoKVxuICAgICAgICAgICAgICAgICAgICAudXBkYXRlKHN1YmplY3QubWV0YWRhdGEudGFyZ2V0KVxuICAgICAgICAgICAgICAgICAgICAuc2V0KHVwZGF0ZU1hcClcbiAgICAgICAgICAgICAgICAgICAgLnVwZGF0ZUVudGl0eShcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMucmVsb2FkID09PSBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgLmNhbGxMaXN0ZW5lcnMoZmFsc2UpXG5cbiAgICAgICAgICAgICAgICBpZiAoc3ViamVjdC5lbnRpdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlUXVlcnlCdWlsZGVyLndoZXJlRW50aXR5KHN1YmplY3QuaWRlbnRpZmllcilcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZVF1ZXJ5QnVpbGRlci53aGVyZShzdWJqZWN0LmlkZW50aWZpZXIpXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlUmVzdWx0ID0gYXdhaXQgdXBkYXRlUXVlcnlCdWlsZGVyLmV4ZWN1dGUoKVxuICAgICAgICAgICAgICAgIGxldCB1cGRhdGVHZW5lcmF0ZWRNYXAgPSB1cGRhdGVSZXN1bHQuZ2VuZXJhdGVkTWFwc1swXVxuICAgICAgICAgICAgICAgIGlmICh1cGRhdGVHZW5lcmF0ZWRNYXApIHtcbiAgICAgICAgICAgICAgICAgICAgc3ViamVjdC5tZXRhZGF0YS5jb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBjb2x1bW4uZ2V0RW50aXR5VmFsdWUodXBkYXRlR2VuZXJhdGVkTWFwISlcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJlcGFyZWRWYWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVlcnlSdW5uZXIuY29ubmVjdGlvbi5kcml2ZXIucHJlcGFyZUh5ZHJhdGVkVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbi5zZXRFbnRpdHlWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlR2VuZXJhdGVkTWFwISxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlcGFyZWRWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIGlmICghc3ViamVjdC5nZW5lcmF0ZWRNYXApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YmplY3QuZ2VuZXJhdGVkTWFwID0ge31cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHN1YmplY3QuZ2VuZXJhdGVkTWFwLCB1cGRhdGVHZW5lcmF0ZWRNYXApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cblxuXG4gICAgICAgIGNvbnN0IG5lc3RlZFNldFN1YmplY3RzOiBTdWJqZWN0W10gPSBbXVxuICAgICAgICBjb25zdCByZW1haW5pbmdTdWJqZWN0czogU3ViamVjdFtdID0gW11cblxuICAgICAgICBmb3IgKGNvbnN0IHN1YmplY3Qgb2YgdGhpcy51cGRhdGVTdWJqZWN0cykge1xuICAgICAgICAgICAgaWYgKHN1YmplY3QubWV0YWRhdGEudHJlZVR5cGUgPT09IFwibmVzdGVkLXNldFwiKSB7XG4gICAgICAgICAgICAgICAgbmVzdGVkU2V0U3ViamVjdHMucHVzaChzdWJqZWN0KVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZW1haW5pbmdTdWJqZWN0cy5wdXNoKHN1YmplY3QpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuXG4gICAgICAgIGNvbnN0IG5lc3RlZFNldFByb21pc2UgPSBuZXcgUHJvbWlzZTx2b2lkPihhc3luYyAob2ssIGZhaWwpID0+IHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgc3ViamVjdCBvZiBuZXN0ZWRTZXRTdWJqZWN0cykge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHVwZGF0ZVN1YmplY3Qoc3ViamVjdClcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBmYWlsKGVycm9yKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9rKClcbiAgICAgICAgfSlcblxuXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgIC4uLnJlbWFpbmluZ1N1YmplY3RzLm1hcCh1cGRhdGVTdWJqZWN0KSxcbiAgICAgICAgICAgIG5lc3RlZFNldFByb21pc2UsXG4gICAgICAgIF0pXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwgZ2l2ZW4gc3ViamVjdHMgZnJvbSB0aGUgZGF0YWJhc2UuXG4gICAgICpcbiAgICAgKiB0b2RvOiB3ZSBuZWVkIHRvIGFwcGx5IHRvcG9sb2dpY2FsIHNvcnQgaGVyZSBhcyB3ZWxsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFzeW5jIGV4ZWN1dGVSZW1vdmVPcGVyYXRpb25zKCk6IFByb21pc2U8dm9pZD4ge1xuXG4gICAgICAgIGNvbnN0IFtncm91cGVkUmVtb3ZlU3ViamVjdHMsIGdyb3VwZWRSZW1vdmVTdWJqZWN0S2V5c10gPVxuICAgICAgICAgICAgdGhpcy5ncm91cEJ1bGtTdWJqZWN0cyh0aGlzLnJlbW92ZVN1YmplY3RzLCBcImRlbGV0ZVwiKVxuXG4gICAgICAgIGZvciAoY29uc3QgZ3JvdXBOYW1lIG9mIGdyb3VwZWRSZW1vdmVTdWJqZWN0S2V5cykge1xuICAgICAgICAgICAgY29uc3Qgc3ViamVjdHMgPSBncm91cGVkUmVtb3ZlU3ViamVjdHNbZ3JvdXBOYW1lXVxuICAgICAgICAgICAgY29uc3QgZGVsZXRlTWFwcyA9IHN1YmplY3RzLm1hcCgoc3ViamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghc3ViamVjdC5pZGVudGlmaWVyKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU3ViamVjdFdpdGhvdXRJZGVudGlmaWVyRXJyb3Ioc3ViamVjdClcblxuICAgICAgICAgICAgICAgIHJldHVybiBzdWJqZWN0LmlkZW50aWZpZXJcbiAgICAgICAgICAgIH0pXG5cblxuICAgICAgICAgICAgaWYgKFxuLyogKi9cbi8qICovXG4gIFxuXG4vKiAqL1xuLyogKi9cbiAgXG4gICAgICAgICAgICAgICAgZmFsc2VcblxuICAgICAgICAgICAgKSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgIHN3aXRjaCAoc3ViamVjdHNbMF0ubWV0YWRhdGEudHJlZVR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIm5lc3RlZC1zZXRcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IG5ldyBOZXN0ZWRTZXRTdWJqZWN0RXhlY3V0b3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWVyeVJ1bm5lcixcbiAgICAgICAgICAgICAgICAgICAgICAgICkucmVtb3ZlKHN1YmplY3RzKVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY2xvc3VyZS10YWJsZVwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgbmV3IENsb3N1cmVTdWJqZWN0RXhlY3V0b3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWVyeVJ1bm5lcixcbiAgICAgICAgICAgICAgICAgICAgICAgICkucmVtb3ZlKHN1YmplY3RzKVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG5cblxuXG5cblxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucXVlcnlSdW5uZXIubWFuYWdlclxuICAgICAgICAgICAgICAgICAgICAuY3JlYXRlUXVlcnlCdWlsZGVyKClcbiAgICAgICAgICAgICAgICAgICAgLmRlbGV0ZSgpXG4gICAgICAgICAgICAgICAgICAgIC5mcm9tKHN1YmplY3RzWzBdLm1ldGFkYXRhLnRhcmdldClcbiAgICAgICAgICAgICAgICAgICAgLndoZXJlKGRlbGV0ZU1hcHMpXG4gICAgICAgICAgICAgICAgICAgIC5jYWxsTGlzdGVuZXJzKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAuZXhlY3V0ZSgpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNsb25lTW9uZ29TdWJqZWN0RW50aXR5KHN1YmplY3Q6IFN1YmplY3QpOiBPYmplY3RMaXRlcmFsIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0OiBPYmplY3RMaXRlcmFsID0ge31cblxuICAgICAgICBpZiAoc3ViamVjdC5lbnRpdHkpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIHN1YmplY3QubWV0YWRhdGEuY29sdW1ucykge1xuICAgICAgICAgICAgICAgIE9ybVV0aWxzLm1lcmdlRGVlcChcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICBjb2x1bW4uZ2V0RW50aXR5VmFsdWVNYXAoc3ViamVjdC5lbnRpdHkpLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0YXJnZXRcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTb2Z0LXJlbW92ZXMgYWxsIGdpdmVuIHN1YmplY3RzIGluIHRoZSBkYXRhYmFzZS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYXN5bmMgZXhlY3V0ZVNvZnRSZW1vdmVPcGVyYXRpb25zKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgIHRoaXMuc29mdFJlbW92ZVN1YmplY3RzLm1hcChhc3luYyAoc3ViamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghc3ViamVjdC5pZGVudGlmaWVyKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU3ViamVjdFdpdGhvdXRJZGVudGlmaWVyRXJyb3Ioc3ViamVjdClcblxuICAgICAgICAgICAgICAgIGxldCB1cGRhdGVSZXN1bHQ6IFVwZGF0ZVJlc3VsdFxuXG5cbiAgICAgICAgICAgICAgICBpZiAoXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuLyogKi9cbi8qICovXG4gIFxuICAgICAgICAgICAgICAgICAgICBmYWxzZVxuXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnRpYWxFbnRpdHkgPSB0aGlzLmNsb25lTW9uZ29TdWJqZWN0RW50aXR5KHN1YmplY3QpXG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YmplY3QubWV0YWRhdGEub2JqZWN0SWRDb2x1bW4gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YmplY3QubWV0YWRhdGEub2JqZWN0SWRDb2x1bW4ucHJvcGVydHlOYW1lXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHBhcnRpYWxFbnRpdHlbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViamVjdC5tZXRhZGF0YS5vYmplY3RJZENvbHVtbi5wcm9wZXJ0eU5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YmplY3QubWV0YWRhdGEuY3JlYXRlRGF0ZUNvbHVtbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgc3ViamVjdC5tZXRhZGF0YS5jcmVhdGVEYXRlQ29sdW1uLnByb3BlcnR5TmFtZVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBwYXJ0aWFsRW50aXR5W1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmplY3QubWV0YWRhdGEuY3JlYXRlRGF0ZUNvbHVtbi5wcm9wZXJ0eU5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YmplY3QubWV0YWRhdGEudXBkYXRlRGF0ZUNvbHVtbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgc3ViamVjdC5tZXRhZGF0YS51cGRhdGVEYXRlQ29sdW1uLnByb3BlcnR5TmFtZVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpYWxFbnRpdHlbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViamVjdC5tZXRhZGF0YS51cGRhdGVEYXRlQ29sdW1uLnByb3BlcnR5TmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgXSA9IG5ldyBEYXRlKClcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YmplY3QubWV0YWRhdGEuZGVsZXRlRGF0ZUNvbHVtbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgc3ViamVjdC5tZXRhZGF0YS5kZWxldGVEYXRlQ29sdW1uLnByb3BlcnR5TmFtZVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpYWxFbnRpdHlbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViamVjdC5tZXRhZGF0YS5kZWxldGVEYXRlQ29sdW1uLnByb3BlcnR5TmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgXSA9IG5ldyBEYXRlKClcbiAgICAgICAgICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IG1hbmFnZXJcbi8qICovXG4vKiAqL1xuICBcblxuICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyID0gdGhpcy5xdWVyeVJ1bm5lci5tYW5hZ2VyXG5cblxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVSZXN1bHQgPSBhd2FpdCBtYW5hZ2VyLnVwZGF0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YmplY3QubWV0YWRhdGEudGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgc3ViamVjdC5pZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFydGlhbEVudGl0eSxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cblxuXG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc29mdERlbGV0ZVF1ZXJ5QnVpbGRlciA9IHRoaXMucXVlcnlSdW5uZXIubWFuYWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgLmNyZWF0ZVF1ZXJ5QnVpbGRlcigpXG4gICAgICAgICAgICAgICAgICAgICAgICAuc29mdERlbGV0ZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAuZnJvbShzdWJqZWN0Lm1ldGFkYXRhLnRhcmdldClcbiAgICAgICAgICAgICAgICAgICAgICAgIC51cGRhdGVFbnRpdHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5yZWxvYWQgPT09IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmNhbGxMaXN0ZW5lcnMoZmFsc2UpXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHN1YmplY3QuZW50aXR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzb2Z0RGVsZXRlUXVlcnlCdWlsZGVyLndoZXJlRW50aXR5KHN1YmplY3QuaWRlbnRpZmllcilcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgc29mdERlbGV0ZVF1ZXJ5QnVpbGRlci53aGVyZShzdWJqZWN0LmlkZW50aWZpZXIpXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVSZXN1bHQgPSBhd2FpdCBzb2Z0RGVsZXRlUXVlcnlCdWlsZGVyLmV4ZWN1dGUoKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHN1YmplY3QuZ2VuZXJhdGVkTWFwID0gdXBkYXRlUmVzdWx0LmdlbmVyYXRlZE1hcHNbMF1cbiAgICAgICAgICAgICAgICBpZiAoc3ViamVjdC5nZW5lcmF0ZWRNYXApIHtcbiAgICAgICAgICAgICAgICAgICAgc3ViamVjdC5tZXRhZGF0YS5jb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBjb2x1bW4uZ2V0RW50aXR5VmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViamVjdC5nZW5lcmF0ZWRNYXAhLFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmVwYXJlZFZhbHVlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWVyeVJ1bm5lci5jb25uZWN0aW9uLmRyaXZlci5wcmVwYXJlSHlkcmF0ZWRWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uLnNldEVudGl0eVZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJqZWN0LmdlbmVyYXRlZE1hcCEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXBhcmVkVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cblxuXG5cblxuXG5cbiAgICAgICAgICAgICAgICAvL1xuXG5cblxuXG5cbiAgICAgICAgICAgIH0pLFxuICAgICAgICApXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVjb3ZlcnMgYWxsIGdpdmVuIHN1YmplY3RzIGluIHRoZSBkYXRhYmFzZS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYXN5bmMgZXhlY3V0ZVJlY292ZXJPcGVyYXRpb25zKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgIHRoaXMucmVjb3ZlclN1YmplY3RzLm1hcChhc3luYyAoc3ViamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghc3ViamVjdC5pZGVudGlmaWVyKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU3ViamVjdFdpdGhvdXRJZGVudGlmaWVyRXJyb3Ioc3ViamVjdClcblxuICAgICAgICAgICAgICAgIGxldCB1cGRhdGVSZXN1bHQ6IFVwZGF0ZVJlc3VsdFxuXG5cbiAgICAgICAgICAgICAgICBpZiAoXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuLyogKi9cbi8qICovXG4gIFxuICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG5cbiAgICAgICAgICAgICAgICApIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cblxuXG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc29mdERlbGV0ZVF1ZXJ5QnVpbGRlciA9IHRoaXMucXVlcnlSdW5uZXIubWFuYWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgLmNyZWF0ZVF1ZXJ5QnVpbGRlcigpXG4gICAgICAgICAgICAgICAgICAgICAgICAucmVzdG9yZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAuZnJvbShzdWJqZWN0Lm1ldGFkYXRhLnRhcmdldClcbiAgICAgICAgICAgICAgICAgICAgICAgIC51cGRhdGVFbnRpdHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5yZWxvYWQgPT09IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmNhbGxMaXN0ZW5lcnMoZmFsc2UpXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHN1YmplY3QuZW50aXR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzb2Z0RGVsZXRlUXVlcnlCdWlsZGVyLndoZXJlRW50aXR5KHN1YmplY3QuaWRlbnRpZmllcilcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgc29mdERlbGV0ZVF1ZXJ5QnVpbGRlci53aGVyZShzdWJqZWN0LmlkZW50aWZpZXIpXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVSZXN1bHQgPSBhd2FpdCBzb2Z0RGVsZXRlUXVlcnlCdWlsZGVyLmV4ZWN1dGUoKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHN1YmplY3QuZ2VuZXJhdGVkTWFwID0gdXBkYXRlUmVzdWx0LmdlbmVyYXRlZE1hcHNbMF1cbiAgICAgICAgICAgICAgICBpZiAoc3ViamVjdC5nZW5lcmF0ZWRNYXApIHtcbiAgICAgICAgICAgICAgICAgICAgc3ViamVjdC5tZXRhZGF0YS5jb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBjb2x1bW4uZ2V0RW50aXR5VmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViamVjdC5nZW5lcmF0ZWRNYXAhLFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmVwYXJlZFZhbHVlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWVyeVJ1bm5lci5jb25uZWN0aW9uLmRyaXZlci5wcmVwYXJlSHlkcmF0ZWRWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uLnNldEVudGl0eVZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJqZWN0LmdlbmVyYXRlZE1hcCEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXBhcmVkVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cblxuXG5cblxuXG5cbiAgICAgICAgICAgICAgICAvL1xuXG5cblxuXG5cbiAgICAgICAgICAgIH0pLFxuICAgICAgICApXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyBhbGwgc3BlY2lhbCBjb2x1bW5zIG9mIHRoZSBzYXZpbmcgZW50aXRpZXMgKGNyZWF0ZSBkYXRlLCB1cGRhdGUgZGF0ZSwgdmVyc2lvbiwgZXRjLikuXG4gICAgICogQWxzbyB1cGRhdGVzIG51bGxhYmxlIGNvbHVtbnMgYW5kIGNvbHVtbnMgd2l0aCBkZWZhdWx0IHZhbHVlcy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgdXBkYXRlU3BlY2lhbENvbHVtbnNJblBlcnNpc3RlZEVudGl0aWVzKCk6IHZvaWQge1xuXG4gICAgICAgIGlmICh0aGlzLmluc2VydFN1YmplY3RzLmxlbmd0aClcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU3BlY2lhbENvbHVtbnNJbkluc2VydGVkQW5kVXBkYXRlZEVudGl0aWVzKFxuICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0U3ViamVjdHMsXG4gICAgICAgICAgICApXG5cblxuICAgICAgICBpZiAodGhpcy51cGRhdGVTdWJqZWN0cy5sZW5ndGgpXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNwZWNpYWxDb2x1bW5zSW5JbnNlcnRlZEFuZFVwZGF0ZWRFbnRpdGllcyhcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVN1YmplY3RzLFxuICAgICAgICAgICAgKVxuXG5cbiAgICAgICAgaWYgKHRoaXMuc29mdFJlbW92ZVN1YmplY3RzLmxlbmd0aClcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU3BlY2lhbENvbHVtbnNJbkluc2VydGVkQW5kVXBkYXRlZEVudGl0aWVzKFxuICAgICAgICAgICAgICAgIHRoaXMuc29mdFJlbW92ZVN1YmplY3RzLFxuICAgICAgICAgICAgKVxuXG5cbiAgICAgICAgaWYgKHRoaXMucmVjb3ZlclN1YmplY3RzLmxlbmd0aClcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU3BlY2lhbENvbHVtbnNJbkluc2VydGVkQW5kVXBkYXRlZEVudGl0aWVzKFxuICAgICAgICAgICAgICAgIHRoaXMucmVjb3ZlclN1YmplY3RzLFxuICAgICAgICAgICAgKVxuXG5cbiAgICAgICAgaWYgKHRoaXMucmVtb3ZlU3ViamVjdHMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZVN1YmplY3RzLmZvckVhY2goKHN1YmplY3QpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXN1YmplY3QuZW50aXR5KSByZXR1cm5cblxuICAgICAgICAgICAgICAgIHN1YmplY3QubWV0YWRhdGEucHJpbWFyeUNvbHVtbnMuZm9yRWFjaCgocHJpbWFyeUNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBwcmltYXJ5Q29sdW1uLnNldEVudGl0eVZhbHVlKHN1YmplY3QuZW50aXR5ISwgdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG5cblxuICAgICAgICB0aGlzLmFsbFN1YmplY3RzLmZvckVhY2goKHN1YmplY3QpID0+IHtcbiAgICAgICAgICAgIGlmICghc3ViamVjdC5lbnRpdHkpIHJldHVyblxuXG4gICAgICAgICAgICBzdWJqZWN0Lm1ldGFkYXRhLnJlbGF0aW9uSWRzLmZvckVhY2goKHJlbGF0aW9uSWQpID0+IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbklkLnNldFZhbHVlKHN1YmplY3QuZW50aXR5ISlcbiAgICAgICAgICAgIH0pXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgICAgICB9KVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgYWxsIHNwZWNpYWwgY29sdW1ucyBvZiB0aGUgc2F2aW5nIGVudGl0aWVzIChjcmVhdGUgZGF0ZSwgdXBkYXRlIGRhdGUsIHZlcnNpb24sIGV0Yy4pLlxuICAgICAqIEFsc28gdXBkYXRlcyBudWxsYWJsZSBjb2x1bW5zIGFuZCBjb2x1bW5zIHdpdGggZGVmYXVsdCB2YWx1ZXMuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHVwZGF0ZVNwZWNpYWxDb2x1bW5zSW5JbnNlcnRlZEFuZFVwZGF0ZWRFbnRpdGllcyhcbiAgICAgICAgc3ViamVjdHM6IFN1YmplY3RbXSxcbiAgICApOiB2b2lkIHtcbiAgICAgICAgc3ViamVjdHMuZm9yRWFjaCgoc3ViamVjdCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFzdWJqZWN0LmVudGl0eSkgcmV0dXJuXG5cblxuICAgICAgICAgICAgc3ViamVjdC5tZXRhZGF0YS5jb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBzdWJqZWN0Lm1ldGFkYXRhLmNoaWxkRW50aXR5TWV0YWRhdGFzLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgc3ViamVjdC5tZXRhZGF0YS5jaGlsZEVudGl0eU1ldGFkYXRhc1xuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgobWV0YWRhdGEpID0+IG1ldGFkYXRhLnRhcmdldClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5pbmRleE9mKGNvbHVtbi50YXJnZXQpICE9PSAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG5cblxuICAgICAgICAgICAgICAgIGlmIChjb2x1bW4uaXNWaXJ0dWFsKSByZXR1cm5cblxuXG4gICAgICAgICAgICAgICAgaWYgKGNvbHVtbi5pc051bGxhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtblZhbHVlID0gY29sdW1uLmdldEVudGl0eVZhbHVlKHN1YmplY3QuZW50aXR5ISlcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbHVtblZhbHVlID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4uc2V0RW50aXR5VmFsdWUoc3ViamVjdC5lbnRpdHkhLCBudWxsKVxuICAgICAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICAgICAgaWYgKHN1YmplY3QudXBkYXRlZFJlbGF0aW9uTWFwcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHN1YmplY3QudXBkYXRlZFJlbGF0aW9uTWFwcy5mb3JFYWNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHVwZGF0ZWRSZWxhdGlvbk1hcCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRSZWxhdGlvbk1hcC5yZWxhdGlvbi5qb2luQ29sdW1ucy5mb3JFYWNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29sdW1uLmlzVmlydHVhbCA9PT0gdHJ1ZSkgcmV0dXJuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbi5zZXRFbnRpdHlWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJqZWN0LmVudGl0eSEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0VXRpbHMuaXNPYmplY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRSZWxhdGlvbk1hcC52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gY29sdW1uLnJlZmVyZW5jZWRDb2x1bW4hLmdldEVudGl0eVZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVkUmVsYXRpb25NYXAudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVwZGF0ZWRSZWxhdGlvbk1hcC52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcblxuXG4gICAgICAgICAgICBpZiAoc3ViamVjdC5nZW5lcmF0ZWRNYXApXG4gICAgICAgICAgICAgICAgdGhpcy5xdWVyeVJ1bm5lci5tYW5hZ2VyLm1lcmdlKFxuICAgICAgICAgICAgICAgICAgICBzdWJqZWN0Lm1ldGFkYXRhLnRhcmdldCBhcyBhbnksXG4gICAgICAgICAgICAgICAgICAgIHN1YmplY3QuZW50aXR5LFxuICAgICAgICAgICAgICAgICAgICBzdWJqZWN0LmdlbmVyYXRlZE1hcCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR3JvdXBzIHN1YmplY3RzIGJ5IG1ldGFkYXRhIG5hbWVzIChieSB0YWJsZXMpIHRvIG1ha2UgYnVsayBpbnNlcnRpb25zIGFuZCBkZWxldGlvbnMgcG9zc2libGUuXG4gICAgICogSG93ZXZlciB0aGVyZSBhcmUgc29tZSBsaW1pdGF0aW9ucyB3aXRoIGJ1bGsgaW5zZXJ0aW9ucyBvZiBkYXRhIGludG8gdGFibGVzIHdpdGggZ2VuZXJhdGVkIChpbmNyZW1lbnQpIGNvbHVtbnNcbiAgICAgKiBpbiBzb21lIGRyaXZlcnMuIFNvbWUgZHJpdmVycyBsaWtlIG15c3FsIGFuZCBzcWxpdGUgZG9lcyBub3Qgc3VwcG9ydCByZXR1cm5pbmcgbXVsdGlwbGUgZ2VuZXJhdGVkIGNvbHVtbnNcbiAgICAgKiBhZnRlciBpbnNlcnRpb24gYW5kIGNhbiBvbmx5IHJldHVybiBhIHNpbmdsZSBnZW5lcmF0ZWQgY29sdW1uIHZhbHVlLCB0aGF0J3Mgd2h5IGl0cyBub3QgcG9zc2libGUgdG8gZG8gYnVsayBpbnNlcnRpb24sXG4gICAgICogYmVjYXVzZSBpdCBicmVha3MgaW5zZXJ0aW9uIHJlc3VsdCdzIGdlbmVyYXRlZE1hcCBhbmQgbGVhZHMgdG8gcHJvYmxlbXMgd2hlbiB0aGlzIHN1YmplY3QgaXMgdXNlZCBpbiBvdGhlciBzdWJqZWN0cyBzYXZlcy5cbiAgICAgKiBUaGF0J3Mgd2h5IHdlIG9ubHkgc3VwcG9ydCBidWxraW5nIGluIGp1bmN0aW9uIHRhYmxlcyBmb3IgdGhvc2UgZHJpdmVycy5cbiAgICAgKlxuICAgICAqIE90aGVyIGRyaXZlcnMgbGlrZSBwb3N0Z3JlcyBhbmQgc3FsIHNlcnZlciBzdXBwb3J0IFJFVFVSTklORyAvIE9VVFBVVCBzdGF0ZW1lbnQgd2hpY2ggYWxsb3dzIHRvIHJldHVybiBnZW5lcmF0ZWRcbiAgICAgKiBpZCBmb3IgZWFjaCBpbnNlcnRlZCByb3csIHRoYXQncyB3aHkgYnVsayBpbnNlcnRpb24gaXMgbm90IGxpbWl0ZWQgdG8ganVuY3Rpb24gdGFibGVzIGluIHRoZXJlLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBncm91cEJ1bGtTdWJqZWN0cyhcbiAgICAgICAgc3ViamVjdHM6IFN1YmplY3RbXSxcbiAgICAgICAgdHlwZTogXCJpbnNlcnRcIiB8IFwiZGVsZXRlXCIsXG4gICAgKTogW3sgW2tleTogc3RyaW5nXTogU3ViamVjdFtdIH0sIHN0cmluZ1tdXSB7XG4gICAgICAgIGNvbnN0IGdyb3VwOiB7IFtrZXk6IHN0cmluZ106IFN1YmplY3RbXSB9ID0ge31cbiAgICAgICAgY29uc3Qga2V5czogc3RyaW5nW10gPSBbXVxuICAgICAgICBjb25zdCBoYXNSZXR1cm5pbmdEZXBlbmRDb2x1bW5zID0gc3ViamVjdHMuc29tZSgoc3ViamVjdCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHN1YmplY3QubWV0YWRhdGEuZ2V0SW5zZXJ0aW9uUmV0dXJuaW5nQ29sdW1ucygpLmxlbmd0aCA+IDBcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgZ3JvdXBpbmdBbGxvd2VkID1cbiAgICAgICAgICAgIHR5cGUgPT09IFwiZGVsZXRlXCIgfHxcbiAgICAgICAgICAgIHRoaXMucXVlcnlSdW5uZXIuY29ubmVjdGlvbi5kcml2ZXIuaXNSZXR1cm5pbmdTcWxTdXBwb3J0ZWQoXG4gICAgICAgICAgICAgICAgXCJpbnNlcnRcIixcbiAgICAgICAgICAgICkgfHxcbiAgICAgICAgICAgIGhhc1JldHVybmluZ0RlcGVuZENvbHVtbnMgPT09IGZhbHNlXG5cbiAgICAgICAgc3ViamVjdHMuZm9yRWFjaCgoc3ViamVjdCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9XG4gICAgICAgICAgICAgICAgZ3JvdXBpbmdBbGxvd2VkIHx8IHN1YmplY3QubWV0YWRhdGEuaXNKdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICA/IHN1YmplY3QubWV0YWRhdGEubmFtZVxuICAgICAgICAgICAgICAgICAgICA6IHN1YmplY3QubWV0YWRhdGEubmFtZSArIFwiX1wiICsgaW5kZXhcbiAgICAgICAgICAgIGlmICghZ3JvdXBba2V5XSkge1xuICAgICAgICAgICAgICAgIGdyb3VwW2tleV0gPSBbc3ViamVjdF1cbiAgICAgICAgICAgICAgICBrZXlzLnB1c2goa2V5KVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBncm91cFtrZXldLnB1c2goc3ViamVjdClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcblxuICAgICAgICByZXR1cm4gW2dyb3VwLCBrZXlzXVxuICAgIH1cbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRhb24tdHlwZW9ybSBsaWIvdHlwZW9ybS9wZXJzaXN0ZW5jZS9TdWJqZWN0RXhlY3V0b3IudHMiXX0=
|