taon-typeorm 18.0.24 → 19.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/shared/shared_folder_info.txt +3 -3
- package/browser/README.md +24 -24
- package/client/README.md +24 -24
- package/index.js.map +1 -1
- package/lib/build-info._auto-generated_.d.ts +1 -0
- package/lib/build-info._auto-generated_.js +4 -1
- package/lib/build-info._auto-generated_.js.map +1 -1
- package/lib/index._auto-generated_.js +2 -2
- package/lib/index._auto-generated_.js.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/typeorm/cache/DbQueryResultCache.js.map +1 -1
- package/lib/typeorm/cache/QueryResultCache.js.map +1 -1
- package/lib/typeorm/cache/QueryResultCacheFactory.js.map +1 -1
- package/lib/typeorm/cache/QueryResultCacheOptions.js.map +1 -1
- package/lib/typeorm/cache/RedisQueryResultCache.js.map +1 -1
- package/lib/typeorm/cli-ts-node-commonjs.js.map +1 -1
- package/lib/typeorm/cli-ts-node-esm.js.map +1 -1
- package/lib/typeorm/cli.js.map +1 -1
- package/lib/typeorm/commands/CacheClearCommand.js.map +1 -1
- package/lib/typeorm/commands/CommandUtils.js.map +1 -1
- package/lib/typeorm/commands/EntityCreateCommand.js.map +1 -1
- package/lib/typeorm/commands/InitCommand.js.map +1 -1
- package/lib/typeorm/commands/MigrationCreateCommand.js.map +1 -1
- package/lib/typeorm/commands/MigrationGenerateCommand.js.map +1 -1
- package/lib/typeorm/commands/MigrationRevertCommand.js.map +1 -1
- package/lib/typeorm/commands/MigrationRunCommand.js.map +1 -1
- package/lib/typeorm/commands/MigrationShowCommand.js.map +1 -1
- package/lib/typeorm/commands/QueryCommand.js.map +1 -1
- package/lib/typeorm/commands/SchemaDropCommand.js.map +1 -1
- package/lib/typeorm/commands/SchemaLogCommand.js.map +1 -1
- package/lib/typeorm/commands/SchemaSyncCommand.js.map +1 -1
- package/lib/typeorm/commands/SubscriberCreateCommand.js.map +1 -1
- package/lib/typeorm/commands/VersionCommand.js.map +1 -1
- package/lib/typeorm/common/DeepPartial.js.map +1 -1
- package/lib/typeorm/common/EntityTarget.js.map +1 -1
- package/lib/typeorm/common/MixedList.js.map +1 -1
- package/lib/typeorm/common/NonNever.js.map +1 -1
- package/lib/typeorm/common/ObjectLiteral.js.map +1 -1
- package/lib/typeorm/common/ObjectType.js.map +1 -1
- package/lib/typeorm/common/RelationType.js.map +1 -1
- package/lib/typeorm/connection/BaseConnectionOptions.js.map +1 -1
- package/lib/typeorm/connection/Connection.js.map +1 -1
- package/lib/typeorm/connection/ConnectionManager.js.map +1 -1
- package/lib/typeorm/connection/ConnectionMetadataBuilder.js.map +1 -1
- package/lib/typeorm/connection/ConnectionOptions.js.map +1 -1
- package/lib/typeorm/connection/ConnectionOptionsReader.js.map +1 -1
- package/lib/typeorm/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
- package/lib/typeorm/connection/options-reader/ConnectionOptionsXmlReader.js.map +1 -1
- package/lib/typeorm/connection/options-reader/ConnectionOptionsYmlReader.js.map +1 -1
- package/lib/typeorm/constants.js.map +1 -1
- package/lib/typeorm/container.js.map +1 -1
- package/lib/typeorm/data-source/BaseDataSourceOptions.js.map +1 -1
- package/lib/typeorm/data-source/DataSource.js.map +1 -1
- package/lib/typeorm/data-source/DataSourceOptions.js.map +1 -1
- package/lib/typeorm/data-source/index.js.map +1 -1
- package/lib/typeorm/decorator/Check.js.map +1 -1
- package/lib/typeorm/decorator/EntityRepository.js.map +1 -1
- package/lib/typeorm/decorator/Exclusion.js.map +1 -1
- package/lib/typeorm/decorator/Generated.js.map +1 -1
- package/lib/typeorm/decorator/Index.js.map +1 -1
- package/lib/typeorm/decorator/Unique.js.map +1 -1
- package/lib/typeorm/decorator/columns/Column.js.map +1 -1
- package/lib/typeorm/decorator/columns/CreateDateColumn.js.map +1 -1
- package/lib/typeorm/decorator/columns/DeleteDateColumn.js.map +1 -1
- package/lib/typeorm/decorator/columns/ObjectIdColumn.js.map +1 -1
- package/lib/typeorm/decorator/columns/PrimaryColumn.js.map +1 -1
- package/lib/typeorm/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
- package/lib/typeorm/decorator/columns/UpdateDateColumn.js.map +1 -1
- package/lib/typeorm/decorator/columns/VersionColumn.js.map +1 -1
- package/lib/typeorm/decorator/columns/ViewColumn.js.map +1 -1
- package/lib/typeorm/decorator/columns/VirtualColumn.js.map +1 -1
- package/lib/typeorm/decorator/entity/ChildEntity.js.map +1 -1
- package/lib/typeorm/decorator/entity/Entity.js.map +1 -1
- package/lib/typeorm/decorator/entity/TableInheritance.js.map +1 -1
- package/lib/typeorm/decorator/entity-view/ViewEntity.js.map +1 -1
- package/lib/typeorm/decorator/listeners/AfterInsert.js.map +1 -1
- package/lib/typeorm/decorator/listeners/AfterLoad.js.map +1 -1
- package/lib/typeorm/decorator/listeners/AfterRecover.js.map +1 -1
- package/lib/typeorm/decorator/listeners/AfterRemove.js.map +1 -1
- package/lib/typeorm/decorator/listeners/AfterSoftRemove.js.map +1 -1
- package/lib/typeorm/decorator/listeners/AfterUpdate.js.map +1 -1
- package/lib/typeorm/decorator/listeners/BeforeInsert.js.map +1 -1
- package/lib/typeorm/decorator/listeners/BeforeRecover.js.map +1 -1
- package/lib/typeorm/decorator/listeners/BeforeRemove.js.map +1 -1
- package/lib/typeorm/decorator/listeners/BeforeSoftRemove.js.map +1 -1
- package/lib/typeorm/decorator/listeners/BeforeUpdate.js.map +1 -1
- package/lib/typeorm/decorator/listeners/EventSubscriber.js.map +1 -1
- package/lib/typeorm/decorator/options/ColumnCommonOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/ColumnEmbeddedOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/ColumnEnumOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/ColumnHstoreOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/ColumnNumericOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/ColumnOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/ColumnWithLengthOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/ColumnWithWidthOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/EntityOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/IndexOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/JoinColumnOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/JoinTableMultipleColumnsOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/JoinTableOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/PrimaryGeneratedColumnUUIDOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/RelationOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/SpatialColumnOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/TransactionOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/UniqueOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/ValueTransformer.js.map +1 -1
- package/lib/typeorm/decorator/options/ViewColumnOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/ViewEntityOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/VirtualColumnOptions.js.map +1 -1
- package/lib/typeorm/decorator/relations/JoinColumn.js.map +1 -1
- package/lib/typeorm/decorator/relations/JoinTable.js.map +1 -1
- package/lib/typeorm/decorator/relations/ManyToMany.js.map +1 -1
- package/lib/typeorm/decorator/relations/ManyToOne.js.map +1 -1
- package/lib/typeorm/decorator/relations/OneToMany.js.map +1 -1
- package/lib/typeorm/decorator/relations/OneToOne.js.map +1 -1
- package/lib/typeorm/decorator/relations/RelationCount.js.map +1 -1
- package/lib/typeorm/decorator/relations/RelationId.js.map +1 -1
- package/lib/typeorm/decorator/tree/Tree.js.map +1 -1
- package/lib/typeorm/decorator/tree/TreeChildren.js.map +1 -1
- package/lib/typeorm/decorator/tree/TreeLevelColumn.js.map +1 -1
- package/lib/typeorm/decorator/tree/TreeParent.js.map +1 -1
- package/lib/typeorm/driver/Driver.js.map +1 -1
- package/lib/typeorm/driver/DriverFactory.js.map +1 -1
- package/lib/typeorm/driver/DriverUtils.js.map +1 -1
- package/lib/typeorm/driver/Query.js.map +1 -1
- package/lib/typeorm/driver/SqlInMemory.js.map +1 -1
- package/lib/typeorm/driver/aurora-mysql/AuroraMysqlConnection.js.map +1 -1
- package/lib/typeorm/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.js.map +1 -1
- package/lib/typeorm/driver/aurora-mysql/AuroraMysqlConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
- package/lib/typeorm/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/aurora-postgres/AuroraPostgresConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/aurora-postgres/AuroraPostgresDriver.js.map +1 -1
- package/lib/typeorm/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
- package/lib/typeorm/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
- package/lib/typeorm/driver/capacitor/CapacitorConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/capacitor/CapacitorDriver.js.map +1 -1
- package/lib/typeorm/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/cockroachdb/CockroachConnectionCredentialsOptions.js.map +1 -1
- package/lib/typeorm/driver/cockroachdb/CockroachConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/lib/typeorm/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/cordova/CordovaConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/cordova/CordovaDriver.js.map +1 -1
- package/lib/typeorm/driver/cordova/CordovaQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/expo/ExpoConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/expo/ExpoDriver.js.map +1 -1
- package/lib/typeorm/driver/expo/ExpoQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/mongodb/MongoConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/mongodb/MongoDriver.js.map +1 -1
- package/lib/typeorm/driver/mongodb/MongoQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/mongodb/typings.js.map +1 -1
- package/lib/typeorm/driver/mysql/MysqlConnectionCredentialsOptions.js.map +1 -1
- package/lib/typeorm/driver/mysql/MysqlConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/mysql/MysqlDriver.js.map +1 -1
- package/lib/typeorm/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/nativescript/NativescriptConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/nativescript/NativescriptDriver.js.map +1 -1
- package/lib/typeorm/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/oracle/OracleConnectionCredentialsOptions.js.map +1 -1
- package/lib/typeorm/driver/oracle/OracleConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/oracle/OracleDriver.js.map +1 -1
- package/lib/typeorm/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/postgres/PostgresConnectionCredentialsOptions.js.map +1 -1
- package/lib/typeorm/driver/postgres/PostgresConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/postgres/PostgresDriver.js.map +1 -1
- package/lib/typeorm/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/react-native/ReactNativeConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/react-native/ReactNativeDriver.js.map +1 -1
- package/lib/typeorm/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/sap/SapConnectionCredentialsOptions.js.map +1 -1
- package/lib/typeorm/driver/sap/SapConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/sap/SapDriver.js.map +1 -1
- package/lib/typeorm/driver/sap/SapQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -1
- package/lib/typeorm/driver/spanner/SpannerConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/spanner/SpannerDriver.js.map +1 -1
- package/lib/typeorm/driver/spanner/SpannerQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/sqlite/SqliteDriver.js.map +1 -1
- package/lib/typeorm/driver/sqlite/SqliteQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/lib/typeorm/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/sqljs/SqljsConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/sqljs/SqljsDriver.js.map +1 -1
- package/lib/typeorm/driver/sqljs/SqljsQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/MssqlParameter.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/SqlServerConnectionCredentialsOptions.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/authentication/DefaultAuthentication.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/authentication/NtlmAuthentication.js.map +1 -1
- package/lib/typeorm/driver/types/ColumnTypes.js.map +1 -1
- package/lib/typeorm/driver/types/CteCapabilities.js.map +1 -1
- package/lib/typeorm/driver/types/DataTypeDefaults.js.map +1 -1
- package/lib/typeorm/driver/types/DatabaseType.js.map +1 -1
- package/lib/typeorm/driver/types/IsolationLevel.js.map +1 -1
- package/lib/typeorm/driver/types/MappedColumnTypes.js.map +1 -1
- package/lib/typeorm/driver/types/MetadataTableType.js.map +1 -1
- package/lib/typeorm/driver/types/ReplicationMode.js.map +1 -1
- package/lib/typeorm/driver/types/UpsertType.js.map +1 -1
- package/lib/typeorm/entity-manager/EntityManager.js.map +1 -1
- package/lib/typeorm/entity-manager/EntityManagerFactory.js.map +1 -1
- package/lib/typeorm/entity-manager/MongoEntityManager.js.map +1 -1
- package/lib/typeorm/entity-manager/SqljsEntityManager.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchema.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchemaCheckOptions.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchemaEmbeddedColumnOptions.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchemaEmbeddedError.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchemaExclusionOptions.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchemaOptions.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchemaRelationIdOptions.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchemaRelationOptions.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchemaUniqueOptions.js.map +1 -1
- package/lib/typeorm/error/AlreadyHasActiveConnectionError.js.map +1 -1
- package/lib/typeorm/error/CannotAttachTreeChildrenEntityError.js.map +1 -1
- package/lib/typeorm/error/CannotConnectAlreadyConnectedError.js.map +1 -1
- package/lib/typeorm/error/CannotCreateEntityIdMapError.js.map +1 -1
- package/lib/typeorm/error/CannotDetermineEntityError.js.map +1 -1
- package/lib/typeorm/error/CannotExecuteNotConnectedError.js.map +1 -1
- package/lib/typeorm/error/CannotGetEntityManagerNotConnectedError.js.map +1 -1
- package/lib/typeorm/error/CannotReflectMethodParameterTypeError.js.map +1 -1
- package/lib/typeorm/error/CircularRelationsError.js.map +1 -1
- package/lib/typeorm/error/ColumnTypeUndefinedError.js.map +1 -1
- package/lib/typeorm/error/ConnectionIsNotSetError.js.map +1 -1
- package/lib/typeorm/error/ConnectionNotFoundError.js.map +1 -1
- package/lib/typeorm/error/CustomRepositoryCannotInheritRepositoryError.js.map +1 -1
- package/lib/typeorm/error/CustomRepositoryDoesNotHaveEntityError.js.map +1 -1
- package/lib/typeorm/error/CustomRepositoryNotFoundError.js.map +1 -1
- package/lib/typeorm/error/DataTypeNotSupportedError.js.map +1 -1
- package/lib/typeorm/error/DriverOptionNotSetError.js.map +1 -1
- package/lib/typeorm/error/DriverPackageNotInstalledError.js.map +1 -1
- package/lib/typeorm/error/EntityMetadataNotFoundError.js.map +1 -1
- package/lib/typeorm/error/EntityNotFoundError.js.map +1 -1
- package/lib/typeorm/error/EntityPropertyNotFoundError.js.map +1 -1
- package/lib/typeorm/error/FindRelationsNotFoundError.js.map +1 -1
- package/lib/typeorm/error/ForbiddenTransactionModeOverrideError.js.map +1 -1
- package/lib/typeorm/error/InitializedRelationError.js.map +1 -1
- package/lib/typeorm/error/InsertValuesMissingError.js.map +1 -1
- package/lib/typeorm/error/LimitOnUpdateNotSupportedError.js.map +1 -1
- package/lib/typeorm/error/LockNotSupportedOnGivenDriverError.js.map +1 -1
- package/lib/typeorm/error/MetadataAlreadyExistsError.js.map +1 -1
- package/lib/typeorm/error/MetadataWithSuchNameAlreadyExistsError.js.map +1 -1
- package/lib/typeorm/error/MissingDeleteDateColumnError.js.map +1 -1
- package/lib/typeorm/error/MissingDriverError.js.map +1 -1
- package/lib/typeorm/error/MissingJoinColumnError.js.map +1 -1
- package/lib/typeorm/error/MissingJoinTableError.js.map +1 -1
- package/lib/typeorm/error/MissingPrimaryColumnError.js.map +1 -1
- package/lib/typeorm/error/MustBeEntityError.js.map +1 -1
- package/lib/typeorm/error/NamingStrategyNotFoundError.js.map +1 -1
- package/lib/typeorm/error/NestedSetMultipleRootError.js.map +1 -1
- package/lib/typeorm/error/NoConnectionForRepositoryError.js.map +1 -1
- package/lib/typeorm/error/NoConnectionOptionError.js.map +1 -1
- package/lib/typeorm/error/NoNeedToReleaseEntityManagerError.js.map +1 -1
- package/lib/typeorm/error/NoVersionOrUpdateDateColumnError.js.map +1 -1
- package/lib/typeorm/error/OffsetWithoutLimitNotSupportedError.js.map +1 -1
- package/lib/typeorm/error/OptimisticLockCanNotBeUsedError.js.map +1 -1
- package/lib/typeorm/error/OptimisticLockVersionMismatchError.js.map +1 -1
- package/lib/typeorm/error/PersistedEntityNotFoundError.js.map +1 -1
- package/lib/typeorm/error/PessimisticLockTransactionRequiredError.js.map +1 -1
- package/lib/typeorm/error/PrimaryColumnCannotBeNullableError.js.map +1 -1
- package/lib/typeorm/error/QueryFailedError.js.map +1 -1
- package/lib/typeorm/error/QueryRunnerAlreadyReleasedError.js.map +1 -1
- package/lib/typeorm/error/QueryRunnerProviderAlreadyReleasedError.js.map +1 -1
- package/lib/typeorm/error/RepositoryNotTreeError.js.map +1 -1
- package/lib/typeorm/error/ReturningStatementNotSupportedError.js.map +1 -1
- package/lib/typeorm/error/SubjectRemovedAndUpdatedError.js.map +1 -1
- package/lib/typeorm/error/SubjectWithoutIdentifierError.js.map +1 -1
- package/lib/typeorm/error/TransactionAlreadyStartedError.js.map +1 -1
- package/lib/typeorm/error/TransactionNotStartedError.js.map +1 -1
- package/lib/typeorm/error/TreeRepositoryNotSupportedError.js.map +1 -1
- package/lib/typeorm/error/TypeORMError.js.map +1 -1
- package/lib/typeorm/error/UpdateValuesMissingError.js.map +1 -1
- package/lib/typeorm/error/UsingJoinColumnIsNotAllowedError.js.map +1 -1
- package/lib/typeorm/error/UsingJoinColumnOnlyOnOneSideAllowedError.js.map +1 -1
- package/lib/typeorm/error/UsingJoinTableIsNotAllowedError.js.map +1 -1
- package/lib/typeorm/error/UsingJoinTableOnlyOnOneSideAllowedError.js.map +1 -1
- package/lib/typeorm/error/index.js.map +1 -1
- package/lib/typeorm/find-options/EqualOperator.js.map +1 -1
- package/lib/typeorm/find-options/FindManyOptions.js.map +1 -1
- package/lib/typeorm/find-options/FindOneOptions.js.map +1 -1
- package/lib/typeorm/find-options/FindOperator.js.map +1 -1
- package/lib/typeorm/find-options/FindOperatorType.js.map +1 -1
- package/lib/typeorm/find-options/FindOptionsOrder.js.map +1 -1
- package/lib/typeorm/find-options/FindOptionsRelations.js.map +1 -1
- package/lib/typeorm/find-options/FindOptionsSelect.js.map +1 -1
- package/lib/typeorm/find-options/FindOptionsUtils.js.map +1 -1
- package/lib/typeorm/find-options/FindOptionsWhere.js.map +1 -1
- package/lib/typeorm/find-options/FindTreeOptions.js.map +1 -1
- package/lib/typeorm/find-options/JoinOptions.js.map +1 -1
- package/lib/typeorm/find-options/OrderByCondition.js.map +1 -1
- package/lib/typeorm/find-options/mongodb/MongoFindManyOptions.js.map +1 -1
- package/lib/typeorm/find-options/mongodb/MongoFindOneOptions.js.map +1 -1
- package/lib/typeorm/find-options/operator/And.js.map +1 -1
- package/lib/typeorm/find-options/operator/Any.js.map +1 -1
- package/lib/typeorm/find-options/operator/ArrayContainedBy.js.map +1 -1
- package/lib/typeorm/find-options/operator/ArrayContains.js.map +1 -1
- package/lib/typeorm/find-options/operator/ArrayOverlap.js.map +1 -1
- package/lib/typeorm/find-options/operator/Between.js.map +1 -1
- package/lib/typeorm/find-options/operator/Equal.js.map +1 -1
- package/lib/typeorm/find-options/operator/ILike.js.map +1 -1
- package/lib/typeorm/find-options/operator/In.js.map +1 -1
- package/lib/typeorm/find-options/operator/IsNull.js.map +1 -1
- package/lib/typeorm/find-options/operator/LessThan.js.map +1 -1
- package/lib/typeorm/find-options/operator/LessThanOrEqual.js.map +1 -1
- package/lib/typeorm/find-options/operator/Like.js.map +1 -1
- package/lib/typeorm/find-options/operator/MoreThan.js.map +1 -1
- package/lib/typeorm/find-options/operator/MoreThanOrEqual.js.map +1 -1
- package/lib/typeorm/find-options/operator/Not.js.map +1 -1
- package/lib/typeorm/find-options/operator/Raw.js.map +1 -1
- package/lib/typeorm/globals.js.map +1 -1
- package/lib/typeorm/index.js.map +1 -1
- package/lib/typeorm/logger/AdvancedConsoleLogger.js.map +1 -1
- package/lib/typeorm/logger/DebugLogger.js.map +1 -1
- package/lib/typeorm/logger/FileLogger.js.map +1 -1
- package/lib/typeorm/logger/Logger.js.map +1 -1
- package/lib/typeorm/logger/LoggerFactory.js.map +1 -1
- package/lib/typeorm/logger/LoggerOptions.js.map +1 -1
- package/lib/typeorm/logger/SimpleConsoleLogger.js.map +1 -1
- package/lib/typeorm/metadata/CheckMetadata.js.map +1 -1
- package/lib/typeorm/metadata/ColumnMetadata.js.map +1 -1
- package/lib/typeorm/metadata/EmbeddedMetadata.js.map +1 -1
- package/lib/typeorm/metadata/EntityListenerMetadata.js.map +1 -1
- package/lib/typeorm/metadata/EntityMetadata.js.map +1 -1
- package/lib/typeorm/metadata/ExclusionMetadata.js.map +1 -1
- package/lib/typeorm/metadata/ForeignKeyMetadata.js.map +1 -1
- package/lib/typeorm/metadata/IndexMetadata.js.map +1 -1
- package/lib/typeorm/metadata/RelationCountMetadata.js.map +1 -1
- package/lib/typeorm/metadata/RelationIdMetadata.js.map +1 -1
- package/lib/typeorm/metadata/RelationMetadata.js.map +1 -1
- package/lib/typeorm/metadata/UniqueMetadata.js.map +1 -1
- package/lib/typeorm/metadata/types/ClosureTreeOptions.js.map +1 -1
- package/lib/typeorm/metadata/types/DeferrableType.js.map +1 -1
- package/lib/typeorm/metadata/types/EventListenerTypes.js.map +1 -1
- package/lib/typeorm/metadata/types/OnDeleteType.js.map +1 -1
- package/lib/typeorm/metadata/types/OnUpdateType.js.map +1 -1
- package/lib/typeorm/metadata/types/PropertyTypeInFunction.js.map +1 -1
- package/lib/typeorm/metadata/types/RelationTypeInFunction.js.map +1 -1
- package/lib/typeorm/metadata/types/RelationTypes.js.map +1 -1
- package/lib/typeorm/metadata/types/TableTypes.js.map +1 -1
- package/lib/typeorm/metadata/types/TreeTypes.js.map +1 -1
- package/lib/typeorm/metadata-args/CheckMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/ColumnMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/DiscriminatorValueMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/EmbeddedMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/EntityListenerMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/EntityRepositoryMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/EntitySubscriberMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/ExclusionMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/GeneratedMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/IndexMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/InheritanceMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/JoinColumnMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/JoinTableMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/MetadataArgsStorage.js.map +1 -1
- package/lib/typeorm/metadata-args/NamingStrategyMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/RelationCountMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/RelationIdMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/RelationMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/TableMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/TransactionEntityMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/TransactionRepositoryMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/TreeMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/UniqueMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/types/ColumnMode.js.map +1 -1
- package/lib/typeorm/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
- package/lib/typeorm/metadata-builder/EntityMetadataBuilder.js.map +1 -1
- package/lib/typeorm/metadata-builder/EntityMetadataValidator.js.map +1 -1
- package/lib/typeorm/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
- package/lib/typeorm/metadata-builder/MetadataUtils.js.map +1 -1
- package/lib/typeorm/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
- package/lib/typeorm/migration/Migration.js.map +1 -1
- package/lib/typeorm/migration/MigrationExecutor.js.map +1 -1
- package/lib/typeorm/migration/MigrationInterface.js.map +1 -1
- package/lib/typeorm/naming-strategy/DefaultNamingStrategy.js.map +1 -1
- package/lib/typeorm/naming-strategy/NamingStrategyInterface.js.map +1 -1
- package/lib/typeorm/persistence/EntityPersistExecutor.js.map +1 -1
- package/lib/typeorm/persistence/Subject.js.map +1 -1
- package/lib/typeorm/persistence/SubjectChangeMap.js.map +1 -1
- package/lib/typeorm/persistence/SubjectChangedColumnsComputer.js.map +1 -1
- package/lib/typeorm/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
- package/lib/typeorm/persistence/SubjectExecutor.js.map +1 -1
- package/lib/typeorm/persistence/SubjectTopoligicalSorter.js.map +1 -1
- package/lib/typeorm/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
- package/lib/typeorm/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
- package/lib/typeorm/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
- package/lib/typeorm/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
- package/lib/typeorm/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
- package/lib/typeorm/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
- package/lib/typeorm/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
- package/lib/typeorm/platform/PlatformTools.js.map +1 -1
- package/lib/typeorm/query-builder/Alias.js.map +1 -1
- package/lib/typeorm/query-builder/Brackets.js.map +1 -1
- package/lib/typeorm/query-builder/DeleteQueryBuilder.js.map +1 -1
- package/lib/typeorm/query-builder/InsertOrUpdateOptions.js.map +1 -1
- package/lib/typeorm/query-builder/InsertQueryBuilder.js.map +1 -1
- package/lib/typeorm/query-builder/JoinAttribute.js.map +1 -1
- package/lib/typeorm/query-builder/JoinOptions.js.map +1 -1
- package/lib/typeorm/query-builder/NotBrackets.js.map +1 -1
- package/lib/typeorm/query-builder/QueryBuilder.js.map +1 -1
- package/lib/typeorm/query-builder/QueryBuilderCte.js.map +1 -1
- package/lib/typeorm/query-builder/QueryBuilderUtils.js.map +1 -1
- package/lib/typeorm/query-builder/QueryExpressionMap.js.map +1 -1
- package/lib/typeorm/query-builder/QueryPartialEntity.js.map +1 -1
- package/lib/typeorm/query-builder/RelationIdLoader.js.map +1 -1
- package/lib/typeorm/query-builder/RelationLoader.js.map +1 -1
- package/lib/typeorm/query-builder/RelationQueryBuilder.js.map +1 -1
- package/lib/typeorm/query-builder/RelationRemover.js.map +1 -1
- package/lib/typeorm/query-builder/RelationUpdater.js.map +1 -1
- package/lib/typeorm/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
- package/lib/typeorm/query-builder/SelectQuery.js.map +1 -1
- package/lib/typeorm/query-builder/SelectQueryBuilder.js.map +1 -1
- package/lib/typeorm/query-builder/SelectQueryBuilderOption.js.map +1 -1
- package/lib/typeorm/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
- package/lib/typeorm/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/lib/typeorm/query-builder/WhereClause.js.map +1 -1
- package/lib/typeorm/query-builder/WhereExpressionBuilder.js.map +1 -1
- package/lib/typeorm/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
- package/lib/typeorm/query-builder/relation-count/RelationCountLoadResult.js.map +1 -1
- package/lib/typeorm/query-builder/relation-count/RelationCountLoader.js.map +1 -1
- package/lib/typeorm/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js.map +1 -1
- package/lib/typeorm/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
- package/lib/typeorm/query-builder/relation-id/RelationIdLoadResult.js.map +1 -1
- package/lib/typeorm/query-builder/relation-id/RelationIdLoader.js.map +1 -1
- package/lib/typeorm/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js.map +1 -1
- package/lib/typeorm/query-builder/result/DeleteResult.js.map +1 -1
- package/lib/typeorm/query-builder/result/InsertResult.js.map +1 -1
- package/lib/typeorm/query-builder/result/UpdateResult.js.map +1 -1
- package/lib/typeorm/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
- package/lib/typeorm/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
- package/lib/typeorm/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
- package/lib/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
- package/lib/typeorm/query-runner/BaseQueryRunner.js.map +1 -1
- package/lib/typeorm/query-runner/QueryLock.js.map +1 -1
- package/lib/typeorm/query-runner/QueryResult.js.map +1 -1
- package/lib/typeorm/query-runner/QueryRunner.js.map +1 -1
- package/lib/typeorm/repository/AbstractRepository.js.map +1 -1
- package/lib/typeorm/repository/BaseEntity.js.map +1 -1
- package/lib/typeorm/repository/EntityId.js.map +1 -1
- package/lib/typeorm/repository/FindTreesOptions.js.map +1 -1
- package/lib/typeorm/repository/MongoRepository.js.map +1 -1
- package/lib/typeorm/repository/RemoveOptions.js.map +1 -1
- package/lib/typeorm/repository/Repository.js.map +1 -1
- package/lib/typeorm/repository/SaveOptions.js.map +1 -1
- package/lib/typeorm/repository/TreeRepository.js.map +1 -1
- package/lib/typeorm/repository/UpsertOptions.js.map +1 -1
- package/lib/typeorm/schema-builder/MongoSchemaBuilder.js.map +1 -1
- package/lib/typeorm/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
- package/lib/typeorm/schema-builder/SchemaBuilder.js.map +1 -1
- package/lib/typeorm/schema-builder/options/TableCheckOptions.js.map +1 -1
- package/lib/typeorm/schema-builder/options/TableColumnOptions.js.map +1 -1
- package/lib/typeorm/schema-builder/options/TableExclusionOptions.js.map +1 -1
- package/lib/typeorm/schema-builder/options/TableForeignKeyOptions.js.map +1 -1
- package/lib/typeorm/schema-builder/options/TableIndexOptions.js.map +1 -1
- package/lib/typeorm/schema-builder/options/TableOptions.js.map +1 -1
- package/lib/typeorm/schema-builder/options/TableUniqueOptions.js.map +1 -1
- package/lib/typeorm/schema-builder/options/ViewOptions.js.map +1 -1
- package/lib/typeorm/schema-builder/table/Table.js.map +1 -1
- package/lib/typeorm/schema-builder/table/TableCheck.js.map +1 -1
- package/lib/typeorm/schema-builder/table/TableColumn.js.map +1 -1
- package/lib/typeorm/schema-builder/table/TableExclusion.js.map +1 -1
- package/lib/typeorm/schema-builder/table/TableForeignKey.js.map +1 -1
- package/lib/typeorm/schema-builder/table/TableIndex.js.map +1 -1
- package/lib/typeorm/schema-builder/table/TableUnique.js.map +1 -1
- package/lib/typeorm/schema-builder/util/TableUtils.js.map +1 -1
- package/lib/typeorm/schema-builder/util/ViewUtils.js.map +1 -1
- package/lib/typeorm/schema-builder/view/View.js.map +1 -1
- package/lib/typeorm/subscriber/Broadcaster.js.map +1 -1
- package/lib/typeorm/subscriber/BroadcasterResult.js.map +1 -1
- package/lib/typeorm/subscriber/EntitySubscriberInterface.js.map +1 -1
- package/lib/typeorm/subscriber/event/InsertEvent.js.map +1 -1
- package/lib/typeorm/subscriber/event/LoadEvent.js.map +1 -1
- package/lib/typeorm/subscriber/event/RecoverEvent.js.map +1 -1
- package/lib/typeorm/subscriber/event/RemoveEvent.js.map +1 -1
- package/lib/typeorm/subscriber/event/SoftRemoveEvent.js.map +1 -1
- package/lib/typeorm/subscriber/event/TransactionCommitEvent.js.map +1 -1
- package/lib/typeorm/subscriber/event/TransactionRollbackEvent.js.map +1 -1
- package/lib/typeorm/subscriber/event/TransactionStartEvent.js.map +1 -1
- package/lib/typeorm/subscriber/event/UpdateEvent.js.map +1 -1
- package/lib/typeorm/util/ApplyValueTransformers.js.map +1 -1
- package/lib/typeorm/util/DateUtils.js.map +1 -1
- package/lib/typeorm/util/DepGraph.js.map +1 -1
- package/lib/typeorm/util/DirectoryExportedClassesLoader.js.map +1 -1
- package/lib/typeorm/util/ImportUtils.js.map +1 -1
- package/lib/typeorm/util/InstanceChecker.js.map +1 -1
- package/lib/typeorm/util/ObjectUtils.js.map +1 -1
- package/lib/typeorm/util/OrmUtils.js.map +1 -1
- package/lib/typeorm/util/PathUtils.js.map +1 -1
- package/lib/typeorm/util/RandomGenerator.js.map +1 -1
- package/lib/typeorm/util/StringUtils.js.map +1 -1
- package/lib/typeorm/util/TreeRepositoryUtils.js.map +1 -1
- package/lib/typeorm/util/VersionUtils.js.map +1 -1
- package/lib/typeorm/util/escapeRegExp.js.map +1 -1
- package/migrations/index.js.map +1 -1
- package/migrations/migrations_index._auto-generated_.js.map +1 -1
- package/package.json +2 -2
- package/src.d.ts +3 -3
- package/taon.jsonc +7 -9
- package/tmp-environment.json +4 -3
- package/websql/README.md +24 -24
- package/browser/esm2022/lib/index.mjs +0 -4
- package/browser/esm2022/lib/typeorm/cache/DbQueryResultCache.mjs +0 -251
- package/browser/esm2022/lib/typeorm/cache/QueryResultCache.mjs +0 -4
- package/browser/esm2022/lib/typeorm/cache/QueryResultCacheFactory.mjs +0 -33
- package/browser/esm2022/lib/typeorm/cache/QueryResultCacheOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/cache/RedisQueryResultCache.mjs +0 -185
- package/browser/esm2022/lib/typeorm/common/DeepPartial.mjs +0 -3
- package/browser/esm2022/lib/typeorm/common/EntityTarget.mjs +0 -3
- package/browser/esm2022/lib/typeorm/common/MixedList.mjs +0 -3
- package/browser/esm2022/lib/typeorm/common/ObjectLiteral.mjs +0 -4
- package/browser/esm2022/lib/typeorm/common/ObjectType.mjs +0 -3
- package/browser/esm2022/lib/typeorm/common/RelationType.mjs +0 -3
- package/browser/esm2022/lib/typeorm/connection/Connection.mjs +0 -13
- package/browser/esm2022/lib/typeorm/connection/ConnectionManager.mjs +0 -57
- package/browser/esm2022/lib/typeorm/connection/ConnectionMetadataBuilder.mjs +0 -63
- package/browser/esm2022/lib/typeorm/connection/ConnectionOptions.mjs +0 -3
- package/browser/esm2022/lib/typeorm/connection/ConnectionOptionsReader.mjs +0 -237
- package/browser/esm2022/lib/typeorm/constants.mjs +0 -4
- package/browser/esm2022/lib/typeorm/container.mjs +0 -57
- package/browser/esm2022/lib/typeorm/data-source/BaseDataSourceOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/data-source/DataSource.mjs +0 -458
- package/browser/esm2022/lib/typeorm/data-source/DataSourceOptions.mjs +0 -11
- package/browser/esm2022/lib/typeorm/data-source/index.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/Check.mjs +0 -25
- package/browser/esm2022/lib/typeorm/decorator/EntityRepository.mjs +0 -19
- package/browser/esm2022/lib/typeorm/decorator/Exclusion.mjs +0 -25
- package/browser/esm2022/lib/typeorm/decorator/Generated.mjs +0 -22
- package/browser/esm2022/lib/typeorm/decorator/Index.mjs +0 -52
- package/browser/esm2022/lib/typeorm/decorator/Unique.mjs +0 -48
- package/browser/esm2022/lib/typeorm/decorator/columns/Column.mjs +0 -67
- package/browser/esm2022/lib/typeorm/decorator/columns/CreateDateColumn.mjs +0 -19
- package/browser/esm2022/lib/typeorm/decorator/columns/DeleteDateColumn.mjs +0 -18
- package/browser/esm2022/lib/typeorm/decorator/columns/ObjectIdColumn.mjs +0 -23
- package/browser/esm2022/lib/typeorm/decorator/columns/PrimaryColumn.mjs +0 -54
- package/browser/esm2022/lib/typeorm/decorator/columns/PrimaryGeneratedColumn.mjs +0 -52
- package/browser/esm2022/lib/typeorm/decorator/columns/UpdateDateColumn.mjs +0 -18
- package/browser/esm2022/lib/typeorm/decorator/columns/VersionColumn.mjs +0 -19
- package/browser/esm2022/lib/typeorm/decorator/columns/ViewColumn.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/columns/VirtualColumn.mjs +0 -41
- package/browser/esm2022/lib/typeorm/decorator/entity/ChildEntity.mjs +0 -21
- package/browser/esm2022/lib/typeorm/decorator/entity/Entity.mjs +0 -28
- package/browser/esm2022/lib/typeorm/decorator/entity/TableInheritance.mjs +0 -20
- package/browser/esm2022/lib/typeorm/decorator/entity-view/ViewEntity.mjs +0 -30
- package/browser/esm2022/lib/typeorm/decorator/listeners/AfterInsert.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/listeners/AfterLoad.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/listeners/AfterRecover.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/listeners/AfterRemove.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/listeners/AfterSoftRemove.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/listeners/AfterUpdate.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeInsert.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeRecover.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeRemove.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeSoftRemove.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeUpdate.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/listeners/EventSubscriber.mjs +0 -15
- package/browser/esm2022/lib/typeorm/decorator/options/ColumnCommonOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/ColumnEmbeddedOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/ColumnEnumOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/ColumnHstoreOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/ColumnNumericOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/ColumnOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/ColumnWithLengthOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/ColumnWithWidthOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/EntityOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/IndexOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/JoinColumnOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/JoinTableMultipleColumnsOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/JoinTableOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnIdentityOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnNumericOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnUUIDOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/RelationOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/SpatialColumnOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/UniqueOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/ValueTransformer.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/ViewColumnOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/ViewEntityOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/options/VirtualColumnOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/decorator/relations/JoinColumn.mjs +0 -25
- package/browser/esm2022/lib/typeorm/decorator/relations/JoinTable.mjs +0 -31
- package/browser/esm2022/lib/typeorm/decorator/relations/ManyToMany.mjs +0 -40
- package/browser/esm2022/lib/typeorm/decorator/relations/ManyToOne.mjs +0 -40
- package/browser/esm2022/lib/typeorm/decorator/relations/OneToMany.mjs +0 -32
- package/browser/esm2022/lib/typeorm/decorator/relations/OneToOne.mjs +0 -39
- package/browser/esm2022/lib/typeorm/decorator/relations/RelationCount.mjs +0 -20
- package/browser/esm2022/lib/typeorm/decorator/relations/RelationId.mjs +0 -20
- package/browser/esm2022/lib/typeorm/decorator/tree/Tree.mjs +0 -19
- package/browser/esm2022/lib/typeorm/decorator/tree/TreeChildren.mjs +0 -34
- package/browser/esm2022/lib/typeorm/decorator/tree/TreeLevelColumn.mjs +0 -17
- package/browser/esm2022/lib/typeorm/decorator/tree/TreeParent.mjs +0 -34
- package/browser/esm2022/lib/typeorm/driver/Driver.mjs +0 -4
- package/browser/esm2022/lib/typeorm/driver/DriverFactory.mjs +0 -99
- package/browser/esm2022/lib/typeorm/driver/DriverUtils.mjs +0 -213
- package/browser/esm2022/lib/typeorm/driver/Query.mjs +0 -13
- package/browser/esm2022/lib/typeorm/driver/SqlInMemory.mjs +0 -12
- package/browser/esm2022/lib/typeorm/driver/cordova/CordovaConnectionOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/driver/cordova/CordovaDriver.mjs +0 -63
- package/browser/esm2022/lib/typeorm/driver/cordova/CordovaQueryRunner.mjs +0 -152
- package/browser/esm2022/lib/typeorm/driver/mongodb/typings.mjs +0 -6516
- package/browser/esm2022/lib/typeorm/driver/nativescript/NativescriptConnectionOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/driver/nativescript/NativescriptDriver.mjs +0 -82
- package/browser/esm2022/lib/typeorm/driver/nativescript/NativescriptQueryRunner.mjs +0 -82
- package/browser/esm2022/lib/typeorm/driver/react-native/ReactNativeConnectionOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/driver/react-native/ReactNativeDriver.mjs +0 -69
- package/browser/esm2022/lib/typeorm/driver/react-native/ReactNativeQueryRunner.mjs +0 -81
- package/browser/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteDriver.mjs +0 -582
- package/browser/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteQueryRunner.mjs +0 -1421
- package/browser/esm2022/lib/typeorm/driver/sqljs/SqljsConnectionOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/driver/sqljs/SqljsDriver.mjs +0 -249
- package/browser/esm2022/lib/typeorm/driver/sqljs/SqljsQueryRunner.mjs +0 -107
- package/browser/esm2022/lib/typeorm/driver/types/ColumnTypes.mjs +0 -3
- package/browser/esm2022/lib/typeorm/driver/types/CteCapabilities.mjs +0 -4
- package/browser/esm2022/lib/typeorm/driver/types/DataTypeDefaults.mjs +0 -4
- package/browser/esm2022/lib/typeorm/driver/types/DatabaseType.mjs +0 -3
- package/browser/esm2022/lib/typeorm/driver/types/IsolationLevel.mjs +0 -3
- package/browser/esm2022/lib/typeorm/driver/types/MappedColumnTypes.mjs +0 -4
- package/browser/esm2022/lib/typeorm/driver/types/MetadataTableType.mjs +0 -9
- package/browser/esm2022/lib/typeorm/driver/types/ReplicationMode.mjs +0 -3
- package/browser/esm2022/lib/typeorm/driver/types/UpsertType.mjs +0 -3
- package/browser/esm2022/lib/typeorm/entity-manager/EntityManager.mjs +0 -743
- package/browser/esm2022/lib/typeorm/entity-manager/EntityManagerFactory.mjs +0 -23
- package/browser/esm2022/lib/typeorm/entity-manager/SqljsEntityManager.mjs +0 -35
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchema.mjs +0 -12
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaCheckOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaColumnOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedColumnOptions.mjs +0 -5
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedError.mjs +0 -15
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaExclusionOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaIndexOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaOptions.mjs +0 -8
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationIdOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaTransformer.mjs +0 -268
- package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaUniqueOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/error/AlreadyHasActiveConnectionError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/CannotAttachTreeChildrenEntityError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/CannotConnectAlreadyConnectedError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/CannotCreateEntityIdMapError.mjs +0 -18
- package/browser/esm2022/lib/typeorm/error/CannotDetermineEntityError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/CannotExecuteNotConnectedError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/CannotGetEntityManagerNotConnectedError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/CannotReflectMethodParameterTypeError.mjs +0 -15
- package/browser/esm2022/lib/typeorm/error/CircularRelationsError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/ColumnTypeUndefinedError.mjs +0 -16
- package/browser/esm2022/lib/typeorm/error/ConnectionIsNotSetError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/ConnectionNotFoundError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/CustomRepositoryCannotInheritRepositoryError.mjs +0 -15
- package/browser/esm2022/lib/typeorm/error/CustomRepositoryDoesNotHaveEntityError.mjs +0 -15
- package/browser/esm2022/lib/typeorm/error/CustomRepositoryNotFoundError.mjs +0 -15
- package/browser/esm2022/lib/typeorm/error/DataTypeNotSupportedError.mjs +0 -11
- package/browser/esm2022/lib/typeorm/error/DriverOptionNotSetError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/DriverPackageNotInstalledError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/EntityMetadataNotFoundError.mjs +0 -26
- package/browser/esm2022/lib/typeorm/error/EntityNotFoundError.mjs +0 -37
- package/browser/esm2022/lib/typeorm/error/EntityPropertyNotFoundError.mjs +0 -14
- package/browser/esm2022/lib/typeorm/error/FindRelationsNotFoundError.mjs +0 -20
- package/browser/esm2022/lib/typeorm/error/InitializedRelationError.mjs +0 -17
- package/browser/esm2022/lib/typeorm/error/InsertValuesMissingError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/LimitOnUpdateNotSupportedError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/LockNotSupportedOnGivenDriverError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/MetadataAlreadyExistsError.mjs +0 -15
- package/browser/esm2022/lib/typeorm/error/MetadataWithSuchNameAlreadyExistsError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/MissingDeleteDateColumnError.mjs +0 -9
- package/browser/esm2022/lib/typeorm/error/MissingDriverError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/MissingJoinColumnError.mjs +0 -20
- package/browser/esm2022/lib/typeorm/error/MissingJoinTableError.mjs +0 -20
- package/browser/esm2022/lib/typeorm/error/MissingPrimaryColumnError.mjs +0 -10
- package/browser/esm2022/lib/typeorm/error/MustBeEntityError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/NamingStrategyNotFoundError.mjs +0 -18
- package/browser/esm2022/lib/typeorm/error/NestedSetMultipleRootError.mjs +0 -9
- package/browser/esm2022/lib/typeorm/error/NoConnectionForRepositoryError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/NoConnectionOptionError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/NoNeedToReleaseEntityManagerError.mjs +0 -14
- package/browser/esm2022/lib/typeorm/error/NoVersionOrUpdateDateColumnError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/OffsetWithoutLimitNotSupportedError.mjs +0 -14
- package/browser/esm2022/lib/typeorm/error/OptimisticLockCanNotBeUsedError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/OptimisticLockVersionMismatchError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/PersistedEntityNotFoundError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/PessimisticLockTransactionRequiredError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/PrimaryColumnCannotBeNullableError.mjs +0 -10
- package/browser/esm2022/lib/typeorm/error/QueryFailedError.mjs +0 -27
- package/browser/esm2022/lib/typeorm/error/QueryRunnerAlreadyReleasedError.mjs +0 -9
- package/browser/esm2022/lib/typeorm/error/QueryRunnerProviderAlreadyReleasedError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/RepositoryNotTreeError.mjs +0 -29
- package/browser/esm2022/lib/typeorm/error/ReturningStatementNotSupportedError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/SubjectRemovedAndUpdatedError.mjs +0 -13
- package/browser/esm2022/lib/typeorm/error/SubjectWithoutIdentifierError.mjs +0 -14
- package/browser/esm2022/lib/typeorm/error/TransactionAlreadyStartedError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/TransactionNotStartedError.mjs +0 -12
- package/browser/esm2022/lib/typeorm/error/TreeRepositoryNotSupportedError.mjs +0 -9
- package/browser/esm2022/lib/typeorm/error/TypeORMError.mjs +0 -18
- package/browser/esm2022/lib/typeorm/error/UpdateValuesMissingError.mjs +0 -9
- package/browser/esm2022/lib/typeorm/error/UsingJoinColumnIsNotAllowedError.mjs +0 -10
- package/browser/esm2022/lib/typeorm/error/UsingJoinColumnOnlyOnOneSideAllowedError.mjs +0 -11
- package/browser/esm2022/lib/typeorm/error/UsingJoinTableIsNotAllowedError.mjs +0 -11
- package/browser/esm2022/lib/typeorm/error/UsingJoinTableOnlyOnOneSideAllowedError.mjs +0 -11
- package/browser/esm2022/lib/typeorm/error/index.mjs +0 -63
- package/browser/esm2022/lib/typeorm/find-options/EqualOperator.mjs +0 -10
- package/browser/esm2022/lib/typeorm/find-options/FindManyOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/find-options/FindOneOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/find-options/FindOperator.mjs +0 -74
- package/browser/esm2022/lib/typeorm/find-options/FindOperatorType.mjs +0 -3
- package/browser/esm2022/lib/typeorm/find-options/FindOptionsOrder.mjs +0 -3
- package/browser/esm2022/lib/typeorm/find-options/FindOptionsRelations.mjs +0 -3
- package/browser/esm2022/lib/typeorm/find-options/FindOptionsSelect.mjs +0 -5
- package/browser/esm2022/lib/typeorm/find-options/FindOptionsUtils.mjs +0 -293
- package/browser/esm2022/lib/typeorm/find-options/FindOptionsWhere.mjs +0 -3
- package/browser/esm2022/lib/typeorm/find-options/FindTreeOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/find-options/JoinOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/find-options/OrderByCondition.mjs +0 -3
- package/browser/esm2022/lib/typeorm/find-options/operator/Any.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/ArrayContainedBy.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/ArrayContains.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/ArrayOverlap.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/Between.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/Equal.mjs +0 -15
- package/browser/esm2022/lib/typeorm/find-options/operator/ILike.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/In.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/IsNull.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/LessThan.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/LessThanOrEqual.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/Like.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/MoreThan.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/MoreThanOrEqual.mjs +0 -11
- package/browser/esm2022/lib/typeorm/find-options/operator/Not.mjs +0 -12
- package/browser/esm2022/lib/typeorm/find-options/operator/Raw.mjs +0 -10
- package/browser/esm2022/lib/typeorm/globals.mjs +0 -165
- package/browser/esm2022/lib/typeorm/index.mjs +0 -157
- package/browser/esm2022/lib/typeorm/logger/AdvancedConsoleLogger.mjs +0 -109
- package/browser/esm2022/lib/typeorm/logger/DebugLogger.mjs +0 -94
- package/browser/esm2022/lib/typeorm/logger/Logger.mjs +0 -4
- package/browser/esm2022/lib/typeorm/logger/LoggerFactory.mjs +0 -36
- package/browser/esm2022/lib/typeorm/logger/LoggerOptions.mjs +0 -3
- package/browser/esm2022/lib/typeorm/logger/SimpleConsoleLogger.mjs +0 -108
- package/browser/esm2022/lib/typeorm/metadata/CheckMetadata.mjs +0 -26
- package/browser/esm2022/lib/typeorm/metadata/ColumnMetadata.mjs +0 -553
- package/browser/esm2022/lib/typeorm/metadata/EmbeddedMetadata.mjs +0 -206
- package/browser/esm2022/lib/typeorm/metadata/EntityListenerMetadata.mjs +0 -52
- package/browser/esm2022/lib/typeorm/metadata/EntityMetadata.mjs +0 -636
- package/browser/esm2022/lib/typeorm/metadata/ExclusionMetadata.mjs +0 -26
- package/browser/esm2022/lib/typeorm/metadata/ForeignKeyMetadata.mjs +0 -48
- package/browser/esm2022/lib/typeorm/metadata/IndexMetadata.mjs +0 -131
- package/browser/esm2022/lib/typeorm/metadata/RelationCountMetadata.mjs +0 -30
- package/browser/esm2022/lib/typeorm/metadata/RelationIdMetadata.mjs +0 -50
- package/browser/esm2022/lib/typeorm/metadata/RelationMetadata.mjs +0 -398
- package/browser/esm2022/lib/typeorm/metadata/UniqueMetadata.mjs +0 -90
- package/browser/esm2022/lib/typeorm/metadata/types/ClosureTreeOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata/types/DeferrableType.mjs +0 -3
- package/browser/esm2022/lib/typeorm/metadata/types/EventListenerTypes.mjs +0 -19
- package/browser/esm2022/lib/typeorm/metadata/types/OnDeleteType.mjs +0 -3
- package/browser/esm2022/lib/typeorm/metadata/types/OnUpdateType.mjs +0 -3
- package/browser/esm2022/lib/typeorm/metadata/types/PropertyTypeInFunction.mjs +0 -3
- package/browser/esm2022/lib/typeorm/metadata/types/RelationTypeInFunction.mjs +0 -3
- package/browser/esm2022/lib/typeorm/metadata/types/RelationTypes.mjs +0 -3
- package/browser/esm2022/lib/typeorm/metadata/types/TableTypes.mjs +0 -3
- package/browser/esm2022/lib/typeorm/metadata/types/TreeTypes.mjs +0 -3
- package/browser/esm2022/lib/typeorm/metadata-args/CheckMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/ColumnMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/DiscriminatorValueMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/EmbeddedMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/EntityListenerMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/EntityRepositoryMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/EntitySubscriberMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/ExclusionMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/GeneratedMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/IndexMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/InheritanceMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/JoinColumnMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/JoinTableMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/MetadataArgsStorage.mjs +0 -217
- package/browser/esm2022/lib/typeorm/metadata-args/NamingStrategyMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/RelationCountMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/RelationIdMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/RelationMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/TableMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/TransactionEntityMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/TransactionRepositoryMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/TreeMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/UniqueMetadataArgs.mjs +0 -4
- package/browser/esm2022/lib/typeorm/metadata-args/types/ColumnMode.mjs +0 -3
- package/browser/esm2022/lib/typeorm/metadata-builder/ClosureJunctionEntityMetadataBuilder.mjs +0 -131
- package/browser/esm2022/lib/typeorm/metadata-builder/EntityMetadataBuilder.mjs +0 -678
- package/browser/esm2022/lib/typeorm/metadata-builder/EntityMetadataValidator.mjs +0 -183
- package/browser/esm2022/lib/typeorm/metadata-builder/JunctionEntityMetadataBuilder.mjs +0 -262
- package/browser/esm2022/lib/typeorm/metadata-builder/MetadataUtils.mjs +0 -41
- package/browser/esm2022/lib/typeorm/metadata-builder/RelationJoinColumnBuilder.mjs +0 -167
- package/browser/esm2022/lib/typeorm/migration/Migration.mjs +0 -14
- package/browser/esm2022/lib/typeorm/migration/MigrationExecutor.mjs +0 -454
- package/browser/esm2022/lib/typeorm/migration/MigrationInterface.mjs +0 -4
- package/browser/esm2022/lib/typeorm/naming-strategy/DefaultNamingStrategy.mjs +0 -140
- package/browser/esm2022/lib/typeorm/naming-strategy/NamingStrategyInterface.mjs +0 -4
- package/browser/esm2022/lib/typeorm/persistence/EntityPersistExecutor.mjs +0 -125
- package/browser/esm2022/lib/typeorm/persistence/Subject.mjs +0 -212
- package/browser/esm2022/lib/typeorm/persistence/SubjectChangeMap.mjs +0 -4
- package/browser/esm2022/lib/typeorm/persistence/SubjectChangedColumnsComputer.mjs +0 -164
- package/browser/esm2022/lib/typeorm/persistence/SubjectDatabaseEntityLoader.mjs +0 -125
- package/browser/esm2022/lib/typeorm/persistence/SubjectExecutor.mjs +0 -721
- package/browser/esm2022/lib/typeorm/persistence/SubjectTopoligicalSorter.mjs +0 -151
- package/browser/esm2022/lib/typeorm/persistence/subject-builder/CascadesSubjectBuilder.mjs +0 -84
- package/browser/esm2022/lib/typeorm/persistence/subject-builder/ManyToManySubjectBuilder.mjs +0 -153
- package/browser/esm2022/lib/typeorm/persistence/subject-builder/OneToManySubjectBuilder.mjs +0 -117
- package/browser/esm2022/lib/typeorm/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.mjs +0 -95
- package/browser/esm2022/lib/typeorm/persistence/tree/ClosureSubjectExecutor.mjs +0 -220
- package/browser/esm2022/lib/typeorm/persistence/tree/MaterializedPathSubjectExecutor.mjs +0 -97
- package/browser/esm2022/lib/typeorm/persistence/tree/NestedSetSubjectExecutor.mjs +0 -250
- package/browser/esm2022/lib/typeorm/platform/PlatformTools.mjs +0 -346
- package/browser/esm2022/lib/typeorm/query-builder/Alias.mjs +0 -26
- package/browser/esm2022/lib/typeorm/query-builder/Brackets.mjs +0 -16
- package/browser/esm2022/lib/typeorm/query-builder/DeleteQueryBuilder.mjs +0 -181
- package/browser/esm2022/lib/typeorm/query-builder/InsertOrUpdateOptions.mjs +0 -3
- package/browser/esm2022/lib/typeorm/query-builder/InsertQueryBuilder.mjs +0 -651
- package/browser/esm2022/lib/typeorm/query-builder/JoinAttribute.mjs +0 -153
- package/browser/esm2022/lib/typeorm/query-builder/NotBrackets.mjs +0 -14
- package/browser/esm2022/lib/typeorm/query-builder/QueryBuilder.mjs +0 -967
- package/browser/esm2022/lib/typeorm/query-builder/QueryBuilderCte.mjs +0 -4
- package/browser/esm2022/lib/typeorm/query-builder/QueryBuilderUtils.mjs +0 -22
- package/browser/esm2022/lib/typeorm/query-builder/QueryExpressionMap.mjs +0 -309
- package/browser/esm2022/lib/typeorm/query-builder/QueryPartialEntity.mjs +0 -3
- package/browser/esm2022/lib/typeorm/query-builder/RelationIdLoader.mjs +0 -452
- package/browser/esm2022/lib/typeorm/query-builder/RelationLoader.mjs +0 -262
- package/browser/esm2022/lib/typeorm/query-builder/RelationQueryBuilder.mjs +0 -147
- package/browser/esm2022/lib/typeorm/query-builder/RelationRemover.mjs +0 -130
- package/browser/esm2022/lib/typeorm/query-builder/RelationUpdater.mjs +0 -141
- package/browser/esm2022/lib/typeorm/query-builder/ReturningResultsEntityUpdator.mjs +0 -141
- package/browser/esm2022/lib/typeorm/query-builder/SelectQuery.mjs +0 -4
- package/browser/esm2022/lib/typeorm/query-builder/SelectQueryBuilder.mjs +0 -2278
- package/browser/esm2022/lib/typeorm/query-builder/SelectQueryBuilderOption.mjs +0 -3
- package/browser/esm2022/lib/typeorm/query-builder/SoftDeleteQueryBuilder.mjs +0 -348
- package/browser/esm2022/lib/typeorm/query-builder/UpdateQueryBuilder.mjs +0 -510
- package/browser/esm2022/lib/typeorm/query-builder/WhereClause.mjs +0 -3
- package/browser/esm2022/lib/typeorm/query-builder/WhereExpressionBuilder.mjs +0 -4
- package/browser/esm2022/lib/typeorm/query-builder/relation-count/RelationCountAttribute.mjs +0 -71
- package/browser/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoadResult.mjs +0 -4
- package/browser/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoader.mjs +0 -142
- package/browser/esm2022/lib/typeorm/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.mjs +0 -33
- package/browser/esm2022/lib/typeorm/query-builder/relation-id/RelationIdAttribute.mjs +0 -79
- package/browser/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoadResult.mjs +0 -4
- package/browser/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoader.mjs +0 -247
- package/browser/esm2022/lib/typeorm/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.mjs +0 -33
- package/browser/esm2022/lib/typeorm/query-builder/result/DeleteResult.mjs +0 -14
- package/browser/esm2022/lib/typeorm/query-builder/result/InsertResult.mjs +0 -25
- package/browser/esm2022/lib/typeorm/query-builder/result/UpdateResult.mjs +0 -25
- package/browser/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.mjs +0 -101
- package/browser/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToNewEntityTransformer.mjs +0 -67
- package/browser/esm2022/lib/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.mjs +0 -366
- package/browser/esm2022/lib/typeorm/query-runner/BaseQueryRunner.mjs +0 -392
- package/browser/esm2022/lib/typeorm/query-runner/QueryResult.mjs +0 -14
- package/browser/esm2022/lib/typeorm/query-runner/QueryRunner.mjs +0 -4
- package/browser/esm2022/lib/typeorm/repository/AbstractRepository.mjs +0 -80
- package/browser/esm2022/lib/typeorm/repository/BaseEntity.mjs +0 -283
- package/browser/esm2022/lib/typeorm/repository/FindTreesOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/repository/RemoveOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/repository/Repository.mjs +0 -275
- package/browser/esm2022/lib/typeorm/repository/SaveOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/repository/TreeRepository.mjs +0 -254
- package/browser/esm2022/lib/typeorm/repository/UpsertOptions.mjs +0 -7
- package/browser/esm2022/lib/typeorm/schema-builder/RdbmsSchemaBuilder.mjs +0 -770
- package/browser/esm2022/lib/typeorm/schema-builder/SchemaBuilder.mjs +0 -4
- package/browser/esm2022/lib/typeorm/schema-builder/options/TableCheckOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/schema-builder/options/TableColumnOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/schema-builder/options/TableExclusionOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/schema-builder/options/TableForeignKeyOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/schema-builder/options/TableIndexOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/schema-builder/options/TableOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/schema-builder/options/TableUniqueOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/schema-builder/options/ViewOptions.mjs +0 -4
- package/browser/esm2022/lib/typeorm/schema-builder/table/Table.mjs +0 -274
- package/browser/esm2022/lib/typeorm/schema-builder/table/TableCheck.mjs +0 -37
- package/browser/esm2022/lib/typeorm/schema-builder/table/TableColumn.mjs +0 -108
- package/browser/esm2022/lib/typeorm/schema-builder/table/TableExclusion.mjs +0 -31
- package/browser/esm2022/lib/typeorm/schema-builder/table/TableForeignKey.mjs +0 -60
- package/browser/esm2022/lib/typeorm/schema-builder/table/TableIndex.mjs +0 -53
- package/browser/esm2022/lib/typeorm/schema-builder/table/TableUnique.mjs +0 -38
- package/browser/esm2022/lib/typeorm/schema-builder/util/TableUtils.mjs +0 -38
- package/browser/esm2022/lib/typeorm/schema-builder/util/ViewUtils.mjs +0 -24
- package/browser/esm2022/lib/typeorm/schema-builder/view/View.mjs +0 -43
- package/browser/esm2022/lib/typeorm/subscriber/Broadcaster.mjs +0 -596
- package/browser/esm2022/lib/typeorm/subscriber/BroadcasterResult.mjs +0 -27
- package/browser/esm2022/lib/typeorm/subscriber/EntitySubscriberInterface.mjs +0 -4
- package/browser/esm2022/lib/typeorm/subscriber/event/InsertEvent.mjs +0 -4
- package/browser/esm2022/lib/typeorm/subscriber/event/LoadEvent.mjs +0 -4
- package/browser/esm2022/lib/typeorm/subscriber/event/RecoverEvent.mjs +0 -4
- package/browser/esm2022/lib/typeorm/subscriber/event/RemoveEvent.mjs +0 -4
- package/browser/esm2022/lib/typeorm/subscriber/event/SoftRemoveEvent.mjs +0 -4
- package/browser/esm2022/lib/typeorm/subscriber/event/TransactionCommitEvent.mjs +0 -4
- package/browser/esm2022/lib/typeorm/subscriber/event/TransactionRollbackEvent.mjs +0 -4
- package/browser/esm2022/lib/typeorm/subscriber/event/TransactionStartEvent.mjs +0 -4
- package/browser/esm2022/lib/typeorm/subscriber/event/UpdateEvent.mjs +0 -4
- package/browser/esm2022/lib/typeorm/util/ApplyValueTransformers.mjs +0 -22
- package/browser/esm2022/lib/typeorm/util/DateUtils.mjs +0 -216
- package/browser/esm2022/lib/typeorm/util/DepGraph.mjs +0 -222
- package/browser/esm2022/lib/typeorm/util/DirectoryExportedClassesLoader.mjs +0 -76
- package/browser/esm2022/lib/typeorm/util/ImportUtils.mjs +0 -86
- package/browser/esm2022/lib/typeorm/util/InstanceChecker.mjs +0 -114
- package/browser/esm2022/lib/typeorm/util/ObjectUtils.mjs +0 -38
- package/browser/esm2022/lib/typeorm/util/OrmUtils.mjs +0 -310
- package/browser/esm2022/lib/typeorm/util/PathUtils.mjs +0 -38
- package/browser/esm2022/lib/typeorm/util/RandomGenerator.mjs +0 -150
- package/browser/esm2022/lib/typeorm/util/StringUtils.mjs +0 -108
- package/browser/esm2022/lib/typeorm/util/TreeRepositoryUtils.mjs +0 -53
- package/browser/esm2022/lib/typeorm/util/VersionUtils.mjs +0 -17
- package/browser/esm2022/lib/typeorm/util/escapeRegExp.mjs +0 -4
- package/browser/esm2022/public-api.mjs +0 -2
- package/browser/esm2022/taon-typeorm.mjs +0 -5
- package/client/esm2022/lib/index.mjs +0 -4
- package/client/esm2022/lib/typeorm/cache/DbQueryResultCache.mjs +0 -251
- package/client/esm2022/lib/typeorm/cache/QueryResultCache.mjs +0 -4
- package/client/esm2022/lib/typeorm/cache/QueryResultCacheFactory.mjs +0 -33
- package/client/esm2022/lib/typeorm/cache/QueryResultCacheOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/cache/RedisQueryResultCache.mjs +0 -185
- package/client/esm2022/lib/typeorm/common/DeepPartial.mjs +0 -3
- package/client/esm2022/lib/typeorm/common/EntityTarget.mjs +0 -3
- package/client/esm2022/lib/typeorm/common/MixedList.mjs +0 -3
- package/client/esm2022/lib/typeorm/common/ObjectLiteral.mjs +0 -4
- package/client/esm2022/lib/typeorm/common/ObjectType.mjs +0 -3
- package/client/esm2022/lib/typeorm/common/RelationType.mjs +0 -3
- package/client/esm2022/lib/typeorm/connection/Connection.mjs +0 -13
- package/client/esm2022/lib/typeorm/connection/ConnectionManager.mjs +0 -57
- package/client/esm2022/lib/typeorm/connection/ConnectionMetadataBuilder.mjs +0 -63
- package/client/esm2022/lib/typeorm/connection/ConnectionOptions.mjs +0 -3
- package/client/esm2022/lib/typeorm/connection/ConnectionOptionsReader.mjs +0 -237
- package/client/esm2022/lib/typeorm/constants.mjs +0 -4
- package/client/esm2022/lib/typeorm/container.mjs +0 -57
- package/client/esm2022/lib/typeorm/data-source/BaseDataSourceOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/data-source/DataSource.mjs +0 -458
- package/client/esm2022/lib/typeorm/data-source/DataSourceOptions.mjs +0 -11
- package/client/esm2022/lib/typeorm/data-source/index.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/Check.mjs +0 -25
- package/client/esm2022/lib/typeorm/decorator/EntityRepository.mjs +0 -19
- package/client/esm2022/lib/typeorm/decorator/Exclusion.mjs +0 -25
- package/client/esm2022/lib/typeorm/decorator/Generated.mjs +0 -22
- package/client/esm2022/lib/typeorm/decorator/Index.mjs +0 -52
- package/client/esm2022/lib/typeorm/decorator/Unique.mjs +0 -48
- package/client/esm2022/lib/typeorm/decorator/columns/Column.mjs +0 -67
- package/client/esm2022/lib/typeorm/decorator/columns/CreateDateColumn.mjs +0 -19
- package/client/esm2022/lib/typeorm/decorator/columns/DeleteDateColumn.mjs +0 -18
- package/client/esm2022/lib/typeorm/decorator/columns/ObjectIdColumn.mjs +0 -23
- package/client/esm2022/lib/typeorm/decorator/columns/PrimaryColumn.mjs +0 -54
- package/client/esm2022/lib/typeorm/decorator/columns/PrimaryGeneratedColumn.mjs +0 -52
- package/client/esm2022/lib/typeorm/decorator/columns/UpdateDateColumn.mjs +0 -18
- package/client/esm2022/lib/typeorm/decorator/columns/VersionColumn.mjs +0 -19
- package/client/esm2022/lib/typeorm/decorator/columns/ViewColumn.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/columns/VirtualColumn.mjs +0 -41
- package/client/esm2022/lib/typeorm/decorator/entity/ChildEntity.mjs +0 -21
- package/client/esm2022/lib/typeorm/decorator/entity/Entity.mjs +0 -28
- package/client/esm2022/lib/typeorm/decorator/entity/TableInheritance.mjs +0 -20
- package/client/esm2022/lib/typeorm/decorator/entity-view/ViewEntity.mjs +0 -30
- package/client/esm2022/lib/typeorm/decorator/listeners/AfterInsert.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/listeners/AfterLoad.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/listeners/AfterRecover.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/listeners/AfterRemove.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/listeners/AfterSoftRemove.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/listeners/AfterUpdate.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/listeners/BeforeInsert.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/listeners/BeforeRecover.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/listeners/BeforeRemove.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/listeners/BeforeSoftRemove.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/listeners/BeforeUpdate.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/listeners/EventSubscriber.mjs +0 -15
- package/client/esm2022/lib/typeorm/decorator/options/ColumnCommonOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/ColumnEmbeddedOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/ColumnEnumOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/ColumnHstoreOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/ColumnNumericOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/ColumnOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/ColumnWithLengthOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/ColumnWithWidthOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/EntityOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/IndexOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/JoinColumnOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/JoinTableMultipleColumnsOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/JoinTableOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnIdentityOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnNumericOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnUUIDOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/RelationOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/SpatialColumnOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/UniqueOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/ValueTransformer.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/ViewColumnOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/ViewEntityOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/options/VirtualColumnOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/decorator/relations/JoinColumn.mjs +0 -25
- package/client/esm2022/lib/typeorm/decorator/relations/JoinTable.mjs +0 -31
- package/client/esm2022/lib/typeorm/decorator/relations/ManyToMany.mjs +0 -40
- package/client/esm2022/lib/typeorm/decorator/relations/ManyToOne.mjs +0 -40
- package/client/esm2022/lib/typeorm/decorator/relations/OneToMany.mjs +0 -32
- package/client/esm2022/lib/typeorm/decorator/relations/OneToOne.mjs +0 -39
- package/client/esm2022/lib/typeorm/decorator/relations/RelationCount.mjs +0 -20
- package/client/esm2022/lib/typeorm/decorator/relations/RelationId.mjs +0 -20
- package/client/esm2022/lib/typeorm/decorator/tree/Tree.mjs +0 -19
- package/client/esm2022/lib/typeorm/decorator/tree/TreeChildren.mjs +0 -34
- package/client/esm2022/lib/typeorm/decorator/tree/TreeLevelColumn.mjs +0 -17
- package/client/esm2022/lib/typeorm/decorator/tree/TreeParent.mjs +0 -34
- package/client/esm2022/lib/typeorm/driver/Driver.mjs +0 -4
- package/client/esm2022/lib/typeorm/driver/DriverFactory.mjs +0 -99
- package/client/esm2022/lib/typeorm/driver/DriverUtils.mjs +0 -213
- package/client/esm2022/lib/typeorm/driver/Query.mjs +0 -13
- package/client/esm2022/lib/typeorm/driver/SqlInMemory.mjs +0 -12
- package/client/esm2022/lib/typeorm/driver/cordova/CordovaConnectionOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/driver/cordova/CordovaDriver.mjs +0 -63
- package/client/esm2022/lib/typeorm/driver/cordova/CordovaQueryRunner.mjs +0 -152
- package/client/esm2022/lib/typeorm/driver/mongodb/typings.mjs +0 -6516
- package/client/esm2022/lib/typeorm/driver/nativescript/NativescriptConnectionOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/driver/nativescript/NativescriptDriver.mjs +0 -82
- package/client/esm2022/lib/typeorm/driver/nativescript/NativescriptQueryRunner.mjs +0 -82
- package/client/esm2022/lib/typeorm/driver/react-native/ReactNativeConnectionOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/driver/react-native/ReactNativeDriver.mjs +0 -69
- package/client/esm2022/lib/typeorm/driver/react-native/ReactNativeQueryRunner.mjs +0 -81
- package/client/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteDriver.mjs +0 -582
- package/client/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteQueryRunner.mjs +0 -1421
- package/client/esm2022/lib/typeorm/driver/sqljs/SqljsConnectionOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/driver/sqljs/SqljsDriver.mjs +0 -249
- package/client/esm2022/lib/typeorm/driver/sqljs/SqljsQueryRunner.mjs +0 -107
- package/client/esm2022/lib/typeorm/driver/types/ColumnTypes.mjs +0 -3
- package/client/esm2022/lib/typeorm/driver/types/CteCapabilities.mjs +0 -4
- package/client/esm2022/lib/typeorm/driver/types/DataTypeDefaults.mjs +0 -4
- package/client/esm2022/lib/typeorm/driver/types/DatabaseType.mjs +0 -3
- package/client/esm2022/lib/typeorm/driver/types/IsolationLevel.mjs +0 -3
- package/client/esm2022/lib/typeorm/driver/types/MappedColumnTypes.mjs +0 -4
- package/client/esm2022/lib/typeorm/driver/types/MetadataTableType.mjs +0 -9
- package/client/esm2022/lib/typeorm/driver/types/ReplicationMode.mjs +0 -3
- package/client/esm2022/lib/typeorm/driver/types/UpsertType.mjs +0 -3
- package/client/esm2022/lib/typeorm/entity-manager/EntityManager.mjs +0 -743
- package/client/esm2022/lib/typeorm/entity-manager/EntityManagerFactory.mjs +0 -23
- package/client/esm2022/lib/typeorm/entity-manager/SqljsEntityManager.mjs +0 -35
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchema.mjs +0 -12
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaCheckOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaColumnOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedColumnOptions.mjs +0 -5
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedError.mjs +0 -15
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaExclusionOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaIndexOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaOptions.mjs +0 -8
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationIdOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaTransformer.mjs +0 -268
- package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaUniqueOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/error/AlreadyHasActiveConnectionError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/CannotAttachTreeChildrenEntityError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/CannotConnectAlreadyConnectedError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/CannotCreateEntityIdMapError.mjs +0 -18
- package/client/esm2022/lib/typeorm/error/CannotDetermineEntityError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/CannotExecuteNotConnectedError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/CannotGetEntityManagerNotConnectedError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/CannotReflectMethodParameterTypeError.mjs +0 -15
- package/client/esm2022/lib/typeorm/error/CircularRelationsError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/ColumnTypeUndefinedError.mjs +0 -16
- package/client/esm2022/lib/typeorm/error/ConnectionIsNotSetError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/ConnectionNotFoundError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/CustomRepositoryCannotInheritRepositoryError.mjs +0 -15
- package/client/esm2022/lib/typeorm/error/CustomRepositoryDoesNotHaveEntityError.mjs +0 -15
- package/client/esm2022/lib/typeorm/error/CustomRepositoryNotFoundError.mjs +0 -15
- package/client/esm2022/lib/typeorm/error/DataTypeNotSupportedError.mjs +0 -11
- package/client/esm2022/lib/typeorm/error/DriverOptionNotSetError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/DriverPackageNotInstalledError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/EntityMetadataNotFoundError.mjs +0 -26
- package/client/esm2022/lib/typeorm/error/EntityNotFoundError.mjs +0 -37
- package/client/esm2022/lib/typeorm/error/EntityPropertyNotFoundError.mjs +0 -14
- package/client/esm2022/lib/typeorm/error/FindRelationsNotFoundError.mjs +0 -20
- package/client/esm2022/lib/typeorm/error/InitializedRelationError.mjs +0 -17
- package/client/esm2022/lib/typeorm/error/InsertValuesMissingError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/LimitOnUpdateNotSupportedError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/LockNotSupportedOnGivenDriverError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/MetadataAlreadyExistsError.mjs +0 -15
- package/client/esm2022/lib/typeorm/error/MetadataWithSuchNameAlreadyExistsError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/MissingDeleteDateColumnError.mjs +0 -9
- package/client/esm2022/lib/typeorm/error/MissingDriverError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/MissingJoinColumnError.mjs +0 -20
- package/client/esm2022/lib/typeorm/error/MissingJoinTableError.mjs +0 -20
- package/client/esm2022/lib/typeorm/error/MissingPrimaryColumnError.mjs +0 -10
- package/client/esm2022/lib/typeorm/error/MustBeEntityError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/NamingStrategyNotFoundError.mjs +0 -18
- package/client/esm2022/lib/typeorm/error/NestedSetMultipleRootError.mjs +0 -9
- package/client/esm2022/lib/typeorm/error/NoConnectionForRepositoryError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/NoConnectionOptionError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/NoNeedToReleaseEntityManagerError.mjs +0 -14
- package/client/esm2022/lib/typeorm/error/NoVersionOrUpdateDateColumnError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/OffsetWithoutLimitNotSupportedError.mjs +0 -14
- package/client/esm2022/lib/typeorm/error/OptimisticLockCanNotBeUsedError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/OptimisticLockVersionMismatchError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/PersistedEntityNotFoundError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/PessimisticLockTransactionRequiredError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/PrimaryColumnCannotBeNullableError.mjs +0 -10
- package/client/esm2022/lib/typeorm/error/QueryFailedError.mjs +0 -27
- package/client/esm2022/lib/typeorm/error/QueryRunnerAlreadyReleasedError.mjs +0 -9
- package/client/esm2022/lib/typeorm/error/QueryRunnerProviderAlreadyReleasedError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/RepositoryNotTreeError.mjs +0 -29
- package/client/esm2022/lib/typeorm/error/ReturningStatementNotSupportedError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/SubjectRemovedAndUpdatedError.mjs +0 -13
- package/client/esm2022/lib/typeorm/error/SubjectWithoutIdentifierError.mjs +0 -14
- package/client/esm2022/lib/typeorm/error/TransactionAlreadyStartedError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/TransactionNotStartedError.mjs +0 -12
- package/client/esm2022/lib/typeorm/error/TreeRepositoryNotSupportedError.mjs +0 -9
- package/client/esm2022/lib/typeorm/error/TypeORMError.mjs +0 -18
- package/client/esm2022/lib/typeorm/error/UpdateValuesMissingError.mjs +0 -9
- package/client/esm2022/lib/typeorm/error/UsingJoinColumnIsNotAllowedError.mjs +0 -10
- package/client/esm2022/lib/typeorm/error/UsingJoinColumnOnlyOnOneSideAllowedError.mjs +0 -11
- package/client/esm2022/lib/typeorm/error/UsingJoinTableIsNotAllowedError.mjs +0 -11
- package/client/esm2022/lib/typeorm/error/UsingJoinTableOnlyOnOneSideAllowedError.mjs +0 -11
- package/client/esm2022/lib/typeorm/error/index.mjs +0 -63
- package/client/esm2022/lib/typeorm/find-options/EqualOperator.mjs +0 -10
- package/client/esm2022/lib/typeorm/find-options/FindManyOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/find-options/FindOneOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/find-options/FindOperator.mjs +0 -74
- package/client/esm2022/lib/typeorm/find-options/FindOperatorType.mjs +0 -3
- package/client/esm2022/lib/typeorm/find-options/FindOptionsOrder.mjs +0 -3
- package/client/esm2022/lib/typeorm/find-options/FindOptionsRelations.mjs +0 -3
- package/client/esm2022/lib/typeorm/find-options/FindOptionsSelect.mjs +0 -5
- package/client/esm2022/lib/typeorm/find-options/FindOptionsUtils.mjs +0 -293
- package/client/esm2022/lib/typeorm/find-options/FindOptionsWhere.mjs +0 -3
- package/client/esm2022/lib/typeorm/find-options/FindTreeOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/find-options/JoinOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/find-options/OrderByCondition.mjs +0 -3
- package/client/esm2022/lib/typeorm/find-options/operator/Any.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/ArrayContainedBy.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/ArrayContains.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/ArrayOverlap.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/Between.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/Equal.mjs +0 -15
- package/client/esm2022/lib/typeorm/find-options/operator/ILike.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/In.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/IsNull.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/LessThan.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/LessThanOrEqual.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/Like.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/MoreThan.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/MoreThanOrEqual.mjs +0 -11
- package/client/esm2022/lib/typeorm/find-options/operator/Not.mjs +0 -12
- package/client/esm2022/lib/typeorm/find-options/operator/Raw.mjs +0 -10
- package/client/esm2022/lib/typeorm/globals.mjs +0 -165
- package/client/esm2022/lib/typeorm/index.mjs +0 -157
- package/client/esm2022/lib/typeorm/logger/AdvancedConsoleLogger.mjs +0 -109
- package/client/esm2022/lib/typeorm/logger/DebugLogger.mjs +0 -94
- package/client/esm2022/lib/typeorm/logger/Logger.mjs +0 -4
- package/client/esm2022/lib/typeorm/logger/LoggerFactory.mjs +0 -36
- package/client/esm2022/lib/typeorm/logger/LoggerOptions.mjs +0 -3
- package/client/esm2022/lib/typeorm/logger/SimpleConsoleLogger.mjs +0 -108
- package/client/esm2022/lib/typeorm/metadata/CheckMetadata.mjs +0 -26
- package/client/esm2022/lib/typeorm/metadata/ColumnMetadata.mjs +0 -553
- package/client/esm2022/lib/typeorm/metadata/EmbeddedMetadata.mjs +0 -206
- package/client/esm2022/lib/typeorm/metadata/EntityListenerMetadata.mjs +0 -52
- package/client/esm2022/lib/typeorm/metadata/EntityMetadata.mjs +0 -636
- package/client/esm2022/lib/typeorm/metadata/ExclusionMetadata.mjs +0 -26
- package/client/esm2022/lib/typeorm/metadata/ForeignKeyMetadata.mjs +0 -48
- package/client/esm2022/lib/typeorm/metadata/IndexMetadata.mjs +0 -131
- package/client/esm2022/lib/typeorm/metadata/RelationCountMetadata.mjs +0 -30
- package/client/esm2022/lib/typeorm/metadata/RelationIdMetadata.mjs +0 -50
- package/client/esm2022/lib/typeorm/metadata/RelationMetadata.mjs +0 -398
- package/client/esm2022/lib/typeorm/metadata/UniqueMetadata.mjs +0 -90
- package/client/esm2022/lib/typeorm/metadata/types/ClosureTreeOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata/types/DeferrableType.mjs +0 -3
- package/client/esm2022/lib/typeorm/metadata/types/EventListenerTypes.mjs +0 -19
- package/client/esm2022/lib/typeorm/metadata/types/OnDeleteType.mjs +0 -3
- package/client/esm2022/lib/typeorm/metadata/types/OnUpdateType.mjs +0 -3
- package/client/esm2022/lib/typeorm/metadata/types/PropertyTypeInFunction.mjs +0 -3
- package/client/esm2022/lib/typeorm/metadata/types/RelationTypeInFunction.mjs +0 -3
- package/client/esm2022/lib/typeorm/metadata/types/RelationTypes.mjs +0 -3
- package/client/esm2022/lib/typeorm/metadata/types/TableTypes.mjs +0 -3
- package/client/esm2022/lib/typeorm/metadata/types/TreeTypes.mjs +0 -3
- package/client/esm2022/lib/typeorm/metadata-args/CheckMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/ColumnMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/DiscriminatorValueMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/EmbeddedMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/EntityListenerMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/EntityRepositoryMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/EntitySubscriberMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/ExclusionMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/GeneratedMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/IndexMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/InheritanceMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/JoinColumnMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/JoinTableMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/MetadataArgsStorage.mjs +0 -217
- package/client/esm2022/lib/typeorm/metadata-args/NamingStrategyMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/RelationCountMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/RelationIdMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/RelationMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/TableMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/TransactionEntityMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/TransactionRepositoryMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/TreeMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/UniqueMetadataArgs.mjs +0 -4
- package/client/esm2022/lib/typeorm/metadata-args/types/ColumnMode.mjs +0 -3
- package/client/esm2022/lib/typeorm/metadata-builder/ClosureJunctionEntityMetadataBuilder.mjs +0 -131
- package/client/esm2022/lib/typeorm/metadata-builder/EntityMetadataBuilder.mjs +0 -678
- package/client/esm2022/lib/typeorm/metadata-builder/EntityMetadataValidator.mjs +0 -183
- package/client/esm2022/lib/typeorm/metadata-builder/JunctionEntityMetadataBuilder.mjs +0 -262
- package/client/esm2022/lib/typeorm/metadata-builder/MetadataUtils.mjs +0 -41
- package/client/esm2022/lib/typeorm/metadata-builder/RelationJoinColumnBuilder.mjs +0 -167
- package/client/esm2022/lib/typeorm/migration/Migration.mjs +0 -14
- package/client/esm2022/lib/typeorm/migration/MigrationExecutor.mjs +0 -454
- package/client/esm2022/lib/typeorm/migration/MigrationInterface.mjs +0 -4
- package/client/esm2022/lib/typeorm/naming-strategy/DefaultNamingStrategy.mjs +0 -140
- package/client/esm2022/lib/typeorm/naming-strategy/NamingStrategyInterface.mjs +0 -4
- package/client/esm2022/lib/typeorm/persistence/EntityPersistExecutor.mjs +0 -125
- package/client/esm2022/lib/typeorm/persistence/Subject.mjs +0 -212
- package/client/esm2022/lib/typeorm/persistence/SubjectChangeMap.mjs +0 -4
- package/client/esm2022/lib/typeorm/persistence/SubjectChangedColumnsComputer.mjs +0 -164
- package/client/esm2022/lib/typeorm/persistence/SubjectDatabaseEntityLoader.mjs +0 -125
- package/client/esm2022/lib/typeorm/persistence/SubjectExecutor.mjs +0 -721
- package/client/esm2022/lib/typeorm/persistence/SubjectTopoligicalSorter.mjs +0 -151
- package/client/esm2022/lib/typeorm/persistence/subject-builder/CascadesSubjectBuilder.mjs +0 -84
- package/client/esm2022/lib/typeorm/persistence/subject-builder/ManyToManySubjectBuilder.mjs +0 -153
- package/client/esm2022/lib/typeorm/persistence/subject-builder/OneToManySubjectBuilder.mjs +0 -117
- package/client/esm2022/lib/typeorm/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.mjs +0 -95
- package/client/esm2022/lib/typeorm/persistence/tree/ClosureSubjectExecutor.mjs +0 -220
- package/client/esm2022/lib/typeorm/persistence/tree/MaterializedPathSubjectExecutor.mjs +0 -97
- package/client/esm2022/lib/typeorm/persistence/tree/NestedSetSubjectExecutor.mjs +0 -250
- package/client/esm2022/lib/typeorm/platform/PlatformTools.mjs +0 -346
- package/client/esm2022/lib/typeorm/query-builder/Alias.mjs +0 -26
- package/client/esm2022/lib/typeorm/query-builder/Brackets.mjs +0 -16
- package/client/esm2022/lib/typeorm/query-builder/DeleteQueryBuilder.mjs +0 -181
- package/client/esm2022/lib/typeorm/query-builder/InsertOrUpdateOptions.mjs +0 -3
- package/client/esm2022/lib/typeorm/query-builder/InsertQueryBuilder.mjs +0 -651
- package/client/esm2022/lib/typeorm/query-builder/JoinAttribute.mjs +0 -153
- package/client/esm2022/lib/typeorm/query-builder/NotBrackets.mjs +0 -14
- package/client/esm2022/lib/typeorm/query-builder/QueryBuilder.mjs +0 -967
- package/client/esm2022/lib/typeorm/query-builder/QueryBuilderCte.mjs +0 -4
- package/client/esm2022/lib/typeorm/query-builder/QueryBuilderUtils.mjs +0 -22
- package/client/esm2022/lib/typeorm/query-builder/QueryExpressionMap.mjs +0 -309
- package/client/esm2022/lib/typeorm/query-builder/QueryPartialEntity.mjs +0 -3
- package/client/esm2022/lib/typeorm/query-builder/RelationIdLoader.mjs +0 -452
- package/client/esm2022/lib/typeorm/query-builder/RelationLoader.mjs +0 -262
- package/client/esm2022/lib/typeorm/query-builder/RelationQueryBuilder.mjs +0 -147
- package/client/esm2022/lib/typeorm/query-builder/RelationRemover.mjs +0 -130
- package/client/esm2022/lib/typeorm/query-builder/RelationUpdater.mjs +0 -141
- package/client/esm2022/lib/typeorm/query-builder/ReturningResultsEntityUpdator.mjs +0 -141
- package/client/esm2022/lib/typeorm/query-builder/SelectQuery.mjs +0 -4
- package/client/esm2022/lib/typeorm/query-builder/SelectQueryBuilder.mjs +0 -2278
- package/client/esm2022/lib/typeorm/query-builder/SelectQueryBuilderOption.mjs +0 -3
- package/client/esm2022/lib/typeorm/query-builder/SoftDeleteQueryBuilder.mjs +0 -348
- package/client/esm2022/lib/typeorm/query-builder/UpdateQueryBuilder.mjs +0 -510
- package/client/esm2022/lib/typeorm/query-builder/WhereClause.mjs +0 -3
- package/client/esm2022/lib/typeorm/query-builder/WhereExpressionBuilder.mjs +0 -4
- package/client/esm2022/lib/typeorm/query-builder/relation-count/RelationCountAttribute.mjs +0 -71
- package/client/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoadResult.mjs +0 -4
- package/client/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoader.mjs +0 -142
- package/client/esm2022/lib/typeorm/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.mjs +0 -33
- package/client/esm2022/lib/typeorm/query-builder/relation-id/RelationIdAttribute.mjs +0 -79
- package/client/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoadResult.mjs +0 -4
- package/client/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoader.mjs +0 -247
- package/client/esm2022/lib/typeorm/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.mjs +0 -33
- package/client/esm2022/lib/typeorm/query-builder/result/DeleteResult.mjs +0 -14
- package/client/esm2022/lib/typeorm/query-builder/result/InsertResult.mjs +0 -25
- package/client/esm2022/lib/typeorm/query-builder/result/UpdateResult.mjs +0 -25
- package/client/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.mjs +0 -101
- package/client/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToNewEntityTransformer.mjs +0 -67
- package/client/esm2022/lib/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.mjs +0 -366
- package/client/esm2022/lib/typeorm/query-runner/BaseQueryRunner.mjs +0 -392
- package/client/esm2022/lib/typeorm/query-runner/QueryResult.mjs +0 -14
- package/client/esm2022/lib/typeorm/query-runner/QueryRunner.mjs +0 -4
- package/client/esm2022/lib/typeorm/repository/AbstractRepository.mjs +0 -80
- package/client/esm2022/lib/typeorm/repository/BaseEntity.mjs +0 -283
- package/client/esm2022/lib/typeorm/repository/FindTreesOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/repository/RemoveOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/repository/Repository.mjs +0 -275
- package/client/esm2022/lib/typeorm/repository/SaveOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/repository/TreeRepository.mjs +0 -254
- package/client/esm2022/lib/typeorm/repository/UpsertOptions.mjs +0 -7
- package/client/esm2022/lib/typeorm/schema-builder/RdbmsSchemaBuilder.mjs +0 -770
- package/client/esm2022/lib/typeorm/schema-builder/SchemaBuilder.mjs +0 -4
- package/client/esm2022/lib/typeorm/schema-builder/options/TableCheckOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/schema-builder/options/TableColumnOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/schema-builder/options/TableExclusionOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/schema-builder/options/TableForeignKeyOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/schema-builder/options/TableIndexOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/schema-builder/options/TableOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/schema-builder/options/TableUniqueOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/schema-builder/options/ViewOptions.mjs +0 -4
- package/client/esm2022/lib/typeorm/schema-builder/table/Table.mjs +0 -274
- package/client/esm2022/lib/typeorm/schema-builder/table/TableCheck.mjs +0 -37
- package/client/esm2022/lib/typeorm/schema-builder/table/TableColumn.mjs +0 -108
- package/client/esm2022/lib/typeorm/schema-builder/table/TableExclusion.mjs +0 -31
- package/client/esm2022/lib/typeorm/schema-builder/table/TableForeignKey.mjs +0 -60
- package/client/esm2022/lib/typeorm/schema-builder/table/TableIndex.mjs +0 -53
- package/client/esm2022/lib/typeorm/schema-builder/table/TableUnique.mjs +0 -38
- package/client/esm2022/lib/typeorm/schema-builder/util/TableUtils.mjs +0 -38
- package/client/esm2022/lib/typeorm/schema-builder/util/ViewUtils.mjs +0 -24
- package/client/esm2022/lib/typeorm/schema-builder/view/View.mjs +0 -43
- package/client/esm2022/lib/typeorm/subscriber/Broadcaster.mjs +0 -596
- package/client/esm2022/lib/typeorm/subscriber/BroadcasterResult.mjs +0 -27
- package/client/esm2022/lib/typeorm/subscriber/EntitySubscriberInterface.mjs +0 -4
- package/client/esm2022/lib/typeorm/subscriber/event/InsertEvent.mjs +0 -4
- package/client/esm2022/lib/typeorm/subscriber/event/LoadEvent.mjs +0 -4
- package/client/esm2022/lib/typeorm/subscriber/event/RecoverEvent.mjs +0 -4
- package/client/esm2022/lib/typeorm/subscriber/event/RemoveEvent.mjs +0 -4
- package/client/esm2022/lib/typeorm/subscriber/event/SoftRemoveEvent.mjs +0 -4
- package/client/esm2022/lib/typeorm/subscriber/event/TransactionCommitEvent.mjs +0 -4
- package/client/esm2022/lib/typeorm/subscriber/event/TransactionRollbackEvent.mjs +0 -4
- package/client/esm2022/lib/typeorm/subscriber/event/TransactionStartEvent.mjs +0 -4
- package/client/esm2022/lib/typeorm/subscriber/event/UpdateEvent.mjs +0 -4
- package/client/esm2022/lib/typeorm/util/ApplyValueTransformers.mjs +0 -22
- package/client/esm2022/lib/typeorm/util/DateUtils.mjs +0 -216
- package/client/esm2022/lib/typeorm/util/DepGraph.mjs +0 -222
- package/client/esm2022/lib/typeorm/util/DirectoryExportedClassesLoader.mjs +0 -76
- package/client/esm2022/lib/typeorm/util/ImportUtils.mjs +0 -86
- package/client/esm2022/lib/typeorm/util/InstanceChecker.mjs +0 -114
- package/client/esm2022/lib/typeorm/util/ObjectUtils.mjs +0 -38
- package/client/esm2022/lib/typeorm/util/OrmUtils.mjs +0 -310
- package/client/esm2022/lib/typeorm/util/PathUtils.mjs +0 -38
- package/client/esm2022/lib/typeorm/util/RandomGenerator.mjs +0 -150
- package/client/esm2022/lib/typeorm/util/StringUtils.mjs +0 -108
- package/client/esm2022/lib/typeorm/util/TreeRepositoryUtils.mjs +0 -53
- package/client/esm2022/lib/typeorm/util/VersionUtils.mjs +0 -17
- package/client/esm2022/lib/typeorm/util/escapeRegExp.mjs +0 -4
- package/client/esm2022/public-api.mjs +0 -2
- package/client/esm2022/taon-typeorm.mjs +0 -5
- package/websql/esm2022/lib/index.mjs +0 -4
- package/websql/esm2022/lib/typeorm/cache/DbQueryResultCache.mjs +0 -251
- package/websql/esm2022/lib/typeorm/cache/QueryResultCache.mjs +0 -4
- package/websql/esm2022/lib/typeorm/cache/QueryResultCacheFactory.mjs +0 -33
- package/websql/esm2022/lib/typeorm/cache/QueryResultCacheOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/cache/RedisQueryResultCache.mjs +0 -185
- package/websql/esm2022/lib/typeorm/common/DeepPartial.mjs +0 -3
- package/websql/esm2022/lib/typeorm/common/EntityTarget.mjs +0 -3
- package/websql/esm2022/lib/typeorm/common/MixedList.mjs +0 -3
- package/websql/esm2022/lib/typeorm/common/ObjectLiteral.mjs +0 -4
- package/websql/esm2022/lib/typeorm/common/ObjectType.mjs +0 -3
- package/websql/esm2022/lib/typeorm/common/RelationType.mjs +0 -3
- package/websql/esm2022/lib/typeorm/connection/Connection.mjs +0 -13
- package/websql/esm2022/lib/typeorm/connection/ConnectionManager.mjs +0 -57
- package/websql/esm2022/lib/typeorm/connection/ConnectionMetadataBuilder.mjs +0 -63
- package/websql/esm2022/lib/typeorm/connection/ConnectionOptions.mjs +0 -3
- package/websql/esm2022/lib/typeorm/connection/ConnectionOptionsReader.mjs +0 -237
- package/websql/esm2022/lib/typeorm/constants.mjs +0 -4
- package/websql/esm2022/lib/typeorm/container.mjs +0 -57
- package/websql/esm2022/lib/typeorm/data-source/BaseDataSourceOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/data-source/DataSource.mjs +0 -458
- package/websql/esm2022/lib/typeorm/data-source/DataSourceOptions.mjs +0 -11
- package/websql/esm2022/lib/typeorm/data-source/index.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/Check.mjs +0 -25
- package/websql/esm2022/lib/typeorm/decorator/EntityRepository.mjs +0 -19
- package/websql/esm2022/lib/typeorm/decorator/Exclusion.mjs +0 -25
- package/websql/esm2022/lib/typeorm/decorator/Generated.mjs +0 -22
- package/websql/esm2022/lib/typeorm/decorator/Index.mjs +0 -52
- package/websql/esm2022/lib/typeorm/decorator/Unique.mjs +0 -48
- package/websql/esm2022/lib/typeorm/decorator/columns/Column.mjs +0 -67
- package/websql/esm2022/lib/typeorm/decorator/columns/CreateDateColumn.mjs +0 -19
- package/websql/esm2022/lib/typeorm/decorator/columns/DeleteDateColumn.mjs +0 -18
- package/websql/esm2022/lib/typeorm/decorator/columns/ObjectIdColumn.mjs +0 -23
- package/websql/esm2022/lib/typeorm/decorator/columns/PrimaryColumn.mjs +0 -54
- package/websql/esm2022/lib/typeorm/decorator/columns/PrimaryGeneratedColumn.mjs +0 -52
- package/websql/esm2022/lib/typeorm/decorator/columns/UpdateDateColumn.mjs +0 -18
- package/websql/esm2022/lib/typeorm/decorator/columns/VersionColumn.mjs +0 -19
- package/websql/esm2022/lib/typeorm/decorator/columns/ViewColumn.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/columns/VirtualColumn.mjs +0 -41
- package/websql/esm2022/lib/typeorm/decorator/entity/ChildEntity.mjs +0 -21
- package/websql/esm2022/lib/typeorm/decorator/entity/Entity.mjs +0 -28
- package/websql/esm2022/lib/typeorm/decorator/entity/TableInheritance.mjs +0 -20
- package/websql/esm2022/lib/typeorm/decorator/entity-view/ViewEntity.mjs +0 -30
- package/websql/esm2022/lib/typeorm/decorator/listeners/AfterInsert.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/listeners/AfterLoad.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/listeners/AfterRecover.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/listeners/AfterRemove.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/listeners/AfterSoftRemove.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/listeners/AfterUpdate.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeInsert.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeRecover.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeRemove.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeSoftRemove.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeUpdate.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/listeners/EventSubscriber.mjs +0 -15
- package/websql/esm2022/lib/typeorm/decorator/options/ColumnCommonOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/ColumnEmbeddedOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/ColumnEnumOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/ColumnHstoreOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/ColumnNumericOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/ColumnOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/ColumnWithLengthOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/ColumnWithWidthOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/EntityOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/IndexOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/JoinColumnOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/JoinTableMultipleColumnsOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/JoinTableOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnIdentityOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnNumericOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnUUIDOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/RelationOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/SpatialColumnOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/UniqueOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/ValueTransformer.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/ViewColumnOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/ViewEntityOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/options/VirtualColumnOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/decorator/relations/JoinColumn.mjs +0 -25
- package/websql/esm2022/lib/typeorm/decorator/relations/JoinTable.mjs +0 -31
- package/websql/esm2022/lib/typeorm/decorator/relations/ManyToMany.mjs +0 -40
- package/websql/esm2022/lib/typeorm/decorator/relations/ManyToOne.mjs +0 -40
- package/websql/esm2022/lib/typeorm/decorator/relations/OneToMany.mjs +0 -32
- package/websql/esm2022/lib/typeorm/decorator/relations/OneToOne.mjs +0 -39
- package/websql/esm2022/lib/typeorm/decorator/relations/RelationCount.mjs +0 -20
- package/websql/esm2022/lib/typeorm/decorator/relations/RelationId.mjs +0 -20
- package/websql/esm2022/lib/typeorm/decorator/tree/Tree.mjs +0 -19
- package/websql/esm2022/lib/typeorm/decorator/tree/TreeChildren.mjs +0 -34
- package/websql/esm2022/lib/typeorm/decorator/tree/TreeLevelColumn.mjs +0 -17
- package/websql/esm2022/lib/typeorm/decorator/tree/TreeParent.mjs +0 -34
- package/websql/esm2022/lib/typeorm/driver/Driver.mjs +0 -4
- package/websql/esm2022/lib/typeorm/driver/DriverFactory.mjs +0 -99
- package/websql/esm2022/lib/typeorm/driver/DriverUtils.mjs +0 -213
- package/websql/esm2022/lib/typeorm/driver/Query.mjs +0 -13
- package/websql/esm2022/lib/typeorm/driver/SqlInMemory.mjs +0 -12
- package/websql/esm2022/lib/typeorm/driver/cordova/CordovaConnectionOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/driver/cordova/CordovaDriver.mjs +0 -63
- package/websql/esm2022/lib/typeorm/driver/cordova/CordovaQueryRunner.mjs +0 -152
- package/websql/esm2022/lib/typeorm/driver/mongodb/typings.mjs +0 -6516
- package/websql/esm2022/lib/typeorm/driver/nativescript/NativescriptConnectionOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/driver/nativescript/NativescriptDriver.mjs +0 -82
- package/websql/esm2022/lib/typeorm/driver/nativescript/NativescriptQueryRunner.mjs +0 -82
- package/websql/esm2022/lib/typeorm/driver/react-native/ReactNativeConnectionOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/driver/react-native/ReactNativeDriver.mjs +0 -69
- package/websql/esm2022/lib/typeorm/driver/react-native/ReactNativeQueryRunner.mjs +0 -81
- package/websql/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteDriver.mjs +0 -582
- package/websql/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteQueryRunner.mjs +0 -1421
- package/websql/esm2022/lib/typeorm/driver/sqljs/SqljsConnectionOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/driver/sqljs/SqljsDriver.mjs +0 -249
- package/websql/esm2022/lib/typeorm/driver/sqljs/SqljsQueryRunner.mjs +0 -107
- package/websql/esm2022/lib/typeorm/driver/types/ColumnTypes.mjs +0 -3
- package/websql/esm2022/lib/typeorm/driver/types/CteCapabilities.mjs +0 -4
- package/websql/esm2022/lib/typeorm/driver/types/DataTypeDefaults.mjs +0 -4
- package/websql/esm2022/lib/typeorm/driver/types/DatabaseType.mjs +0 -3
- package/websql/esm2022/lib/typeorm/driver/types/IsolationLevel.mjs +0 -3
- package/websql/esm2022/lib/typeorm/driver/types/MappedColumnTypes.mjs +0 -4
- package/websql/esm2022/lib/typeorm/driver/types/MetadataTableType.mjs +0 -9
- package/websql/esm2022/lib/typeorm/driver/types/ReplicationMode.mjs +0 -3
- package/websql/esm2022/lib/typeorm/driver/types/UpsertType.mjs +0 -3
- package/websql/esm2022/lib/typeorm/entity-manager/EntityManager.mjs +0 -743
- package/websql/esm2022/lib/typeorm/entity-manager/EntityManagerFactory.mjs +0 -23
- package/websql/esm2022/lib/typeorm/entity-manager/SqljsEntityManager.mjs +0 -35
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchema.mjs +0 -12
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaCheckOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaColumnOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedColumnOptions.mjs +0 -5
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedError.mjs +0 -15
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaExclusionOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaIndexOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaOptions.mjs +0 -8
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationIdOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaTransformer.mjs +0 -268
- package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaUniqueOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/error/AlreadyHasActiveConnectionError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/CannotAttachTreeChildrenEntityError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/CannotConnectAlreadyConnectedError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/CannotCreateEntityIdMapError.mjs +0 -18
- package/websql/esm2022/lib/typeorm/error/CannotDetermineEntityError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/CannotExecuteNotConnectedError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/CannotGetEntityManagerNotConnectedError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/CannotReflectMethodParameterTypeError.mjs +0 -15
- package/websql/esm2022/lib/typeorm/error/CircularRelationsError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/ColumnTypeUndefinedError.mjs +0 -16
- package/websql/esm2022/lib/typeorm/error/ConnectionIsNotSetError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/ConnectionNotFoundError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/CustomRepositoryCannotInheritRepositoryError.mjs +0 -15
- package/websql/esm2022/lib/typeorm/error/CustomRepositoryDoesNotHaveEntityError.mjs +0 -15
- package/websql/esm2022/lib/typeorm/error/CustomRepositoryNotFoundError.mjs +0 -15
- package/websql/esm2022/lib/typeorm/error/DataTypeNotSupportedError.mjs +0 -11
- package/websql/esm2022/lib/typeorm/error/DriverOptionNotSetError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/DriverPackageNotInstalledError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/EntityMetadataNotFoundError.mjs +0 -26
- package/websql/esm2022/lib/typeorm/error/EntityNotFoundError.mjs +0 -37
- package/websql/esm2022/lib/typeorm/error/EntityPropertyNotFoundError.mjs +0 -14
- package/websql/esm2022/lib/typeorm/error/FindRelationsNotFoundError.mjs +0 -20
- package/websql/esm2022/lib/typeorm/error/InitializedRelationError.mjs +0 -17
- package/websql/esm2022/lib/typeorm/error/InsertValuesMissingError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/LimitOnUpdateNotSupportedError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/LockNotSupportedOnGivenDriverError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/MetadataAlreadyExistsError.mjs +0 -15
- package/websql/esm2022/lib/typeorm/error/MetadataWithSuchNameAlreadyExistsError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/MissingDeleteDateColumnError.mjs +0 -9
- package/websql/esm2022/lib/typeorm/error/MissingDriverError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/MissingJoinColumnError.mjs +0 -20
- package/websql/esm2022/lib/typeorm/error/MissingJoinTableError.mjs +0 -20
- package/websql/esm2022/lib/typeorm/error/MissingPrimaryColumnError.mjs +0 -10
- package/websql/esm2022/lib/typeorm/error/MustBeEntityError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/NamingStrategyNotFoundError.mjs +0 -18
- package/websql/esm2022/lib/typeorm/error/NestedSetMultipleRootError.mjs +0 -9
- package/websql/esm2022/lib/typeorm/error/NoConnectionForRepositoryError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/NoConnectionOptionError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/NoNeedToReleaseEntityManagerError.mjs +0 -14
- package/websql/esm2022/lib/typeorm/error/NoVersionOrUpdateDateColumnError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/OffsetWithoutLimitNotSupportedError.mjs +0 -14
- package/websql/esm2022/lib/typeorm/error/OptimisticLockCanNotBeUsedError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/OptimisticLockVersionMismatchError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/PersistedEntityNotFoundError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/PessimisticLockTransactionRequiredError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/PrimaryColumnCannotBeNullableError.mjs +0 -10
- package/websql/esm2022/lib/typeorm/error/QueryFailedError.mjs +0 -27
- package/websql/esm2022/lib/typeorm/error/QueryRunnerAlreadyReleasedError.mjs +0 -9
- package/websql/esm2022/lib/typeorm/error/QueryRunnerProviderAlreadyReleasedError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/RepositoryNotTreeError.mjs +0 -29
- package/websql/esm2022/lib/typeorm/error/ReturningStatementNotSupportedError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/SubjectRemovedAndUpdatedError.mjs +0 -13
- package/websql/esm2022/lib/typeorm/error/SubjectWithoutIdentifierError.mjs +0 -14
- package/websql/esm2022/lib/typeorm/error/TransactionAlreadyStartedError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/TransactionNotStartedError.mjs +0 -12
- package/websql/esm2022/lib/typeorm/error/TreeRepositoryNotSupportedError.mjs +0 -9
- package/websql/esm2022/lib/typeorm/error/TypeORMError.mjs +0 -18
- package/websql/esm2022/lib/typeorm/error/UpdateValuesMissingError.mjs +0 -9
- package/websql/esm2022/lib/typeorm/error/UsingJoinColumnIsNotAllowedError.mjs +0 -10
- package/websql/esm2022/lib/typeorm/error/UsingJoinColumnOnlyOnOneSideAllowedError.mjs +0 -11
- package/websql/esm2022/lib/typeorm/error/UsingJoinTableIsNotAllowedError.mjs +0 -11
- package/websql/esm2022/lib/typeorm/error/UsingJoinTableOnlyOnOneSideAllowedError.mjs +0 -11
- package/websql/esm2022/lib/typeorm/error/index.mjs +0 -63
- package/websql/esm2022/lib/typeorm/find-options/EqualOperator.mjs +0 -10
- package/websql/esm2022/lib/typeorm/find-options/FindManyOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/find-options/FindOneOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/find-options/FindOperator.mjs +0 -74
- package/websql/esm2022/lib/typeorm/find-options/FindOperatorType.mjs +0 -3
- package/websql/esm2022/lib/typeorm/find-options/FindOptionsOrder.mjs +0 -3
- package/websql/esm2022/lib/typeorm/find-options/FindOptionsRelations.mjs +0 -3
- package/websql/esm2022/lib/typeorm/find-options/FindOptionsSelect.mjs +0 -5
- package/websql/esm2022/lib/typeorm/find-options/FindOptionsUtils.mjs +0 -293
- package/websql/esm2022/lib/typeorm/find-options/FindOptionsWhere.mjs +0 -3
- package/websql/esm2022/lib/typeorm/find-options/FindTreeOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/find-options/JoinOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/find-options/OrderByCondition.mjs +0 -3
- package/websql/esm2022/lib/typeorm/find-options/operator/Any.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/ArrayContainedBy.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/ArrayContains.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/ArrayOverlap.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/Between.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/Equal.mjs +0 -15
- package/websql/esm2022/lib/typeorm/find-options/operator/ILike.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/In.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/IsNull.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/LessThan.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/LessThanOrEqual.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/Like.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/MoreThan.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/MoreThanOrEqual.mjs +0 -11
- package/websql/esm2022/lib/typeorm/find-options/operator/Not.mjs +0 -12
- package/websql/esm2022/lib/typeorm/find-options/operator/Raw.mjs +0 -10
- package/websql/esm2022/lib/typeorm/globals.mjs +0 -165
- package/websql/esm2022/lib/typeorm/index.mjs +0 -157
- package/websql/esm2022/lib/typeorm/logger/AdvancedConsoleLogger.mjs +0 -109
- package/websql/esm2022/lib/typeorm/logger/DebugLogger.mjs +0 -94
- package/websql/esm2022/lib/typeorm/logger/Logger.mjs +0 -4
- package/websql/esm2022/lib/typeorm/logger/LoggerFactory.mjs +0 -36
- package/websql/esm2022/lib/typeorm/logger/LoggerOptions.mjs +0 -3
- package/websql/esm2022/lib/typeorm/logger/SimpleConsoleLogger.mjs +0 -108
- package/websql/esm2022/lib/typeorm/metadata/CheckMetadata.mjs +0 -26
- package/websql/esm2022/lib/typeorm/metadata/ColumnMetadata.mjs +0 -553
- package/websql/esm2022/lib/typeorm/metadata/EmbeddedMetadata.mjs +0 -206
- package/websql/esm2022/lib/typeorm/metadata/EntityListenerMetadata.mjs +0 -52
- package/websql/esm2022/lib/typeorm/metadata/EntityMetadata.mjs +0 -636
- package/websql/esm2022/lib/typeorm/metadata/ExclusionMetadata.mjs +0 -26
- package/websql/esm2022/lib/typeorm/metadata/ForeignKeyMetadata.mjs +0 -48
- package/websql/esm2022/lib/typeorm/metadata/IndexMetadata.mjs +0 -131
- package/websql/esm2022/lib/typeorm/metadata/RelationCountMetadata.mjs +0 -30
- package/websql/esm2022/lib/typeorm/metadata/RelationIdMetadata.mjs +0 -50
- package/websql/esm2022/lib/typeorm/metadata/RelationMetadata.mjs +0 -398
- package/websql/esm2022/lib/typeorm/metadata/UniqueMetadata.mjs +0 -90
- package/websql/esm2022/lib/typeorm/metadata/types/ClosureTreeOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata/types/DeferrableType.mjs +0 -3
- package/websql/esm2022/lib/typeorm/metadata/types/EventListenerTypes.mjs +0 -19
- package/websql/esm2022/lib/typeorm/metadata/types/OnDeleteType.mjs +0 -3
- package/websql/esm2022/lib/typeorm/metadata/types/OnUpdateType.mjs +0 -3
- package/websql/esm2022/lib/typeorm/metadata/types/PropertyTypeInFunction.mjs +0 -3
- package/websql/esm2022/lib/typeorm/metadata/types/RelationTypeInFunction.mjs +0 -3
- package/websql/esm2022/lib/typeorm/metadata/types/RelationTypes.mjs +0 -3
- package/websql/esm2022/lib/typeorm/metadata/types/TableTypes.mjs +0 -3
- package/websql/esm2022/lib/typeorm/metadata/types/TreeTypes.mjs +0 -3
- package/websql/esm2022/lib/typeorm/metadata-args/CheckMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/ColumnMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/DiscriminatorValueMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/EmbeddedMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/EntityListenerMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/EntityRepositoryMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/EntitySubscriberMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/ExclusionMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/GeneratedMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/IndexMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/InheritanceMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/JoinColumnMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/JoinTableMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/MetadataArgsStorage.mjs +0 -217
- package/websql/esm2022/lib/typeorm/metadata-args/NamingStrategyMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/RelationCountMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/RelationIdMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/RelationMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/TableMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/TransactionEntityMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/TransactionRepositoryMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/TreeMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/UniqueMetadataArgs.mjs +0 -4
- package/websql/esm2022/lib/typeorm/metadata-args/types/ColumnMode.mjs +0 -3
- package/websql/esm2022/lib/typeorm/metadata-builder/ClosureJunctionEntityMetadataBuilder.mjs +0 -131
- package/websql/esm2022/lib/typeorm/metadata-builder/EntityMetadataBuilder.mjs +0 -678
- package/websql/esm2022/lib/typeorm/metadata-builder/EntityMetadataValidator.mjs +0 -183
- package/websql/esm2022/lib/typeorm/metadata-builder/JunctionEntityMetadataBuilder.mjs +0 -262
- package/websql/esm2022/lib/typeorm/metadata-builder/MetadataUtils.mjs +0 -41
- package/websql/esm2022/lib/typeorm/metadata-builder/RelationJoinColumnBuilder.mjs +0 -167
- package/websql/esm2022/lib/typeorm/migration/Migration.mjs +0 -14
- package/websql/esm2022/lib/typeorm/migration/MigrationExecutor.mjs +0 -454
- package/websql/esm2022/lib/typeorm/migration/MigrationInterface.mjs +0 -4
- package/websql/esm2022/lib/typeorm/naming-strategy/DefaultNamingStrategy.mjs +0 -140
- package/websql/esm2022/lib/typeorm/naming-strategy/NamingStrategyInterface.mjs +0 -4
- package/websql/esm2022/lib/typeorm/persistence/EntityPersistExecutor.mjs +0 -125
- package/websql/esm2022/lib/typeorm/persistence/Subject.mjs +0 -212
- package/websql/esm2022/lib/typeorm/persistence/SubjectChangeMap.mjs +0 -4
- package/websql/esm2022/lib/typeorm/persistence/SubjectChangedColumnsComputer.mjs +0 -164
- package/websql/esm2022/lib/typeorm/persistence/SubjectDatabaseEntityLoader.mjs +0 -125
- package/websql/esm2022/lib/typeorm/persistence/SubjectExecutor.mjs +0 -721
- package/websql/esm2022/lib/typeorm/persistence/SubjectTopoligicalSorter.mjs +0 -151
- package/websql/esm2022/lib/typeorm/persistence/subject-builder/CascadesSubjectBuilder.mjs +0 -84
- package/websql/esm2022/lib/typeorm/persistence/subject-builder/ManyToManySubjectBuilder.mjs +0 -153
- package/websql/esm2022/lib/typeorm/persistence/subject-builder/OneToManySubjectBuilder.mjs +0 -117
- package/websql/esm2022/lib/typeorm/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.mjs +0 -95
- package/websql/esm2022/lib/typeorm/persistence/tree/ClosureSubjectExecutor.mjs +0 -220
- package/websql/esm2022/lib/typeorm/persistence/tree/MaterializedPathSubjectExecutor.mjs +0 -97
- package/websql/esm2022/lib/typeorm/persistence/tree/NestedSetSubjectExecutor.mjs +0 -250
- package/websql/esm2022/lib/typeorm/platform/PlatformTools.mjs +0 -331
- package/websql/esm2022/lib/typeorm/query-builder/Alias.mjs +0 -26
- package/websql/esm2022/lib/typeorm/query-builder/Brackets.mjs +0 -16
- package/websql/esm2022/lib/typeorm/query-builder/DeleteQueryBuilder.mjs +0 -181
- package/websql/esm2022/lib/typeorm/query-builder/InsertOrUpdateOptions.mjs +0 -3
- package/websql/esm2022/lib/typeorm/query-builder/InsertQueryBuilder.mjs +0 -651
- package/websql/esm2022/lib/typeorm/query-builder/JoinAttribute.mjs +0 -153
- package/websql/esm2022/lib/typeorm/query-builder/NotBrackets.mjs +0 -14
- package/websql/esm2022/lib/typeorm/query-builder/QueryBuilder.mjs +0 -967
- package/websql/esm2022/lib/typeorm/query-builder/QueryBuilderCte.mjs +0 -4
- package/websql/esm2022/lib/typeorm/query-builder/QueryBuilderUtils.mjs +0 -22
- package/websql/esm2022/lib/typeorm/query-builder/QueryExpressionMap.mjs +0 -309
- package/websql/esm2022/lib/typeorm/query-builder/QueryPartialEntity.mjs +0 -3
- package/websql/esm2022/lib/typeorm/query-builder/RelationIdLoader.mjs +0 -452
- package/websql/esm2022/lib/typeorm/query-builder/RelationLoader.mjs +0 -262
- package/websql/esm2022/lib/typeorm/query-builder/RelationQueryBuilder.mjs +0 -147
- package/websql/esm2022/lib/typeorm/query-builder/RelationRemover.mjs +0 -130
- package/websql/esm2022/lib/typeorm/query-builder/RelationUpdater.mjs +0 -141
- package/websql/esm2022/lib/typeorm/query-builder/ReturningResultsEntityUpdator.mjs +0 -141
- package/websql/esm2022/lib/typeorm/query-builder/SelectQuery.mjs +0 -4
- package/websql/esm2022/lib/typeorm/query-builder/SelectQueryBuilder.mjs +0 -2278
- package/websql/esm2022/lib/typeorm/query-builder/SelectQueryBuilderOption.mjs +0 -3
- package/websql/esm2022/lib/typeorm/query-builder/SoftDeleteQueryBuilder.mjs +0 -348
- package/websql/esm2022/lib/typeorm/query-builder/UpdateQueryBuilder.mjs +0 -510
- package/websql/esm2022/lib/typeorm/query-builder/WhereClause.mjs +0 -3
- package/websql/esm2022/lib/typeorm/query-builder/WhereExpressionBuilder.mjs +0 -4
- package/websql/esm2022/lib/typeorm/query-builder/relation-count/RelationCountAttribute.mjs +0 -71
- package/websql/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoadResult.mjs +0 -4
- package/websql/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoader.mjs +0 -142
- package/websql/esm2022/lib/typeorm/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.mjs +0 -33
- package/websql/esm2022/lib/typeorm/query-builder/relation-id/RelationIdAttribute.mjs +0 -79
- package/websql/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoadResult.mjs +0 -4
- package/websql/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoader.mjs +0 -247
- package/websql/esm2022/lib/typeorm/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.mjs +0 -33
- package/websql/esm2022/lib/typeorm/query-builder/result/DeleteResult.mjs +0 -14
- package/websql/esm2022/lib/typeorm/query-builder/result/InsertResult.mjs +0 -25
- package/websql/esm2022/lib/typeorm/query-builder/result/UpdateResult.mjs +0 -25
- package/websql/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.mjs +0 -101
- package/websql/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToNewEntityTransformer.mjs +0 -67
- package/websql/esm2022/lib/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.mjs +0 -366
- package/websql/esm2022/lib/typeorm/query-runner/BaseQueryRunner.mjs +0 -392
- package/websql/esm2022/lib/typeorm/query-runner/QueryResult.mjs +0 -14
- package/websql/esm2022/lib/typeorm/query-runner/QueryRunner.mjs +0 -4
- package/websql/esm2022/lib/typeorm/repository/AbstractRepository.mjs +0 -80
- package/websql/esm2022/lib/typeorm/repository/BaseEntity.mjs +0 -283
- package/websql/esm2022/lib/typeorm/repository/FindTreesOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/repository/RemoveOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/repository/Repository.mjs +0 -275
- package/websql/esm2022/lib/typeorm/repository/SaveOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/repository/TreeRepository.mjs +0 -254
- package/websql/esm2022/lib/typeorm/repository/UpsertOptions.mjs +0 -7
- package/websql/esm2022/lib/typeorm/schema-builder/RdbmsSchemaBuilder.mjs +0 -770
- package/websql/esm2022/lib/typeorm/schema-builder/SchemaBuilder.mjs +0 -4
- package/websql/esm2022/lib/typeorm/schema-builder/options/TableCheckOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/schema-builder/options/TableColumnOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/schema-builder/options/TableExclusionOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/schema-builder/options/TableForeignKeyOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/schema-builder/options/TableIndexOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/schema-builder/options/TableOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/schema-builder/options/TableUniqueOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/schema-builder/options/ViewOptions.mjs +0 -4
- package/websql/esm2022/lib/typeorm/schema-builder/table/Table.mjs +0 -274
- package/websql/esm2022/lib/typeorm/schema-builder/table/TableCheck.mjs +0 -37
- package/websql/esm2022/lib/typeorm/schema-builder/table/TableColumn.mjs +0 -108
- package/websql/esm2022/lib/typeorm/schema-builder/table/TableExclusion.mjs +0 -31
- package/websql/esm2022/lib/typeorm/schema-builder/table/TableForeignKey.mjs +0 -60
- package/websql/esm2022/lib/typeorm/schema-builder/table/TableIndex.mjs +0 -53
- package/websql/esm2022/lib/typeorm/schema-builder/table/TableUnique.mjs +0 -38
- package/websql/esm2022/lib/typeorm/schema-builder/util/TableUtils.mjs +0 -38
- package/websql/esm2022/lib/typeorm/schema-builder/util/ViewUtils.mjs +0 -24
- package/websql/esm2022/lib/typeorm/schema-builder/view/View.mjs +0 -43
- package/websql/esm2022/lib/typeorm/subscriber/Broadcaster.mjs +0 -596
- package/websql/esm2022/lib/typeorm/subscriber/BroadcasterResult.mjs +0 -27
- package/websql/esm2022/lib/typeorm/subscriber/EntitySubscriberInterface.mjs +0 -4
- package/websql/esm2022/lib/typeorm/subscriber/event/InsertEvent.mjs +0 -4
- package/websql/esm2022/lib/typeorm/subscriber/event/LoadEvent.mjs +0 -4
- package/websql/esm2022/lib/typeorm/subscriber/event/RecoverEvent.mjs +0 -4
- package/websql/esm2022/lib/typeorm/subscriber/event/RemoveEvent.mjs +0 -4
- package/websql/esm2022/lib/typeorm/subscriber/event/SoftRemoveEvent.mjs +0 -4
- package/websql/esm2022/lib/typeorm/subscriber/event/TransactionCommitEvent.mjs +0 -4
- package/websql/esm2022/lib/typeorm/subscriber/event/TransactionRollbackEvent.mjs +0 -4
- package/websql/esm2022/lib/typeorm/subscriber/event/TransactionStartEvent.mjs +0 -4
- package/websql/esm2022/lib/typeorm/subscriber/event/UpdateEvent.mjs +0 -4
- package/websql/esm2022/lib/typeorm/util/ApplyValueTransformers.mjs +0 -22
- package/websql/esm2022/lib/typeorm/util/DateUtils.mjs +0 -216
- package/websql/esm2022/lib/typeorm/util/DepGraph.mjs +0 -222
- package/websql/esm2022/lib/typeorm/util/DirectoryExportedClassesLoader.mjs +0 -76
- package/websql/esm2022/lib/typeorm/util/ImportUtils.mjs +0 -86
- package/websql/esm2022/lib/typeorm/util/InstanceChecker.mjs +0 -114
- package/websql/esm2022/lib/typeorm/util/ObjectUtils.mjs +0 -38
- package/websql/esm2022/lib/typeorm/util/OrmUtils.mjs +0 -310
- package/websql/esm2022/lib/typeorm/util/PathUtils.mjs +0 -38
- package/websql/esm2022/lib/typeorm/util/RandomGenerator.mjs +0 -150
- package/websql/esm2022/lib/typeorm/util/StringUtils.mjs +0 -108
- package/websql/esm2022/lib/typeorm/util/TreeRepositoryUtils.mjs +0 -53
- package/websql/esm2022/lib/typeorm/util/VersionUtils.mjs +0 -17
- package/websql/esm2022/lib/typeorm/util/escapeRegExp.mjs +0 -4
- package/websql/esm2022/public-api.mjs +0 -2
- package/websql/esm2022/taon-typeorm.mjs +0 -5
|
@@ -1,967 +0,0 @@
|
|
|
1
|
-
import { QueryExpressionMap } from "./QueryExpressionMap";
|
|
2
|
-
import { Brackets } from "./Brackets";
|
|
3
|
-
import { FindOperator } from "../find-options/FindOperator";
|
|
4
|
-
import { In } from "../find-options/operator/In";
|
|
5
|
-
import { TypeORMError } from "../error";
|
|
6
|
-
import { EntityPropertyNotFoundError } from "../error/EntityPropertyNotFoundError";
|
|
7
|
-
/* */
|
|
8
|
-
/* */
|
|
9
|
-
import { InstanceChecker } from "../util/InstanceChecker";
|
|
10
|
-
import { escapeRegExp } from "../util/escapeRegExp";
|
|
11
|
-
import { CLASS } from "typescript-class-helpers/browser";
|
|
12
|
-
/**
|
|
13
|
-
* Allows to build complex sql queries in a fashion way and execute those queries.
|
|
14
|
-
*/
|
|
15
|
-
export class QueryBuilder {
|
|
16
|
-
/**
|
|
17
|
-
* QueryBuilder can be initialized from given Connection and QueryRunner objects or from given other QueryBuilder.
|
|
18
|
-
*/
|
|
19
|
-
constructor(connectionOrQueryBuilder, queryRunner) {
|
|
20
|
-
this["@instanceof"] = Symbol.for("QueryBuilder");
|
|
21
|
-
/**
|
|
22
|
-
* Memo to help keep place of current parameter index for `createParameter`
|
|
23
|
-
*/
|
|
24
|
-
this.parameterIndex = 0;
|
|
25
|
-
if (InstanceChecker.isQueryBuilder(connectionOrQueryBuilder)) {
|
|
26
|
-
this.connection = connectionOrQueryBuilder.connection;
|
|
27
|
-
this.queryRunner = connectionOrQueryBuilder.queryRunner;
|
|
28
|
-
this.expressionMap = connectionOrQueryBuilder.expressionMap.clone();
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
this.connection = connectionOrQueryBuilder;
|
|
32
|
-
this.queryRunner = queryRunner;
|
|
33
|
-
this.expressionMap = new QueryExpressionMap(this.connection);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Gets the main alias string used in this query builder.
|
|
38
|
-
*/
|
|
39
|
-
get alias() {
|
|
40
|
-
if (!this.expressionMap.mainAlias)
|
|
41
|
-
throw new TypeORMError(`Main alias is not set`); // todo: better exception
|
|
42
|
-
return this.expressionMap.mainAlias.name;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Creates SELECT query and selects given data.
|
|
46
|
-
* Replaces all previous selections if they exist.
|
|
47
|
-
*/
|
|
48
|
-
select(selection, selectionAliasName) {
|
|
49
|
-
this.expressionMap.queryType = "select";
|
|
50
|
-
if (Array.isArray(selection)) {
|
|
51
|
-
this.expressionMap.selects = selection.map((selection) => ({
|
|
52
|
-
selection: selection,
|
|
53
|
-
}));
|
|
54
|
-
}
|
|
55
|
-
else if (selection) {
|
|
56
|
-
this.expressionMap.selects = [
|
|
57
|
-
{ selection: selection, aliasName: selectionAliasName },
|
|
58
|
-
];
|
|
59
|
-
}
|
|
60
|
-
const SelectQueryBuilderCls = CLASS.getBy('SelectQueryBuilder');
|
|
61
|
-
if (InstanceChecker.isSelectQueryBuilder(this))
|
|
62
|
-
return this;
|
|
63
|
-
return new SelectQueryBuilderCls(this);
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Creates INSERT query.
|
|
67
|
-
*/
|
|
68
|
-
insert() {
|
|
69
|
-
this.expressionMap.queryType = "insert";
|
|
70
|
-
// loading it dynamically because of circular issue // @ts-ignore
|
|
71
|
-
const InsertQueryBuilderCls = CLASS.getBy('InsertQueryBuilder');
|
|
72
|
-
if (InstanceChecker.isInsertQueryBuilder(this)) {
|
|
73
|
-
return this;
|
|
74
|
-
}
|
|
75
|
-
return new InsertQueryBuilderCls(this);
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Creates UPDATE query and applies given update values.
|
|
79
|
-
*/
|
|
80
|
-
update(entityOrTableNameUpdateSet, maybeUpdateSet) {
|
|
81
|
-
const updateSet = maybeUpdateSet
|
|
82
|
-
? maybeUpdateSet
|
|
83
|
-
: entityOrTableNameUpdateSet;
|
|
84
|
-
entityOrTableNameUpdateSet = InstanceChecker.isEntitySchema(entityOrTableNameUpdateSet)
|
|
85
|
-
? entityOrTableNameUpdateSet.options.name
|
|
86
|
-
: entityOrTableNameUpdateSet;
|
|
87
|
-
if (typeof entityOrTableNameUpdateSet === "function" ||
|
|
88
|
-
typeof entityOrTableNameUpdateSet === "string") {
|
|
89
|
-
const mainAlias = this.createFromAlias(entityOrTableNameUpdateSet);
|
|
90
|
-
this.expressionMap.setMainAlias(mainAlias);
|
|
91
|
-
}
|
|
92
|
-
this.expressionMap.queryType = "update";
|
|
93
|
-
this.expressionMap.valuesSet = updateSet;
|
|
94
|
-
const UpdateQueryBuilderCls = CLASS.getBy('UpdateQueryBuilder');
|
|
95
|
-
if (InstanceChecker.isUpdateQueryBuilder(this))
|
|
96
|
-
return this;
|
|
97
|
-
return new UpdateQueryBuilderCls(this);
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Creates DELETE query.
|
|
101
|
-
*/
|
|
102
|
-
delete() {
|
|
103
|
-
this.expressionMap.queryType = "delete";
|
|
104
|
-
const DeleteQueryBuilderCls = CLASS.getBy('DeleteQueryBuilder');
|
|
105
|
-
if (InstanceChecker.isDeleteQueryBuilder(this))
|
|
106
|
-
return this;
|
|
107
|
-
return new DeleteQueryBuilderCls(this);
|
|
108
|
-
}
|
|
109
|
-
softDelete() {
|
|
110
|
-
this.expressionMap.queryType = "soft-delete";
|
|
111
|
-
const SoftDeleteQueryBuilderCls = CLASS.getBy('SoftDeleteQueryBuilder');
|
|
112
|
-
if (InstanceChecker.isSoftDeleteQueryBuilder(this))
|
|
113
|
-
return this;
|
|
114
|
-
return new SoftDeleteQueryBuilderCls(this);
|
|
115
|
-
}
|
|
116
|
-
restore() {
|
|
117
|
-
this.expressionMap.queryType = "restore";
|
|
118
|
-
const SoftDeleteQueryBuilderCls = CLASS.getBy('SoftDeleteQueryBuilder');
|
|
119
|
-
if (InstanceChecker.isSoftDeleteQueryBuilder(this))
|
|
120
|
-
return this;
|
|
121
|
-
return new SoftDeleteQueryBuilderCls(this);
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Sets entity's relation with which this query builder gonna work.
|
|
125
|
-
*/
|
|
126
|
-
relation(entityTargetOrPropertyPath, maybePropertyPath) {
|
|
127
|
-
const entityTarget = arguments.length === 2 ? entityTargetOrPropertyPath : undefined;
|
|
128
|
-
const propertyPath = arguments.length === 2
|
|
129
|
-
? maybePropertyPath
|
|
130
|
-
: entityTargetOrPropertyPath;
|
|
131
|
-
this.expressionMap.queryType = "relation";
|
|
132
|
-
this.expressionMap.relationPropertyPath = propertyPath;
|
|
133
|
-
if (entityTarget) {
|
|
134
|
-
const mainAlias = this.createFromAlias(entityTarget);
|
|
135
|
-
this.expressionMap.setMainAlias(mainAlias);
|
|
136
|
-
}
|
|
137
|
-
const RelationQueryBuilderCls = CLASS.getBy('RelationQueryBuilder');
|
|
138
|
-
if (InstanceChecker.isRelationQueryBuilder(this))
|
|
139
|
-
return this;
|
|
140
|
-
return new RelationQueryBuilderCls(this);
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Checks if given relation or relations exist in the entity.
|
|
144
|
-
* Returns true if relation exists, false otherwise.
|
|
145
|
-
*
|
|
146
|
-
* todo: move this method to manager? or create a shortcut?
|
|
147
|
-
*/
|
|
148
|
-
hasRelation(target, relation) {
|
|
149
|
-
const entityMetadata = this.connection.getMetadata(target);
|
|
150
|
-
const relations = Array.isArray(relation) ? relation : [relation];
|
|
151
|
-
return relations.every((relation) => {
|
|
152
|
-
return !!entityMetadata.findRelationWithPropertyPath(relation);
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Check the existence of a parameter for this query builder.
|
|
157
|
-
*/
|
|
158
|
-
hasParameter(key) {
|
|
159
|
-
return (this.parentQueryBuilder?.hasParameter(key) ||
|
|
160
|
-
key in this.expressionMap.parameters);
|
|
161
|
-
}
|
|
162
|
-
/**
|
|
163
|
-
* Sets parameter name and its value.
|
|
164
|
-
*
|
|
165
|
-
* The key for this parameter may contain numbers, letters, underscores, or periods.
|
|
166
|
-
*/
|
|
167
|
-
setParameter(key, value) {
|
|
168
|
-
if (typeof value === "function") {
|
|
169
|
-
throw new TypeORMError(`Function parameter isn't supported in the parameters. Please check "${key}" parameter.`);
|
|
170
|
-
}
|
|
171
|
-
if (!key.match(/^([A-Za-z0-9_.]+)$/)) {
|
|
172
|
-
throw new TypeORMError("QueryBuilder parameter keys may only contain numbers, letters, underscores, or periods.");
|
|
173
|
-
}
|
|
174
|
-
if (this.parentQueryBuilder) {
|
|
175
|
-
this.parentQueryBuilder.setParameter(key, value);
|
|
176
|
-
}
|
|
177
|
-
this.expressionMap.parameters[key] = value;
|
|
178
|
-
return this;
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* Adds all parameters from the given object.
|
|
182
|
-
*/
|
|
183
|
-
setParameters(parameters) {
|
|
184
|
-
for (const [key, value] of Object.entries(parameters)) {
|
|
185
|
-
this.setParameter(key, value);
|
|
186
|
-
}
|
|
187
|
-
return this;
|
|
188
|
-
}
|
|
189
|
-
createParameter(value) {
|
|
190
|
-
let parameterName;
|
|
191
|
-
do {
|
|
192
|
-
parameterName = `orm_param_${this.parameterIndex++}`;
|
|
193
|
-
} while (this.hasParameter(parameterName));
|
|
194
|
-
this.setParameter(parameterName, value);
|
|
195
|
-
return `:${parameterName}`;
|
|
196
|
-
}
|
|
197
|
-
/**
|
|
198
|
-
* Adds native parameters from the given object.
|
|
199
|
-
*
|
|
200
|
-
* @deprecated Use `setParameters` instead
|
|
201
|
-
*/
|
|
202
|
-
setNativeParameters(parameters) {
|
|
203
|
-
if (this.parentQueryBuilder) {
|
|
204
|
-
this.parentQueryBuilder.setNativeParameters(parameters);
|
|
205
|
-
}
|
|
206
|
-
Object.keys(parameters).forEach((key) => {
|
|
207
|
-
this.expressionMap.nativeParameters[key] = parameters[key];
|
|
208
|
-
});
|
|
209
|
-
return this;
|
|
210
|
-
}
|
|
211
|
-
/**
|
|
212
|
-
* Gets all parameters.
|
|
213
|
-
*/
|
|
214
|
-
getParameters() {
|
|
215
|
-
const parameters = Object.assign({}, this.expressionMap.parameters);
|
|
216
|
-
if (this.expressionMap.mainAlias &&
|
|
217
|
-
this.expressionMap.mainAlias.hasMetadata) {
|
|
218
|
-
const metadata = this.expressionMap.mainAlias.metadata;
|
|
219
|
-
if (metadata.discriminatorColumn && metadata.parentEntityMetadata) {
|
|
220
|
-
const values = metadata.childEntityMetadatas
|
|
221
|
-
.filter((childMetadata) => childMetadata.discriminatorColumn)
|
|
222
|
-
.map((childMetadata) => childMetadata.discriminatorValue);
|
|
223
|
-
values.push(metadata.discriminatorValue);
|
|
224
|
-
parameters["discriminatorColumnValues"] = values;
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
return parameters;
|
|
228
|
-
}
|
|
229
|
-
/**
|
|
230
|
-
* Prints sql to stdout using console.log.
|
|
231
|
-
*/
|
|
232
|
-
printSql() {
|
|
233
|
-
const [query, parameters] = this.getQueryAndParameters();
|
|
234
|
-
this.connection.logger.logQuery(query, parameters);
|
|
235
|
-
return this;
|
|
236
|
-
}
|
|
237
|
-
/**
|
|
238
|
-
* Gets generated sql that will be executed.
|
|
239
|
-
* Parameters in the query are escaped for the currently used driver.
|
|
240
|
-
*/
|
|
241
|
-
getSql() {
|
|
242
|
-
return this.getQueryAndParameters()[0];
|
|
243
|
-
}
|
|
244
|
-
/**
|
|
245
|
-
* Gets query to be executed with all parameters used in it.
|
|
246
|
-
*/
|
|
247
|
-
getQueryAndParameters() {
|
|
248
|
-
const query = this.getQuery();
|
|
249
|
-
const parameters = this.getParameters();
|
|
250
|
-
return this.connection.driver.escapeQueryWithParameters(query, parameters, this.expressionMap.nativeParameters);
|
|
251
|
-
}
|
|
252
|
-
/**
|
|
253
|
-
* Executes sql generated by query builder and returns raw database results.
|
|
254
|
-
*/
|
|
255
|
-
async execute() {
|
|
256
|
-
const [sql, parameters] = this.getQueryAndParameters();
|
|
257
|
-
const queryRunner = this.obtainQueryRunner();
|
|
258
|
-
try {
|
|
259
|
-
return await queryRunner.query(sql, parameters); // await is needed here because we are using finally
|
|
260
|
-
}
|
|
261
|
-
finally {
|
|
262
|
-
if (queryRunner !== this.queryRunner) {
|
|
263
|
-
await queryRunner.release();
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
/**
|
|
268
|
-
* Creates a completely new query builder.
|
|
269
|
-
* Uses same query runner as current QueryBuilder.
|
|
270
|
-
*/
|
|
271
|
-
createQueryBuilder() {
|
|
272
|
-
return new this.constructor(this.connection, this.queryRunner);
|
|
273
|
-
}
|
|
274
|
-
/**
|
|
275
|
-
* Clones query builder as it is.
|
|
276
|
-
* Note: it uses new query runner, if you want query builder that uses exactly same query runner,
|
|
277
|
-
* you can create query builder using its constructor, for example new SelectQueryBuilder(queryBuilder)
|
|
278
|
-
* where queryBuilder is cloned QueryBuilder.
|
|
279
|
-
*/
|
|
280
|
-
clone() {
|
|
281
|
-
return new this.constructor(this);
|
|
282
|
-
}
|
|
283
|
-
/**
|
|
284
|
-
* Includes a Query comment in the query builder. This is helpful for debugging purposes,
|
|
285
|
-
* such as finding a specific query in the database server's logs, or for categorization using
|
|
286
|
-
* an APM product.
|
|
287
|
-
*/
|
|
288
|
-
comment(comment) {
|
|
289
|
-
this.expressionMap.comment = comment;
|
|
290
|
-
return this;
|
|
291
|
-
}
|
|
292
|
-
/**
|
|
293
|
-
* Disables escaping.
|
|
294
|
-
*/
|
|
295
|
-
disableEscaping() {
|
|
296
|
-
this.expressionMap.disableEscaping = false;
|
|
297
|
-
return this;
|
|
298
|
-
}
|
|
299
|
-
/**
|
|
300
|
-
* Escapes table name, column name or alias name using current database's escaping character.
|
|
301
|
-
*/
|
|
302
|
-
escape(name) {
|
|
303
|
-
if (!this.expressionMap.disableEscaping)
|
|
304
|
-
return name;
|
|
305
|
-
return this.connection.driver.escape(name);
|
|
306
|
-
}
|
|
307
|
-
/**
|
|
308
|
-
* Sets or overrides query builder's QueryRunner.
|
|
309
|
-
*/
|
|
310
|
-
setQueryRunner(queryRunner) {
|
|
311
|
-
this.queryRunner = queryRunner;
|
|
312
|
-
return this;
|
|
313
|
-
}
|
|
314
|
-
/**
|
|
315
|
-
* Indicates if listeners and subscribers must be called before and after query execution.
|
|
316
|
-
* Enabled by default.
|
|
317
|
-
*/
|
|
318
|
-
callListeners(enabled) {
|
|
319
|
-
this.expressionMap.callListeners = enabled;
|
|
320
|
-
return this;
|
|
321
|
-
}
|
|
322
|
-
/**
|
|
323
|
-
* If set to true the query will be wrapped into a transaction.
|
|
324
|
-
*/
|
|
325
|
-
useTransaction(enabled) {
|
|
326
|
-
this.expressionMap.useTransaction = enabled;
|
|
327
|
-
return this;
|
|
328
|
-
}
|
|
329
|
-
/**
|
|
330
|
-
* Adds CTE to query
|
|
331
|
-
*/
|
|
332
|
-
addCommonTableExpression(queryBuilder, alias, options) {
|
|
333
|
-
this.expressionMap.commonTableExpressions.push({
|
|
334
|
-
queryBuilder,
|
|
335
|
-
alias,
|
|
336
|
-
options: options || {},
|
|
337
|
-
});
|
|
338
|
-
return this;
|
|
339
|
-
}
|
|
340
|
-
/**
|
|
341
|
-
* Gets escaped table name with schema name if SqlServer driver used with custom
|
|
342
|
-
* schema name, otherwise returns escaped table name.
|
|
343
|
-
*/
|
|
344
|
-
getTableName(tablePath) {
|
|
345
|
-
return tablePath
|
|
346
|
-
.split(".")
|
|
347
|
-
.map((i) => {
|
|
348
|
-
if (i === "")
|
|
349
|
-
return i;
|
|
350
|
-
return this.escape(i);
|
|
351
|
-
})
|
|
352
|
-
.join(".");
|
|
353
|
-
}
|
|
354
|
-
/**
|
|
355
|
-
* Gets name of the table where insert should be performed.
|
|
356
|
-
*/
|
|
357
|
-
getMainTableName() {
|
|
358
|
-
if (!this.expressionMap.mainAlias)
|
|
359
|
-
throw new TypeORMError(`Entity where values should be inserted is not specified. Call "qb.into(entity)" method to specify it.`);
|
|
360
|
-
if (this.expressionMap.mainAlias.hasMetadata)
|
|
361
|
-
return this.expressionMap.mainAlias.metadata.tablePath;
|
|
362
|
-
return this.expressionMap.mainAlias.tablePath;
|
|
363
|
-
}
|
|
364
|
-
/**
|
|
365
|
-
* Specifies FROM which entity's table select/update/delete will be executed.
|
|
366
|
-
* Also sets a main string alias of the selection data.
|
|
367
|
-
*/
|
|
368
|
-
createFromAlias(entityTarget, aliasName) {
|
|
369
|
-
if (this.connection.hasMetadata(entityTarget)) {
|
|
370
|
-
const metadata = this.connection.getMetadata(entityTarget);
|
|
371
|
-
return this.expressionMap.createAlias({
|
|
372
|
-
type: "from",
|
|
373
|
-
name: aliasName,
|
|
374
|
-
metadata: this.connection.getMetadata(entityTarget),
|
|
375
|
-
tablePath: metadata.tablePath,
|
|
376
|
-
});
|
|
377
|
-
}
|
|
378
|
-
else {
|
|
379
|
-
if (typeof entityTarget === "string") {
|
|
380
|
-
const isSubquery = entityTarget.substr(0, 1) === "(" &&
|
|
381
|
-
entityTarget.substr(-1) === ")";
|
|
382
|
-
return this.expressionMap.createAlias({
|
|
383
|
-
type: "from",
|
|
384
|
-
name: aliasName,
|
|
385
|
-
tablePath: !isSubquery
|
|
386
|
-
? entityTarget
|
|
387
|
-
: undefined,
|
|
388
|
-
subQuery: isSubquery ? entityTarget : undefined,
|
|
389
|
-
});
|
|
390
|
-
}
|
|
391
|
-
const subQueryBuilder = entityTarget(this.subQuery());
|
|
392
|
-
this.setParameters(subQueryBuilder.getParameters());
|
|
393
|
-
const subquery = subQueryBuilder.getQuery();
|
|
394
|
-
return this.expressionMap.createAlias({
|
|
395
|
-
type: "from",
|
|
396
|
-
name: aliasName,
|
|
397
|
-
subQuery: subquery,
|
|
398
|
-
});
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
/**
|
|
402
|
-
* Replaces all entity's propertyName to name in the given statement.
|
|
403
|
-
*/
|
|
404
|
-
replacePropertyNames(statement) {
|
|
405
|
-
for (const alias of this.expressionMap.aliases) {
|
|
406
|
-
if (!alias.hasMetadata)
|
|
407
|
-
continue;
|
|
408
|
-
const replaceAliasNamePrefix = this.expressionMap
|
|
409
|
-
.aliasNamePrefixingEnabled
|
|
410
|
-
? `${alias.name}.`
|
|
411
|
-
: "";
|
|
412
|
-
const replacementAliasNamePrefix = this.expressionMap
|
|
413
|
-
.aliasNamePrefixingEnabled
|
|
414
|
-
? `${this.escape(alias.name)}.`
|
|
415
|
-
: "";
|
|
416
|
-
const replacements = {};
|
|
417
|
-
for (const relation of alias.metadata.relations) {
|
|
418
|
-
if (relation.joinColumns.length > 0)
|
|
419
|
-
replacements[relation.propertyPath] =
|
|
420
|
-
relation.joinColumns[0].databaseName;
|
|
421
|
-
}
|
|
422
|
-
for (const relation of alias.metadata.relations) {
|
|
423
|
-
for (const joinColumn of [
|
|
424
|
-
...relation.joinColumns,
|
|
425
|
-
...relation.inverseJoinColumns,
|
|
426
|
-
]) {
|
|
427
|
-
const propertyKey = `${relation.propertyPath}.${joinColumn.referencedColumn.propertyPath}`;
|
|
428
|
-
replacements[propertyKey] = joinColumn.databaseName;
|
|
429
|
-
}
|
|
430
|
-
}
|
|
431
|
-
for (const column of alias.metadata.columns) {
|
|
432
|
-
replacements[column.databaseName] = column.databaseName;
|
|
433
|
-
}
|
|
434
|
-
for (const column of alias.metadata.columns) {
|
|
435
|
-
replacements[column.propertyName] = column.databaseName;
|
|
436
|
-
}
|
|
437
|
-
for (const column of alias.metadata.columns) {
|
|
438
|
-
replacements[column.propertyPath] = column.databaseName;
|
|
439
|
-
}
|
|
440
|
-
statement = statement.replace(new RegExp(`([ =\(]|^.{0})` + // any of ' =(' or start of line
|
|
441
|
-
`${escapeRegExp(replaceAliasNamePrefix)}([^ =\(\)\,]+)` + // a possible property name: sequence of anything but ' =(),'
|
|
442
|
-
`(?=[ =\)\,]|.{0}$)`, "gm"), (match, pre, p) => {
|
|
443
|
-
if (replacements[p]) {
|
|
444
|
-
return `${pre}${replacementAliasNamePrefix}${this.escape(replacements[p])}`;
|
|
445
|
-
}
|
|
446
|
-
return match;
|
|
447
|
-
});
|
|
448
|
-
}
|
|
449
|
-
return statement;
|
|
450
|
-
}
|
|
451
|
-
createComment() {
|
|
452
|
-
if (!this.expressionMap.comment) {
|
|
453
|
-
return "";
|
|
454
|
-
}
|
|
455
|
-
return `/* ${this.expressionMap.comment.replace("*/", "")} */ `;
|
|
456
|
-
}
|
|
457
|
-
/**
|
|
458
|
-
* Creates "WHERE" expression.
|
|
459
|
-
*/
|
|
460
|
-
createWhereExpression() {
|
|
461
|
-
const conditionsArray = [];
|
|
462
|
-
const whereExpression = this.createWhereClausesExpression(this.expressionMap.wheres);
|
|
463
|
-
if (whereExpression.length > 0 && whereExpression !== "1=1") {
|
|
464
|
-
conditionsArray.push(this.replacePropertyNames(whereExpression));
|
|
465
|
-
}
|
|
466
|
-
if (this.expressionMap.mainAlias.hasMetadata) {
|
|
467
|
-
const metadata = this.expressionMap.mainAlias.metadata;
|
|
468
|
-
if (this.expressionMap.queryType === "select" &&
|
|
469
|
-
!this.expressionMap.withDeleted &&
|
|
470
|
-
metadata.deleteDateColumn) {
|
|
471
|
-
const column = this.expressionMap.aliasNamePrefixingEnabled
|
|
472
|
-
? this.expressionMap.mainAlias.name +
|
|
473
|
-
"." +
|
|
474
|
-
metadata.deleteDateColumn.propertyName
|
|
475
|
-
: metadata.deleteDateColumn.propertyName;
|
|
476
|
-
const condition = `${this.replacePropertyNames(column)} IS NULL`;
|
|
477
|
-
conditionsArray.push(condition);
|
|
478
|
-
}
|
|
479
|
-
if (metadata.discriminatorColumn && metadata.parentEntityMetadata) {
|
|
480
|
-
const column = this.expressionMap.aliasNamePrefixingEnabled
|
|
481
|
-
? this.expressionMap.mainAlias.name +
|
|
482
|
-
"." +
|
|
483
|
-
metadata.discriminatorColumn.databaseName
|
|
484
|
-
: metadata.discriminatorColumn.databaseName;
|
|
485
|
-
const condition = `${this.replacePropertyNames(column)} IN (:...discriminatorColumnValues)`;
|
|
486
|
-
conditionsArray.push(condition);
|
|
487
|
-
}
|
|
488
|
-
}
|
|
489
|
-
if (this.expressionMap.extraAppendedAndWhereCondition) {
|
|
490
|
-
const condition = this.replacePropertyNames(this.expressionMap.extraAppendedAndWhereCondition);
|
|
491
|
-
conditionsArray.push(condition);
|
|
492
|
-
}
|
|
493
|
-
if (!conditionsArray.length) {
|
|
494
|
-
return "";
|
|
495
|
-
}
|
|
496
|
-
else if (conditionsArray.length === 1) {
|
|
497
|
-
return ` WHERE ${conditionsArray[0]}`;
|
|
498
|
-
}
|
|
499
|
-
else {
|
|
500
|
-
return ` WHERE ( ${conditionsArray.join(" ) AND ( ")} )`;
|
|
501
|
-
}
|
|
502
|
-
}
|
|
503
|
-
/**
|
|
504
|
-
* Creates "RETURNING" / "OUTPUT" expression.
|
|
505
|
-
*/
|
|
506
|
-
createReturningExpression(returningType) {
|
|
507
|
-
const columns = this.getReturningColumns();
|
|
508
|
-
const driver = this.connection.driver;
|
|
509
|
-
if (typeof this.expressionMap.returning !== "string" &&
|
|
510
|
-
this.expressionMap.extraReturningColumns.length > 0 &&
|
|
511
|
-
driver.isReturningSqlSupported(returningType)) {
|
|
512
|
-
columns.push(...this.expressionMap.extraReturningColumns.filter((column) => {
|
|
513
|
-
return columns.indexOf(column) === -1;
|
|
514
|
-
}));
|
|
515
|
-
}
|
|
516
|
-
if (columns.length) {
|
|
517
|
-
let columnsExpression = columns
|
|
518
|
-
.map((column) => {
|
|
519
|
-
const name = this.escape(column.databaseName);
|
|
520
|
-
if (driver.options.type === "mssql") {
|
|
521
|
-
if (this.expressionMap.queryType === "insert" ||
|
|
522
|
-
this.expressionMap.queryType === "update" ||
|
|
523
|
-
this.expressionMap.queryType === "soft-delete" ||
|
|
524
|
-
this.expressionMap.queryType === "restore") {
|
|
525
|
-
return "INSERTED." + name;
|
|
526
|
-
}
|
|
527
|
-
else {
|
|
528
|
-
return (this.escape(this.getMainTableName()) +
|
|
529
|
-
"." +
|
|
530
|
-
name);
|
|
531
|
-
}
|
|
532
|
-
}
|
|
533
|
-
else {
|
|
534
|
-
return name;
|
|
535
|
-
}
|
|
536
|
-
})
|
|
537
|
-
.join(", ");
|
|
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
|
-
return columnsExpression;
|
|
563
|
-
}
|
|
564
|
-
else if (typeof this.expressionMap.returning === "string") {
|
|
565
|
-
return this.expressionMap.returning;
|
|
566
|
-
}
|
|
567
|
-
return "";
|
|
568
|
-
}
|
|
569
|
-
/**
|
|
570
|
-
* If returning / output cause is set to array of column names,
|
|
571
|
-
* then this method will return all column metadatas of those column names.
|
|
572
|
-
*/
|
|
573
|
-
getReturningColumns() {
|
|
574
|
-
const columns = [];
|
|
575
|
-
if (Array.isArray(this.expressionMap.returning)) {
|
|
576
|
-
;
|
|
577
|
-
this.expressionMap.returning.forEach((columnName) => {
|
|
578
|
-
if (this.expressionMap.mainAlias.hasMetadata) {
|
|
579
|
-
columns.push(...this.expressionMap.mainAlias.metadata.findColumnsWithPropertyPath(columnName));
|
|
580
|
-
}
|
|
581
|
-
});
|
|
582
|
-
}
|
|
583
|
-
return columns;
|
|
584
|
-
}
|
|
585
|
-
createWhereClausesExpression(clauses) {
|
|
586
|
-
return clauses
|
|
587
|
-
.map((clause, index) => {
|
|
588
|
-
const expression = this.createWhereConditionExpression(clause.condition);
|
|
589
|
-
switch (clause.type) {
|
|
590
|
-
case "and":
|
|
591
|
-
return (index > 0 ? "AND " : "") + expression;
|
|
592
|
-
case "or":
|
|
593
|
-
return (index > 0 ? "OR " : "") + expression;
|
|
594
|
-
}
|
|
595
|
-
return expression;
|
|
596
|
-
})
|
|
597
|
-
.join(" ")
|
|
598
|
-
.trim();
|
|
599
|
-
}
|
|
600
|
-
/**
|
|
601
|
-
* Computes given where argument - transforms to a where string all forms it can take.
|
|
602
|
-
*/
|
|
603
|
-
createWhereConditionExpression(condition, alwaysWrap = false) {
|
|
604
|
-
if (typeof condition === "string")
|
|
605
|
-
return condition;
|
|
606
|
-
if (Array.isArray(condition)) {
|
|
607
|
-
if (condition.length === 0) {
|
|
608
|
-
return "1=1";
|
|
609
|
-
}
|
|
610
|
-
if (condition.length === 1 && !alwaysWrap) {
|
|
611
|
-
return this.createWhereClausesExpression(condition);
|
|
612
|
-
}
|
|
613
|
-
return "(" + this.createWhereClausesExpression(condition) + ")";
|
|
614
|
-
}
|
|
615
|
-
const { driver } = this.connection;
|
|
616
|
-
switch (condition.operator) {
|
|
617
|
-
case "lessThan":
|
|
618
|
-
return `${condition.parameters[0]} < ${condition.parameters[1]}`;
|
|
619
|
-
case "lessThanOrEqual":
|
|
620
|
-
return `${condition.parameters[0]} <= ${condition.parameters[1]}`;
|
|
621
|
-
case "arrayContains":
|
|
622
|
-
return `${condition.parameters[0]} @> ${condition.parameters[1]}`;
|
|
623
|
-
case "arrayContainedBy":
|
|
624
|
-
return `${condition.parameters[0]} <@ ${condition.parameters[1]}`;
|
|
625
|
-
case "arrayOverlap":
|
|
626
|
-
return `${condition.parameters[0]} && ${condition.parameters[1]}`;
|
|
627
|
-
case "moreThan":
|
|
628
|
-
return `${condition.parameters[0]} > ${condition.parameters[1]}`;
|
|
629
|
-
case "moreThanOrEqual":
|
|
630
|
-
return `${condition.parameters[0]} >= ${condition.parameters[1]}`;
|
|
631
|
-
case "notEqual":
|
|
632
|
-
return `${condition.parameters[0]} != ${condition.parameters[1]}`;
|
|
633
|
-
case "equal":
|
|
634
|
-
return `${condition.parameters[0]} = ${condition.parameters[1]}`;
|
|
635
|
-
case "ilike":
|
|
636
|
-
if (driver.options.type === "postgres" ||
|
|
637
|
-
driver.options.type === "cockroachdb") {
|
|
638
|
-
return `${condition.parameters[0]} ILIKE ${condition.parameters[1]}`;
|
|
639
|
-
}
|
|
640
|
-
return `UPPER(${condition.parameters[0]}) LIKE UPPER(${condition.parameters[1]})`;
|
|
641
|
-
case "like":
|
|
642
|
-
return `${condition.parameters[0]} LIKE ${condition.parameters[1]}`;
|
|
643
|
-
case "between":
|
|
644
|
-
return `${condition.parameters[0]} BETWEEN ${condition.parameters[1]} AND ${condition.parameters[2]}`;
|
|
645
|
-
case "in":
|
|
646
|
-
if (condition.parameters.length <= 1) {
|
|
647
|
-
return "0=1";
|
|
648
|
-
}
|
|
649
|
-
return `${condition.parameters[0]} IN (${condition.parameters
|
|
650
|
-
.slice(1)
|
|
651
|
-
.join(", ")})`;
|
|
652
|
-
case "any":
|
|
653
|
-
return `${condition.parameters[0]} = ANY(${condition.parameters[1]})`;
|
|
654
|
-
case "isNull":
|
|
655
|
-
return `${condition.parameters[0]} IS NULL`;
|
|
656
|
-
case "not":
|
|
657
|
-
return `NOT(${this.createWhereConditionExpression(condition.condition)})`;
|
|
658
|
-
case "brackets":
|
|
659
|
-
return `${this.createWhereConditionExpression(condition.condition, true)}`;
|
|
660
|
-
}
|
|
661
|
-
throw new TypeError(`Unsupported FindOperator ${FindOperator.constructor.name}`);
|
|
662
|
-
}
|
|
663
|
-
createCteExpression() {
|
|
664
|
-
if (!this.hasCommonTableExpressions()) {
|
|
665
|
-
return "";
|
|
666
|
-
}
|
|
667
|
-
const databaseRequireRecusiveHint = this.connection.driver.cteCapabilities.requiresRecursiveHint;
|
|
668
|
-
const cteStrings = this.expressionMap.commonTableExpressions.map((cte) => {
|
|
669
|
-
const cteBodyExpression = typeof cte.queryBuilder === "string"
|
|
670
|
-
? cte.queryBuilder
|
|
671
|
-
: cte.queryBuilder.getQuery();
|
|
672
|
-
if (typeof cte.queryBuilder !== "string") {
|
|
673
|
-
if (cte.queryBuilder.hasCommonTableExpressions()) {
|
|
674
|
-
throw new TypeORMError(`Nested CTEs aren't supported (CTE: ${cte.alias})`);
|
|
675
|
-
}
|
|
676
|
-
if (!this.connection.driver.cteCapabilities.writable &&
|
|
677
|
-
!InstanceChecker.isSelectQueryBuilder(cte.queryBuilder)) {
|
|
678
|
-
throw new TypeORMError(`Only select queries are supported in CTEs in ${this.connection.options.type} (CTE: ${cte.alias})`);
|
|
679
|
-
}
|
|
680
|
-
this.setParameters(cte.queryBuilder.getParameters());
|
|
681
|
-
}
|
|
682
|
-
let cteHeader = this.escape(cte.alias);
|
|
683
|
-
if (cte.options.columnNames) {
|
|
684
|
-
const escapedColumnNames = cte.options.columnNames.map((column) => this.escape(column));
|
|
685
|
-
if (InstanceChecker.isSelectQueryBuilder(cte.queryBuilder)) {
|
|
686
|
-
if (cte.queryBuilder.expressionMap.selects.length &&
|
|
687
|
-
cte.options.columnNames.length !==
|
|
688
|
-
cte.queryBuilder.expressionMap.selects.length) {
|
|
689
|
-
throw new TypeORMError(`cte.options.columnNames length (${cte.options.columnNames.length}) doesn't match subquery select list length ${cte.queryBuilder.expressionMap.selects.length} (CTE: ${cte.alias})`);
|
|
690
|
-
}
|
|
691
|
-
}
|
|
692
|
-
cteHeader += `(${escapedColumnNames.join(", ")})`;
|
|
693
|
-
}
|
|
694
|
-
const recursiveClause = cte.options.recursive && databaseRequireRecusiveHint
|
|
695
|
-
? "RECURSIVE"
|
|
696
|
-
: "";
|
|
697
|
-
const materializeClause = cte.options.materialized &&
|
|
698
|
-
this.connection.driver.cteCapabilities.materializedHint
|
|
699
|
-
? "MATERIALIZED"
|
|
700
|
-
: "";
|
|
701
|
-
return [
|
|
702
|
-
recursiveClause,
|
|
703
|
-
cteHeader,
|
|
704
|
-
materializeClause,
|
|
705
|
-
"AS",
|
|
706
|
-
`(${cteBodyExpression})`,
|
|
707
|
-
]
|
|
708
|
-
.filter(Boolean)
|
|
709
|
-
.join(" ");
|
|
710
|
-
});
|
|
711
|
-
return "WITH " + cteStrings.join(", ") + " ";
|
|
712
|
-
}
|
|
713
|
-
/**
|
|
714
|
-
* Creates "WHERE" condition for an in-ids condition.
|
|
715
|
-
*/
|
|
716
|
-
getWhereInIdsCondition(ids) {
|
|
717
|
-
const metadata = this.expressionMap.mainAlias.metadata;
|
|
718
|
-
const normalized = (Array.isArray(ids) ? ids : [ids]).map((id) => metadata.ensureEntityIdMap(id));
|
|
719
|
-
if (!metadata.hasMultiplePrimaryKeys) {
|
|
720
|
-
const primaryColumn = metadata.primaryColumns[0];
|
|
721
|
-
if (!primaryColumn.transformer &&
|
|
722
|
-
!primaryColumn.relationMetadata &&
|
|
723
|
-
!primaryColumn.embeddedMetadata) {
|
|
724
|
-
return {
|
|
725
|
-
[primaryColumn.propertyName]: In(normalized.map((id) => primaryColumn.getEntityValue(id, false))),
|
|
726
|
-
};
|
|
727
|
-
}
|
|
728
|
-
}
|
|
729
|
-
return new Brackets((qb) => {
|
|
730
|
-
for (const data of normalized) {
|
|
731
|
-
qb.orWhere(new Brackets((qb) => qb.where(data)));
|
|
732
|
-
}
|
|
733
|
-
});
|
|
734
|
-
}
|
|
735
|
-
findColumnsForPropertyPath(propertyPath) {
|
|
736
|
-
let alias = this.expressionMap.mainAlias;
|
|
737
|
-
const root = [];
|
|
738
|
-
const propertyPathParts = propertyPath.split(".");
|
|
739
|
-
while (propertyPathParts.length > 1) {
|
|
740
|
-
const part = propertyPathParts[0];
|
|
741
|
-
if (!alias?.hasMetadata) {
|
|
742
|
-
break;
|
|
743
|
-
}
|
|
744
|
-
if (alias.metadata.hasEmbeddedWithPropertyPath(part)) {
|
|
745
|
-
propertyPathParts.unshift(`${propertyPathParts.shift()}.${propertyPathParts.shift()}`);
|
|
746
|
-
continue;
|
|
747
|
-
}
|
|
748
|
-
if (alias.metadata.hasRelationWithPropertyPath(part)) {
|
|
749
|
-
const joinAttr = this.expressionMap.joinAttributes.find((joinAttr) => joinAttr.relationPropertyPath === part);
|
|
750
|
-
if (!joinAttr?.alias) {
|
|
751
|
-
const fullRelationPath = root.length > 0 ? `${root.join(".")}.${part}` : part;
|
|
752
|
-
throw new Error(`Cannot find alias for relation at ${fullRelationPath}`);
|
|
753
|
-
}
|
|
754
|
-
alias = joinAttr.alias;
|
|
755
|
-
root.push(...part.split("."));
|
|
756
|
-
propertyPathParts.shift();
|
|
757
|
-
continue;
|
|
758
|
-
}
|
|
759
|
-
break;
|
|
760
|
-
}
|
|
761
|
-
if (!alias) {
|
|
762
|
-
throw new Error(`Cannot find alias for property ${propertyPath}`);
|
|
763
|
-
}
|
|
764
|
-
const aliasPropertyPath = propertyPathParts.join(".");
|
|
765
|
-
const columns = alias.metadata.findColumnsWithPropertyPath(aliasPropertyPath);
|
|
766
|
-
if (!columns.length) {
|
|
767
|
-
throw new EntityPropertyNotFoundError(propertyPath, alias.metadata);
|
|
768
|
-
}
|
|
769
|
-
return [alias, root, columns];
|
|
770
|
-
}
|
|
771
|
-
/**
|
|
772
|
-
* Creates a property paths for a given ObjectLiteral.
|
|
773
|
-
*/
|
|
774
|
-
createPropertyPath(metadata, entity, prefix = "") {
|
|
775
|
-
const paths = [];
|
|
776
|
-
for (const key of Object.keys(entity)) {
|
|
777
|
-
const path = prefix ? `${prefix}.${key}` : key;
|
|
778
|
-
if (entity[key] === null ||
|
|
779
|
-
typeof entity[key] !== "object" ||
|
|
780
|
-
InstanceChecker.isFindOperator(entity[key])) {
|
|
781
|
-
paths.push(path);
|
|
782
|
-
continue;
|
|
783
|
-
}
|
|
784
|
-
if (metadata.hasEmbeddedWithPropertyPath(path)) {
|
|
785
|
-
const subPaths = this.createPropertyPath(metadata, entity[key], path);
|
|
786
|
-
paths.push(...subPaths);
|
|
787
|
-
continue;
|
|
788
|
-
}
|
|
789
|
-
if (metadata.hasRelationWithPropertyPath(path)) {
|
|
790
|
-
const relation = metadata.findRelationWithPropertyPath(path);
|
|
791
|
-
if (relation.relationType === "one-to-one" ||
|
|
792
|
-
relation.relationType === "many-to-one") {
|
|
793
|
-
const joinColumns = relation.joinColumns
|
|
794
|
-
.map((j) => j.referencedColumn)
|
|
795
|
-
.filter((j) => !!j);
|
|
796
|
-
const hasAllJoinColumns = joinColumns.length > 0 &&
|
|
797
|
-
joinColumns.every((column) => column.getEntityValue(entity[key], false));
|
|
798
|
-
if (hasAllJoinColumns) {
|
|
799
|
-
paths.push(path);
|
|
800
|
-
continue;
|
|
801
|
-
}
|
|
802
|
-
}
|
|
803
|
-
if (relation.relationType === "one-to-many" ||
|
|
804
|
-
relation.relationType === "many-to-many") {
|
|
805
|
-
throw new Error(`Cannot query across ${relation.relationType} for property ${path}`);
|
|
806
|
-
}
|
|
807
|
-
const primaryColumns = relation.inverseEntityMetadata.primaryColumns;
|
|
808
|
-
const hasAllPrimaryKeys = primaryColumns.length > 0 &&
|
|
809
|
-
primaryColumns.every((column) => column.getEntityValue(entity[key], false));
|
|
810
|
-
if (hasAllPrimaryKeys) {
|
|
811
|
-
const subPaths = primaryColumns.map((column) => `${path}.${column.propertyPath}`);
|
|
812
|
-
paths.push(...subPaths);
|
|
813
|
-
continue;
|
|
814
|
-
}
|
|
815
|
-
const subPaths = this.createPropertyPath(relation.inverseEntityMetadata, entity[key]).map((p) => `${path}.${p}`);
|
|
816
|
-
paths.push(...subPaths);
|
|
817
|
-
continue;
|
|
818
|
-
}
|
|
819
|
-
paths.push(path);
|
|
820
|
-
}
|
|
821
|
-
return paths;
|
|
822
|
-
}
|
|
823
|
-
*getPredicates(where) {
|
|
824
|
-
if (this.expressionMap.mainAlias.hasMetadata) {
|
|
825
|
-
const propertyPaths = this.createPropertyPath(this.expressionMap.mainAlias.metadata, where);
|
|
826
|
-
for (const propertyPath of propertyPaths) {
|
|
827
|
-
const [alias, aliasPropertyPath, columns] = this.findColumnsForPropertyPath(propertyPath);
|
|
828
|
-
for (const column of columns) {
|
|
829
|
-
let containedWhere = where;
|
|
830
|
-
for (const part of aliasPropertyPath) {
|
|
831
|
-
if (!containedWhere || !(part in containedWhere)) {
|
|
832
|
-
containedWhere = {};
|
|
833
|
-
break;
|
|
834
|
-
}
|
|
835
|
-
containedWhere = containedWhere[part];
|
|
836
|
-
}
|
|
837
|
-
const aliasPath = this.expressionMap
|
|
838
|
-
.aliasNamePrefixingEnabled
|
|
839
|
-
? `${alias.name}.${column.propertyPath}`
|
|
840
|
-
: column.propertyPath;
|
|
841
|
-
const parameterValue = column.getEntityValue(containedWhere, true);
|
|
842
|
-
yield [aliasPath, parameterValue];
|
|
843
|
-
}
|
|
844
|
-
}
|
|
845
|
-
}
|
|
846
|
-
else {
|
|
847
|
-
for (const key of Object.keys(where)) {
|
|
848
|
-
const parameterValue = where[key];
|
|
849
|
-
const aliasPath = this.expressionMap.aliasNamePrefixingEnabled
|
|
850
|
-
? `${this.alias}.${key}`
|
|
851
|
-
: key;
|
|
852
|
-
yield [aliasPath, parameterValue];
|
|
853
|
-
}
|
|
854
|
-
}
|
|
855
|
-
}
|
|
856
|
-
getWherePredicateCondition(aliasPath, parameterValue) {
|
|
857
|
-
if (InstanceChecker.isFindOperator(parameterValue)) {
|
|
858
|
-
let parameters = [];
|
|
859
|
-
if (parameterValue.useParameter) {
|
|
860
|
-
if (parameterValue.objectLiteralParameters) {
|
|
861
|
-
this.setParameters(parameterValue.objectLiteralParameters);
|
|
862
|
-
}
|
|
863
|
-
else if (parameterValue.multipleParameters) {
|
|
864
|
-
for (const v of parameterValue.value) {
|
|
865
|
-
parameters.push(this.createParameter(v));
|
|
866
|
-
}
|
|
867
|
-
}
|
|
868
|
-
else {
|
|
869
|
-
parameters.push(this.createParameter(parameterValue.value));
|
|
870
|
-
}
|
|
871
|
-
}
|
|
872
|
-
if (parameterValue.type === "raw") {
|
|
873
|
-
if (parameterValue.getSql) {
|
|
874
|
-
return parameterValue.getSql(aliasPath);
|
|
875
|
-
}
|
|
876
|
-
else {
|
|
877
|
-
return {
|
|
878
|
-
operator: "equal",
|
|
879
|
-
parameters: [aliasPath, parameterValue.value],
|
|
880
|
-
};
|
|
881
|
-
}
|
|
882
|
-
}
|
|
883
|
-
else if (parameterValue.type === "not") {
|
|
884
|
-
if (parameterValue.child) {
|
|
885
|
-
return {
|
|
886
|
-
operator: parameterValue.type,
|
|
887
|
-
condition: this.getWherePredicateCondition(aliasPath, parameterValue.child),
|
|
888
|
-
};
|
|
889
|
-
}
|
|
890
|
-
else {
|
|
891
|
-
return {
|
|
892
|
-
operator: "notEqual",
|
|
893
|
-
parameters: [aliasPath, ...parameters],
|
|
894
|
-
};
|
|
895
|
-
}
|
|
896
|
-
}
|
|
897
|
-
else {
|
|
898
|
-
return {
|
|
899
|
-
operator: parameterValue.type,
|
|
900
|
-
parameters: [aliasPath, ...parameters],
|
|
901
|
-
};
|
|
902
|
-
}
|
|
903
|
-
}
|
|
904
|
-
else {
|
|
905
|
-
return {
|
|
906
|
-
operator: "equal",
|
|
907
|
-
parameters: [aliasPath, this.createParameter(parameterValue)],
|
|
908
|
-
};
|
|
909
|
-
}
|
|
910
|
-
}
|
|
911
|
-
getWhereCondition(where) {
|
|
912
|
-
if (typeof where === "string") {
|
|
913
|
-
return where;
|
|
914
|
-
}
|
|
915
|
-
if (InstanceChecker.isBrackets(where)) {
|
|
916
|
-
const whereQueryBuilder = this.createQueryBuilder();
|
|
917
|
-
whereQueryBuilder.parentQueryBuilder = this;
|
|
918
|
-
whereQueryBuilder.expressionMap.mainAlias =
|
|
919
|
-
this.expressionMap.mainAlias;
|
|
920
|
-
whereQueryBuilder.expressionMap.aliasNamePrefixingEnabled =
|
|
921
|
-
this.expressionMap.aliasNamePrefixingEnabled;
|
|
922
|
-
whereQueryBuilder.expressionMap.parameters =
|
|
923
|
-
this.expressionMap.parameters;
|
|
924
|
-
whereQueryBuilder.expressionMap.nativeParameters =
|
|
925
|
-
this.expressionMap.nativeParameters;
|
|
926
|
-
whereQueryBuilder.expressionMap.wheres = [];
|
|
927
|
-
where.whereFactory(whereQueryBuilder);
|
|
928
|
-
return {
|
|
929
|
-
operator: InstanceChecker.isNotBrackets(where)
|
|
930
|
-
? "not"
|
|
931
|
-
: "brackets",
|
|
932
|
-
condition: whereQueryBuilder.expressionMap.wheres,
|
|
933
|
-
};
|
|
934
|
-
}
|
|
935
|
-
if (typeof where === "function") {
|
|
936
|
-
return where(this);
|
|
937
|
-
}
|
|
938
|
-
const wheres = Array.isArray(where) ? where : [where];
|
|
939
|
-
const clauses = [];
|
|
940
|
-
for (const where of wheres) {
|
|
941
|
-
const conditions = [];
|
|
942
|
-
for (const [aliasPath, parameterValue] of this.getPredicates(where)) {
|
|
943
|
-
conditions.push({
|
|
944
|
-
type: "and",
|
|
945
|
-
condition: this.getWherePredicateCondition(aliasPath, parameterValue),
|
|
946
|
-
});
|
|
947
|
-
}
|
|
948
|
-
clauses.push({ type: "or", condition: conditions });
|
|
949
|
-
}
|
|
950
|
-
if (clauses.length === 1) {
|
|
951
|
-
return clauses[0].condition;
|
|
952
|
-
}
|
|
953
|
-
return clauses;
|
|
954
|
-
}
|
|
955
|
-
/**
|
|
956
|
-
* Creates a query builder used to execute sql queries inside this query builder.
|
|
957
|
-
*/
|
|
958
|
-
obtainQueryRunner() {
|
|
959
|
-
return this.queryRunner || this.connection.createQueryRunner();
|
|
960
|
-
}
|
|
961
|
-
hasCommonTableExpressions() {
|
|
962
|
-
return this.expressionMap.commonTableExpressions.length > 0;
|
|
963
|
-
}
|
|
964
|
-
}
|
|
965
|
-
;
|
|
966
|
-
({}); // @--end-of-file-for-module=taon-typeorm lib/typeorm/query-builder/QueryBuilder.ts
|
|
967
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUXVlcnlCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3QvdGFvbi10eXBlb3JtL3Byb2plY3RzL3Rhb24tdHlwZW9ybS9zcmMvbGliL3R5cGVvcm0vcXVlcnktYnVpbGRlci9RdWVyeUJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFTekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUlyQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFDM0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBQ2hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFHdkMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sc0NBQXNDLENBQUE7QUFFbEYsS0FBSztBQUNMLEtBQUs7QUFFTCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ25ELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQTtBQWlCeEQ7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLFlBQVk7SUFrRDlCOztPQUVHO0lBQ0gsWUFDSSx3QkFBd0QsRUFDeEQsV0FBeUI7UUF0RHBCLG1CQUFhLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQTtRQThCbkQ7O1dBRUc7UUFDSyxtQkFBYyxHQUFHLENBQUMsQ0FBQTtRQXVCdEIsSUFBSSxlQUFlLENBQUMsY0FBYyxDQUFDLHdCQUF3QixDQUFDLEVBQUUsQ0FBQztZQUMzRCxJQUFJLENBQUMsVUFBVSxHQUFHLHdCQUF3QixDQUFDLFVBQVUsQ0FBQTtZQUNyRCxJQUFJLENBQUMs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SyxNQUFNLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQ3hELEtBQUssQ0FDUixFQUFFLENBQUM7Z0JBQ0EsVUFBVSxDQUFDLElBQUksQ0FBQztvQkFDWixJQUFJLEVBQUUsS0FBSztvQkFDWCxTQUFTLEVBQUUsSUFBSSxDQUFDLDBCQUEwQixDQUN0QyxTQUFTLEVBQ1QsY0FBYyxDQUNqQjtpQkFDSixDQUFDLENBQUE7WUFDTixDQUFDO1lBRUQsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUE7UUFDdkQsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN2QixPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7UUFDL0IsQ0FBQztRQUVELE9BQU8sT0FBTyxDQUFBO0lBQ2xCLENBQUM7SUFFRDs7T0FFRztJQUNPLGlCQUFpQjtRQUN2QixPQUFPLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFBO0lBQ2xFLENBQUM7SUFFUyx5QkFBeUI7UUFDL0IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUE7SUFDL0QsQ0FBQztDQUNKO0FBRUEsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxtRkFBbUYiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IHsgT2JqZWN0TGl0ZXJhbCB9IGZyb20gXCIuLi9jb21tb24vT2JqZWN0TGl0ZXJhbFwiXG5pbXBvcnQgeyBRdWVyeVJ1bm5lciB9IGZyb20gXCIuLi9xdWVyeS1ydW5uZXIvUXVlcnlSdW5uZXJcIlxuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gXCIuLi9kYXRhLXNvdXJjZS9EYXRhU291cmNlXCJcbmltcG9ydCB7IFF1ZXJ5QnVpbGRlckN0ZU9wdGlvbnMgfSBmcm9tIFwiLi9RdWVyeUJ1aWxkZXJDdGVcIlxuaW1wb3J0IHsgUXVlcnlFeHByZXNzaW9uTWFwIH0gZnJvbSBcIi4vUXVlcnlFeHByZXNzaW9uTWFwXCJcbmltcG9ydCB0eXBlIHsgU2VsZWN0UXVlcnlCdWlsZGVyIH0gZnJvbSBcIi4vU2VsZWN0UXVlcnlCdWlsZGVyXCJcbmltcG9ydCB0eXBlIHsgVXBkYXRlUXVlcnlCdWlsZGVyIH0gZnJvbSBcIi4vVXBkYXRlUXVlcnlCdWlsZGVyXCJcbmltcG9ydCB0eXBlIHsgRGVsZXRlUXVlcnlCdWlsZGVyIH0gZnJvbSBcIi4vRGVsZXRlUXVlcnlCdWlsZGVyXCJcbmltcG9ydCB0eXBlIHsgU29mdERlbGV0ZVF1ZXJ5QnVpbGRlciB9IGZyb20gXCIuL1NvZnREZWxldGVRdWVyeUJ1aWxkZXJcIlxuaW1wb3J0IHR5cGUgeyBJbnNlcnRRdWVyeUJ1aWxkZXIgfSBmcm9tIFwiLi9JbnNlcnRRdWVyeUJ1aWxkZXJcIlxuaW1wb3J0IHR5cGUgeyBSZWxhdGlvblF1ZXJ5QnVpbGRlciB9IGZyb20gXCIuL1JlbGF0aW9uUXVlcnlCdWlsZGVyXCJcbmltcG9ydCB7IEVudGl0eVRhcmdldCB9IGZyb20gXCIuLi9jb21tb24vRW50aXR5VGFyZ2V0XCJcbmltcG9ydCB7IEFsaWFzIH0gZnJvbSBcIi4vQWxpYXNcIlxuaW1wb3J0IHsgQnJhY2tldHMgfSBmcm9tIFwiLi9CcmFja2V0c1wiXG5pbXBvcnQgeyBRdWVyeURlZXBQYXJ0aWFsRW50aXR5IH0gZnJvbSBcIi4vUXVlcnlQYXJ0aWFsRW50aXR5XCJcbmltcG9ydCB7IEVudGl0eU1ldGFkYXRhIH0gZnJvbSBcIi4uL21ldGFkYXRhL0VudGl0eU1ldGFkYXRhXCJcbmltcG9ydCB7IENvbHVtbk1ldGFkYXRhIH0gZnJvbSBcIi4uL21ldGFkYXRhL0NvbHVtbk1ldGFkYXRhXCJcbmltcG9ydCB7IEZpbmRPcGVyYXRvciB9IGZyb20gXCIuLi9maW5kLW9wdGlvbnMvRmluZE9wZXJhdG9yXCJcbmltcG9ydCB7IEluIH0gZnJvbSBcIi4uL2ZpbmQtb3B0aW9ucy9vcGVyYXRvci9JblwiXG5pbXBvcnQgeyBUeXBlT1JNRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JcIlxuaW1wb3J0IHsgV2hlcmVDbGF1c2UsIFdoZXJlQ2xhdXNlQ29uZGl0aW9uIH0gZnJvbSBcIi4vV2hlcmVDbGF1c2VcIlxuaW1wb3J0IHsgTm90QnJhY2tldHMgfSBmcm9tIFwiLi9Ob3RCcmFja2V0c1wiXG5pbXBvcnQgeyBFbnRpdHlQcm9wZXJ0eU5vdEZvdW5kRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3IvRW50aXR5UHJvcGVydHlOb3RGb3VuZEVycm9yXCJcbmltcG9ydCB7IFJldHVybmluZ1R5cGUgfSBmcm9tIFwiLi4vZHJpdmVyL0RyaXZlclwiXG4vKiAqL1xuLyogKi9cbiAgXG5pbXBvcnQgeyBJbnN0YW5jZUNoZWNrZXIgfSBmcm9tIFwiLi4vdXRpbC9JbnN0YW5jZUNoZWNrZXJcIlxuaW1wb3J0IHsgZXNjYXBlUmVnRXhwIH0gZnJvbSBcIi4uL3V0aWwvZXNjYXBlUmVnRXhwXCJcbmltcG9ydCB7IENMQVNTIH0gZnJvbSBcInR5cGVzY3JpcHQtY2xhc3MtaGVscGVycy9icm93c2VyXCJcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLyoqXG4gKiBBbGxvd3MgdG8gYnVpbGQgY29tcGxleCBzcWwgcXVlcmllcyBpbiBhIGZhc2hpb24gd2F5IGFuZCBleGVjdXRlIHRob3NlIHF1ZXJpZXMuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBRdWVyeUJ1aWxkZXI8RW50aXR5IGV4dGVuZHMgT2JqZWN0TGl0ZXJhbD4ge1xuICAgIHJlYWRvbmx5IFwiQGluc3RhbmNlb2ZcIiA9IFN5bWJvbC5mb3IoXCJRdWVyeUJ1aWxkZXJcIilcblxuXG5cblxuXG4gICAgLyoqXG4gICAgICogQ29ubmVjdGlvbiBvbiB3aGljaCBRdWVyeUJ1aWxkZXIgd2FzIGNyZWF0ZWQuXG4gICAgICovXG4gICAgcmVhZG9ubHkgY29ubmVjdGlvbjogRGF0YVNvdXJjZVxuXG4gICAgLyoqXG4gICAgICogQ29udGFpbnMgYWxsIHByb3BlcnRpZXMgb2YgdGhlIFF1ZXJ5QnVpbGRlciB0aGF0IG5lZWRzIHRvIGJlIGJ1aWxkIGEgZmluYWwgcXVlcnkuXG4gICAgICovXG4gICAgcmVhZG9ubHkgZXhwcmVzc2lvbk1hcDogUXVlcnlFeHByZXNzaW9uTWFwXG5cblxuXG5cblxuICAgIC8qKlxuICAgICAqIFF1ZXJ5IHJ1bm5lciB1c2VkIHRvIGV4ZWN1dGUgcXVlcnkgYnVpbGRlciBxdWVyeS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcXVlcnlSdW5uZXI/OiBRdWVyeVJ1bm5lclxuXG4gICAgLyoqXG4gICAgICogSWYgUXVlcnlCdWlsZGVyIHdhcyBjcmVhdGVkIGluIGEgc3VicXVlcnkgbW9kZSB0aGVuIGl0cyBwYXJlbnQgUXVlcnlCdWlsZGVyICh3aG8gY3JlYXRlZCBzdWJxdWVyeSkgd2lsbCBiZSBzdG9yZWQgaGVyZS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcGFyZW50UXVlcnlCdWlsZGVyOiBRdWVyeUJ1aWxkZXI8YW55PlxuXG4gICAgLyoqXG4gICAgICogTWVtbyB0byBoZWxwIGtlZXAgcGxhY2Ugb2YgY3VycmVudCBwYXJhbWV0ZXIgaW5kZXggZm9yIGBjcmVhdGVQYXJhbWV0ZXJgXG4gICAgICovXG4gICAgcHJpdmF0ZSBwYXJhbWV0ZXJJbmRleCA9IDBcblxuXG5cblxuXG4gICAgLyoqXG4gICAgICogUXVlcnlCdWlsZGVyIGNhbiBiZSBpbml0aWFsaXplZCBmcm9tIGdpdmVuIENvbm5lY3Rpb24gYW5kIFF1ZXJ5UnVubmVyIG9iamVjdHMgb3IgZnJvbSBnaXZlbiBvdGhlciBRdWVyeUJ1aWxkZXIuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocXVlcnlCdWlsZGVyOiBRdWVyeUJ1aWxkZXI8YW55PilcblxuICAgIC8qKlxuICAgICAqIFF1ZXJ5QnVpbGRlciBjYW4gYmUgaW5pdGlhbGl6ZWQgZnJvbSBnaXZlbiBDb25uZWN0aW9uIGFuZCBRdWVyeVJ1bm5lciBvYmplY3RzIG9yIGZyb20gZ2l2ZW4gb3RoZXIgUXVlcnlCdWlsZGVyLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGNvbm5lY3Rpb246IERhdGFTb3VyY2UsIHF1ZXJ5UnVubmVyPzogUXVlcnlSdW5uZXIpXG5cbiAgICAvKipcbiAgICAgKiBRdWVyeUJ1aWxkZXIgY2FuIGJlIGluaXRpYWxpemVkIGZyb20gZ2l2ZW4gQ29ubmVjdGlvbiBhbmQgUXVlcnlSdW5uZXIgb2JqZWN0cyBvciBmcm9tIGdpdmVuIG90aGVyIFF1ZXJ5QnVpbGRlci5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgY29ubmVjdGlvbk9yUXVlcnlCdWlsZGVyOiBEYXRhU291cmNlIHwgUXVlcnlCdWlsZGVyPGFueT4sXG4gICAgICAgIHF1ZXJ5UnVubmVyPzogUXVlcnlSdW5uZXIsXG4gICAgKSB7XG4gICAgICAgIGlmIChJbnN0YW5jZUNoZWNrZXIuaXNRdWVyeUJ1aWxkZXIoY29ubmVjdGlvbk9yUXVlcnlCdWlsZGVyKSkge1xuICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uID0gY29ubmVjdGlvbk9yUXVlcnlCdWlsZGVyLmNvbm5lY3Rpb25cbiAgICAgICAgICAgIHRoaXMucXVlcnlSdW5uZXIgPSBjb25uZWN0aW9uT3JRdWVyeUJ1aWxkZXIucXVlcnlSdW5uZXJcbiAgICAgICAgICAgIHRoaXMuZXhwcmVzc2lvbk1hcCA9IGNvbm5lY3Rpb25PclF1ZXJ5QnVpbGRlci5leHByZXNzaW9uTWFwLmNsb25lKClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbiA9IGNvbm5lY3Rpb25PclF1ZXJ5QnVpbGRlclxuICAgICAgICAgICAgdGhpcy5xdWVyeVJ1bm5lciA9IHF1ZXJ5UnVubmVyXG4gICAgICAgICAgICB0aGlzLmV4cHJlc3Npb25NYXAgPSBuZXcgUXVlcnlFeHByZXNzaW9uTWFwKHRoaXMuY29ubmVjdGlvbilcbiAgICAgICAgfVxuICAgIH1cblxuXG5cblxuXG4gICAgLyoqXG4gICAgICogR2V0cyBnZW5lcmF0ZWQgU1FMIHF1ZXJ5IHdpdGhvdXQgcGFyYW1ldGVycyBiZWluZyByZXBsYWNlZC5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXRRdWVyeSgpOiBzdHJpbmdcblxuXG5cblxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbWFpbiBhbGlhcyBzdHJpbmcgdXNlZCBpbiB0aGlzIHF1ZXJ5IGJ1aWxkZXIuXG4gICAgICovXG4gICAgZ2V0IGFsaWFzKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICghdGhpcy5leHByZXNzaW9uTWFwLm1haW5BbGlhcylcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlT1JNRXJyb3IoYE1haW4gYWxpYXMgaXMgbm90IHNldGApIC8vIHRvZG86IGJldHRlciBleGNlcHRpb25cblxuICAgICAgICByZXR1cm4gdGhpcy5leHByZXNzaW9uTWFwLm1haW5BbGlhcy5uYW1lXG4gICAgfVxuXG5cblxuXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIFNFTEVDVCBxdWVyeS5cbiAgICAgKiBSZXBsYWNlcyBhbGwgcHJldmlvdXMgc2VsZWN0aW9ucyBpZiB0aGV5IGV4aXN0LlxuICAgICAqL1xuICAgIHNlbGVjdCgpOiBTZWxlY3RRdWVyeUJ1aWxkZXI8RW50aXR5PlxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBTRUxFQ1QgcXVlcnkgYW5kIHNlbGVjdHMgZ2l2ZW4gZGF0YS5cbiAgICAgKiBSZXBsYWNlcyBhbGwgcHJldmlvdXMgc2VsZWN0aW9ucyBpZiB0aGV5IGV4aXN0LlxuICAgICAqL1xuICAgIHNlbGVjdChcbiAgICAgICAgc2VsZWN0aW9uOiBzdHJpbmcsXG4gICAgICAgIHNlbGVjdGlvbkFsaWFzTmFtZT86IHN0cmluZyxcbiAgICApOiBTZWxlY3RRdWVyeUJ1aWxkZXI8RW50aXR5PlxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBTRUxFQ1QgcXVlcnkgYW5kIHNlbGVjdHMgZ2l2ZW4gZGF0YS5cbiAgICAgKiBSZXBsYWNlcyBhbGwgcHJldmlvdXMgc2VsZWN0aW9ucyBpZiB0aGV5IGV4aXN0LlxuICAgICAqL1xuICAgIHNlbGVjdChzZWxlY3Rpb246IHN0cmluZ1tdKTogU2VsZWN0UXVlcnlCdWlsZGVyPEVudGl0eT5cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgU0VMRUNUIHF1ZXJ5IGFuZCBzZWxlY3RzIGdpdmVuIGRhdGEuXG4gICAgICogUmVwbGFjZXMgYWxsIHByZXZpb3VzIHNlbGVjdGlvbnMgaWYgdGhleSBleGlzdC5cbiAgICAgKi9cbiAgICBzZWxlY3QoXG4gICAgICAgIHNlbGVjdGlvbj86IHN0cmluZyB8IHN0cmluZ1tdLFxuICAgICAgICBzZWxlY3Rpb25BbGlhc05hbWU/OiBzdHJpbmcsXG4gICAgKTogU2VsZWN0UXVlcnlCdWlsZGVyPEVudGl0eT4ge1xuICAgICAgICB0aGlzLmV4cHJlc3Npb25NYXAucXVlcnlUeXBlID0gXCJzZWxlY3RcIlxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzZWxlY3Rpb24pKSB7XG4gICAgICAgICAgICB0aGlzLmV4cHJlc3Npb25NYXAuc2VsZWN0cyA9IHNlbGVjdGlvbi5tYXAoKHNlbGVjdGlvbikgPT4gKHtcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb246IHNlbGVjdGlvbixcbiAgICAgICAgICAgIH0pKVxuICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGlvbikge1xuICAgICAgICAgICAgdGhpcy5leHByZXNzaW9uTWFwLnNlbGVjdHMgPSBbXG4gICAgICAgICAgICAgICAgeyBzZWxlY3Rpb246IHNlbGVjdGlvbiwgYWxpYXNOYW1lOiBzZWxlY3Rpb25BbGlhc05hbWUgfSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuXG5cbiAgICAgICAgY29uc3QgU2VsZWN0UXVlcnlCdWlsZGVyQ2xzID0gQ0xBU1MuZ2V0QnkoJ1NlbGVjdFF1ZXJ5QnVpbGRlcicpIGFzIHR5cGVvZiBTZWxlY3RRdWVyeUJ1aWxkZXI7XG4gICAgICAgIGlmIChJbnN0YW5jZUNoZWNrZXIuaXNTZWxlY3RRdWVyeUJ1aWxkZXIodGhpcykpIHJldHVybiB0aGlzIGFzIGFueVxuXG4gICAgICAgIHJldHVybiBuZXcgU2VsZWN0UXVlcnlCdWlsZGVyQ2xzKHRoaXMpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBJTlNFUlQgcXVlcnkuXG4gICAgICovXG4gICAgaW5zZXJ0KCk6IEluc2VydFF1ZXJ5QnVpbGRlcjxFbnRpdHk+IHtcbiAgICAgICAgdGhpcy5leHByZXNzaW9uTWFwLnF1ZXJ5VHlwZSA9IFwiaW5zZXJ0XCJcblxuICAgICAgICAvLyBsb2FkaW5nIGl0IGR5bmFtaWNhbGx5IGJlY2F1c2Ugb2YgY2lyY3VsYXIgaXNzdWUgLy8gQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBJbnNlcnRRdWVyeUJ1aWxkZXJDbHMgPSAgQ0xBU1MuZ2V0QnkoJ0luc2VydFF1ZXJ5QnVpbGRlcicpIGFzIHR5cGVvZiBJbnNlcnRRdWVyeUJ1aWxkZXI7XG5cbiAgICAgICAgaWYgKEluc3RhbmNlQ2hlY2tlci5pc0luc2VydFF1ZXJ5QnVpbGRlcih0aGlzKSkge1xuICAgICAgICAgIHJldHVybiB0aGlzIGFzIGFueTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgSW5zZXJ0UXVlcnlCdWlsZGVyQ2xzKHRoaXMpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBVUERBVEUgcXVlcnkgYW5kIGFwcGxpZXMgZ2l2ZW4gdXBkYXRlIHZhbHVlcy5cbiAgICAgKi9cbiAgICB1cGRhdGUoKTogVXBkYXRlUXVlcnlCdWlsZGVyPEVudGl0eT5cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgVVBEQVRFIHF1ZXJ5IGFuZCBhcHBsaWVzIGdpdmVuIHVwZGF0ZSB2YWx1ZXMuXG4gICAgICovXG4gICAgdXBkYXRlKFxuICAgICAgICB1cGRhdGVTZXQ6IFF1ZXJ5RGVlcFBhcnRpYWxFbnRpdHk8RW50aXR5PixcbiAgICApOiBVcGRhdGVRdWVyeUJ1aWxkZXI8RW50aXR5PlxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBVUERBVEUgcXVlcnkgZm9yIHRoZSBnaXZlbiBlbnRpdHkgYW5kIGFwcGxpZXMgZ2l2ZW4gdXBkYXRlIHZhbHVlcy5cbiAgICAgKi9cbiAgICB1cGRhdGU8RW50aXR5IGV4dGVuZHMgT2JqZWN0TGl0ZXJhbD4oXG4gICAgICAgIGVudGl0eTogRW50aXR5VGFyZ2V0PEVudGl0eT4sXG4gICAgICAgIHVwZGF0ZVNldD86IFF1ZXJ5RGVlcFBhcnRpYWxFbnRpdHk8RW50aXR5PixcbiAgICApOiBVcGRhdGVRdWVyeUJ1aWxkZXI8RW50aXR5PlxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBVUERBVEUgcXVlcnkgZm9yIHRoZSBnaXZlbiB0YWJsZSBuYW1lIGFuZCBhcHBsaWVzIGdpdmVuIHVwZGF0ZSB2YWx1ZXMuXG4gICAgICovXG4gICAgdXBkYXRlKFxuICAgICAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICAgICAgdXBkYXRlU2V0PzogUXVlcnlEZWVwUGFydGlhbEVudGl0eTxFbnRpdHk+LFxuICAgICk6IFVwZGF0ZVF1ZXJ5QnVpbGRlcjxFbnRpdHk+XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIFVQREFURSBxdWVyeSBhbmQgYXBwbGllcyBnaXZlbiB1cGRhdGUgdmFsdWVzLlxuICAgICAqL1xuICAgIHVwZGF0ZShcbiAgICAgICAgZW50aXR5T3JUYWJsZU5hbWVVcGRhdGVTZXQ/OiBFbnRpdHlUYXJnZXQ8YW55PiB8IE9iamVjdExpdGVyYWwsXG4gICAgICAgIG1heWJlVXBkYXRlU2V0PzogT2JqZWN0TGl0ZXJhbCxcbiAgICApOiBVcGRhdGVRdWVyeUJ1aWxkZXI8YW55PiB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZVNldCA9IG1heWJlVXBkYXRlU2V0XG4gICAgICAgICAgICA/IG1heWJlVXBkYXRlU2V0XG4gICAgICAgICAgICA6IChlbnRpdHlPclRhYmxlTmFtZVVwZGF0ZVNldCBhcyBPYmplY3RMaXRlcmFsIHwgdW5kZWZpbmVkKVxuICAgICAgICBlbnRpdHlPclRhYmxlTmFtZVVwZGF0ZVNldCA9IEluc3RhbmNlQ2hlY2tlci5pc0VudGl0eVNjaGVtYShcbiAgICAgICAgICAgIGVudGl0eU9yVGFibGVOYW1lVXBkYXRlU2V0LFxuICAgICAgICApXG4gICAgICAgICAgICA/IGVudGl0eU9yVGFibGVOYW1lVXBkYXRlU2V0Lm9wdGlvbnMubmFtZVxuICAgICAgICAgICAgOiBlbnRpdHlPclRhYmxlTmFtZVVwZGF0ZVNldFxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHR5cGVvZiBlbnRpdHlPclRhYmxlTmFtZVVwZGF0ZVNldCA9PT0gXCJmdW5jdGlvblwiIHx8XG4gICAgICAgICAgICB0eXBlb2YgZW50aXR5T3JUYWJsZU5hbWVVcGRhdGVTZXQgPT09IFwic3RyaW5nXCJcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBtYWluQWxpYXMgPSB0aGlzLmNyZWF0ZUZyb21BbGlhcyhlbnRpdHlPclRhYmxlTmFtZVVwZGF0ZVNldClcbiAgICAgICAgICAgIHRoaXMuZXhwcmVzc2lvbk1hcC5zZXRNYWluQWxpYXMobWFpbkFsaWFzKVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5leHByZXNzaW9uTWFwLnF1ZXJ5VHlwZSA9IFwidXBkYXRlXCJcbiAgICAgICAgdGhpcy5leHByZXNzaW9uTWFwLnZhbHVlc1NldCA9IHVwZGF0ZVNldFxuXG5cbiAgICAgICAgY29uc3QgVXBkYXRlUXVlcnlCdWlsZGVyQ2xzID0gQ0xBU1MuZ2V0QnkoJ1VwZGF0ZVF1ZXJ5QnVpbGRlcicpIGFzIHR5cGVvZiBVcGRhdGVRdWVyeUJ1aWxkZXI7XG4gICAgICAgIGlmIChJbnN0YW5jZUNoZWNrZXIuaXNVcGRhdGVRdWVyeUJ1aWxkZXIodGhpcykpIHJldHVybiB0aGlzIGFzIGFueVxuXG4gICAgICAgIHJldHVybiBuZXcgVXBkYXRlUXVlcnlCdWlsZGVyQ2xzKHRoaXMpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBERUxFVEUgcXVlcnkuXG4gICAgICovXG4gICAgZGVsZXRlKCk6IERlbGV0ZVF1ZXJ5QnVpbGRlcjxFbnRpdHk+IHtcbiAgICAgICAgdGhpcy5leHByZXNzaW9uTWFwLnF1ZXJ5VHlwZSA9IFwiZGVsZXRlXCJcblxuXG4gICAgICAgIGNvbnN0IERlbGV0ZVF1ZXJ5QnVpbGRlckNscyA9IENMQVNTLmdldEJ5KCdEZWxldGVRdWVyeUJ1aWxkZXInKSBhcyB0eXBlb2YgRGVsZXRlUXVlcnlCdWlsZGVyO1xuICAgICAgICBpZiAoSW5zdGFuY2VDaGVja2VyLmlzRGVsZXRlUXVlcnlCdWlsZGVyKHRoaXMpKSByZXR1cm4gdGhpcyBhcyBhbnlcblxuICAgICAgICByZXR1cm4gbmV3IERlbGV0ZVF1ZXJ5QnVpbGRlckNscyh0aGlzKVxuICAgIH1cblxuICAgIHNvZnREZWxldGUoKTogU29mdERlbGV0ZVF1ZXJ5QnVpbGRlcjxhbnk+IHtcbiAgICAgICAgdGhpcy5leHByZXNzaW9uTWFwLnF1ZXJ5VHlwZSA9IFwic29mdC1kZWxldGVcIlxuXG5cbiAgICAgICAgY29uc3QgU29mdERlbGV0ZVF1ZXJ5QnVpbGRlckNscyA9IENMQVNTLmdldEJ5KCdTb2Z0RGVsZXRlUXVlcnlCdWlsZGVyJykgYXMgdHlwZW9mIFNvZnREZWxldGVRdWVyeUJ1aWxkZXI7XG4gICAgICAgIGlmIChJbnN0YW5jZUNoZWNrZXIuaXNTb2Z0RGVsZXRlUXVlcnlCdWlsZGVyKHRoaXMpKSByZXR1cm4gdGhpcyBhcyBhbnlcblxuICAgICAgICByZXR1cm4gbmV3IFNvZnREZWxldGVRdWVyeUJ1aWxkZXJDbHModGhpcylcbiAgICB9XG5cbiAgICByZXN0b3JlKCk6IFNvZnREZWxldGVRdWVyeUJ1aWxkZXI8YW55PiB7XG4gICAgICAgIHRoaXMuZXhwcmVzc2lvbk1hcC5xdWVyeVR5cGUgPSBcInJlc3RvcmVcIlxuXG5cbiAgICAgICAgY29uc3QgU29mdERlbGV0ZVF1ZXJ5QnVpbGRlckNscyA9IENMQVNTLmdldEJ5KCdTb2Z0RGVsZXRlUXVlcnlCdWlsZGVyJykgYXMgdHlwZW9mIFNvZnREZWxldGVRdWVyeUJ1aWxkZXI7XG4gICAgICAgIGlmIChJbnN0YW5jZUNoZWNrZXIuaXNTb2Z0RGVsZXRlUXVlcnlCdWlsZGVyKHRoaXMpKSByZXR1cm4gdGhpcyBhcyBhbnlcblxuICAgICAgICByZXR1cm4gbmV3IFNvZnREZWxldGVRdWVyeUJ1aWxkZXJDbHModGhpcylcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIGVudGl0eSdzIHJlbGF0aW9uIHdpdGggd2hpY2ggdGhpcyBxdWVyeSBidWlsZGVyIGdvbm5hIHdvcmsuXG4gICAgICovXG4gICAgcmVsYXRpb24ocHJvcGVydHlQYXRoOiBzdHJpbmcpOiBSZWxhdGlvblF1ZXJ5QnVpbGRlcjxFbnRpdHk+XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIGVudGl0eSdzIHJlbGF0aW9uIHdpdGggd2hpY2ggdGhpcyBxdWVyeSBidWlsZGVyIGdvbm5hIHdvcmsuXG4gICAgICovXG4gICAgcmVsYXRpb248VCBleHRlbmRzIE9iamVjdExpdGVyYWw+KFxuICAgICAgICBlbnRpdHlUYXJnZXQ6IEVudGl0eVRhcmdldDxUPixcbiAgICAgICAgcHJvcGVydHlQYXRoOiBzdHJpbmcsXG4gICAgKTogUmVsYXRpb25RdWVyeUJ1aWxkZXI8VD5cblxuICAgIC8qKlxuICAgICAqIFNldHMgZW50aXR5J3MgcmVsYXRpb24gd2l0aCB3aGljaCB0aGlzIHF1ZXJ5IGJ1aWxkZXIgZ29ubmEgd29yay5cbiAgICAgKi9cbiAgICByZWxhdGlvbihcbiAgICAgICAgZW50aXR5VGFyZ2V0T3JQcm9wZXJ0eVBhdGg6IEZ1bmN0aW9uIHwgc3RyaW5nLFxuICAgICAgICBtYXliZVByb3BlcnR5UGF0aD86IHN0cmluZyxcbiAgICApOiBSZWxhdGlvblF1ZXJ5QnVpbGRlcjxFbnRpdHk+IHtcbiAgICAgICAgY29uc3QgZW50aXR5VGFyZ2V0ID1cbiAgICAgICAgICAgIGFyZ3VtZW50cy5sZW5ndGggPT09IDIgPyBlbnRpdHlUYXJnZXRPclByb3BlcnR5UGF0aCA6IHVuZGVmaW5lZFxuICAgICAgICBjb25zdCBwcm9wZXJ0eVBhdGggPVxuICAgICAgICAgICAgYXJndW1lbnRzLmxlbmd0aCA9PT0gMlxuICAgICAgICAgICAgICAgID8gKG1heWJlUHJvcGVydHlQYXRoIGFzIHN0cmluZylcbiAgICAgICAgICAgICAgICA6IChlbnRpdHlUYXJnZXRPclByb3BlcnR5UGF0aCBhcyBzdHJpbmcpXG5cbiAgICAgICAgdGhpcy5leHByZXNzaW9uTWFwLnF1ZXJ5VHlwZSA9IFwicmVsYXRpb25cIlxuICAgICAgICB0aGlzLmV4cHJlc3Npb25NYXAucmVsYXRpb25Qcm9wZXJ0eVBhdGggPSBwcm9wZXJ0eVBhdGhcblxuICAgICAgICBpZiAoZW50aXR5VGFyZ2V0KSB7XG4gICAgICAgICAgICBjb25zdCBtYWluQWxpYXMgPSB0aGlzLmNyZWF0ZUZyb21BbGlhcyhlbnRpdHlUYXJnZXQpXG4gICAgICAgICAgICB0aGlzLmV4cHJlc3Npb25NYXAuc2V0TWFpbkFsaWFzKG1haW5BbGlhcylcbiAgICAgICAgfVxuXG5cbiAgICAgICAgY29uc3QgUmVsYXRpb25RdWVyeUJ1aWxkZXJDbHMgPSBDTEFTUy5nZXRCeSgnUmVsYXRpb25RdWVyeUJ1aWxkZXInKSBhcyB0eXBlb2YgUmVsYXRpb25RdWVyeUJ1aWxkZXI7XG4gICAgICAgIGlmIChJbnN0YW5jZUNoZWNrZXIuaXNSZWxhdGlvblF1ZXJ5QnVpbGRlcih0aGlzKSkgcmV0dXJuIHRoaXMgYXMgYW55XG5cbiAgICAgICAgcmV0dXJuIG5ldyBSZWxhdGlvblF1ZXJ5QnVpbGRlckNscyh0aGlzKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBnaXZlbiByZWxhdGlvbiBleGlzdHMgaW4gdGhlIGVudGl0eS5cbiAgICAgKiBSZXR1cm5zIHRydWUgaWYgcmVsYXRpb24gZXhpc3RzLCBmYWxzZSBvdGhlcndpc2UuXG4gICAgICpcbiAgICAgKiB0b2RvOiBtb3ZlIHRoaXMgbWV0aG9kIHRvIG1hbmFnZXI/IG9yIGNyZWF0ZSBhIHNob3J0Y3V0P1xuICAgICAqL1xuICAgIGhhc1JlbGF0aW9uPFQ+KHRhcmdldDogRW50aXR5VGFyZ2V0PFQ+LCByZWxhdGlvbjogc3RyaW5nKTogYm9vbGVhblxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGdpdmVuIHJlbGF0aW9ucyBleGlzdCBpbiB0aGUgZW50aXR5LlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiByZWxhdGlvbiBleGlzdHMsIGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKlxuICAgICAqIHRvZG86IG1vdmUgdGhpcyBtZXRob2QgdG8gbWFuYWdlcj8gb3IgY3JlYXRlIGEgc2hvcnRjdXQ/XG4gICAgICovXG4gICAgaGFzUmVsYXRpb248VD4odGFyZ2V0OiBFbnRpdHlUYXJnZXQ8VD4sIHJlbGF0aW9uOiBzdHJpbmdbXSk6IGJvb2xlYW5cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBnaXZlbiByZWxhdGlvbiBvciByZWxhdGlvbnMgZXhpc3QgaW4gdGhlIGVudGl0eS5cbiAgICAgKiBSZXR1cm5zIHRydWUgaWYgcmVsYXRpb24gZXhpc3RzLCBmYWxzZSBvdGhlcndpc2UuXG4gICAgICpcbiAgICAgKiB0b2RvOiBtb3ZlIHRoaXMgbWV0aG9kIHRvIG1hbmFnZXI/IG9yIGNyZWF0ZSBhIHNob3J0Y3V0P1xuICAgICAqL1xuICAgIGhhc1JlbGF0aW9uPFQ+KFxuICAgICAgICB0YXJnZXQ6IEVudGl0eVRhcmdldDxUPixcbiAgICAgICAgcmVsYXRpb246IHN0cmluZyB8IHN0cmluZ1tdLFxuICAgICk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBlbnRpdHlNZXRhZGF0YSA9IHRoaXMuY29ubmVjdGlvbi5nZXRNZXRhZGF0YSh0YXJnZXQpXG4gICAgICAgIGNvbnN0IHJlbGF0aW9ucyA9IEFycmF5LmlzQXJyYXkocmVsYXRpb24pID8gcmVsYXRpb24gOiBbcmVsYXRpb25dXG4gICAgICAgIHJldHVybiByZWxhdGlvbnMuZXZlcnkoKHJlbGF0aW9uKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gISFlbnRpdHlNZXRhZGF0YS5maW5kUmVsYXRpb25XaXRoUHJvcGVydHlQYXRoKHJlbGF0aW9uKVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIHRoZSBleGlzdGVuY2Ugb2YgYSBwYXJhbWV0ZXIgZm9yIHRoaXMgcXVlcnkgYnVpbGRlci5cbiAgICAgKi9cbiAgICBoYXNQYXJhbWV0ZXIoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMucGFyZW50UXVlcnlCdWlsZGVyPy5oYXNQYXJhbWV0ZXIoa2V5KSB8fFxuICAgICAgICAgICAga2V5IGluIHRoaXMuZXhwcmVzc2lvbk1hcC5wYXJhbWV0ZXJzXG4gICAgICAgIClcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHBhcmFtZXRlciBuYW1lIGFuZCBpdHMgdmFsdWUuXG4gICAgICpcbiAgICAgKiBUaGUga2V5IGZvciB0aGlzIHBhcmFtZXRlciBtYXkgY29udGFpbiBudW1iZXJzLCBsZXR0ZXJzLCB1bmRlcnNjb3Jlcywgb3IgcGVyaW9kcy5cbiAgICAgKi9cbiAgICBzZXRQYXJhbWV0ZXIoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB0aGlzIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZU9STUVycm9yKFxuICAgICAgICAgICAgICAgIGBGdW5jdGlvbiBwYXJhbWV0ZXIgaXNuJ3Qgc3VwcG9ydGVkIGluIHRoZSBwYXJhbWV0ZXJzLiBQbGVhc2UgY2hlY2sgXCIke2tleX1cIiBwYXJhbWV0ZXIuYCxcbiAgICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgha2V5Lm1hdGNoKC9eKFtBLVphLXowLTlfLl0rKSQvKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVPUk1FcnJvcihcbiAgICAgICAgICAgICAgICBcIlF1ZXJ5QnVpbGRlciBwYXJhbWV0ZXIga2V5cyBtYXkgb25seSBjb250YWluIG51bWJlcnMsIGxldHRlcnMsIHVuZGVyc2NvcmVzLCBvciBwZXJpb2RzLlwiLFxuICAgICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMucGFyZW50UXVlcnlCdWlsZGVyKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudFF1ZXJ5QnVpbGRlci5zZXRQYXJhbWV0ZXIoa2V5LCB2YWx1ZSlcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZXhwcmVzc2lvbk1hcC5wYXJhbWV0ZXJzW2tleV0gPSB2YWx1ZVxuICAgICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYWxsIHBhcmFtZXRlcnMgZnJvbSB0aGUgZ2l2ZW4gb2JqZWN0LlxuICAgICAqL1xuICAgIHNldFBhcmFtZXRlcnMocGFyYW1ldGVyczogT2JqZWN0TGl0ZXJhbCk6IHRoaXMge1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwYXJhbWV0ZXJzKSkge1xuICAgICAgICAgICAgdGhpcy5zZXRQYXJhbWV0ZXIoa2V5LCB2YWx1ZSlcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZVBhcmFtZXRlcih2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHBhcmFtZXRlck5hbWVcblxuICAgICAgICBkbyB7XG4gICAgICAgICAgICBwYXJhbWV0ZXJOYW1lID0gYG9ybV9wYXJhbV8ke3RoaXMucGFyYW1ldGVySW5kZXgrK31gXG4gICAgICAgIH0gd2hpbGUgKHRoaXMuaGFzUGFyYW1ldGVyKHBhcmFtZXRlck5hbWUpKVxuXG4gICAgICAgIHRoaXMuc2V0UGFyYW1ldGVyKHBhcmFtZXRlck5hbWUsIHZhbHVlKVxuXG4gICAgICAgIHJldHVybiBgOiR7cGFyYW1ldGVyTmFtZX1gXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBuYXRpdmUgcGFyYW1ldGVycyBmcm9tIHRoZSBnaXZlbiBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAZGVwcmVjYXRlZCBVc2UgYHNldFBhcmFtZXRlcnNgIGluc3RlYWRcbiAgICAgKi9cbiAgICBzZXROYXRpdmVQYXJhbWV0ZXJzKHBhcmFtZXRlcnM6IE9iamVjdExpdGVyYWwpOiB0aGlzIHtcblxuICAgICAgICBpZiAodGhpcy5wYXJlbnRRdWVyeUJ1aWxkZXIpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50UXVlcnlCdWlsZGVyLnNldE5hdGl2ZVBhcmFtZXRlcnMocGFyYW1ldGVycylcbiAgICAgICAgfVxuXG4gICAgICAgIE9iamVjdC5rZXlzKHBhcmFtZXRlcnMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5leHByZXNzaW9uTWFwLm5hdGl2ZVBhcmFtZXRlcnNba2V5XSA9IHBhcmFtZXRlcnNba2V5XVxuICAgICAgICB9KVxuICAgICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYWxsIHBhcmFtZXRlcnMuXG4gICAgICovXG4gICAgZ2V0UGFyYW1ldGVycygpOiBPYmplY3RMaXRlcmFsIHtcbiAgICAgICAgY29uc3QgcGFyYW1ldGVyczogT2JqZWN0TGl0ZXJhbCA9IE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICAgIHRoaXMuZXhwcmVzc2lvbk1hcC5wYXJhbWV0ZXJzLFxuICAgICAgICApXG5cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmV4cHJlc3Npb25NYXAubWFpbkFsaWFzICYmXG4gICAgICAgICAgICB0aGlzLmV4cHJlc3Npb25NYXAubWFpbkFsaWFzLmhhc01ldGFkYXRhXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmV4cHJlc3Npb25NYXAubWFpbkFsaWFzIS5tZXRhZGF0YVxuICAgICAgICAgICAgaWYgKG1ldGFkYXRhLmRpc2NyaW1pbmF0b3JDb2x1bW4gJiYgbWV0YWRhdGEucGFyZW50RW50aXR5TWV0YWRhdGEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZXMgPSBtZXRhZGF0YS5jaGlsZEVudGl0eU1ldGFkYXRhc1xuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoaWxkTWV0YWRhdGEpID0+IGNoaWxkTWV0YWRhdGEuZGlzY3JpbWluYXRvckNvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAubWFwKChjaGlsZE1ldGFkYXRhKSA9PiBjaGlsZE1ldGFkYXRhLmRpc2NyaW1pbmF0b3JWYWx1ZSlcbiAgICAgICAgICAgICAgICB2YWx1ZXMucHVzaChtZXRhZGF0YS5kaXNjcmltaW5hdG9yVmFsdWUpXG4gICAgICAgICAgICAgICAgcGFyYW1ldGVyc1tcImRpc2NyaW1pbmF0b3JDb2x1bW5WYWx1ZXNcIl0gPSB2YWx1ZXNcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXJhbWV0ZXJzXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJpbnRzIHNxbCB0byBzdGRvdXQgdXNpbmcgY29uc29sZS5sb2cuXG4gICAgICovXG4gICAgcHJpbnRTcWwoKTogdGhpcyB7XG5cbiAgICAgICAgY29uc3QgW3F1ZXJ5LCBwYXJhbWV0ZXJzXSA9IHRoaXMuZ2V0UXVlcnlBbmRQYXJhbWV0ZXJzKClcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmxvZ2dlci5sb2dRdWVyeShxdWVyeSwgcGFyYW1ldGVycylcbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGdlbmVyYXRlZCBzcWwgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkLlxuICAgICAqIFBhcmFtZXRlcnMgaW4gdGhlIHF1ZXJ5IGFyZSBlc2NhcGVkIGZvciB0aGUgY3VycmVudGx5IHVzZWQgZHJpdmVyLlxuICAgICAqL1xuICAgIGdldFNxbCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRRdWVyeUFuZFBhcmFtZXRlcnMoKVswXVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgcXVlcnkgdG8gYmUgZXhlY3V0ZWQgd2l0aCBhbGwgcGFyYW1ldGVycyB1c2VkIGluIGl0LlxuICAgICAqL1xuICAgIGdldFF1ZXJ5QW5kUGFyYW1ldGVycygpOiBbc3RyaW5nLCBhbnlbXV0ge1xuXG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5nZXRRdWVyeSgpXG4gICAgICAgIGNvbnN0IHBhcmFtZXRlcnMgPSB0aGlzLmdldFBhcmFtZXRlcnMoKVxuICAgICAgICByZXR1cm4gdGhpcy5jb25uZWN0aW9uLmRyaXZlci5lc2NhcGVRdWVyeVdpdGhQYXJhbWV0ZXJzKFxuICAgICAgICAgICAgcXVlcnksXG4gICAgICAgICAgICBwYXJhbWV0ZXJzLFxuICAgICAgICAgICAgdGhpcy5leHByZXNzaW9uTWFwLm5hdGl2ZVBhcmFtZXRlcnMsXG4gICAgICAgIClcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlcyBzcWwgZ2VuZXJhdGVkIGJ5IHF1ZXJ5IGJ1aWxkZXIgYW5kIHJldHVybnMgcmF3IGRhdGFiYXNlIHJlc3VsdHMuXG4gICAgICovXG4gICAgYXN5bmMgZXhlY3V0ZSgpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICBjb25zdCBbc3FsLCBwYXJhbWV0ZXJzXSA9IHRoaXMuZ2V0UXVlcnlBbmRQYXJhbWV0ZXJzKClcbiAgICAgICAgY29uc3QgcXVlcnlSdW5uZXIgPSB0aGlzLm9idGFpblF1ZXJ5UnVubmVyKClcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBxdWVyeVJ1bm5lci5xdWVyeShzcWwsIHBhcmFtZXRlcnMpIC8vIGF3YWl0IGlzIG5lZWRlZCBoZXJlIGJlY2F1c2Ugd2UgYXJlIHVzaW5nIGZpbmFsbHlcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGlmIChxdWVyeVJ1bm5lciAhPT0gdGhpcy5xdWVyeVJ1bm5lcikge1xuXG4gICAgICAgICAgICAgICAgYXdhaXQgcXVlcnlSdW5uZXIucmVsZWFzZSgpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY29tcGxldGVseSBuZXcgcXVlcnkgYnVpbGRlci5cbiAgICAgKiBVc2VzIHNhbWUgcXVlcnkgcnVubmVyIGFzIGN1cnJlbnQgUXVlcnlCdWlsZGVyLlxuICAgICAqL1xuICAgIGNyZWF0ZVF1ZXJ5QnVpbGRlcigpOiB0aGlzIHtcbiAgICAgICAgcmV0dXJuIG5ldyAodGhpcy5jb25zdHJ1Y3RvciBhcyBhbnkpKHRoaXMuY29ubmVjdGlvbiwgdGhpcy5xdWVyeVJ1bm5lcilcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9uZXMgcXVlcnkgYnVpbGRlciBhcyBpdCBpcy5cbiAgICAgKiBOb3RlOiBpdCB1c2VzIG5ldyBxdWVyeSBydW5uZXIsIGlmIHlvdSB3YW50IHF1ZXJ5IGJ1aWxkZXIgdGhhdCB1c2VzIGV4YWN0bHkgc2FtZSBxdWVyeSBydW5uZXIsXG4gICAgICogeW91IGNhbiBjcmVhdGUgcXVlcnkgYnVpbGRlciB1c2luZyBpdHMgY29uc3RydWN0b3IsIGZvciBleGFtcGxlIG5ldyBTZWxlY3RRdWVyeUJ1aWxkZXIocXVlcnlCdWlsZGVyKVxuICAgICAqIHdoZXJlIHF1ZXJ5QnVpbGRlciBpcyBjbG9uZWQgUXVlcnlCdWlsZGVyLlxuICAgICAqL1xuICAgIGNsb25lKCk6IHRoaXMge1xuICAgICAgICByZXR1cm4gbmV3ICh0aGlzLmNvbnN0cnVjdG9yIGFzIGFueSkodGhpcylcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbmNsdWRlcyBhIFF1ZXJ5IGNvbW1lbnQgaW4gdGhlIHF1ZXJ5IGJ1aWxkZXIuICBUaGlzIGlzIGhlbHBmdWwgZm9yIGRlYnVnZ2luZyBwdXJwb3NlcyxcbiAgICAgKiBzdWNoIGFzIGZpbmRpbmcgYSBzcGVjaWZpYyBxdWVyeSBpbiB0aGUgZGF0YWJhc2Ugc2VydmVyJ3MgbG9ncywgb3IgZm9yIGNhdGVnb3JpemF0aW9uIHVzaW5nXG4gICAgICogYW4gQVBNIHByb2R1Y3QuXG4gICAgICovXG4gICAgY29tbWVudChjb21tZW50OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5leHByZXNzaW9uTWFwLmNvbW1lbnQgPSBjb21tZW50XG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGlzYWJsZXMgZXNjYXBpbmcuXG4gICAgICovXG4gICAgZGlzYWJsZUVzY2FwaW5nKCk6IHRoaXMge1xuICAgICAgICB0aGlzLmV4cHJlc3Npb25NYXAuZGlzYWJsZUVzY2FwaW5nID0gZmFsc2VcbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFc2NhcGVzIHRhYmxlIG5hbWUsIGNvbHVtbiBuYW1lIG9yIGFsaWFzIG5hbWUgdXNpbmcgY3VycmVudCBkYXRhYmFzZSdzIGVzY2FwaW5nIGNoYXJhY3Rlci5cbiAgICAgKi9cbiAgICBlc2NhcGUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCF0aGlzLmV4cHJlc3Npb25NYXAuZGlzYWJsZUVzY2FwaW5nKSByZXR1cm4gbmFtZVxuICAgICAgICByZXR1cm4gdGhpcy5jb25uZWN0aW9uLmRyaXZlci5lc2NhcGUobmFtZSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIG9yIG92ZXJyaWRlcyBxdWVyeSBidWlsZGVyJ3MgUXVlcnlSdW5uZXIuXG4gICAgICovXG4gICAgc2V0UXVlcnlSdW5uZXIocXVlcnlSdW5uZXI6IFF1ZXJ5UnVubmVyKTogdGhpcyB7XG4gICAgICAgIHRoaXMucXVlcnlSdW5uZXIgPSBxdWVyeVJ1bm5lclxuICAgICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluZGljYXRlcyBpZiBsaXN0ZW5lcnMgYW5kIHN1YnNjcmliZXJzIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBhbmQgYWZ0ZXIgcXVlcnkgZXhlY3V0aW9uLlxuICAgICAqIEVuYWJsZWQgYnkgZGVmYXVsdC5cbiAgICAgKi9cbiAgICBjYWxsTGlzdGVuZXJzKGVuYWJsZWQ6IGJvb2xlYW4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5leHByZXNzaW9uTWFwLmNhbGxMaXN0ZW5lcnMgPSBlbmFibGVkXG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSWYgc2V0IHRvIHRydWUgdGhlIHF1ZXJ5IHdpbGwgYmUgd3JhcHBlZCBpbnRvIGEgdHJhbnNhY3Rpb24uXG4gICAgICovXG4gICAgdXNlVHJhbnNhY3Rpb24oZW5hYmxlZDogYm9vbGVhbik6IHRoaXMge1xuICAgICAgICB0aGlzLmV4cHJlc3Npb25NYXAudXNlVHJhbnNhY3Rpb24gPSBlbmFibGVkXG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBDVEUgdG8gcXVlcnlcbiAgICAgKi9cbiAgICBhZGRDb21tb25UYWJsZUV4cHJlc3Npb24oXG4gICAgICAgIHF1ZXJ5QnVpbGRlcjogUXVlcnlCdWlsZGVyPGFueT4gfCBzdHJpbmcsXG4gICAgICAgIGFsaWFzOiBzdHJpbmcsXG4gICAgICAgIG9wdGlvbnM/OiBRdWVyeUJ1aWxkZXJDdGVPcHRpb25zLFxuICAgICk6IHRoaXMge1xuICAgICAgICB0aGlzLmV4cHJlc3Npb25NYXAuY29tbW9uVGFibGVFeHByZXNzaW9ucy5wdXNoKHtcbiAgICAgICAgICAgIHF1ZXJ5QnVpbGRlcixcbiAgICAgICAgICAgIGFsaWFzLFxuICAgICAgICAgICAgb3B0aW9uczogb3B0aW9ucyB8fCB7fSxcbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cblxuXG5cblxuICAgIC8qKlxuICAgICAqIEdldHMgZXNjYXBlZCB0YWJsZSBuYW1lIHdpdGggc2NoZW1hIG5hbWUgaWYgU3FsU2VydmVyIGRyaXZlciB1c2VkIHdpdGggY3VzdG9tXG4gICAgICogc2NoZW1hIG5hbWUsIG90aGVyd2lzZSByZXR1cm5zIGVzY2FwZWQgdGFibGUgbmFtZS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0VGFibGVOYW1lKHRhYmxlUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRhYmxlUGF0aFxuICAgICAgICAgICAgLnNwbGl0KFwiLlwiKVxuICAgICAgICAgICAgLm1hcCgoaSkgPT4ge1xuXG4gICAgICAgICAgICAgICAgaWYgKGkgPT09IFwiXCIpIHJldHVybiBpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXNjYXBlKGkpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmpvaW4oXCIuXCIpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBuYW1lIG9mIHRoZSB0YWJsZSB3aGVyZSBpbnNlcnQgc2hvdWxkIGJlIHBlcmZvcm1lZC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0TWFpblRhYmxlTmFtZSgpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIXRoaXMuZXhwcmVzc2lvbk1hcC5tYWluQWxpYXMpXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZU9STUVycm9yKFxuICAgICAgICAgICAgICAgIGBFbnRpdHkgd2hlcmUgdmFsdWVzIHNob3VsZCBiZSBpbnNlcnRlZCBpcyBub3Qgc3BlY2lmaWVkLiBDYWxsIFwicWIuaW50byhlbnRpdHkpXCIgbWV0aG9kIHRvIHNwZWNpZnkgaXQuYCxcbiAgICAgICAgICAgIClcblxuICAgICAgICBpZiAodGhpcy5leHByZXNzaW9uTWFwLm1haW5BbGlhcy5oYXNNZXRhZGF0YSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmV4cHJlc3Npb25NYXAubWFpbkFsaWFzLm1ldGFkYXRhLnRhYmxlUGF0aFxuXG4gICAgICAgIHJldHVybiB0aGlzLmV4cHJlc3Npb25NYXAubWFpbkFsaWFzLnRhYmxlUGF0aCFcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTcGVjaWZpZXMgRlJPTSB3aGljaCBlbnRpdHkncyB0YWJsZSBzZWxlY3QvdXBkYXRlL2RlbGV0ZSB3aWxsIGJlIGV4ZWN1dGVkLlxuICAgICAqIEFsc28gc2V0cyBhIG1haW4gc3RyaW5nIGFsaWFzIG9mIHRoZSBzZWxlY3Rpb24gZGF0YS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY3JlYXRlRnJvbUFsaWFzKFxuICAgICAgICBlbnRpdHlUYXJnZXQ6XG4gICAgICAgICAgICB8IEVudGl0eVRhcmdldDxhbnk+XG4gICAgICAgICAgICB8ICgocWI6IFNlbGVjdFF1ZXJ5QnVpbGRlcjxhbnk+KSA9PiBTZWxlY3RRdWVyeUJ1aWxkZXI8YW55PiksXG4gICAgICAgIGFsaWFzTmFtZT86IHN0cmluZyxcbiAgICApOiBBbGlhcyB7XG5cblxuICAgICAgICBpZiAodGhpcy5jb25uZWN0aW9uLmhhc01ldGFkYXRhKGVudGl0eVRhcmdldCkpIHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jb25uZWN0aW9uLmdldE1ldGFkYXRhKGVudGl0eVRhcmdldClcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXhwcmVzc2lvbk1hcC5jcmVhdGVBbGlhcyh7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJmcm9tXCIsXG4gICAgICAgICAgICAgICAgbmFtZTogYWxpYXNOYW1lLFxuICAgICAgICAgICAgICAgIG1ldGFkYXRhOiB0aGlzLmNvbm5lY3Rpb24uZ2V0TWV0YWRhdGEoZW50aXR5VGFyZ2V0KSxcbiAgICAgICAgICAgICAgICB0YWJsZVBhdGg6IG1ldGFkYXRhLnRhYmxlUGF0aCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGVudGl0eVRhcmdldCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzU3VicXVlcnkgPVxuICAgICAgICAgICAgICAgICAgICBlbnRpdHlUYXJnZXQuc3Vic3RyKDAsIDEpID09PSBcIihcIiAmJlxuICAgICAgICAgICAgICAgICAgICBlbnRpdHlUYXJnZXQuc3Vic3RyKC0xKSA9PT0gXCIpXCJcblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmV4cHJlc3Npb25NYXAuY3JlYXRlQWxpYXMoe1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImZyb21cIixcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogYWxpYXNOYW1lLFxuICAgICAgICAgICAgICAgICAgICB0YWJsZVBhdGg6ICFpc1N1YnF1ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICA/IChlbnRpdHlUYXJnZXQgYXMgc3RyaW5nKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIHN1YlF1ZXJ5OiBpc1N1YnF1ZXJ5ID8gZW50aXR5VGFyZ2V0IDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHN1YlF1ZXJ5QnVpbGRlcjogU2VsZWN0UXVlcnlCdWlsZGVyPGFueT4gPSAoXG4gICAgICAgICAgICAgICAgZW50aXR5VGFyZ2V0IGFzIGFueVxuICAgICAgICAgICAgKSgodGhpcyBhcyBhbnkgYXMgU2VsZWN0UXVlcnlCdWlsZGVyPGFueT4pLnN1YlF1ZXJ5KCkpXG4gICAgICAgICAgICB0aGlzLnNldFBhcmFtZXRlcnMoc3ViUXVlcnlCdWlsZGVyLmdldFBhcmFtZXRlcnMoKSlcbiAgICAgICAgICAgIGNvbnN0IHN1YnF1ZXJ5ID0gc3ViUXVlcnlCdWlsZGVyLmdldFF1ZXJ5KClcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXhwcmVzc2lvbk1hcC5jcmVhdGVBbGlhcyh7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJmcm9tXCIsXG4gICAgICAgICAgICAgICAgbmFtZTogYWxpYXNOYW1lLFxuICAgICAgICAgICAgICAgIHN1YlF1ZXJ5OiBzdWJxdWVyeSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXBsYWNlcyBhbGwgZW50aXR5J3MgcHJvcGVydHlOYW1lIHRvIG5hbWUgaW4gdGhlIGdpdmVuIHN0YXRlbWVudC5cbiAgICAgKi9cblxuICAgIHByb3RlY3RlZCByZXBsYWNlUHJvcGVydHlOYW1lcyhzdGF0ZW1lbnQ6IHN0cmluZykge1xuICAgICAgICBmb3IgKGNvbnN0IGFsaWFzIG9mIHRoaXMuZXhwcmVzc2lvbk1hcC5hbGlhc2VzKSB7XG4gICAgICAgICAgICBpZiAoIWFsaWFzLmhhc01ldGFkYXRhKSBjb250aW51ZVxuICAgICAgICAgICAgY29uc3QgcmVwbGFjZUFsaWFzTmFtZVByZWZpeCA9IHRoaXMuZXhwcmVzc2lvbk1hcFxuICAgICAgICAgICAgICAgIC5hbGlhc05hbWVQcmVmaXhpbmdFbmFibGVkXG4gICAgICAgICAgICAgICAgPyBgJHthbGlhcy5uYW1lfS5gXG4gICAgICAgICAgICAgICAgOiBcIlwiXG4gICAgICAgICAgICBjb25zdCByZXBsYWNlbWVudEFsaWFzTmFtZVByZWZpeCA9IHRoaXMuZXhwcmVzc2lvbk1hcFxuICAgICAgICAgICAgICAgIC5hbGlhc05hbWVQcmVmaXhpbmdFbmFibGVkXG4gICAgICAgICAgICAgICAgPyBgJHt0aGlzLmVzY2FwZShhbGlhcy5uYW1lKX0uYFxuICAgICAgICAgICAgICAgIDogXCJcIlxuXG4gICAgICAgICAgICBjb25zdCByZXBsYWNlbWVudHM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fVxuXG5cblxuXG5cblxuXG5cblxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlbGF0aW9uIG9mIGFsaWFzLm1ldGFkYXRhLnJlbGF0aW9ucykge1xuICAgICAgICAgICAgICAgIGlmIChyZWxhdGlvbi5qb2luQ29sdW1ucy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudHNbcmVsYXRpb24ucHJvcGVydHlQYXRoXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvbi5qb2luQ29sdW1uc1swXS5kYXRhYmFzZU5hbWVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChjb25zdCByZWxhdGlvbiBvZiBhbGlhcy5tZXRhZGF0YS5yZWxhdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGpvaW5Db2x1bW4gb2YgW1xuICAgICAgICAgICAgICAgICAgICAuLi5yZWxhdGlvbi5qb2luQ29sdW1ucyxcbiAgICAgICAgICAgICAgICAgICAgLi4ucmVsYXRpb24uaW52ZXJzZUpvaW5Db2x1bW5zLFxuICAgICAgICAgICAgICAgIF0pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvcGVydHlLZXkgPSBgJHtyZWxhdGlvbi5wcm9wZXJ0eVBhdGh9LiR7XG4gICAgICAgICAgICAgICAgICAgICAgICBqb2luQ29sdW1uLnJlZmVyZW5jZWRDb2x1bW4hLnByb3BlcnR5UGF0aFxuICAgICAgICAgICAgICAgICAgICB9YFxuICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudHNbcHJvcGVydHlLZXldID0gam9pbkNvbHVtbi5kYXRhYmFzZU5hbWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGFsaWFzLm1ldGFkYXRhLmNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICByZXBsYWNlbWVudHNbY29sdW1uLmRhdGFiYXNlTmFtZV0gPSBjb2x1bW4uZGF0YWJhc2VOYW1lXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGFsaWFzLm1ldGFkYXRhLmNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICByZXBsYWNlbWVudHNbY29sdW1uLnByb3BlcnR5TmFtZV0gPSBjb2x1bW4uZGF0YWJhc2VOYW1lXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGFsaWFzLm1ldGFkYXRhLmNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICByZXBsYWNlbWVudHNbY29sdW1uLnByb3BlcnR5UGF0aF0gPSBjb2x1bW4uZGF0YWJhc2VOYW1lXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudC5yZXBsYWNlKFxuICAgICAgICAgICAgICAgIG5ldyBSZWdFeHAoXG5cbiAgICAgICAgICAgICAgICAgICAgYChbID1cXChdfF4uezB9KWAgKyAvLyBhbnkgb2YgJyA9KCcgb3Igc3RhcnQgb2YgbGluZVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBgJHtlc2NhcGVSZWdFeHAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZUFsaWFzTmFtZVByZWZpeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICl9KFteID1cXChcXClcXCxdKylgICsgLy8gYSBwb3NzaWJsZSBwcm9wZXJ0eSBuYW1lOiBzZXF1ZW5jZSBvZiBhbnl0aGluZyBidXQgJyA9KCksJ1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBgKD89WyA9XFwpXFwsXXwuezB9JClgLFxuICAgICAgICAgICAgICAgICAgICBcImdtXCIsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAobWF0Y2gsIHByZSwgcCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVwbGFjZW1lbnRzW3BdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYCR7cHJlfSR7cmVwbGFjZW1lbnRBbGlhc05hbWVQcmVmaXh9JHt0aGlzLmVzY2FwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudHNbcF0sXG4gICAgICAgICAgICAgICAgICAgICAgICApfWBcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2hcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN0YXRlbWVudFxuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVDb21tZW50KCk6IHN0cmluZyB7XG4gICAgICAgIGlmICghdGhpcy5leHByZXNzaW9uTWFwLmNvbW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBcIlwiXG4gICAgICAgIH1cblxuXG5cblxuXG5cbiAgICAgICAgcmV0dXJuIGAvKiAke3RoaXMuZXhwcmVzc2lvbk1hcC5jb21tZW50LnJlcGxhY2UoXCIqL1wiLCBcIlwiKX0gKi8gYFxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgXCJXSEVSRVwiIGV4cHJlc3Npb24uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGNyZWF0ZVdoZXJlRXhwcmVzc2lvbigpIHtcbiAgICAgICAgY29uc3QgY29uZGl0aW9uc0FycmF5ID0gW11cblxuICAgICAgICBjb25zdCB3aGVyZUV4cHJlc3Npb24gPSB0aGlzLmNyZWF0ZVdoZXJlQ2xhdXNlc0V4cHJlc3Npb24oXG4gICAgICAgICAgICB0aGlzLmV4cHJlc3Npb25NYXAud2hlcmVzLFxuICAgICAgICApXG5cbiAgICAgICAgaWYgKHdoZXJlRXhwcmVzc2lvbi5sZW5ndGggPiAwICYmIHdoZXJlRXhwcmVzc2lvbiAhPT0gXCIxPTFcIikge1xuICAgICAgICAgICAgY29uZGl0aW9uc0FycmF5LnB1c2godGhpcy5yZXBsYWNlUHJvcGVydHlOYW1lcyh3aGVyZUV4cHJlc3Npb24pKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZXhwcmVzc2lvbk1hcC5tYWluQWxpYXMhLmhhc01ldGFkYXRhKSB7XG4gICAgICAgICAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuZXhwcmVzc2lvbk1hcC5tYWluQWxpYXMhLm1ldGFkYXRhXG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLmV4cHJlc3Npb25NYXAucXVlcnlUeXBlID09PSBcInNlbGVjdFwiICYmXG4gICAgICAgICAgICAgICAgIXRoaXMuZXhwcmVzc2lvbk1hcC53aXRoRGVsZXRlZCAmJlxuICAgICAgICAgICAgICAgIG1ldGFkYXRhLmRlbGV0ZURhdGVDb2x1bW5cbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuZXhwcmVzc2lvbk1hcC5hbGlhc05hbWVQcmVmaXhpbmdFbmFibGVkXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5leHByZXNzaW9uTWFwLm1haW5BbGlhcyEubmFtZSArXG4gICAgICAgICAgICAgICAgICAgICAgXCIuXCIgK1xuICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLmRlbGV0ZURhdGVDb2x1bW4ucHJvcGVydHlOYW1lXG4gICAgICAgICAgICAgICAgICAgIDogbWV0YWRhdGEuZGVsZXRlRGF0ZUNvbHVtbi5wcm9wZXJ0eU5hbWVcblxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbmRpdGlvbiA9IGAke3RoaXMucmVwbGFjZVByb3BlcnR5TmFtZXMoY29sdW1uKX0gSVMgTlVMTGBcbiAgICAgICAgICAgICAgICBjb25kaXRpb25zQXJyYXkucHVzaChjb25kaXRpb24pXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChtZXRhZGF0YS5kaXNjcmltaW5hdG9yQ29sdW1uICYmIG1ldGFkYXRhLnBhcmVudEVudGl0eU1ldGFkYXRhKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5leHByZXNzaW9uTWFwLmFsaWFzTmFtZVByZWZpeGluZ0VuYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmV4cHJlc3Npb25NYXAubWFpbkFsaWFzIS5uYW1lICtcbiAgICAgICAgICAgICAgICAgICAgICBcIi5cIiArXG4gICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEuZGlzY3JpbWluYXRvckNvbHVtbi5kYXRhYmFzZU5hbWVcbiAgICAgICAgICAgICAgICAgICAgOiBtZXRhZGF0YS5kaXNjcmltaW5hdG9yQ29sdW1uLmRhdGFiYXNlTmFtZVxuXG4gICAgICAgICAgICAgICAgY29uc3QgY29uZGl0aW9uID0gYCR7dGhpcy5yZXBsYWNlUHJvcGVydHlOYW1lcyhcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgICAgICAgICl9IElOICg6Li4uZGlzY3JpbWluYXRvckNvbHVtblZhbHVlcylgXG4gICAgICAgICAgICAgICAgY29uZGl0aW9uc0FycmF5LnB1c2goY29uZGl0aW9uKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZXhwcmVzc2lvbk1hcC5leHRyYUFwcGVuZGVkQW5kV2hlcmVDb25kaXRpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbmRpdGlvbiA9IHRoaXMucmVwbGFjZVByb3BlcnR5TmFtZXMoXG4gICAgICAgICAgICAgICAgdGhpcy5leHByZXNzaW9uTWFwLmV4dHJhQXBwZW5kZWRBbmRXaGVyZUNvbmRpdGlvbixcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbmRpdGlvbnNBcnJheS5wdXNoKGNvbmRpdGlvbilcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghY29uZGl0aW9uc0FycmF5Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCJcbiAgICAgICAgfSBlbHNlIGlmIChjb25kaXRpb25zQXJyYXkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gYCBXSEVSRSAke2NvbmRpdGlvbnNBcnJheVswXX1gXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYCBXSEVSRSAoICR7Y29uZGl0aW9uc0FycmF5LmpvaW4oXCIgKSBBTkQgKCBcIil9IClgXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIFwiUkVUVVJOSU5HXCIgLyBcIk9VVFBVVFwiIGV4cHJlc3Npb24uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGNyZWF0ZVJldHVybmluZ0V4cHJlc3Npb24ocmV0dXJuaW5nVHlwZTogUmV0dXJuaW5nVHlwZSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGNvbHVtbnMgPSB0aGlzLmdldFJldHVybmluZ0NvbHVtbnMoKVxuICAgICAgICBjb25zdCBkcml2ZXIgPSB0aGlzLmNvbm5lY3Rpb24uZHJpdmVyXG5cblxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHR5cGVvZiB0aGlzLmV4cHJlc3Npb25NYXAucmV0dXJuaW5nICE9PSBcInN0cmluZ1wiICYmXG4gICAgICAgICAgICB0aGlzLmV4cHJlc3Npb25NYXAuZXh0cmFSZXR1cm5pbmdDb2x1bW5zLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgIGRyaXZlci5pc1JldHVybmluZ1NxbFN1cHBvcnRlZChyZXR1cm5pbmdUeXBlKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbHVtbnMucHVzaChcbiAgICAgICAgICAgICAgICAuLi50aGlzLmV4cHJlc3Npb25NYXAuZXh0cmFSZXR1cm5pbmdDb2x1bW5zLmZpbHRlcigoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb2x1bW5zLmluZGV4T2YoY29sdW1uKSA9PT0gLTFcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb2x1bW5zLmxlbmd0aCkge1xuICAgICAgICAgICAgbGV0IGNvbHVtbnNFeHByZXNzaW9uID0gY29sdW1uc1xuICAgICAgICAgICAgICAgIC5tYXAoKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuYW1lID0gdGhpcy5lc2NhcGUoY29sdW1uLmRhdGFiYXNlTmFtZSlcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRyaXZlci5vcHRpb25zLnR5cGUgPT09IFwibXNzcWxcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwcmVzc2lvbk1hcC5xdWVyeVR5cGUgPT09IFwiaW5zZXJ0XCIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmV4cHJlc3Npb25NYXAucXVlcnlUeXBlID09PSBcInVwZGF0ZVwiIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5leHByZXNzaW9uTWFwLnF1ZXJ5VHlwZSA9PT0gXCJzb2Z0LWRlbGV0ZVwiIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5leHByZXNzaW9uTWFwLnF1ZXJ5VHlwZSA9PT0gXCJyZXN0b3JlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcIklOU0VSVEVELlwiICsgbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVzY2FwZSh0aGlzLmdldE1haW5UYWJsZU5hbWUoKSkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIi5cIiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmFtZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuam9pbihcIiwgXCIpXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cbiAgICAgICAgICAgIHJldHVybiBjb2x1bW5zRXhwcmVzc2lvblxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLmV4cHJlc3Npb25NYXAucmV0dXJuaW5nID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5leHByZXNzaW9uTWFwLnJldHVybmluZ1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFwiXCJcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJZiByZXR1cm5pbmcgLyBvdXRwdXQgY2F1c2UgaXMgc2V0IHRvIGFycmF5IG9mIGNvbHVtbiBuYW1lcyxcbiAgICAgKiB0aGVuIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIGFsbCBjb2x1bW4gbWV0YWRhdGFzIG9mIHRob3NlIGNvbHVtbiBuYW1lcy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0UmV0dXJuaW5nQ29sdW1ucygpOiBDb2x1bW5NZXRhZGF0YVtdIHtcbiAgICAgICAgY29uc3QgY29sdW1uczogQ29sdW1uTWV0YWRhdGFbXSA9IFtdXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZXhwcmVzc2lvbk1hcC5yZXR1cm5pbmcpKSB7XG4gICAgICAgICAgICA7KHRoaXMuZXhwcmVzc2lvbk1hcC5yZXR1cm5pbmcgYXMgc3RyaW5nW10pLmZvckVhY2goXG4gICAgICAgICAgICAgICAgKGNvbHVtbk5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZXhwcmVzc2lvbk1hcC5tYWluQWxpYXMhLmhhc01ldGFkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zLnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5leHByZXNzaW9uTWFwLm1haW5BbGlhcyEubWV0YWRhdGEuZmluZENvbHVtbnNXaXRoUHJvcGVydHlQYXRoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb2x1bW5zXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZVdoZXJlQ2xhdXNlc0V4cHJlc3Npb24oY2xhdXNlczogV2hlcmVDbGF1c2VbXSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBjbGF1c2VzXG4gICAgICAgICAgICAubWFwKChjbGF1c2UsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9IHRoaXMuY3JlYXRlV2hlcmVDb25kaXRpb25FeHByZXNzaW9uKFxuICAgICAgICAgICAgICAgICAgICBjbGF1c2UuY29uZGl0aW9uLFxuICAgICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICAgIHN3aXRjaCAoY2xhdXNlLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImFuZFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChpbmRleCA+IDAgPyBcIkFORCBcIiA6IFwiXCIpICsgZXhwcmVzc2lvblxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwib3JcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoaW5kZXggPiAwID8gXCJPUiBcIiA6IFwiXCIpICsgZXhwcmVzc2lvblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBleHByZXNzaW9uXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmpvaW4oXCIgXCIpXG4gICAgICAgICAgICAudHJpbSgpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgZ2l2ZW4gd2hlcmUgYXJndW1lbnQgLSB0cmFuc2Zvcm1zIHRvIGEgd2hlcmUgc3RyaW5nIGFsbCBmb3JtcyBpdCBjYW4gdGFrZS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY3JlYXRlV2hlcmVDb25kaXRpb25FeHByZXNzaW9uKFxuICAgICAgICBjb25kaXRpb246IFdoZXJlQ2xhdXNlQ29uZGl0aW9uLFxuICAgICAgICBhbHdheXNXcmFwOiBib29sZWFuID0gZmFsc2UsXG4gICAgKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25kaXRpb24gPT09IFwic3RyaW5nXCIpIHJldHVybiBjb25kaXRpb25cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjb25kaXRpb24pKSB7XG4gICAgICAgICAgICBpZiAoY29uZGl0aW9uLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBcIjE9MVwiXG4gICAgICAgICAgICB9XG5cblxuXG4gICAgICAgICAgICBpZiAoY29uZGl0aW9uLmxlbmd0aCA9PT0gMSAmJiAhYWx3YXlzV3JhcCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVdoZXJlQ2xhdXNlc0V4cHJlc3Npb24oY29uZGl0aW9uKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gXCIoXCIgKyB0aGlzLmNyZWF0ZVdoZXJlQ2xhdXNlc0V4cHJlc3Npb24oY29uZGl0aW9uKSArIFwiKVwiXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IGRyaXZlciB9ID0gdGhpcy5jb25uZWN0aW9uXG5cbiAgICAgICAgc3dpdGNoIChjb25kaXRpb24ub3BlcmF0b3IpIHtcbiAgICAgICAgICAgIGNhc2UgXCJsZXNzVGhhblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtjb25kaXRpb24ucGFyYW1ldGVyc1swXX0gPCAke2NvbmRpdGlvbi5wYXJhbWV0ZXJzWzFdfWBcbiAgICAgICAgICAgIGNhc2UgXCJsZXNzVGhhbk9yRXF1YWxcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7Y29uZGl0aW9uLnBhcmFtZXRlcnNbMF19IDw9ICR7Y29uZGl0aW9uLnBhcmFtZXRlcnNbMV19YFxuICAgICAgICAgICAgY2FzZSBcImFycmF5Q29udGFpbnNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7Y29uZGl0aW9uLnBhcmFtZXRlcnNbMF19IEA+ICR7Y29uZGl0aW9uLnBhcmFtZXRlcnNbMV19YFxuICAgICAgICAgICAgY2FzZSBcImFycmF5Q29udGFpbmVkQnlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7Y29uZGl0aW9uLnBhcmFtZXRlcnNbMF19IDxAICR7Y29uZGl0aW9uLnBhcmFtZXRlcnNbMV19YFxuICAgICAgICAgICAgY2FzZSBcImFycmF5T3ZlcmxhcFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtjb25kaXRpb24ucGFyYW1ldGVyc1swXX0gJiYgJHtjb25kaXRpb24ucGFyYW1ldGVyc1sxXX1gXG4gICAgICAgICAgICBjYXNlIFwibW9yZVRoYW5cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7Y29uZGl0aW9uLnBhcmFtZXRlcnNbMF19ID4gJHtjb25kaXRpb24ucGFyYW1ldGVyc1sxXX1gXG4gICAgICAgICAgICBjYXNlIFwibW9yZVRoYW5PckVxdWFsXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2NvbmRpdGlvbi5wYXJhbWV0ZXJzWzBdfSA+PSAke2NvbmRpdGlvbi5wYXJhbWV0ZXJzWzFdfWBcbiAgICAgICAgICAgIGNhc2UgXCJub3RFcXVhbFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtjb25kaXRpb24ucGFyYW1ldGVyc1swXX0gIT0gJHtjb25kaXRpb24ucGFyYW1ldGVyc1sxXX1gXG4gICAgICAgICAgICBjYXNlIFwiZXF1YWxcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7Y29uZGl0aW9uLnBhcmFtZXRlcnNbMF19ID0gJHtjb25kaXRpb24ucGFyYW1ldGVyc1sxXX1gXG4gICAgICAgICAgICBjYXNlIFwiaWxpa2VcIjpcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIGRyaXZlci5vcHRpb25zLnR5cGUgPT09IFwicG9zdGdyZXNcIiB8fFxuICAgICAgICAgICAgICAgICAgICBkcml2ZXIub3B0aW9ucy50eXBlID09PSBcImNvY2tyb2FjaGRiXCJcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAke2NvbmRpdGlvbi5wYXJhbWV0ZXJzWzBdfSBJTElLRSAke2NvbmRpdGlvbi5wYXJhbWV0ZXJzWzFdfWBcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gYFVQUEVSKCR7Y29uZGl0aW9uLnBhcmFtZXRlcnNbMF19KSBMSUtFIFVQUEVSKCR7Y29uZGl0aW9uLnBhcmFtZXRlcnNbMV19KWBcbiAgICAgICAgICAgIGNhc2UgXCJsaWtlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2NvbmRpdGlvbi5wYXJhbWV0ZXJzWzBdfSBMSUtFICR7Y29uZGl0aW9uLnBhcmFtZXRlcnNbMV19YFxuICAgICAgICAgICAgY2FzZSBcImJldHdlZW5cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7Y29uZGl0aW9uLnBhcmFtZXRlcnNbMF19IEJFVFdFRU4gJHtjb25kaXRpb24ucGFyYW1ldGVyc1sxXX0gQU5EICR7Y29uZGl0aW9uLnBhcmFtZXRlcnNbMl19YFxuICAgICAgICAgICAgY2FzZSBcImluXCI6XG4gICAgICAgICAgICAgICAgaWYgKGNvbmRpdGlvbi5wYXJhbWV0ZXJzLmxlbmd0aCA8PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcIjA9MVwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtjb25kaXRpb24ucGFyYW1ldGVyc1swXX0gSU4gKCR7Y29uZGl0aW9uLnBhcmFtZXRlcnNcbiAgICAgICAgICAgICAgICAgICAgLnNsaWNlKDEpXG4gICAgICAgICAgICAgICAgICAgIC5qb2luKFwiLCBcIil9KWBcbiAgICAgICAgICAgIGNhc2UgXCJhbnlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7Y29uZGl0aW9uLnBhcmFtZXRlcnNbMF19ID0gQU5ZKCR7Y29uZGl0aW9uLnBhcmFtZXRlcnNbMV19KWBcbiAgICAgICAgICAgIGNhc2UgXCJpc051bGxcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7Y29uZGl0aW9uLnBhcmFtZXRlcnNbMF19IElTIE5VTExgXG5cbiAgICAgICAgICAgIGNhc2UgXCJub3RcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYE5PVCgke3RoaXMuY3JlYXRlV2hlcmVDb25kaXRpb25FeHByZXNzaW9uKFxuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb24uY29uZGl0aW9uLFxuICAgICAgICAgICAgICAgICl9KWBcbiAgICAgICAgICAgIGNhc2UgXCJicmFja2V0c1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLmNyZWF0ZVdoZXJlQ29uZGl0aW9uRXhwcmVzc2lvbihcbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uLmNvbmRpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICAgICAgICApfWBcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgICBgVW5zdXBwb3J0ZWQgRmluZE9wZXJhdG9yICR7RmluZE9wZXJhdG9yLmNvbnN0cnVjdG9yLm5hbWV9YCxcbiAgICAgICAgKVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVDdGVFeHByZXNzaW9uKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICghdGhpcy5oYXNDb21tb25UYWJsZUV4cHJlc3Npb25zKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBcIlwiXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGF0YWJhc2VSZXF1aXJlUmVjdXNpdmVIaW50ID1cbiAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbi5kcml2ZXIuY3RlQ2FwYWJpbGl0aWVzLnJlcXVpcmVzUmVjdXJzaXZlSGludFxuXG4gICAgICAgIGNvbnN0IGN0ZVN0cmluZ3MgPSB0aGlzLmV4cHJlc3Npb25NYXAuY29tbW9uVGFibGVFeHByZXNzaW9ucy5tYXAoXG4gICAgICAgICAgICAoY3RlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3RlQm9keUV4cHJlc3Npb24gPVxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgY3RlLnF1ZXJ5QnVpbGRlciA9PT0gXCJzdHJpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPyBjdGUucXVlcnlCdWlsZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGN0ZS5xdWVyeUJ1aWxkZXIuZ2V0UXVlcnkoKVxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY3RlLnF1ZXJ5QnVpbGRlciAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY3RlLnF1ZXJ5QnVpbGRlci5oYXNDb21tb25UYWJsZUV4cHJlc3Npb25zKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlT1JNRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYE5lc3RlZCBDVEVzIGFyZW4ndCBzdXBwb3J0ZWQgKENURTogJHtjdGUuYWxpYXN9KWAsXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgIXRoaXMuY29ubmVjdGlvbi5kcml2ZXIuY3RlQ2FwYWJpbGl0aWVzLndyaXRhYmxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhSW5zdGFuY2VDaGVja2VyLmlzU2VsZWN0UXVlcnlCdWlsZGVyKGN0ZS5xdWVyeUJ1aWxkZXIpXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVPUk1FcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgT25seSBzZWxlY3QgcXVlcmllcyBhcmUgc3VwcG9ydGVkIGluIENURXMgaW4gJHt0aGlzLmNvbm5lY3Rpb24ub3B0aW9ucy50eXBlfSAoQ1RFOiAke2N0ZS5hbGlhc30pYCxcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFBhcmFtZXRlcnMoY3RlLnF1ZXJ5QnVpbGRlci5nZXRQYXJhbWV0ZXJzKCkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCBjdGVIZWFkZXIgPSB0aGlzLmVzY2FwZShjdGUuYWxpYXMpXG4gICAgICAgICAgICAgICAgaWYgKGN0ZS5vcHRpb25zLmNvbHVtbk5hbWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVzY2FwZWRDb2x1bW5OYW1lcyA9IGN0ZS5vcHRpb25zLmNvbHVtbk5hbWVzLm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgIChjb2x1bW4pID0+IHRoaXMuZXNjYXBlKGNvbHVtbiksXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFuY2VDaGVja2VyLmlzU2VsZWN0UXVlcnlCdWlsZGVyKGN0ZS5xdWVyeUJ1aWxkZXIpXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0ZS5xdWVyeUJ1aWxkZXIuZXhwcmVzc2lvbk1hcC5zZWxlY3RzLmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0ZS5vcHRpb25zLmNvbHVtbk5hbWVzLmxlbmd0aCAhPT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3RlLnF1ZXJ5QnVpbGRlci5leHByZXNzaW9uTWFwLnNlbGVjdHMubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZU9STUVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgY3RlLm9wdGlvbnMuY29sdW1uTmFtZXMgbGVuZ3RoICgke2N0ZS5vcHRpb25zLmNvbHVtbk5hbWVzLmxlbmd0aH0pIGRvZXNuJ3QgbWF0Y2ggc3VicXVlcnkgc2VsZWN0IGxpc3QgbGVuZ3RoICR7Y3RlLnF1ZXJ5QnVpbGRlci5leHByZXNzaW9uTWFwLnNlbGVjdHMubGVuZ3RofSAoQ1RFOiAke2N0ZS5hbGlhc30pYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY3RlSGVhZGVyICs9IGAoJHtlc2NhcGVkQ29sdW1uTmFtZXMuam9pbihcIiwgXCIpfSlgXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHJlY3Vyc2l2ZUNsYXVzZSA9XG4gICAgICAgICAgICAgICAgICAgIGN0ZS5vcHRpb25zLnJlY3Vyc2l2ZSAmJiBkYXRhYmFzZVJlcXVpcmVSZWN1c2l2ZUhpbnRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gXCJSRUNVUlNJVkVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlwiXG4gICAgICAgICAgICAgICAgY29uc3QgbWF0ZXJpYWxpemVDbGF1c2UgPVxuICAgICAgICAgICAgICAgICAgICBjdGUub3B0aW9ucy5tYXRlcmlhbGl6ZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uLmRyaXZlci5jdGVDYXBhYmlsaXRpZXMubWF0ZXJpYWxpemVkSGludFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBcIk1BVEVSSUFMSVpFRFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiXCJcblxuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHJlY3Vyc2l2ZUNsYXVzZSxcbiAgICAgICAgICAgICAgICAgICAgY3RlSGVhZGVyLFxuICAgICAgICAgICAgICAgICAgICBtYXRlcmlhbGl6ZUNsYXVzZSxcbiAgICAgICAgICAgICAgICAgICAgXCJBU1wiLFxuICAgICAgICAgICAgICAgICAgICBgKCR7Y3RlQm9keUV4cHJlc3Npb259KWAsXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgICAgICAgICAgICAgIC5qb2luKFwiIFwiKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgKVxuXG4gICAgICAgIHJldHVybiBcIldJVEggXCIgKyBjdGVTdHJpbmdzLmpvaW4oXCIsIFwiKSArIFwiIFwiXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBcIldIRVJFXCIgY29uZGl0aW9uIGZvciBhbiBpbi1pZHMgY29uZGl0aW9uLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXRXaGVyZUluSWRzQ29uZGl0aW9uKFxuICAgICAgICBpZHM6IGFueSB8IGFueVtdLFxuICAgICk6IE9iamVjdExpdGVyYWwgfCBCcmFja2V0cyB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5leHByZXNzaW9uTWFwLm1haW5BbGlhcyEubWV0YWRhdGFcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IChBcnJheS5pc0FycmF5KGlkcykgPyBpZHMgOiBbaWRzXSkubWFwKChpZCkgPT5cbiAgICAgICAgICAgIG1ldGFkYXRhLmVuc3VyZUVudGl0eUlkTWFwKGlkKSxcbiAgICAgICAgKVxuXG5cbiAgICAgICAgaWYgKCFtZXRhZGF0YS5oYXNNdWx0aXBsZVByaW1hcnlLZXlzKSB7XG4gICAgICAgICAgICBjb25zdCBwcmltYXJ5Q29sdW1uID0gbWV0YWRhdGEucHJpbWFyeUNvbHVtbnNbMF1cblxuXG5cblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICFwcmltYXJ5Q29sdW1uLnRyYW5zZm9ybWVyICYmXG4gICAgICAgICAgICAgICAgIXByaW1hcnlDb2x1bW4ucmVsYXRpb25NZXRhZGF0YSAmJlxuICAgICAgICAgICAgICAgICFwcmltYXJ5Q29sdW1uLmVtYmVkZGVkTWV0YWRhdGFcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIFtwcmltYXJ5Q29sdW1uLnByb3BlcnR5TmFtZV06IEluKFxuICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZC5tYXAoKGlkKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW1hcnlDb2x1bW4uZ2V0RW50aXR5VmFsdWUoaWQsIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBCcmFja2V0cygocWIpID0+IHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZGF0YSBvZiBub3JtYWxpemVkKSB7XG4gICAgICAgICAgICAgICAgcWIub3JXaGVyZShuZXcgQnJhY2tldHMoKHFiKSA9PiBxYi53aGVyZShkYXRhKSkpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaW5kQ29sdW1uc0ZvclByb3BlcnR5UGF0aChcbiAgICAgICAgcHJvcGVydHlQYXRoOiBzdHJpbmcsXG4gICAgKTogW0FsaWFzLCBzdHJpbmdbXSwgQ29sdW1uTWV0YWRhdGFbXV0ge1xuXG5cblxuXG4gICAgICAgIGxldCBhbGlhcyA9IHRoaXMuZXhwcmVzc2lvbk1hcC5tYWluQWxpYXNcbiAgICAgICAgY29uc3Qgcm9vdDogc3RyaW5nW10gPSBbXVxuICAgICAgICBjb25zdCBwcm9wZXJ0eVBhdGhQYXJ0cyA9IHByb3BlcnR5UGF0aC5zcGxpdChcIi5cIilcblxuICAgICAgICB3aGlsZSAocHJvcGVydHlQYXRoUGFydHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgY29uc3QgcGFydCA9IHByb3BlcnR5UGF0aFBhcnRzWzBdXG5cbiAgICAgICAgICAgIGlmICghYWxpYXM/Lmhhc01ldGFkYXRhKSB7XG5cblxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChhbGlhcy5tZXRhZGF0YS5oYXNFbWJlZGRlZFdpdGhQcm9wZXJ0eVBhdGgocGFydCkpIHtcblxuXG5cbiAgICAgICAgICAgICAgICBwcm9wZXJ0eVBhdGhQYXJ0cy51bnNoaWZ0KFxuICAgICAgICAgICAgICAgICAgICBgJHtwcm9wZXJ0eVBhdGhQYXJ0cy5zaGlmdCgpfS4ke3Byb3BlcnR5UGF0aFBhcnRzLnNoaWZ0KCl9YCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGFsaWFzLm1ldGFkYXRhLmhhc1JlbGF0aW9uV2l0aFByb3BlcnR5UGF0aChwYXJ0KSkge1xuXG5cblxuICAgICAgICAgICAgICAgIGNvbnN0IGpvaW5BdHRyID0gdGhpcy5leHByZXNzaW9uTWFwLmpvaW5BdHRyaWJ1dGVzLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgIChqb2luQXR0cikgPT4gam9pbkF0dHIucmVsYXRpb25Qcm9wZXJ0eVBhdGggPT09IHBhcnQsXG4gICAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgICAgaWYgKCFqb2luQXR0cj8uYWxpYXMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZnVsbFJlbGF0aW9uUGF0aCA9XG4gICAgICAgICAgICAgICAgICAgICAgICByb290Lmxlbmd0aCA+IDAgPyBgJHtyb290LmpvaW4oXCIuXCIpfS4ke3BhcnR9YCA6IHBhcnRcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgYENhbm5vdCBmaW5kIGFsaWFzIGZvciByZWxhdGlvbiBhdCAke2Z1bGxSZWxhdGlvblBhdGh9YCxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGFsaWFzID0gam9pbkF0dHIuYWxpYXNcbiAgICAgICAgICAgICAgICByb290LnB1c2goLi4ucGFydC5zcGxpdChcIi5cIikpXG4gICAgICAgICAgICAgICAgcHJvcGVydHlQYXRoUGFydHMuc2hpZnQoKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWFsaWFzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIGFsaWFzIGZvciBwcm9wZXJ0eSAke3Byb3BlcnR5UGF0aH1gKVxuICAgICAgICB9XG5cblxuICAgICAgICBjb25zdCBhbGlhc1Byb3BlcnR5UGF0aCA9IHByb3BlcnR5UGF0aFBhcnRzLmpvaW4oXCIuXCIpXG5cbiAgICAgICAgY29uc3QgY29sdW1ucyA9XG4gICAgICAgICAgICBhbGlhcy5tZXRhZGF0YS5maW5kQ29sdW1uc1dpdGhQcm9wZXJ0eVBhdGgoYWxpYXNQcm9wZXJ0eVBhdGgpXG5cbiAgICAgICAgaWYgKCFjb2x1bW5zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVudGl0eVByb3BlcnR5Tm90Rm91bmRFcnJvcihwcm9wZXJ0eVBhdGgsIGFsaWFzLm1ldGFkYXRhKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFthbGlhcywgcm9vdCwgY29sdW1uc11cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgcHJvcGVydHkgcGF0aHMgZm9yIGEgZ2l2ZW4gT2JqZWN0TGl0ZXJhbC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY3JlYXRlUHJvcGVydHlQYXRoKFxuICAgICAgICBtZXRhZGF0YTogRW50aXR5TWV0YWRhdGEsXG4gICAgICAgIGVudGl0eTogT2JqZWN0TGl0ZXJhbCxcbiAgICAgICAgcHJlZml4OiBzdHJpbmcgPSBcIlwiLFxuICAgICkge1xuICAgICAgICBjb25zdCBwYXRoczogc3RyaW5nW10gPSBbXVxuXG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGVudGl0eSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhdGggPSBwcmVmaXggPyBgJHtwcmVmaXh9LiR7a2V5fWAgOiBrZXlcblxuXG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBlbnRpdHlba2V5XSA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgIHR5cGVvZiBlbnRpdHlba2V5XSAhPT0gXCJvYmplY3RcIiB8fFxuICAgICAgICAgICAgICAgIEluc3RhbmNlQ2hlY2tlci5pc0ZpbmRPcGVyYXRvcihlbnRpdHlba2V5XSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHBhdGhzLnB1c2gocGF0aClcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobWV0YWRhdGEuaGFzRW1iZWRkZWRXaXRoUHJvcGVydHlQYXRoKHBhdGgpKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3ViUGF0aHMgPSB0aGlzLmNyZWF0ZVByb3BlcnR5UGF0aChcbiAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgIGVudGl0eVtrZXldLFxuICAgICAgICAgICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBwYXRocy5wdXNoKC4uLnN1YlBhdGhzKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChtZXRhZGF0YS5oYXNSZWxhdGlvbldpdGhQcm9wZXJ0eVBhdGgocGF0aCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWxhdGlvbiA9IG1ldGFkYXRhLmZpbmRSZWxhdGlvbldpdGhQcm9wZXJ0eVBhdGgocGF0aCkhXG5cblxuXG5cblxuXG5cblxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgcmVsYXRpb24ucmVsYXRpb25UeXBlID09PSBcIm9uZS10by1vbmVcIiB8fFxuICAgICAgICAgICAgICAgICAgICByZWxhdGlvbi5yZWxhdGlvblR5cGUgPT09IFwibWFueS10by1vbmVcIlxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBqb2luQ29sdW1ucyA9IHJlbGF0aW9uLmpvaW5Db2x1bW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAubWFwKChqKSA9PiBqLnJlZmVyZW5jZWRDb2x1bW4pXG4gICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChqKTogaiBpcyBDb2x1bW5NZXRhZGF0YSA9PiAhIWopXG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzQWxsSm9pbkNvbHVtbnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgam9pbkNvbHVtbnMubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgam9pbkNvbHVtbnMuZXZlcnkoKGNvbHVtbikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4uZ2V0RW50aXR5VmFsdWUoZW50aXR5W2tleV0sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaGFzQWxsSm9pbkNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhzLnB1c2gocGF0aClcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uLnJlbGF0aW9uVHlwZSA9PT0gXCJvbmUtdG8tbWFueVwiIHx8XG4gICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uLnJlbGF0aW9uVHlwZSA9PT0gXCJtYW55LXRvLW1hbnlcIlxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICBgQ2Fubm90IHF1ZXJ5IGFjcm9zcyAke3JlbGF0aW9uLnJlbGF0aW9uVHlwZX0gZm9yIHByb3BlcnR5ICR7cGF0aH1gLFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuXG5cblxuXG5cblxuICAgICAgICAgICAgICAgIGNvbnN0IHByaW1hcnlDb2x1bW5zID1cbiAgICAgICAgICAgICAgICAgICAgcmVsYXRpb24uaW52ZXJzZUVudGl0eU1ldGFkYXRhLnByaW1hcnlDb2x1bW5zXG4gICAgICAgICAgICAgICAgY29uc3QgaGFzQWxsUHJpbWFyeUtleXMgPVxuICAgICAgICAgICAgICAgICAgICBwcmltYXJ5Q29sdW1ucy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgICAgICAgIHByaW1hcnlDb2x1bW5zLmV2ZXJ5KChjb2x1bW4pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4uZ2V0RW50aXR5VmFsdWUoZW50aXR5W2tleV0sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgICAgaWYgKGhhc0FsbFByaW1hcnlLZXlzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YlBhdGhzID0gcHJpbWFyeUNvbHVtbnMubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGNvbHVtbikgPT4gYCR7cGF0aH0uJHtjb2x1bW4ucHJvcGVydHlQYXRofWAsXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgcGF0aHMucHVzaCguLi5zdWJQYXRocylcbiAgICAgICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgICAgIGNvbnN0IHN1YlBhdGhzID0gdGhpcy5jcmVhdGVQcm9wZXJ0eVBhdGgoXG4gICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uLmludmVyc2VFbnRpdHlNZXRhZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5W2tleV0sXG4gICAgICAgICAgICAgICAgKS5tYXAoKHApID0+IGAke3BhdGh9LiR7cH1gKVxuICAgICAgICAgICAgICAgIHBhdGhzLnB1c2goLi4uc3ViUGF0aHMpXG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGF0aHMucHVzaChwYXRoKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBhdGhzXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkICpnZXRQcmVkaWNhdGVzKHdoZXJlOiBPYmplY3RMaXRlcmFsKSB7XG4gICAgICAgIGlmICh0aGlzLmV4cHJlc3Npb25NYXAubWFpbkFsaWFzIS5oYXNNZXRhZGF0YSkge1xuICAgICAgICAgICAgY29uc3QgcHJvcGVydHlQYXRocyA9IHRoaXMuY3JlYXRlUHJvcGVydHlQYXRoKFxuICAgICAgICAgICAgICAgIHRoaXMuZXhwcmVzc2lvbk1hcC5tYWluQWxpYXMhLm1ldGFkYXRhLFxuICAgICAgICAgICAgICAgIHdoZXJlLFxuICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHByb3BlcnR5UGF0aCBvZiBwcm9wZXJ0eVBhdGhzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgW2FsaWFzLCBhbGlhc1Byb3BlcnR5UGF0aCwgY29sdW1uc10gPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbmRDb2x1bW5zRm9yUHJvcGVydHlQYXRoKHByb3BlcnR5UGF0aClcblxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRhaW5lZFdoZXJlID0gd2hlcmVcblxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHBhcnQgb2YgYWxpYXNQcm9wZXJ0eVBhdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29udGFpbmVkV2hlcmUgfHwgIShwYXJ0IGluIGNvbnRhaW5lZFdoZXJlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lZFdoZXJlID0ge31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZWRXaGVyZSA9IGNvbnRhaW5lZFdoZXJlW3BhcnRdXG4gICAgICAgICAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFsaWFzUGF0aCA9IHRoaXMuZXhwcmVzc2lvbk1hcFxuICAgICAgICAgICAgICAgICAgICAgICAgLmFsaWFzTmFtZVByZWZpeGluZ0VuYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gYCR7YWxpYXMubmFtZX0uJHtjb2x1bW4ucHJvcGVydHlQYXRofWBcbiAgICAgICAgICAgICAgICAgICAgICAgIDogY29sdW1uLnByb3BlcnR5UGF0aFxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtZXRlclZhbHVlID0gY29sdW1uLmdldEVudGl0eVZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVkV2hlcmUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgICAgICAgICApXG5cbiAgICAgICAgICAgICAgICAgICAgeWllbGQgW2FsaWFzUGF0aCwgcGFyYW1ldGVyVmFsdWVdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMod2hlcmUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyYW1ldGVyVmFsdWUgPSB3aGVyZVtrZXldXG4gICAgICAgICAgICAgICAgY29uc3QgYWxpYXNQYXRoID0gdGhpcy5leHByZXNzaW9uTWFwLmFsaWFzTmFtZVByZWZpeGluZ0VuYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgPyBgJHt0aGlzLmFsaWFzfS4ke2tleX1gXG4gICAgICAgICAgICAgICAgICAgIDoga2V5XG5cbiAgICAgICAgICAgICAgICB5aWVsZCBbYWxpYXNQYXRoLCBwYXJhbWV0ZXJWYWx1ZV1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRXaGVyZVByZWRpY2F0ZUNvbmRpdGlvbihcbiAgICAgICAgYWxpYXNQYXRoOiBzdHJpbmcsXG4gICAgICAgIHBhcmFtZXRlclZhbHVlOiBhbnksXG4gICAgKTogV2hlcmVDbGF1c2VDb25kaXRpb24ge1xuICAgICAgICBpZiAoSW5zdGFuY2VDaGVja2VyLmlzRmluZE9wZXJhdG9yKHBhcmFtZXRlclZhbHVlKSkge1xuICAgICAgICAgICAgbGV0IHBhcmFtZXRlcnM6IGFueVtdID0gW11cbiAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJWYWx1ZS51c2VQYXJhbWV0ZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAocGFyYW1ldGVyVmFsdWUub2JqZWN0TGl0ZXJhbFBhcmFtZXRlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRQYXJhbWV0ZXJzKHBhcmFtZXRlclZhbHVlLm9iamVjdExpdGVyYWxQYXJhbWV0ZXJzKVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGFyYW1ldGVyVmFsdWUubXVsdGlwbGVQYXJhbWV0ZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdiBvZiBwYXJhbWV0ZXJWYWx1ZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycy5wdXNoKHRoaXMuY3JlYXRlUGFyYW1ldGVyKHYpKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycy5wdXNoKHRoaXMuY3JlYXRlUGFyYW1ldGVyKHBhcmFtZXRlclZhbHVlLnZhbHVlKSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJWYWx1ZS50eXBlID09PSBcInJhd1wiKSB7XG4gICAgICAgICAgICAgICAgaWYgKHBhcmFtZXRlclZhbHVlLmdldFNxbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyYW1ldGVyVmFsdWUuZ2V0U3FsKGFsaWFzUGF0aClcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IFwiZXF1YWxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnM6IFthbGlhc1BhdGgsIHBhcmFtZXRlclZhbHVlLnZhbHVlXSxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAocGFyYW1ldGVyVmFsdWUudHlwZSA9PT0gXCJub3RcIikge1xuICAgICAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJWYWx1ZS5jaGlsZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IHBhcmFtZXRlclZhbHVlLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb246IHRoaXMuZ2V0V2hlcmVQcmVkaWNhdGVDb25kaXRpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpYXNQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlclZhbHVlLmNoaWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogXCJub3RFcXVhbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyczogW2FsaWFzUGF0aCwgLi4ucGFyYW1ldGVyc10sXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBwYXJhbWV0ZXJWYWx1ZS50eXBlLFxuICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzOiBbYWxpYXNQYXRoLCAuLi5wYXJhbWV0ZXJzXSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cblxuXG5cblxuXG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IFwiZXF1YWxcIixcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzOiBbYWxpYXNQYXRoLCB0aGlzLmNyZWF0ZVBhcmFtZXRlcihwYXJhbWV0ZXJWYWx1ZSldLFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldFdoZXJlQ29uZGl0aW9uKFxuICAgICAgICB3aGVyZTpcbiAgICAgICAgICAgIHwgc3RyaW5nXG4gICAgICAgICAgICB8ICgocWI6IHRoaXMpID0+IHN0cmluZylcbiAgICAgICAgICAgIHwgQnJhY2tldHNcbiAgICAgICAgICAgIHwgTm90QnJhY2tldHNcbiAgICAgICAgICAgIHwgT2JqZWN0TGl0ZXJhbFxuICAgICAgICAgICAgfCBPYmplY3RMaXRlcmFsW10sXG4gICAgKTogV2hlcmVDbGF1c2VDb25kaXRpb24ge1xuICAgICAgICBpZiAodHlwZW9mIHdoZXJlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gd2hlcmVcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChJbnN0YW5jZUNoZWNrZXIuaXNCcmFja2V0cyh3aGVyZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHdoZXJlUXVlcnlCdWlsZGVyID0gdGhpcy5jcmVhdGVRdWVyeUJ1aWxkZXIoKVxuXG4gICAgICAgICAgICB3aGVyZVF1ZXJ5QnVpbGRlci5wYXJlbnRRdWVyeUJ1aWxkZXIgPSB0aGlzXG5cbiAgICAgICAgICAgIHdoZXJlUXVlcnlCdWlsZGVyLmV4cHJlc3Npb25NYXAubWFpbkFsaWFzID1cbiAgICAgICAgICAgICAgICB0aGlzLmV4cHJlc3Npb25NYXAubWFpbkFsaWFzXG4gICAgICAgICAgICB3aGVyZVF1ZXJ5QnVpbGRlci5leHByZXNzaW9uTWFwLmFsaWFzTmFtZVByZWZpeGluZ0VuYWJsZWQgPVxuICAgICAgICAgICAgICAgIHRoaXMuZXhwcmVzc2lvbk1hcC5hbGlhc05hbWVQcmVmaXhpbmdFbmFibGVkXG4gICAgICAgICAgICB3aGVyZVF1ZXJ5QnVpbGRlci5leHByZXNzaW9uTWFwLnBhcmFtZXRlcnMgPVxuICAgICAgICAgICAgICAgIHRoaXMuZXhwcmVzc2lvbk1hcC5wYXJhbWV0ZXJzXG4gICAgICAgICAgICB3aGVyZVF1ZXJ5QnVpbGRlci5leHByZXNzaW9uTWFwLm5hdGl2ZVBhcmFtZXRlcnMgPVxuICAgICAgICAgICAgICAgIHRoaXMuZXhwcmVzc2lvbk1hcC5uYXRpdmVQYXJhbWV0ZXJzXG5cbiAgICAgICAgICAgIHdoZXJlUXVlcnlCdWlsZGVyLmV4cHJlc3Npb25NYXAud2hlcmVzID0gW11cblxuICAgICAgICAgICAgd2hlcmUud2hlcmVGYWN0b3J5KHdoZXJlUXVlcnlCdWlsZGVyIGFzIGFueSlcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogSW5zdGFuY2VDaGVja2VyLmlzTm90QnJhY2tldHMod2hlcmUpXG4gICAgICAgICAgICAgICAgICAgID8gXCJub3RcIlxuICAgICAgICAgICAgICAgICAgICA6IFwiYnJhY2tldHNcIixcbiAgICAgICAgICAgICAgICBjb25kaXRpb246IHdoZXJlUXVlcnlCdWlsZGVyLmV4cHJlc3Npb25NYXAud2hlcmVzLFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiB3aGVyZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICByZXR1cm4gd2hlcmUodGhpcylcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHdoZXJlczogT2JqZWN0TGl0ZXJhbFtdID0gQXJyYXkuaXNBcnJheSh3aGVyZSkgPyB3aGVyZSA6IFt3aGVyZV1cbiAgICAgICAgY29uc3QgY2xhdXNlczogV2hlcmVDbGF1c2VbXSA9IFtdXG5cbiAgICAgICAgZm9yIChjb25zdCB3aGVyZSBvZiB3aGVyZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbmRpdGlvbnM6IFdoZXJlQ2xhdXNlQ29uZGl0aW9uID0gW11cblxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IFthbGlhc1BhdGgsIHBhcmFtZXRlclZhbHVlXSBvZiB0aGlzLmdldFByZWRpY2F0ZXMoXG4gICAgICAgICAgICAgICAgd2hlcmUsXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgICAgY29uZGl0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJhbmRcIixcbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uOiB0aGlzLmdldFdoZXJlUHJlZGljYXRlQ29uZGl0aW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgYWxpYXNQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2xhdXNlcy5wdXNoKHsgdHlwZTogXCJvclwiLCBjb25kaXRpb246IGNvbmRpdGlvbnMgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjbGF1c2VzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIGNsYXVzZXNbMF0uY29uZGl0aW9uXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2xhdXNlc1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBxdWVyeSBidWlsZGVyIHVzZWQgdG8gZXhlY3V0ZSBzcWwgcXVlcmllcyBpbnNpZGUgdGhpcyBxdWVyeSBidWlsZGVyLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBvYnRhaW5RdWVyeVJ1bm5lcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucXVlcnlSdW5uZXIgfHwgdGhpcy5jb25uZWN0aW9uLmNyZWF0ZVF1ZXJ5UnVubmVyKClcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaGFzQ29tbW9uVGFibGVFeHByZXNzaW9ucygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhwcmVzc2lvbk1hcC5jb21tb25UYWJsZUV4cHJlc3Npb25zLmxlbmd0aCA+IDBcbiAgICB9XG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10YW9uLXR5cGVvcm0gbGliL3R5cGVvcm0vcXVlcnktYnVpbGRlci9RdWVyeUJ1aWxkZXIudHMiXX0=
|