taon-typeorm 18.0.24 → 19.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1721) hide show
  1. package/assets/shared/shared_folder_info.txt +1 -1
  2. package/browser/README.md +24 -24
  3. package/client/README.md +24 -24
  4. package/index.js.map +1 -1
  5. package/lib/build-info._auto-generated_.js.map +1 -1
  6. package/lib/index._auto-generated_.js.map +1 -1
  7. package/lib/index.js.map +1 -1
  8. package/lib/typeorm/cache/DbQueryResultCache.js.map +1 -1
  9. package/lib/typeorm/cache/QueryResultCache.js.map +1 -1
  10. package/lib/typeorm/cache/QueryResultCacheFactory.js.map +1 -1
  11. package/lib/typeorm/cache/QueryResultCacheOptions.js.map +1 -1
  12. package/lib/typeorm/cache/RedisQueryResultCache.js.map +1 -1
  13. package/lib/typeorm/cli-ts-node-commonjs.js.map +1 -1
  14. package/lib/typeorm/cli-ts-node-esm.js.map +1 -1
  15. package/lib/typeorm/cli.js.map +1 -1
  16. package/lib/typeorm/commands/CacheClearCommand.js.map +1 -1
  17. package/lib/typeorm/commands/CommandUtils.js.map +1 -1
  18. package/lib/typeorm/commands/EntityCreateCommand.js.map +1 -1
  19. package/lib/typeorm/commands/InitCommand.js.map +1 -1
  20. package/lib/typeorm/commands/MigrationCreateCommand.js.map +1 -1
  21. package/lib/typeorm/commands/MigrationGenerateCommand.js.map +1 -1
  22. package/lib/typeorm/commands/MigrationRevertCommand.js.map +1 -1
  23. package/lib/typeorm/commands/MigrationRunCommand.js.map +1 -1
  24. package/lib/typeorm/commands/MigrationShowCommand.js.map +1 -1
  25. package/lib/typeorm/commands/QueryCommand.js.map +1 -1
  26. package/lib/typeorm/commands/SchemaDropCommand.js.map +1 -1
  27. package/lib/typeorm/commands/SchemaLogCommand.js.map +1 -1
  28. package/lib/typeorm/commands/SchemaSyncCommand.js.map +1 -1
  29. package/lib/typeorm/commands/SubscriberCreateCommand.js.map +1 -1
  30. package/lib/typeorm/commands/VersionCommand.js.map +1 -1
  31. package/lib/typeorm/common/DeepPartial.js.map +1 -1
  32. package/lib/typeorm/common/EntityTarget.js.map +1 -1
  33. package/lib/typeorm/common/MixedList.js.map +1 -1
  34. package/lib/typeorm/common/NonNever.js.map +1 -1
  35. package/lib/typeorm/common/ObjectLiteral.js.map +1 -1
  36. package/lib/typeorm/common/ObjectType.js.map +1 -1
  37. package/lib/typeorm/common/RelationType.js.map +1 -1
  38. package/lib/typeorm/connection/BaseConnectionOptions.js.map +1 -1
  39. package/lib/typeorm/connection/Connection.js.map +1 -1
  40. package/lib/typeorm/connection/ConnectionManager.js.map +1 -1
  41. package/lib/typeorm/connection/ConnectionMetadataBuilder.js.map +1 -1
  42. package/lib/typeorm/connection/ConnectionOptions.js.map +1 -1
  43. package/lib/typeorm/connection/ConnectionOptionsReader.js.map +1 -1
  44. package/lib/typeorm/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
  45. package/lib/typeorm/connection/options-reader/ConnectionOptionsXmlReader.js.map +1 -1
  46. package/lib/typeorm/connection/options-reader/ConnectionOptionsYmlReader.js.map +1 -1
  47. package/lib/typeorm/constants.js.map +1 -1
  48. package/lib/typeorm/container.js.map +1 -1
  49. package/lib/typeorm/data-source/BaseDataSourceOptions.js.map +1 -1
  50. package/lib/typeorm/data-source/DataSource.js.map +1 -1
  51. package/lib/typeorm/data-source/DataSourceOptions.js.map +1 -1
  52. package/lib/typeorm/data-source/index.js.map +1 -1
  53. package/lib/typeorm/decorator/Check.js.map +1 -1
  54. package/lib/typeorm/decorator/EntityRepository.js.map +1 -1
  55. package/lib/typeorm/decorator/Exclusion.js.map +1 -1
  56. package/lib/typeorm/decorator/Generated.js.map +1 -1
  57. package/lib/typeorm/decorator/Index.js.map +1 -1
  58. package/lib/typeorm/decorator/Unique.js.map +1 -1
  59. package/lib/typeorm/decorator/columns/Column.js.map +1 -1
  60. package/lib/typeorm/decorator/columns/CreateDateColumn.js.map +1 -1
  61. package/lib/typeorm/decorator/columns/DeleteDateColumn.js.map +1 -1
  62. package/lib/typeorm/decorator/columns/ObjectIdColumn.js.map +1 -1
  63. package/lib/typeorm/decorator/columns/PrimaryColumn.js.map +1 -1
  64. package/lib/typeorm/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
  65. package/lib/typeorm/decorator/columns/UpdateDateColumn.js.map +1 -1
  66. package/lib/typeorm/decorator/columns/VersionColumn.js.map +1 -1
  67. package/lib/typeorm/decorator/columns/ViewColumn.js.map +1 -1
  68. package/lib/typeorm/decorator/columns/VirtualColumn.js.map +1 -1
  69. package/lib/typeorm/decorator/entity/ChildEntity.js.map +1 -1
  70. package/lib/typeorm/decorator/entity/Entity.js.map +1 -1
  71. package/lib/typeorm/decorator/entity/TableInheritance.js.map +1 -1
  72. package/lib/typeorm/decorator/entity-view/ViewEntity.js.map +1 -1
  73. package/lib/typeorm/decorator/listeners/AfterInsert.js.map +1 -1
  74. package/lib/typeorm/decorator/listeners/AfterLoad.js.map +1 -1
  75. package/lib/typeorm/decorator/listeners/AfterRecover.js.map +1 -1
  76. package/lib/typeorm/decorator/listeners/AfterRemove.js.map +1 -1
  77. package/lib/typeorm/decorator/listeners/AfterSoftRemove.js.map +1 -1
  78. package/lib/typeorm/decorator/listeners/AfterUpdate.js.map +1 -1
  79. package/lib/typeorm/decorator/listeners/BeforeInsert.js.map +1 -1
  80. package/lib/typeorm/decorator/listeners/BeforeRecover.js.map +1 -1
  81. package/lib/typeorm/decorator/listeners/BeforeRemove.js.map +1 -1
  82. package/lib/typeorm/decorator/listeners/BeforeSoftRemove.js.map +1 -1
  83. package/lib/typeorm/decorator/listeners/BeforeUpdate.js.map +1 -1
  84. package/lib/typeorm/decorator/listeners/EventSubscriber.js.map +1 -1
  85. package/lib/typeorm/decorator/options/ColumnCommonOptions.js.map +1 -1
  86. package/lib/typeorm/decorator/options/ColumnEmbeddedOptions.js.map +1 -1
  87. package/lib/typeorm/decorator/options/ColumnEnumOptions.js.map +1 -1
  88. package/lib/typeorm/decorator/options/ColumnHstoreOptions.js.map +1 -1
  89. package/lib/typeorm/decorator/options/ColumnNumericOptions.js.map +1 -1
  90. package/lib/typeorm/decorator/options/ColumnOptions.js.map +1 -1
  91. package/lib/typeorm/decorator/options/ColumnWithLengthOptions.js.map +1 -1
  92. package/lib/typeorm/decorator/options/ColumnWithWidthOptions.js.map +1 -1
  93. package/lib/typeorm/decorator/options/EntityOptions.js.map +1 -1
  94. package/lib/typeorm/decorator/options/IndexOptions.js.map +1 -1
  95. package/lib/typeorm/decorator/options/JoinColumnOptions.js.map +1 -1
  96. package/lib/typeorm/decorator/options/JoinTableMultipleColumnsOptions.js.map +1 -1
  97. package/lib/typeorm/decorator/options/JoinTableOptions.js.map +1 -1
  98. package/lib/typeorm/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -1
  99. package/lib/typeorm/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
  100. package/lib/typeorm/decorator/options/PrimaryGeneratedColumnUUIDOptions.js.map +1 -1
  101. package/lib/typeorm/decorator/options/RelationOptions.js.map +1 -1
  102. package/lib/typeorm/decorator/options/SpatialColumnOptions.js.map +1 -1
  103. package/lib/typeorm/decorator/options/TransactionOptions.js.map +1 -1
  104. package/lib/typeorm/decorator/options/UniqueOptions.js.map +1 -1
  105. package/lib/typeorm/decorator/options/ValueTransformer.js.map +1 -1
  106. package/lib/typeorm/decorator/options/ViewColumnOptions.js.map +1 -1
  107. package/lib/typeorm/decorator/options/ViewEntityOptions.js.map +1 -1
  108. package/lib/typeorm/decorator/options/VirtualColumnOptions.js.map +1 -1
  109. package/lib/typeorm/decorator/relations/JoinColumn.js.map +1 -1
  110. package/lib/typeorm/decorator/relations/JoinTable.js.map +1 -1
  111. package/lib/typeorm/decorator/relations/ManyToMany.js.map +1 -1
  112. package/lib/typeorm/decorator/relations/ManyToOne.js.map +1 -1
  113. package/lib/typeorm/decorator/relations/OneToMany.js.map +1 -1
  114. package/lib/typeorm/decorator/relations/OneToOne.js.map +1 -1
  115. package/lib/typeorm/decorator/relations/RelationCount.js.map +1 -1
  116. package/lib/typeorm/decorator/relations/RelationId.js.map +1 -1
  117. package/lib/typeorm/decorator/tree/Tree.js.map +1 -1
  118. package/lib/typeorm/decorator/tree/TreeChildren.js.map +1 -1
  119. package/lib/typeorm/decorator/tree/TreeLevelColumn.js.map +1 -1
  120. package/lib/typeorm/decorator/tree/TreeParent.js.map +1 -1
  121. package/lib/typeorm/driver/Driver.js.map +1 -1
  122. package/lib/typeorm/driver/DriverFactory.js.map +1 -1
  123. package/lib/typeorm/driver/DriverUtils.js.map +1 -1
  124. package/lib/typeorm/driver/Query.js.map +1 -1
  125. package/lib/typeorm/driver/SqlInMemory.js.map +1 -1
  126. package/lib/typeorm/driver/aurora-mysql/AuroraMysqlConnection.js.map +1 -1
  127. package/lib/typeorm/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.js.map +1 -1
  128. package/lib/typeorm/driver/aurora-mysql/AuroraMysqlConnectionOptions.js.map +1 -1
  129. package/lib/typeorm/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  130. package/lib/typeorm/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  131. package/lib/typeorm/driver/aurora-postgres/AuroraPostgresConnectionOptions.js.map +1 -1
  132. package/lib/typeorm/driver/aurora-postgres/AuroraPostgresDriver.js.map +1 -1
  133. package/lib/typeorm/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
  134. package/lib/typeorm/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js.map +1 -1
  135. package/lib/typeorm/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  136. package/lib/typeorm/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  137. package/lib/typeorm/driver/capacitor/CapacitorConnectionOptions.js.map +1 -1
  138. package/lib/typeorm/driver/capacitor/CapacitorDriver.js.map +1 -1
  139. package/lib/typeorm/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
  140. package/lib/typeorm/driver/cockroachdb/CockroachConnectionCredentialsOptions.js.map +1 -1
  141. package/lib/typeorm/driver/cockroachdb/CockroachConnectionOptions.js.map +1 -1
  142. package/lib/typeorm/driver/cockroachdb/CockroachDriver.js.map +1 -1
  143. package/lib/typeorm/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  144. package/lib/typeorm/driver/cordova/CordovaConnectionOptions.js.map +1 -1
  145. package/lib/typeorm/driver/cordova/CordovaDriver.js.map +1 -1
  146. package/lib/typeorm/driver/cordova/CordovaQueryRunner.js.map +1 -1
  147. package/lib/typeorm/driver/expo/ExpoConnectionOptions.js.map +1 -1
  148. package/lib/typeorm/driver/expo/ExpoDriver.js.map +1 -1
  149. package/lib/typeorm/driver/expo/ExpoQueryRunner.js.map +1 -1
  150. package/lib/typeorm/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  151. package/lib/typeorm/driver/mongodb/MongoDriver.js.map +1 -1
  152. package/lib/typeorm/driver/mongodb/MongoQueryRunner.js.map +1 -1
  153. package/lib/typeorm/driver/mongodb/typings.js.map +1 -1
  154. package/lib/typeorm/driver/mysql/MysqlConnectionCredentialsOptions.js.map +1 -1
  155. package/lib/typeorm/driver/mysql/MysqlConnectionOptions.js.map +1 -1
  156. package/lib/typeorm/driver/mysql/MysqlDriver.js.map +1 -1
  157. package/lib/typeorm/driver/mysql/MysqlQueryRunner.js.map +1 -1
  158. package/lib/typeorm/driver/nativescript/NativescriptConnectionOptions.js.map +1 -1
  159. package/lib/typeorm/driver/nativescript/NativescriptDriver.js.map +1 -1
  160. package/lib/typeorm/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  161. package/lib/typeorm/driver/oracle/OracleConnectionCredentialsOptions.js.map +1 -1
  162. package/lib/typeorm/driver/oracle/OracleConnectionOptions.js.map +1 -1
  163. package/lib/typeorm/driver/oracle/OracleDriver.js.map +1 -1
  164. package/lib/typeorm/driver/oracle/OracleQueryRunner.js.map +1 -1
  165. package/lib/typeorm/driver/postgres/PostgresConnectionCredentialsOptions.js.map +1 -1
  166. package/lib/typeorm/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  167. package/lib/typeorm/driver/postgres/PostgresDriver.js.map +1 -1
  168. package/lib/typeorm/driver/postgres/PostgresQueryRunner.js.map +1 -1
  169. package/lib/typeorm/driver/react-native/ReactNativeConnectionOptions.js.map +1 -1
  170. package/lib/typeorm/driver/react-native/ReactNativeDriver.js.map +1 -1
  171. package/lib/typeorm/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  172. package/lib/typeorm/driver/sap/SapConnectionCredentialsOptions.js.map +1 -1
  173. package/lib/typeorm/driver/sap/SapConnectionOptions.js.map +1 -1
  174. package/lib/typeorm/driver/sap/SapDriver.js.map +1 -1
  175. package/lib/typeorm/driver/sap/SapQueryRunner.js.map +1 -1
  176. package/lib/typeorm/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -1
  177. package/lib/typeorm/driver/spanner/SpannerConnectionOptions.js.map +1 -1
  178. package/lib/typeorm/driver/spanner/SpannerDriver.js.map +1 -1
  179. package/lib/typeorm/driver/spanner/SpannerQueryRunner.js.map +1 -1
  180. package/lib/typeorm/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
  181. package/lib/typeorm/driver/sqlite/SqliteDriver.js.map +1 -1
  182. package/lib/typeorm/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  183. package/lib/typeorm/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  184. package/lib/typeorm/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  185. package/lib/typeorm/driver/sqljs/SqljsConnectionOptions.js.map +1 -1
  186. package/lib/typeorm/driver/sqljs/SqljsDriver.js.map +1 -1
  187. package/lib/typeorm/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  188. package/lib/typeorm/driver/sqlserver/MssqlParameter.js.map +1 -1
  189. package/lib/typeorm/driver/sqlserver/SqlServerConnectionCredentialsOptions.js.map +1 -1
  190. package/lib/typeorm/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
  191. package/lib/typeorm/driver/sqlserver/SqlServerDriver.js.map +1 -1
  192. package/lib/typeorm/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  193. package/lib/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -1
  194. package/lib/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -1
  195. package/lib/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -1
  196. package/lib/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js.map +1 -1
  197. package/lib/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.js.map +1 -1
  198. package/lib/typeorm/driver/sqlserver/authentication/DefaultAuthentication.js.map +1 -1
  199. package/lib/typeorm/driver/sqlserver/authentication/NtlmAuthentication.js.map +1 -1
  200. package/lib/typeorm/driver/types/ColumnTypes.js.map +1 -1
  201. package/lib/typeorm/driver/types/CteCapabilities.js.map +1 -1
  202. package/lib/typeorm/driver/types/DataTypeDefaults.js.map +1 -1
  203. package/lib/typeorm/driver/types/DatabaseType.js.map +1 -1
  204. package/lib/typeorm/driver/types/IsolationLevel.js.map +1 -1
  205. package/lib/typeorm/driver/types/MappedColumnTypes.js.map +1 -1
  206. package/lib/typeorm/driver/types/MetadataTableType.js.map +1 -1
  207. package/lib/typeorm/driver/types/ReplicationMode.js.map +1 -1
  208. package/lib/typeorm/driver/types/UpsertType.js.map +1 -1
  209. package/lib/typeorm/entity-manager/EntityManager.js.map +1 -1
  210. package/lib/typeorm/entity-manager/EntityManagerFactory.js.map +1 -1
  211. package/lib/typeorm/entity-manager/MongoEntityManager.js.map +1 -1
  212. package/lib/typeorm/entity-manager/SqljsEntityManager.js.map +1 -1
  213. package/lib/typeorm/entity-schema/EntitySchema.js.map +1 -1
  214. package/lib/typeorm/entity-schema/EntitySchemaCheckOptions.js.map +1 -1
  215. package/lib/typeorm/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
  216. package/lib/typeorm/entity-schema/EntitySchemaEmbeddedColumnOptions.js.map +1 -1
  217. package/lib/typeorm/entity-schema/EntitySchemaEmbeddedError.js.map +1 -1
  218. package/lib/typeorm/entity-schema/EntitySchemaExclusionOptions.js.map +1 -1
  219. package/lib/typeorm/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
  220. package/lib/typeorm/entity-schema/EntitySchemaOptions.js.map +1 -1
  221. package/lib/typeorm/entity-schema/EntitySchemaRelationIdOptions.js.map +1 -1
  222. package/lib/typeorm/entity-schema/EntitySchemaRelationOptions.js.map +1 -1
  223. package/lib/typeorm/entity-schema/EntitySchemaTransformer.js.map +1 -1
  224. package/lib/typeorm/entity-schema/EntitySchemaUniqueOptions.js.map +1 -1
  225. package/lib/typeorm/error/AlreadyHasActiveConnectionError.js.map +1 -1
  226. package/lib/typeorm/error/CannotAttachTreeChildrenEntityError.js.map +1 -1
  227. package/lib/typeorm/error/CannotConnectAlreadyConnectedError.js.map +1 -1
  228. package/lib/typeorm/error/CannotCreateEntityIdMapError.js.map +1 -1
  229. package/lib/typeorm/error/CannotDetermineEntityError.js.map +1 -1
  230. package/lib/typeorm/error/CannotExecuteNotConnectedError.js.map +1 -1
  231. package/lib/typeorm/error/CannotGetEntityManagerNotConnectedError.js.map +1 -1
  232. package/lib/typeorm/error/CannotReflectMethodParameterTypeError.js.map +1 -1
  233. package/lib/typeorm/error/CircularRelationsError.js.map +1 -1
  234. package/lib/typeorm/error/ColumnTypeUndefinedError.js.map +1 -1
  235. package/lib/typeorm/error/ConnectionIsNotSetError.js.map +1 -1
  236. package/lib/typeorm/error/ConnectionNotFoundError.js.map +1 -1
  237. package/lib/typeorm/error/CustomRepositoryCannotInheritRepositoryError.js.map +1 -1
  238. package/lib/typeorm/error/CustomRepositoryDoesNotHaveEntityError.js.map +1 -1
  239. package/lib/typeorm/error/CustomRepositoryNotFoundError.js.map +1 -1
  240. package/lib/typeorm/error/DataTypeNotSupportedError.js.map +1 -1
  241. package/lib/typeorm/error/DriverOptionNotSetError.js.map +1 -1
  242. package/lib/typeorm/error/DriverPackageNotInstalledError.js.map +1 -1
  243. package/lib/typeorm/error/EntityMetadataNotFoundError.js.map +1 -1
  244. package/lib/typeorm/error/EntityNotFoundError.js.map +1 -1
  245. package/lib/typeorm/error/EntityPropertyNotFoundError.js.map +1 -1
  246. package/lib/typeorm/error/FindRelationsNotFoundError.js.map +1 -1
  247. package/lib/typeorm/error/ForbiddenTransactionModeOverrideError.js.map +1 -1
  248. package/lib/typeorm/error/InitializedRelationError.js.map +1 -1
  249. package/lib/typeorm/error/InsertValuesMissingError.js.map +1 -1
  250. package/lib/typeorm/error/LimitOnUpdateNotSupportedError.js.map +1 -1
  251. package/lib/typeorm/error/LockNotSupportedOnGivenDriverError.js.map +1 -1
  252. package/lib/typeorm/error/MetadataAlreadyExistsError.js.map +1 -1
  253. package/lib/typeorm/error/MetadataWithSuchNameAlreadyExistsError.js.map +1 -1
  254. package/lib/typeorm/error/MissingDeleteDateColumnError.js.map +1 -1
  255. package/lib/typeorm/error/MissingDriverError.js.map +1 -1
  256. package/lib/typeorm/error/MissingJoinColumnError.js.map +1 -1
  257. package/lib/typeorm/error/MissingJoinTableError.js.map +1 -1
  258. package/lib/typeorm/error/MissingPrimaryColumnError.js.map +1 -1
  259. package/lib/typeorm/error/MustBeEntityError.js.map +1 -1
  260. package/lib/typeorm/error/NamingStrategyNotFoundError.js.map +1 -1
  261. package/lib/typeorm/error/NestedSetMultipleRootError.js.map +1 -1
  262. package/lib/typeorm/error/NoConnectionForRepositoryError.js.map +1 -1
  263. package/lib/typeorm/error/NoConnectionOptionError.js.map +1 -1
  264. package/lib/typeorm/error/NoNeedToReleaseEntityManagerError.js.map +1 -1
  265. package/lib/typeorm/error/NoVersionOrUpdateDateColumnError.js.map +1 -1
  266. package/lib/typeorm/error/OffsetWithoutLimitNotSupportedError.js.map +1 -1
  267. package/lib/typeorm/error/OptimisticLockCanNotBeUsedError.js.map +1 -1
  268. package/lib/typeorm/error/OptimisticLockVersionMismatchError.js.map +1 -1
  269. package/lib/typeorm/error/PersistedEntityNotFoundError.js.map +1 -1
  270. package/lib/typeorm/error/PessimisticLockTransactionRequiredError.js.map +1 -1
  271. package/lib/typeorm/error/PrimaryColumnCannotBeNullableError.js.map +1 -1
  272. package/lib/typeorm/error/QueryFailedError.js.map +1 -1
  273. package/lib/typeorm/error/QueryRunnerAlreadyReleasedError.js.map +1 -1
  274. package/lib/typeorm/error/QueryRunnerProviderAlreadyReleasedError.js.map +1 -1
  275. package/lib/typeorm/error/RepositoryNotTreeError.js.map +1 -1
  276. package/lib/typeorm/error/ReturningStatementNotSupportedError.js.map +1 -1
  277. package/lib/typeorm/error/SubjectRemovedAndUpdatedError.js.map +1 -1
  278. package/lib/typeorm/error/SubjectWithoutIdentifierError.js.map +1 -1
  279. package/lib/typeorm/error/TransactionAlreadyStartedError.js.map +1 -1
  280. package/lib/typeorm/error/TransactionNotStartedError.js.map +1 -1
  281. package/lib/typeorm/error/TreeRepositoryNotSupportedError.js.map +1 -1
  282. package/lib/typeorm/error/TypeORMError.js.map +1 -1
  283. package/lib/typeorm/error/UpdateValuesMissingError.js.map +1 -1
  284. package/lib/typeorm/error/UsingJoinColumnIsNotAllowedError.js.map +1 -1
  285. package/lib/typeorm/error/UsingJoinColumnOnlyOnOneSideAllowedError.js.map +1 -1
  286. package/lib/typeorm/error/UsingJoinTableIsNotAllowedError.js.map +1 -1
  287. package/lib/typeorm/error/UsingJoinTableOnlyOnOneSideAllowedError.js.map +1 -1
  288. package/lib/typeorm/error/index.js.map +1 -1
  289. package/lib/typeorm/find-options/EqualOperator.js.map +1 -1
  290. package/lib/typeorm/find-options/FindManyOptions.js.map +1 -1
  291. package/lib/typeorm/find-options/FindOneOptions.js.map +1 -1
  292. package/lib/typeorm/find-options/FindOperator.js.map +1 -1
  293. package/lib/typeorm/find-options/FindOperatorType.js.map +1 -1
  294. package/lib/typeorm/find-options/FindOptionsOrder.js.map +1 -1
  295. package/lib/typeorm/find-options/FindOptionsRelations.js.map +1 -1
  296. package/lib/typeorm/find-options/FindOptionsSelect.js.map +1 -1
  297. package/lib/typeorm/find-options/FindOptionsUtils.js.map +1 -1
  298. package/lib/typeorm/find-options/FindOptionsWhere.js.map +1 -1
  299. package/lib/typeorm/find-options/FindTreeOptions.js.map +1 -1
  300. package/lib/typeorm/find-options/JoinOptions.js.map +1 -1
  301. package/lib/typeorm/find-options/OrderByCondition.js.map +1 -1
  302. package/lib/typeorm/find-options/mongodb/MongoFindManyOptions.js.map +1 -1
  303. package/lib/typeorm/find-options/mongodb/MongoFindOneOptions.js.map +1 -1
  304. package/lib/typeorm/find-options/operator/And.js.map +1 -1
  305. package/lib/typeorm/find-options/operator/Any.js.map +1 -1
  306. package/lib/typeorm/find-options/operator/ArrayContainedBy.js.map +1 -1
  307. package/lib/typeorm/find-options/operator/ArrayContains.js.map +1 -1
  308. package/lib/typeorm/find-options/operator/ArrayOverlap.js.map +1 -1
  309. package/lib/typeorm/find-options/operator/Between.js.map +1 -1
  310. package/lib/typeorm/find-options/operator/Equal.js.map +1 -1
  311. package/lib/typeorm/find-options/operator/ILike.js.map +1 -1
  312. package/lib/typeorm/find-options/operator/In.js.map +1 -1
  313. package/lib/typeorm/find-options/operator/IsNull.js.map +1 -1
  314. package/lib/typeorm/find-options/operator/LessThan.js.map +1 -1
  315. package/lib/typeorm/find-options/operator/LessThanOrEqual.js.map +1 -1
  316. package/lib/typeorm/find-options/operator/Like.js.map +1 -1
  317. package/lib/typeorm/find-options/operator/MoreThan.js.map +1 -1
  318. package/lib/typeorm/find-options/operator/MoreThanOrEqual.js.map +1 -1
  319. package/lib/typeorm/find-options/operator/Not.js.map +1 -1
  320. package/lib/typeorm/find-options/operator/Raw.js.map +1 -1
  321. package/lib/typeorm/globals.js.map +1 -1
  322. package/lib/typeorm/index.js.map +1 -1
  323. package/lib/typeorm/logger/AdvancedConsoleLogger.js.map +1 -1
  324. package/lib/typeorm/logger/DebugLogger.js.map +1 -1
  325. package/lib/typeorm/logger/FileLogger.js.map +1 -1
  326. package/lib/typeorm/logger/Logger.js.map +1 -1
  327. package/lib/typeorm/logger/LoggerFactory.js.map +1 -1
  328. package/lib/typeorm/logger/LoggerOptions.js.map +1 -1
  329. package/lib/typeorm/logger/SimpleConsoleLogger.js.map +1 -1
  330. package/lib/typeorm/metadata/CheckMetadata.js.map +1 -1
  331. package/lib/typeorm/metadata/ColumnMetadata.js.map +1 -1
  332. package/lib/typeorm/metadata/EmbeddedMetadata.js.map +1 -1
  333. package/lib/typeorm/metadata/EntityListenerMetadata.js.map +1 -1
  334. package/lib/typeorm/metadata/EntityMetadata.js.map +1 -1
  335. package/lib/typeorm/metadata/ExclusionMetadata.js.map +1 -1
  336. package/lib/typeorm/metadata/ForeignKeyMetadata.js.map +1 -1
  337. package/lib/typeorm/metadata/IndexMetadata.js.map +1 -1
  338. package/lib/typeorm/metadata/RelationCountMetadata.js.map +1 -1
  339. package/lib/typeorm/metadata/RelationIdMetadata.js.map +1 -1
  340. package/lib/typeorm/metadata/RelationMetadata.js.map +1 -1
  341. package/lib/typeorm/metadata/UniqueMetadata.js.map +1 -1
  342. package/lib/typeorm/metadata/types/ClosureTreeOptions.js.map +1 -1
  343. package/lib/typeorm/metadata/types/DeferrableType.js.map +1 -1
  344. package/lib/typeorm/metadata/types/EventListenerTypes.js.map +1 -1
  345. package/lib/typeorm/metadata/types/OnDeleteType.js.map +1 -1
  346. package/lib/typeorm/metadata/types/OnUpdateType.js.map +1 -1
  347. package/lib/typeorm/metadata/types/PropertyTypeInFunction.js.map +1 -1
  348. package/lib/typeorm/metadata/types/RelationTypeInFunction.js.map +1 -1
  349. package/lib/typeorm/metadata/types/RelationTypes.js.map +1 -1
  350. package/lib/typeorm/metadata/types/TableTypes.js.map +1 -1
  351. package/lib/typeorm/metadata/types/TreeTypes.js.map +1 -1
  352. package/lib/typeorm/metadata-args/CheckMetadataArgs.js.map +1 -1
  353. package/lib/typeorm/metadata-args/ColumnMetadataArgs.js.map +1 -1
  354. package/lib/typeorm/metadata-args/DiscriminatorValueMetadataArgs.js.map +1 -1
  355. package/lib/typeorm/metadata-args/EmbeddedMetadataArgs.js.map +1 -1
  356. package/lib/typeorm/metadata-args/EntityListenerMetadataArgs.js.map +1 -1
  357. package/lib/typeorm/metadata-args/EntityRepositoryMetadataArgs.js.map +1 -1
  358. package/lib/typeorm/metadata-args/EntitySubscriberMetadataArgs.js.map +1 -1
  359. package/lib/typeorm/metadata-args/ExclusionMetadataArgs.js.map +1 -1
  360. package/lib/typeorm/metadata-args/GeneratedMetadataArgs.js.map +1 -1
  361. package/lib/typeorm/metadata-args/IndexMetadataArgs.js.map +1 -1
  362. package/lib/typeorm/metadata-args/InheritanceMetadataArgs.js.map +1 -1
  363. package/lib/typeorm/metadata-args/JoinColumnMetadataArgs.js.map +1 -1
  364. package/lib/typeorm/metadata-args/JoinTableMetadataArgs.js.map +1 -1
  365. package/lib/typeorm/metadata-args/MetadataArgsStorage.js.map +1 -1
  366. package/lib/typeorm/metadata-args/NamingStrategyMetadataArgs.js.map +1 -1
  367. package/lib/typeorm/metadata-args/RelationCountMetadataArgs.js.map +1 -1
  368. package/lib/typeorm/metadata-args/RelationIdMetadataArgs.js.map +1 -1
  369. package/lib/typeorm/metadata-args/RelationMetadataArgs.js.map +1 -1
  370. package/lib/typeorm/metadata-args/TableMetadataArgs.js.map +1 -1
  371. package/lib/typeorm/metadata-args/TransactionEntityMetadataArgs.js.map +1 -1
  372. package/lib/typeorm/metadata-args/TransactionRepositoryMetadataArgs.js.map +1 -1
  373. package/lib/typeorm/metadata-args/TreeMetadataArgs.js.map +1 -1
  374. package/lib/typeorm/metadata-args/UniqueMetadataArgs.js.map +1 -1
  375. package/lib/typeorm/metadata-args/types/ColumnMode.js.map +1 -1
  376. package/lib/typeorm/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
  377. package/lib/typeorm/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  378. package/lib/typeorm/metadata-builder/EntityMetadataValidator.js.map +1 -1
  379. package/lib/typeorm/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  380. package/lib/typeorm/metadata-builder/MetadataUtils.js.map +1 -1
  381. package/lib/typeorm/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  382. package/lib/typeorm/migration/Migration.js.map +1 -1
  383. package/lib/typeorm/migration/MigrationExecutor.js.map +1 -1
  384. package/lib/typeorm/migration/MigrationInterface.js.map +1 -1
  385. package/lib/typeorm/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  386. package/lib/typeorm/naming-strategy/NamingStrategyInterface.js.map +1 -1
  387. package/lib/typeorm/persistence/EntityPersistExecutor.js.map +1 -1
  388. package/lib/typeorm/persistence/Subject.js.map +1 -1
  389. package/lib/typeorm/persistence/SubjectChangeMap.js.map +1 -1
  390. package/lib/typeorm/persistence/SubjectChangedColumnsComputer.js.map +1 -1
  391. package/lib/typeorm/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  392. package/lib/typeorm/persistence/SubjectExecutor.js.map +1 -1
  393. package/lib/typeorm/persistence/SubjectTopoligicalSorter.js.map +1 -1
  394. package/lib/typeorm/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  395. package/lib/typeorm/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  396. package/lib/typeorm/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  397. package/lib/typeorm/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
  398. package/lib/typeorm/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  399. package/lib/typeorm/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  400. package/lib/typeorm/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
  401. package/lib/typeorm/platform/PlatformTools.js.map +1 -1
  402. package/lib/typeorm/query-builder/Alias.js.map +1 -1
  403. package/lib/typeorm/query-builder/Brackets.js.map +1 -1
  404. package/lib/typeorm/query-builder/DeleteQueryBuilder.js.map +1 -1
  405. package/lib/typeorm/query-builder/InsertOrUpdateOptions.js.map +1 -1
  406. package/lib/typeorm/query-builder/InsertQueryBuilder.js.map +1 -1
  407. package/lib/typeorm/query-builder/JoinAttribute.js.map +1 -1
  408. package/lib/typeorm/query-builder/JoinOptions.js.map +1 -1
  409. package/lib/typeorm/query-builder/NotBrackets.js.map +1 -1
  410. package/lib/typeorm/query-builder/QueryBuilder.js.map +1 -1
  411. package/lib/typeorm/query-builder/QueryBuilderCte.js.map +1 -1
  412. package/lib/typeorm/query-builder/QueryBuilderUtils.js.map +1 -1
  413. package/lib/typeorm/query-builder/QueryExpressionMap.js.map +1 -1
  414. package/lib/typeorm/query-builder/QueryPartialEntity.js.map +1 -1
  415. package/lib/typeorm/query-builder/RelationIdLoader.js.map +1 -1
  416. package/lib/typeorm/query-builder/RelationLoader.js.map +1 -1
  417. package/lib/typeorm/query-builder/RelationQueryBuilder.js.map +1 -1
  418. package/lib/typeorm/query-builder/RelationRemover.js.map +1 -1
  419. package/lib/typeorm/query-builder/RelationUpdater.js.map +1 -1
  420. package/lib/typeorm/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
  421. package/lib/typeorm/query-builder/SelectQuery.js.map +1 -1
  422. package/lib/typeorm/query-builder/SelectQueryBuilder.js.map +1 -1
  423. package/lib/typeorm/query-builder/SelectQueryBuilderOption.js.map +1 -1
  424. package/lib/typeorm/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  425. package/lib/typeorm/query-builder/UpdateQueryBuilder.js.map +1 -1
  426. package/lib/typeorm/query-builder/WhereClause.js.map +1 -1
  427. package/lib/typeorm/query-builder/WhereExpressionBuilder.js.map +1 -1
  428. package/lib/typeorm/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
  429. package/lib/typeorm/query-builder/relation-count/RelationCountLoadResult.js.map +1 -1
  430. package/lib/typeorm/query-builder/relation-count/RelationCountLoader.js.map +1 -1
  431. package/lib/typeorm/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js.map +1 -1
  432. package/lib/typeorm/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
  433. package/lib/typeorm/query-builder/relation-id/RelationIdLoadResult.js.map +1 -1
  434. package/lib/typeorm/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  435. package/lib/typeorm/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js.map +1 -1
  436. package/lib/typeorm/query-builder/result/DeleteResult.js.map +1 -1
  437. package/lib/typeorm/query-builder/result/InsertResult.js.map +1 -1
  438. package/lib/typeorm/query-builder/result/UpdateResult.js.map +1 -1
  439. package/lib/typeorm/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
  440. package/lib/typeorm/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
  441. package/lib/typeorm/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
  442. package/lib/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  443. package/lib/typeorm/query-runner/BaseQueryRunner.js.map +1 -1
  444. package/lib/typeorm/query-runner/QueryLock.js.map +1 -1
  445. package/lib/typeorm/query-runner/QueryResult.js.map +1 -1
  446. package/lib/typeorm/query-runner/QueryRunner.js.map +1 -1
  447. package/lib/typeorm/repository/AbstractRepository.js.map +1 -1
  448. package/lib/typeorm/repository/BaseEntity.js.map +1 -1
  449. package/lib/typeorm/repository/EntityId.js.map +1 -1
  450. package/lib/typeorm/repository/FindTreesOptions.js.map +1 -1
  451. package/lib/typeorm/repository/MongoRepository.js.map +1 -1
  452. package/lib/typeorm/repository/RemoveOptions.js.map +1 -1
  453. package/lib/typeorm/repository/Repository.js.map +1 -1
  454. package/lib/typeorm/repository/SaveOptions.js.map +1 -1
  455. package/lib/typeorm/repository/TreeRepository.js.map +1 -1
  456. package/lib/typeorm/repository/UpsertOptions.js.map +1 -1
  457. package/lib/typeorm/schema-builder/MongoSchemaBuilder.js.map +1 -1
  458. package/lib/typeorm/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  459. package/lib/typeorm/schema-builder/SchemaBuilder.js.map +1 -1
  460. package/lib/typeorm/schema-builder/options/TableCheckOptions.js.map +1 -1
  461. package/lib/typeorm/schema-builder/options/TableColumnOptions.js.map +1 -1
  462. package/lib/typeorm/schema-builder/options/TableExclusionOptions.js.map +1 -1
  463. package/lib/typeorm/schema-builder/options/TableForeignKeyOptions.js.map +1 -1
  464. package/lib/typeorm/schema-builder/options/TableIndexOptions.js.map +1 -1
  465. package/lib/typeorm/schema-builder/options/TableOptions.js.map +1 -1
  466. package/lib/typeorm/schema-builder/options/TableUniqueOptions.js.map +1 -1
  467. package/lib/typeorm/schema-builder/options/ViewOptions.js.map +1 -1
  468. package/lib/typeorm/schema-builder/table/Table.js.map +1 -1
  469. package/lib/typeorm/schema-builder/table/TableCheck.js.map +1 -1
  470. package/lib/typeorm/schema-builder/table/TableColumn.js.map +1 -1
  471. package/lib/typeorm/schema-builder/table/TableExclusion.js.map +1 -1
  472. package/lib/typeorm/schema-builder/table/TableForeignKey.js.map +1 -1
  473. package/lib/typeorm/schema-builder/table/TableIndex.js.map +1 -1
  474. package/lib/typeorm/schema-builder/table/TableUnique.js.map +1 -1
  475. package/lib/typeorm/schema-builder/util/TableUtils.js.map +1 -1
  476. package/lib/typeorm/schema-builder/util/ViewUtils.js.map +1 -1
  477. package/lib/typeorm/schema-builder/view/View.js.map +1 -1
  478. package/lib/typeorm/subscriber/Broadcaster.js.map +1 -1
  479. package/lib/typeorm/subscriber/BroadcasterResult.js.map +1 -1
  480. package/lib/typeorm/subscriber/EntitySubscriberInterface.js.map +1 -1
  481. package/lib/typeorm/subscriber/event/InsertEvent.js.map +1 -1
  482. package/lib/typeorm/subscriber/event/LoadEvent.js.map +1 -1
  483. package/lib/typeorm/subscriber/event/RecoverEvent.js.map +1 -1
  484. package/lib/typeorm/subscriber/event/RemoveEvent.js.map +1 -1
  485. package/lib/typeorm/subscriber/event/SoftRemoveEvent.js.map +1 -1
  486. package/lib/typeorm/subscriber/event/TransactionCommitEvent.js.map +1 -1
  487. package/lib/typeorm/subscriber/event/TransactionRollbackEvent.js.map +1 -1
  488. package/lib/typeorm/subscriber/event/TransactionStartEvent.js.map +1 -1
  489. package/lib/typeorm/subscriber/event/UpdateEvent.js.map +1 -1
  490. package/lib/typeorm/util/ApplyValueTransformers.js.map +1 -1
  491. package/lib/typeorm/util/DateUtils.js.map +1 -1
  492. package/lib/typeorm/util/DepGraph.js.map +1 -1
  493. package/lib/typeorm/util/DirectoryExportedClassesLoader.js.map +1 -1
  494. package/lib/typeorm/util/ImportUtils.js.map +1 -1
  495. package/lib/typeorm/util/InstanceChecker.js.map +1 -1
  496. package/lib/typeorm/util/ObjectUtils.js.map +1 -1
  497. package/lib/typeorm/util/OrmUtils.js.map +1 -1
  498. package/lib/typeorm/util/PathUtils.js.map +1 -1
  499. package/lib/typeorm/util/RandomGenerator.js.map +1 -1
  500. package/lib/typeorm/util/StringUtils.js.map +1 -1
  501. package/lib/typeorm/util/TreeRepositoryUtils.js.map +1 -1
  502. package/lib/typeorm/util/VersionUtils.js.map +1 -1
  503. package/lib/typeorm/util/escapeRegExp.js.map +1 -1
  504. package/migrations/index.js.map +1 -1
  505. package/migrations/migrations_index._auto-generated_.js.map +1 -1
  506. package/package.json +1 -1
  507. package/tmp-environment.json +3 -3
  508. package/websql/README.md +24 -24
  509. package/browser/esm2022/lib/index.mjs +0 -4
  510. package/browser/esm2022/lib/typeorm/cache/DbQueryResultCache.mjs +0 -251
  511. package/browser/esm2022/lib/typeorm/cache/QueryResultCache.mjs +0 -4
  512. package/browser/esm2022/lib/typeorm/cache/QueryResultCacheFactory.mjs +0 -33
  513. package/browser/esm2022/lib/typeorm/cache/QueryResultCacheOptions.mjs +0 -4
  514. package/browser/esm2022/lib/typeorm/cache/RedisQueryResultCache.mjs +0 -185
  515. package/browser/esm2022/lib/typeorm/common/DeepPartial.mjs +0 -3
  516. package/browser/esm2022/lib/typeorm/common/EntityTarget.mjs +0 -3
  517. package/browser/esm2022/lib/typeorm/common/MixedList.mjs +0 -3
  518. package/browser/esm2022/lib/typeorm/common/ObjectLiteral.mjs +0 -4
  519. package/browser/esm2022/lib/typeorm/common/ObjectType.mjs +0 -3
  520. package/browser/esm2022/lib/typeorm/common/RelationType.mjs +0 -3
  521. package/browser/esm2022/lib/typeorm/connection/Connection.mjs +0 -13
  522. package/browser/esm2022/lib/typeorm/connection/ConnectionManager.mjs +0 -57
  523. package/browser/esm2022/lib/typeorm/connection/ConnectionMetadataBuilder.mjs +0 -63
  524. package/browser/esm2022/lib/typeorm/connection/ConnectionOptions.mjs +0 -3
  525. package/browser/esm2022/lib/typeorm/connection/ConnectionOptionsReader.mjs +0 -237
  526. package/browser/esm2022/lib/typeorm/constants.mjs +0 -4
  527. package/browser/esm2022/lib/typeorm/container.mjs +0 -57
  528. package/browser/esm2022/lib/typeorm/data-source/BaseDataSourceOptions.mjs +0 -4
  529. package/browser/esm2022/lib/typeorm/data-source/DataSource.mjs +0 -458
  530. package/browser/esm2022/lib/typeorm/data-source/DataSourceOptions.mjs +0 -11
  531. package/browser/esm2022/lib/typeorm/data-source/index.mjs +0 -4
  532. package/browser/esm2022/lib/typeorm/decorator/Check.mjs +0 -25
  533. package/browser/esm2022/lib/typeorm/decorator/EntityRepository.mjs +0 -19
  534. package/browser/esm2022/lib/typeorm/decorator/Exclusion.mjs +0 -25
  535. package/browser/esm2022/lib/typeorm/decorator/Generated.mjs +0 -22
  536. package/browser/esm2022/lib/typeorm/decorator/Index.mjs +0 -52
  537. package/browser/esm2022/lib/typeorm/decorator/Unique.mjs +0 -48
  538. package/browser/esm2022/lib/typeorm/decorator/columns/Column.mjs +0 -67
  539. package/browser/esm2022/lib/typeorm/decorator/columns/CreateDateColumn.mjs +0 -19
  540. package/browser/esm2022/lib/typeorm/decorator/columns/DeleteDateColumn.mjs +0 -18
  541. package/browser/esm2022/lib/typeorm/decorator/columns/ObjectIdColumn.mjs +0 -23
  542. package/browser/esm2022/lib/typeorm/decorator/columns/PrimaryColumn.mjs +0 -54
  543. package/browser/esm2022/lib/typeorm/decorator/columns/PrimaryGeneratedColumn.mjs +0 -52
  544. package/browser/esm2022/lib/typeorm/decorator/columns/UpdateDateColumn.mjs +0 -18
  545. package/browser/esm2022/lib/typeorm/decorator/columns/VersionColumn.mjs +0 -19
  546. package/browser/esm2022/lib/typeorm/decorator/columns/ViewColumn.mjs +0 -17
  547. package/browser/esm2022/lib/typeorm/decorator/columns/VirtualColumn.mjs +0 -41
  548. package/browser/esm2022/lib/typeorm/decorator/entity/ChildEntity.mjs +0 -21
  549. package/browser/esm2022/lib/typeorm/decorator/entity/Entity.mjs +0 -28
  550. package/browser/esm2022/lib/typeorm/decorator/entity/TableInheritance.mjs +0 -20
  551. package/browser/esm2022/lib/typeorm/decorator/entity-view/ViewEntity.mjs +0 -30
  552. package/browser/esm2022/lib/typeorm/decorator/listeners/AfterInsert.mjs +0 -17
  553. package/browser/esm2022/lib/typeorm/decorator/listeners/AfterLoad.mjs +0 -17
  554. package/browser/esm2022/lib/typeorm/decorator/listeners/AfterRecover.mjs +0 -17
  555. package/browser/esm2022/lib/typeorm/decorator/listeners/AfterRemove.mjs +0 -17
  556. package/browser/esm2022/lib/typeorm/decorator/listeners/AfterSoftRemove.mjs +0 -17
  557. package/browser/esm2022/lib/typeorm/decorator/listeners/AfterUpdate.mjs +0 -17
  558. package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeInsert.mjs +0 -17
  559. package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeRecover.mjs +0 -17
  560. package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeRemove.mjs +0 -17
  561. package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeSoftRemove.mjs +0 -17
  562. package/browser/esm2022/lib/typeorm/decorator/listeners/BeforeUpdate.mjs +0 -17
  563. package/browser/esm2022/lib/typeorm/decorator/listeners/EventSubscriber.mjs +0 -15
  564. package/browser/esm2022/lib/typeorm/decorator/options/ColumnCommonOptions.mjs +0 -4
  565. package/browser/esm2022/lib/typeorm/decorator/options/ColumnEmbeddedOptions.mjs +0 -4
  566. package/browser/esm2022/lib/typeorm/decorator/options/ColumnEnumOptions.mjs +0 -4
  567. package/browser/esm2022/lib/typeorm/decorator/options/ColumnHstoreOptions.mjs +0 -4
  568. package/browser/esm2022/lib/typeorm/decorator/options/ColumnNumericOptions.mjs +0 -4
  569. package/browser/esm2022/lib/typeorm/decorator/options/ColumnOptions.mjs +0 -4
  570. package/browser/esm2022/lib/typeorm/decorator/options/ColumnWithLengthOptions.mjs +0 -4
  571. package/browser/esm2022/lib/typeorm/decorator/options/ColumnWithWidthOptions.mjs +0 -4
  572. package/browser/esm2022/lib/typeorm/decorator/options/EntityOptions.mjs +0 -4
  573. package/browser/esm2022/lib/typeorm/decorator/options/IndexOptions.mjs +0 -4
  574. package/browser/esm2022/lib/typeorm/decorator/options/JoinColumnOptions.mjs +0 -4
  575. package/browser/esm2022/lib/typeorm/decorator/options/JoinTableMultipleColumnsOptions.mjs +0 -4
  576. package/browser/esm2022/lib/typeorm/decorator/options/JoinTableOptions.mjs +0 -4
  577. package/browser/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnIdentityOptions.mjs +0 -4
  578. package/browser/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnNumericOptions.mjs +0 -4
  579. package/browser/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnUUIDOptions.mjs +0 -4
  580. package/browser/esm2022/lib/typeorm/decorator/options/RelationOptions.mjs +0 -4
  581. package/browser/esm2022/lib/typeorm/decorator/options/SpatialColumnOptions.mjs +0 -4
  582. package/browser/esm2022/lib/typeorm/decorator/options/UniqueOptions.mjs +0 -4
  583. package/browser/esm2022/lib/typeorm/decorator/options/ValueTransformer.mjs +0 -4
  584. package/browser/esm2022/lib/typeorm/decorator/options/ViewColumnOptions.mjs +0 -4
  585. package/browser/esm2022/lib/typeorm/decorator/options/ViewEntityOptions.mjs +0 -4
  586. package/browser/esm2022/lib/typeorm/decorator/options/VirtualColumnOptions.mjs +0 -4
  587. package/browser/esm2022/lib/typeorm/decorator/relations/JoinColumn.mjs +0 -25
  588. package/browser/esm2022/lib/typeorm/decorator/relations/JoinTable.mjs +0 -31
  589. package/browser/esm2022/lib/typeorm/decorator/relations/ManyToMany.mjs +0 -40
  590. package/browser/esm2022/lib/typeorm/decorator/relations/ManyToOne.mjs +0 -40
  591. package/browser/esm2022/lib/typeorm/decorator/relations/OneToMany.mjs +0 -32
  592. package/browser/esm2022/lib/typeorm/decorator/relations/OneToOne.mjs +0 -39
  593. package/browser/esm2022/lib/typeorm/decorator/relations/RelationCount.mjs +0 -20
  594. package/browser/esm2022/lib/typeorm/decorator/relations/RelationId.mjs +0 -20
  595. package/browser/esm2022/lib/typeorm/decorator/tree/Tree.mjs +0 -19
  596. package/browser/esm2022/lib/typeorm/decorator/tree/TreeChildren.mjs +0 -34
  597. package/browser/esm2022/lib/typeorm/decorator/tree/TreeLevelColumn.mjs +0 -17
  598. package/browser/esm2022/lib/typeorm/decorator/tree/TreeParent.mjs +0 -34
  599. package/browser/esm2022/lib/typeorm/driver/Driver.mjs +0 -4
  600. package/browser/esm2022/lib/typeorm/driver/DriverFactory.mjs +0 -99
  601. package/browser/esm2022/lib/typeorm/driver/DriverUtils.mjs +0 -213
  602. package/browser/esm2022/lib/typeorm/driver/Query.mjs +0 -13
  603. package/browser/esm2022/lib/typeorm/driver/SqlInMemory.mjs +0 -12
  604. package/browser/esm2022/lib/typeorm/driver/cordova/CordovaConnectionOptions.mjs +0 -4
  605. package/browser/esm2022/lib/typeorm/driver/cordova/CordovaDriver.mjs +0 -63
  606. package/browser/esm2022/lib/typeorm/driver/cordova/CordovaQueryRunner.mjs +0 -152
  607. package/browser/esm2022/lib/typeorm/driver/mongodb/typings.mjs +0 -6516
  608. package/browser/esm2022/lib/typeorm/driver/nativescript/NativescriptConnectionOptions.mjs +0 -4
  609. package/browser/esm2022/lib/typeorm/driver/nativescript/NativescriptDriver.mjs +0 -82
  610. package/browser/esm2022/lib/typeorm/driver/nativescript/NativescriptQueryRunner.mjs +0 -82
  611. package/browser/esm2022/lib/typeorm/driver/react-native/ReactNativeConnectionOptions.mjs +0 -4
  612. package/browser/esm2022/lib/typeorm/driver/react-native/ReactNativeDriver.mjs +0 -69
  613. package/browser/esm2022/lib/typeorm/driver/react-native/ReactNativeQueryRunner.mjs +0 -81
  614. package/browser/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteDriver.mjs +0 -582
  615. package/browser/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteQueryRunner.mjs +0 -1421
  616. package/browser/esm2022/lib/typeorm/driver/sqljs/SqljsConnectionOptions.mjs +0 -4
  617. package/browser/esm2022/lib/typeorm/driver/sqljs/SqljsDriver.mjs +0 -249
  618. package/browser/esm2022/lib/typeorm/driver/sqljs/SqljsQueryRunner.mjs +0 -107
  619. package/browser/esm2022/lib/typeorm/driver/types/ColumnTypes.mjs +0 -3
  620. package/browser/esm2022/lib/typeorm/driver/types/CteCapabilities.mjs +0 -4
  621. package/browser/esm2022/lib/typeorm/driver/types/DataTypeDefaults.mjs +0 -4
  622. package/browser/esm2022/lib/typeorm/driver/types/DatabaseType.mjs +0 -3
  623. package/browser/esm2022/lib/typeorm/driver/types/IsolationLevel.mjs +0 -3
  624. package/browser/esm2022/lib/typeorm/driver/types/MappedColumnTypes.mjs +0 -4
  625. package/browser/esm2022/lib/typeorm/driver/types/MetadataTableType.mjs +0 -9
  626. package/browser/esm2022/lib/typeorm/driver/types/ReplicationMode.mjs +0 -3
  627. package/browser/esm2022/lib/typeorm/driver/types/UpsertType.mjs +0 -3
  628. package/browser/esm2022/lib/typeorm/entity-manager/EntityManager.mjs +0 -743
  629. package/browser/esm2022/lib/typeorm/entity-manager/EntityManagerFactory.mjs +0 -23
  630. package/browser/esm2022/lib/typeorm/entity-manager/SqljsEntityManager.mjs +0 -35
  631. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchema.mjs +0 -12
  632. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaCheckOptions.mjs +0 -4
  633. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaColumnOptions.mjs +0 -4
  634. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedColumnOptions.mjs +0 -5
  635. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedError.mjs +0 -15
  636. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaExclusionOptions.mjs +0 -4
  637. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaIndexOptions.mjs +0 -4
  638. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaOptions.mjs +0 -8
  639. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationIdOptions.mjs +0 -4
  640. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationOptions.mjs +0 -4
  641. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaTransformer.mjs +0 -268
  642. package/browser/esm2022/lib/typeorm/entity-schema/EntitySchemaUniqueOptions.mjs +0 -4
  643. package/browser/esm2022/lib/typeorm/error/AlreadyHasActiveConnectionError.mjs +0 -13
  644. package/browser/esm2022/lib/typeorm/error/CannotAttachTreeChildrenEntityError.mjs +0 -13
  645. package/browser/esm2022/lib/typeorm/error/CannotConnectAlreadyConnectedError.mjs +0 -12
  646. package/browser/esm2022/lib/typeorm/error/CannotCreateEntityIdMapError.mjs +0 -18
  647. package/browser/esm2022/lib/typeorm/error/CannotDetermineEntityError.mjs +0 -13
  648. package/browser/esm2022/lib/typeorm/error/CannotExecuteNotConnectedError.mjs +0 -12
  649. package/browser/esm2022/lib/typeorm/error/CannotGetEntityManagerNotConnectedError.mjs +0 -12
  650. package/browser/esm2022/lib/typeorm/error/CannotReflectMethodParameterTypeError.mjs +0 -15
  651. package/browser/esm2022/lib/typeorm/error/CircularRelationsError.mjs +0 -13
  652. package/browser/esm2022/lib/typeorm/error/ColumnTypeUndefinedError.mjs +0 -16
  653. package/browser/esm2022/lib/typeorm/error/ConnectionIsNotSetError.mjs +0 -12
  654. package/browser/esm2022/lib/typeorm/error/ConnectionNotFoundError.mjs +0 -12
  655. package/browser/esm2022/lib/typeorm/error/CustomRepositoryCannotInheritRepositoryError.mjs +0 -15
  656. package/browser/esm2022/lib/typeorm/error/CustomRepositoryDoesNotHaveEntityError.mjs +0 -15
  657. package/browser/esm2022/lib/typeorm/error/CustomRepositoryNotFoundError.mjs +0 -15
  658. package/browser/esm2022/lib/typeorm/error/DataTypeNotSupportedError.mjs +0 -11
  659. package/browser/esm2022/lib/typeorm/error/DriverOptionNotSetError.mjs +0 -13
  660. package/browser/esm2022/lib/typeorm/error/DriverPackageNotInstalledError.mjs +0 -13
  661. package/browser/esm2022/lib/typeorm/error/EntityMetadataNotFoundError.mjs +0 -26
  662. package/browser/esm2022/lib/typeorm/error/EntityNotFoundError.mjs +0 -37
  663. package/browser/esm2022/lib/typeorm/error/EntityPropertyNotFoundError.mjs +0 -14
  664. package/browser/esm2022/lib/typeorm/error/FindRelationsNotFoundError.mjs +0 -20
  665. package/browser/esm2022/lib/typeorm/error/InitializedRelationError.mjs +0 -17
  666. package/browser/esm2022/lib/typeorm/error/InsertValuesMissingError.mjs +0 -13
  667. package/browser/esm2022/lib/typeorm/error/LimitOnUpdateNotSupportedError.mjs +0 -12
  668. package/browser/esm2022/lib/typeorm/error/LockNotSupportedOnGivenDriverError.mjs +0 -12
  669. package/browser/esm2022/lib/typeorm/error/MetadataAlreadyExistsError.mjs +0 -15
  670. package/browser/esm2022/lib/typeorm/error/MetadataWithSuchNameAlreadyExistsError.mjs +0 -13
  671. package/browser/esm2022/lib/typeorm/error/MissingDeleteDateColumnError.mjs +0 -9
  672. package/browser/esm2022/lib/typeorm/error/MissingDriverError.mjs +0 -13
  673. package/browser/esm2022/lib/typeorm/error/MissingJoinColumnError.mjs +0 -20
  674. package/browser/esm2022/lib/typeorm/error/MissingJoinTableError.mjs +0 -20
  675. package/browser/esm2022/lib/typeorm/error/MissingPrimaryColumnError.mjs +0 -10
  676. package/browser/esm2022/lib/typeorm/error/MustBeEntityError.mjs +0 -12
  677. package/browser/esm2022/lib/typeorm/error/NamingStrategyNotFoundError.mjs +0 -18
  678. package/browser/esm2022/lib/typeorm/error/NestedSetMultipleRootError.mjs +0 -9
  679. package/browser/esm2022/lib/typeorm/error/NoConnectionForRepositoryError.mjs +0 -13
  680. package/browser/esm2022/lib/typeorm/error/NoConnectionOptionError.mjs +0 -13
  681. package/browser/esm2022/lib/typeorm/error/NoNeedToReleaseEntityManagerError.mjs +0 -14
  682. package/browser/esm2022/lib/typeorm/error/NoVersionOrUpdateDateColumnError.mjs +0 -12
  683. package/browser/esm2022/lib/typeorm/error/OffsetWithoutLimitNotSupportedError.mjs +0 -14
  684. package/browser/esm2022/lib/typeorm/error/OptimisticLockCanNotBeUsedError.mjs +0 -12
  685. package/browser/esm2022/lib/typeorm/error/OptimisticLockVersionMismatchError.mjs +0 -12
  686. package/browser/esm2022/lib/typeorm/error/PersistedEntityNotFoundError.mjs +0 -12
  687. package/browser/esm2022/lib/typeorm/error/PessimisticLockTransactionRequiredError.mjs +0 -12
  688. package/browser/esm2022/lib/typeorm/error/PrimaryColumnCannotBeNullableError.mjs +0 -10
  689. package/browser/esm2022/lib/typeorm/error/QueryFailedError.mjs +0 -27
  690. package/browser/esm2022/lib/typeorm/error/QueryRunnerAlreadyReleasedError.mjs +0 -9
  691. package/browser/esm2022/lib/typeorm/error/QueryRunnerProviderAlreadyReleasedError.mjs +0 -13
  692. package/browser/esm2022/lib/typeorm/error/RepositoryNotTreeError.mjs +0 -29
  693. package/browser/esm2022/lib/typeorm/error/ReturningStatementNotSupportedError.mjs +0 -13
  694. package/browser/esm2022/lib/typeorm/error/SubjectRemovedAndUpdatedError.mjs +0 -13
  695. package/browser/esm2022/lib/typeorm/error/SubjectWithoutIdentifierError.mjs +0 -14
  696. package/browser/esm2022/lib/typeorm/error/TransactionAlreadyStartedError.mjs +0 -12
  697. package/browser/esm2022/lib/typeorm/error/TransactionNotStartedError.mjs +0 -12
  698. package/browser/esm2022/lib/typeorm/error/TreeRepositoryNotSupportedError.mjs +0 -9
  699. package/browser/esm2022/lib/typeorm/error/TypeORMError.mjs +0 -18
  700. package/browser/esm2022/lib/typeorm/error/UpdateValuesMissingError.mjs +0 -9
  701. package/browser/esm2022/lib/typeorm/error/UsingJoinColumnIsNotAllowedError.mjs +0 -10
  702. package/browser/esm2022/lib/typeorm/error/UsingJoinColumnOnlyOnOneSideAllowedError.mjs +0 -11
  703. package/browser/esm2022/lib/typeorm/error/UsingJoinTableIsNotAllowedError.mjs +0 -11
  704. package/browser/esm2022/lib/typeorm/error/UsingJoinTableOnlyOnOneSideAllowedError.mjs +0 -11
  705. package/browser/esm2022/lib/typeorm/error/index.mjs +0 -63
  706. package/browser/esm2022/lib/typeorm/find-options/EqualOperator.mjs +0 -10
  707. package/browser/esm2022/lib/typeorm/find-options/FindManyOptions.mjs +0 -4
  708. package/browser/esm2022/lib/typeorm/find-options/FindOneOptions.mjs +0 -4
  709. package/browser/esm2022/lib/typeorm/find-options/FindOperator.mjs +0 -74
  710. package/browser/esm2022/lib/typeorm/find-options/FindOperatorType.mjs +0 -3
  711. package/browser/esm2022/lib/typeorm/find-options/FindOptionsOrder.mjs +0 -3
  712. package/browser/esm2022/lib/typeorm/find-options/FindOptionsRelations.mjs +0 -3
  713. package/browser/esm2022/lib/typeorm/find-options/FindOptionsSelect.mjs +0 -5
  714. package/browser/esm2022/lib/typeorm/find-options/FindOptionsUtils.mjs +0 -293
  715. package/browser/esm2022/lib/typeorm/find-options/FindOptionsWhere.mjs +0 -3
  716. package/browser/esm2022/lib/typeorm/find-options/FindTreeOptions.mjs +0 -4
  717. package/browser/esm2022/lib/typeorm/find-options/JoinOptions.mjs +0 -4
  718. package/browser/esm2022/lib/typeorm/find-options/OrderByCondition.mjs +0 -3
  719. package/browser/esm2022/lib/typeorm/find-options/operator/Any.mjs +0 -11
  720. package/browser/esm2022/lib/typeorm/find-options/operator/ArrayContainedBy.mjs +0 -11
  721. package/browser/esm2022/lib/typeorm/find-options/operator/ArrayContains.mjs +0 -11
  722. package/browser/esm2022/lib/typeorm/find-options/operator/ArrayOverlap.mjs +0 -11
  723. package/browser/esm2022/lib/typeorm/find-options/operator/Between.mjs +0 -11
  724. package/browser/esm2022/lib/typeorm/find-options/operator/Equal.mjs +0 -15
  725. package/browser/esm2022/lib/typeorm/find-options/operator/ILike.mjs +0 -11
  726. package/browser/esm2022/lib/typeorm/find-options/operator/In.mjs +0 -11
  727. package/browser/esm2022/lib/typeorm/find-options/operator/IsNull.mjs +0 -11
  728. package/browser/esm2022/lib/typeorm/find-options/operator/LessThan.mjs +0 -11
  729. package/browser/esm2022/lib/typeorm/find-options/operator/LessThanOrEqual.mjs +0 -11
  730. package/browser/esm2022/lib/typeorm/find-options/operator/Like.mjs +0 -11
  731. package/browser/esm2022/lib/typeorm/find-options/operator/MoreThan.mjs +0 -11
  732. package/browser/esm2022/lib/typeorm/find-options/operator/MoreThanOrEqual.mjs +0 -11
  733. package/browser/esm2022/lib/typeorm/find-options/operator/Not.mjs +0 -12
  734. package/browser/esm2022/lib/typeorm/find-options/operator/Raw.mjs +0 -10
  735. package/browser/esm2022/lib/typeorm/globals.mjs +0 -165
  736. package/browser/esm2022/lib/typeorm/index.mjs +0 -157
  737. package/browser/esm2022/lib/typeorm/logger/AdvancedConsoleLogger.mjs +0 -109
  738. package/browser/esm2022/lib/typeorm/logger/DebugLogger.mjs +0 -94
  739. package/browser/esm2022/lib/typeorm/logger/Logger.mjs +0 -4
  740. package/browser/esm2022/lib/typeorm/logger/LoggerFactory.mjs +0 -36
  741. package/browser/esm2022/lib/typeorm/logger/LoggerOptions.mjs +0 -3
  742. package/browser/esm2022/lib/typeorm/logger/SimpleConsoleLogger.mjs +0 -108
  743. package/browser/esm2022/lib/typeorm/metadata/CheckMetadata.mjs +0 -26
  744. package/browser/esm2022/lib/typeorm/metadata/ColumnMetadata.mjs +0 -553
  745. package/browser/esm2022/lib/typeorm/metadata/EmbeddedMetadata.mjs +0 -206
  746. package/browser/esm2022/lib/typeorm/metadata/EntityListenerMetadata.mjs +0 -52
  747. package/browser/esm2022/lib/typeorm/metadata/EntityMetadata.mjs +0 -636
  748. package/browser/esm2022/lib/typeorm/metadata/ExclusionMetadata.mjs +0 -26
  749. package/browser/esm2022/lib/typeorm/metadata/ForeignKeyMetadata.mjs +0 -48
  750. package/browser/esm2022/lib/typeorm/metadata/IndexMetadata.mjs +0 -131
  751. package/browser/esm2022/lib/typeorm/metadata/RelationCountMetadata.mjs +0 -30
  752. package/browser/esm2022/lib/typeorm/metadata/RelationIdMetadata.mjs +0 -50
  753. package/browser/esm2022/lib/typeorm/metadata/RelationMetadata.mjs +0 -398
  754. package/browser/esm2022/lib/typeorm/metadata/UniqueMetadata.mjs +0 -90
  755. package/browser/esm2022/lib/typeorm/metadata/types/ClosureTreeOptions.mjs +0 -4
  756. package/browser/esm2022/lib/typeorm/metadata/types/DeferrableType.mjs +0 -3
  757. package/browser/esm2022/lib/typeorm/metadata/types/EventListenerTypes.mjs +0 -19
  758. package/browser/esm2022/lib/typeorm/metadata/types/OnDeleteType.mjs +0 -3
  759. package/browser/esm2022/lib/typeorm/metadata/types/OnUpdateType.mjs +0 -3
  760. package/browser/esm2022/lib/typeorm/metadata/types/PropertyTypeInFunction.mjs +0 -3
  761. package/browser/esm2022/lib/typeorm/metadata/types/RelationTypeInFunction.mjs +0 -3
  762. package/browser/esm2022/lib/typeorm/metadata/types/RelationTypes.mjs +0 -3
  763. package/browser/esm2022/lib/typeorm/metadata/types/TableTypes.mjs +0 -3
  764. package/browser/esm2022/lib/typeorm/metadata/types/TreeTypes.mjs +0 -3
  765. package/browser/esm2022/lib/typeorm/metadata-args/CheckMetadataArgs.mjs +0 -4
  766. package/browser/esm2022/lib/typeorm/metadata-args/ColumnMetadataArgs.mjs +0 -4
  767. package/browser/esm2022/lib/typeorm/metadata-args/DiscriminatorValueMetadataArgs.mjs +0 -4
  768. package/browser/esm2022/lib/typeorm/metadata-args/EmbeddedMetadataArgs.mjs +0 -4
  769. package/browser/esm2022/lib/typeorm/metadata-args/EntityListenerMetadataArgs.mjs +0 -4
  770. package/browser/esm2022/lib/typeorm/metadata-args/EntityRepositoryMetadataArgs.mjs +0 -4
  771. package/browser/esm2022/lib/typeorm/metadata-args/EntitySubscriberMetadataArgs.mjs +0 -4
  772. package/browser/esm2022/lib/typeorm/metadata-args/ExclusionMetadataArgs.mjs +0 -4
  773. package/browser/esm2022/lib/typeorm/metadata-args/GeneratedMetadataArgs.mjs +0 -4
  774. package/browser/esm2022/lib/typeorm/metadata-args/IndexMetadataArgs.mjs +0 -4
  775. package/browser/esm2022/lib/typeorm/metadata-args/InheritanceMetadataArgs.mjs +0 -4
  776. package/browser/esm2022/lib/typeorm/metadata-args/JoinColumnMetadataArgs.mjs +0 -4
  777. package/browser/esm2022/lib/typeorm/metadata-args/JoinTableMetadataArgs.mjs +0 -4
  778. package/browser/esm2022/lib/typeorm/metadata-args/MetadataArgsStorage.mjs +0 -217
  779. package/browser/esm2022/lib/typeorm/metadata-args/NamingStrategyMetadataArgs.mjs +0 -4
  780. package/browser/esm2022/lib/typeorm/metadata-args/RelationCountMetadataArgs.mjs +0 -4
  781. package/browser/esm2022/lib/typeorm/metadata-args/RelationIdMetadataArgs.mjs +0 -4
  782. package/browser/esm2022/lib/typeorm/metadata-args/RelationMetadataArgs.mjs +0 -4
  783. package/browser/esm2022/lib/typeorm/metadata-args/TableMetadataArgs.mjs +0 -4
  784. package/browser/esm2022/lib/typeorm/metadata-args/TransactionEntityMetadataArgs.mjs +0 -4
  785. package/browser/esm2022/lib/typeorm/metadata-args/TransactionRepositoryMetadataArgs.mjs +0 -4
  786. package/browser/esm2022/lib/typeorm/metadata-args/TreeMetadataArgs.mjs +0 -4
  787. package/browser/esm2022/lib/typeorm/metadata-args/UniqueMetadataArgs.mjs +0 -4
  788. package/browser/esm2022/lib/typeorm/metadata-args/types/ColumnMode.mjs +0 -3
  789. package/browser/esm2022/lib/typeorm/metadata-builder/ClosureJunctionEntityMetadataBuilder.mjs +0 -131
  790. package/browser/esm2022/lib/typeorm/metadata-builder/EntityMetadataBuilder.mjs +0 -678
  791. package/browser/esm2022/lib/typeorm/metadata-builder/EntityMetadataValidator.mjs +0 -183
  792. package/browser/esm2022/lib/typeorm/metadata-builder/JunctionEntityMetadataBuilder.mjs +0 -262
  793. package/browser/esm2022/lib/typeorm/metadata-builder/MetadataUtils.mjs +0 -41
  794. package/browser/esm2022/lib/typeorm/metadata-builder/RelationJoinColumnBuilder.mjs +0 -167
  795. package/browser/esm2022/lib/typeorm/migration/Migration.mjs +0 -14
  796. package/browser/esm2022/lib/typeorm/migration/MigrationExecutor.mjs +0 -454
  797. package/browser/esm2022/lib/typeorm/migration/MigrationInterface.mjs +0 -4
  798. package/browser/esm2022/lib/typeorm/naming-strategy/DefaultNamingStrategy.mjs +0 -140
  799. package/browser/esm2022/lib/typeorm/naming-strategy/NamingStrategyInterface.mjs +0 -4
  800. package/browser/esm2022/lib/typeorm/persistence/EntityPersistExecutor.mjs +0 -125
  801. package/browser/esm2022/lib/typeorm/persistence/Subject.mjs +0 -212
  802. package/browser/esm2022/lib/typeorm/persistence/SubjectChangeMap.mjs +0 -4
  803. package/browser/esm2022/lib/typeorm/persistence/SubjectChangedColumnsComputer.mjs +0 -164
  804. package/browser/esm2022/lib/typeorm/persistence/SubjectDatabaseEntityLoader.mjs +0 -125
  805. package/browser/esm2022/lib/typeorm/persistence/SubjectExecutor.mjs +0 -721
  806. package/browser/esm2022/lib/typeorm/persistence/SubjectTopoligicalSorter.mjs +0 -151
  807. package/browser/esm2022/lib/typeorm/persistence/subject-builder/CascadesSubjectBuilder.mjs +0 -84
  808. package/browser/esm2022/lib/typeorm/persistence/subject-builder/ManyToManySubjectBuilder.mjs +0 -153
  809. package/browser/esm2022/lib/typeorm/persistence/subject-builder/OneToManySubjectBuilder.mjs +0 -117
  810. package/browser/esm2022/lib/typeorm/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.mjs +0 -95
  811. package/browser/esm2022/lib/typeorm/persistence/tree/ClosureSubjectExecutor.mjs +0 -220
  812. package/browser/esm2022/lib/typeorm/persistence/tree/MaterializedPathSubjectExecutor.mjs +0 -97
  813. package/browser/esm2022/lib/typeorm/persistence/tree/NestedSetSubjectExecutor.mjs +0 -250
  814. package/browser/esm2022/lib/typeorm/platform/PlatformTools.mjs +0 -346
  815. package/browser/esm2022/lib/typeorm/query-builder/Alias.mjs +0 -26
  816. package/browser/esm2022/lib/typeorm/query-builder/Brackets.mjs +0 -16
  817. package/browser/esm2022/lib/typeorm/query-builder/DeleteQueryBuilder.mjs +0 -181
  818. package/browser/esm2022/lib/typeorm/query-builder/InsertOrUpdateOptions.mjs +0 -3
  819. package/browser/esm2022/lib/typeorm/query-builder/InsertQueryBuilder.mjs +0 -651
  820. package/browser/esm2022/lib/typeorm/query-builder/JoinAttribute.mjs +0 -153
  821. package/browser/esm2022/lib/typeorm/query-builder/NotBrackets.mjs +0 -14
  822. package/browser/esm2022/lib/typeorm/query-builder/QueryBuilder.mjs +0 -967
  823. package/browser/esm2022/lib/typeorm/query-builder/QueryBuilderCte.mjs +0 -4
  824. package/browser/esm2022/lib/typeorm/query-builder/QueryBuilderUtils.mjs +0 -22
  825. package/browser/esm2022/lib/typeorm/query-builder/QueryExpressionMap.mjs +0 -309
  826. package/browser/esm2022/lib/typeorm/query-builder/QueryPartialEntity.mjs +0 -3
  827. package/browser/esm2022/lib/typeorm/query-builder/RelationIdLoader.mjs +0 -452
  828. package/browser/esm2022/lib/typeorm/query-builder/RelationLoader.mjs +0 -262
  829. package/browser/esm2022/lib/typeorm/query-builder/RelationQueryBuilder.mjs +0 -147
  830. package/browser/esm2022/lib/typeorm/query-builder/RelationRemover.mjs +0 -130
  831. package/browser/esm2022/lib/typeorm/query-builder/RelationUpdater.mjs +0 -141
  832. package/browser/esm2022/lib/typeorm/query-builder/ReturningResultsEntityUpdator.mjs +0 -141
  833. package/browser/esm2022/lib/typeorm/query-builder/SelectQuery.mjs +0 -4
  834. package/browser/esm2022/lib/typeorm/query-builder/SelectQueryBuilder.mjs +0 -2278
  835. package/browser/esm2022/lib/typeorm/query-builder/SelectQueryBuilderOption.mjs +0 -3
  836. package/browser/esm2022/lib/typeorm/query-builder/SoftDeleteQueryBuilder.mjs +0 -348
  837. package/browser/esm2022/lib/typeorm/query-builder/UpdateQueryBuilder.mjs +0 -510
  838. package/browser/esm2022/lib/typeorm/query-builder/WhereClause.mjs +0 -3
  839. package/browser/esm2022/lib/typeorm/query-builder/WhereExpressionBuilder.mjs +0 -4
  840. package/browser/esm2022/lib/typeorm/query-builder/relation-count/RelationCountAttribute.mjs +0 -71
  841. package/browser/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoadResult.mjs +0 -4
  842. package/browser/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoader.mjs +0 -142
  843. package/browser/esm2022/lib/typeorm/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.mjs +0 -33
  844. package/browser/esm2022/lib/typeorm/query-builder/relation-id/RelationIdAttribute.mjs +0 -79
  845. package/browser/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoadResult.mjs +0 -4
  846. package/browser/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoader.mjs +0 -247
  847. package/browser/esm2022/lib/typeorm/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.mjs +0 -33
  848. package/browser/esm2022/lib/typeorm/query-builder/result/DeleteResult.mjs +0 -14
  849. package/browser/esm2022/lib/typeorm/query-builder/result/InsertResult.mjs +0 -25
  850. package/browser/esm2022/lib/typeorm/query-builder/result/UpdateResult.mjs +0 -25
  851. package/browser/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.mjs +0 -101
  852. package/browser/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToNewEntityTransformer.mjs +0 -67
  853. package/browser/esm2022/lib/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.mjs +0 -366
  854. package/browser/esm2022/lib/typeorm/query-runner/BaseQueryRunner.mjs +0 -392
  855. package/browser/esm2022/lib/typeorm/query-runner/QueryResult.mjs +0 -14
  856. package/browser/esm2022/lib/typeorm/query-runner/QueryRunner.mjs +0 -4
  857. package/browser/esm2022/lib/typeorm/repository/AbstractRepository.mjs +0 -80
  858. package/browser/esm2022/lib/typeorm/repository/BaseEntity.mjs +0 -283
  859. package/browser/esm2022/lib/typeorm/repository/FindTreesOptions.mjs +0 -4
  860. package/browser/esm2022/lib/typeorm/repository/RemoveOptions.mjs +0 -4
  861. package/browser/esm2022/lib/typeorm/repository/Repository.mjs +0 -275
  862. package/browser/esm2022/lib/typeorm/repository/SaveOptions.mjs +0 -4
  863. package/browser/esm2022/lib/typeorm/repository/TreeRepository.mjs +0 -254
  864. package/browser/esm2022/lib/typeorm/repository/UpsertOptions.mjs +0 -7
  865. package/browser/esm2022/lib/typeorm/schema-builder/RdbmsSchemaBuilder.mjs +0 -770
  866. package/browser/esm2022/lib/typeorm/schema-builder/SchemaBuilder.mjs +0 -4
  867. package/browser/esm2022/lib/typeorm/schema-builder/options/TableCheckOptions.mjs +0 -4
  868. package/browser/esm2022/lib/typeorm/schema-builder/options/TableColumnOptions.mjs +0 -4
  869. package/browser/esm2022/lib/typeorm/schema-builder/options/TableExclusionOptions.mjs +0 -4
  870. package/browser/esm2022/lib/typeorm/schema-builder/options/TableForeignKeyOptions.mjs +0 -4
  871. package/browser/esm2022/lib/typeorm/schema-builder/options/TableIndexOptions.mjs +0 -4
  872. package/browser/esm2022/lib/typeorm/schema-builder/options/TableOptions.mjs +0 -4
  873. package/browser/esm2022/lib/typeorm/schema-builder/options/TableUniqueOptions.mjs +0 -4
  874. package/browser/esm2022/lib/typeorm/schema-builder/options/ViewOptions.mjs +0 -4
  875. package/browser/esm2022/lib/typeorm/schema-builder/table/Table.mjs +0 -274
  876. package/browser/esm2022/lib/typeorm/schema-builder/table/TableCheck.mjs +0 -37
  877. package/browser/esm2022/lib/typeorm/schema-builder/table/TableColumn.mjs +0 -108
  878. package/browser/esm2022/lib/typeorm/schema-builder/table/TableExclusion.mjs +0 -31
  879. package/browser/esm2022/lib/typeorm/schema-builder/table/TableForeignKey.mjs +0 -60
  880. package/browser/esm2022/lib/typeorm/schema-builder/table/TableIndex.mjs +0 -53
  881. package/browser/esm2022/lib/typeorm/schema-builder/table/TableUnique.mjs +0 -38
  882. package/browser/esm2022/lib/typeorm/schema-builder/util/TableUtils.mjs +0 -38
  883. package/browser/esm2022/lib/typeorm/schema-builder/util/ViewUtils.mjs +0 -24
  884. package/browser/esm2022/lib/typeorm/schema-builder/view/View.mjs +0 -43
  885. package/browser/esm2022/lib/typeorm/subscriber/Broadcaster.mjs +0 -596
  886. package/browser/esm2022/lib/typeorm/subscriber/BroadcasterResult.mjs +0 -27
  887. package/browser/esm2022/lib/typeorm/subscriber/EntitySubscriberInterface.mjs +0 -4
  888. package/browser/esm2022/lib/typeorm/subscriber/event/InsertEvent.mjs +0 -4
  889. package/browser/esm2022/lib/typeorm/subscriber/event/LoadEvent.mjs +0 -4
  890. package/browser/esm2022/lib/typeorm/subscriber/event/RecoverEvent.mjs +0 -4
  891. package/browser/esm2022/lib/typeorm/subscriber/event/RemoveEvent.mjs +0 -4
  892. package/browser/esm2022/lib/typeorm/subscriber/event/SoftRemoveEvent.mjs +0 -4
  893. package/browser/esm2022/lib/typeorm/subscriber/event/TransactionCommitEvent.mjs +0 -4
  894. package/browser/esm2022/lib/typeorm/subscriber/event/TransactionRollbackEvent.mjs +0 -4
  895. package/browser/esm2022/lib/typeorm/subscriber/event/TransactionStartEvent.mjs +0 -4
  896. package/browser/esm2022/lib/typeorm/subscriber/event/UpdateEvent.mjs +0 -4
  897. package/browser/esm2022/lib/typeorm/util/ApplyValueTransformers.mjs +0 -22
  898. package/browser/esm2022/lib/typeorm/util/DateUtils.mjs +0 -216
  899. package/browser/esm2022/lib/typeorm/util/DepGraph.mjs +0 -222
  900. package/browser/esm2022/lib/typeorm/util/DirectoryExportedClassesLoader.mjs +0 -76
  901. package/browser/esm2022/lib/typeorm/util/ImportUtils.mjs +0 -86
  902. package/browser/esm2022/lib/typeorm/util/InstanceChecker.mjs +0 -114
  903. package/browser/esm2022/lib/typeorm/util/ObjectUtils.mjs +0 -38
  904. package/browser/esm2022/lib/typeorm/util/OrmUtils.mjs +0 -310
  905. package/browser/esm2022/lib/typeorm/util/PathUtils.mjs +0 -38
  906. package/browser/esm2022/lib/typeorm/util/RandomGenerator.mjs +0 -150
  907. package/browser/esm2022/lib/typeorm/util/StringUtils.mjs +0 -108
  908. package/browser/esm2022/lib/typeorm/util/TreeRepositoryUtils.mjs +0 -53
  909. package/browser/esm2022/lib/typeorm/util/VersionUtils.mjs +0 -17
  910. package/browser/esm2022/lib/typeorm/util/escapeRegExp.mjs +0 -4
  911. package/browser/esm2022/public-api.mjs +0 -2
  912. package/browser/esm2022/taon-typeorm.mjs +0 -5
  913. package/client/esm2022/lib/index.mjs +0 -4
  914. package/client/esm2022/lib/typeorm/cache/DbQueryResultCache.mjs +0 -251
  915. package/client/esm2022/lib/typeorm/cache/QueryResultCache.mjs +0 -4
  916. package/client/esm2022/lib/typeorm/cache/QueryResultCacheFactory.mjs +0 -33
  917. package/client/esm2022/lib/typeorm/cache/QueryResultCacheOptions.mjs +0 -4
  918. package/client/esm2022/lib/typeorm/cache/RedisQueryResultCache.mjs +0 -185
  919. package/client/esm2022/lib/typeorm/common/DeepPartial.mjs +0 -3
  920. package/client/esm2022/lib/typeorm/common/EntityTarget.mjs +0 -3
  921. package/client/esm2022/lib/typeorm/common/MixedList.mjs +0 -3
  922. package/client/esm2022/lib/typeorm/common/ObjectLiteral.mjs +0 -4
  923. package/client/esm2022/lib/typeorm/common/ObjectType.mjs +0 -3
  924. package/client/esm2022/lib/typeorm/common/RelationType.mjs +0 -3
  925. package/client/esm2022/lib/typeorm/connection/Connection.mjs +0 -13
  926. package/client/esm2022/lib/typeorm/connection/ConnectionManager.mjs +0 -57
  927. package/client/esm2022/lib/typeorm/connection/ConnectionMetadataBuilder.mjs +0 -63
  928. package/client/esm2022/lib/typeorm/connection/ConnectionOptions.mjs +0 -3
  929. package/client/esm2022/lib/typeorm/connection/ConnectionOptionsReader.mjs +0 -237
  930. package/client/esm2022/lib/typeorm/constants.mjs +0 -4
  931. package/client/esm2022/lib/typeorm/container.mjs +0 -57
  932. package/client/esm2022/lib/typeorm/data-source/BaseDataSourceOptions.mjs +0 -4
  933. package/client/esm2022/lib/typeorm/data-source/DataSource.mjs +0 -458
  934. package/client/esm2022/lib/typeorm/data-source/DataSourceOptions.mjs +0 -11
  935. package/client/esm2022/lib/typeorm/data-source/index.mjs +0 -4
  936. package/client/esm2022/lib/typeorm/decorator/Check.mjs +0 -25
  937. package/client/esm2022/lib/typeorm/decorator/EntityRepository.mjs +0 -19
  938. package/client/esm2022/lib/typeorm/decorator/Exclusion.mjs +0 -25
  939. package/client/esm2022/lib/typeorm/decorator/Generated.mjs +0 -22
  940. package/client/esm2022/lib/typeorm/decorator/Index.mjs +0 -52
  941. package/client/esm2022/lib/typeorm/decorator/Unique.mjs +0 -48
  942. package/client/esm2022/lib/typeorm/decorator/columns/Column.mjs +0 -67
  943. package/client/esm2022/lib/typeorm/decorator/columns/CreateDateColumn.mjs +0 -19
  944. package/client/esm2022/lib/typeorm/decorator/columns/DeleteDateColumn.mjs +0 -18
  945. package/client/esm2022/lib/typeorm/decorator/columns/ObjectIdColumn.mjs +0 -23
  946. package/client/esm2022/lib/typeorm/decorator/columns/PrimaryColumn.mjs +0 -54
  947. package/client/esm2022/lib/typeorm/decorator/columns/PrimaryGeneratedColumn.mjs +0 -52
  948. package/client/esm2022/lib/typeorm/decorator/columns/UpdateDateColumn.mjs +0 -18
  949. package/client/esm2022/lib/typeorm/decorator/columns/VersionColumn.mjs +0 -19
  950. package/client/esm2022/lib/typeorm/decorator/columns/ViewColumn.mjs +0 -17
  951. package/client/esm2022/lib/typeorm/decorator/columns/VirtualColumn.mjs +0 -41
  952. package/client/esm2022/lib/typeorm/decorator/entity/ChildEntity.mjs +0 -21
  953. package/client/esm2022/lib/typeorm/decorator/entity/Entity.mjs +0 -28
  954. package/client/esm2022/lib/typeorm/decorator/entity/TableInheritance.mjs +0 -20
  955. package/client/esm2022/lib/typeorm/decorator/entity-view/ViewEntity.mjs +0 -30
  956. package/client/esm2022/lib/typeorm/decorator/listeners/AfterInsert.mjs +0 -17
  957. package/client/esm2022/lib/typeorm/decorator/listeners/AfterLoad.mjs +0 -17
  958. package/client/esm2022/lib/typeorm/decorator/listeners/AfterRecover.mjs +0 -17
  959. package/client/esm2022/lib/typeorm/decorator/listeners/AfterRemove.mjs +0 -17
  960. package/client/esm2022/lib/typeorm/decorator/listeners/AfterSoftRemove.mjs +0 -17
  961. package/client/esm2022/lib/typeorm/decorator/listeners/AfterUpdate.mjs +0 -17
  962. package/client/esm2022/lib/typeorm/decorator/listeners/BeforeInsert.mjs +0 -17
  963. package/client/esm2022/lib/typeorm/decorator/listeners/BeforeRecover.mjs +0 -17
  964. package/client/esm2022/lib/typeorm/decorator/listeners/BeforeRemove.mjs +0 -17
  965. package/client/esm2022/lib/typeorm/decorator/listeners/BeforeSoftRemove.mjs +0 -17
  966. package/client/esm2022/lib/typeorm/decorator/listeners/BeforeUpdate.mjs +0 -17
  967. package/client/esm2022/lib/typeorm/decorator/listeners/EventSubscriber.mjs +0 -15
  968. package/client/esm2022/lib/typeorm/decorator/options/ColumnCommonOptions.mjs +0 -4
  969. package/client/esm2022/lib/typeorm/decorator/options/ColumnEmbeddedOptions.mjs +0 -4
  970. package/client/esm2022/lib/typeorm/decorator/options/ColumnEnumOptions.mjs +0 -4
  971. package/client/esm2022/lib/typeorm/decorator/options/ColumnHstoreOptions.mjs +0 -4
  972. package/client/esm2022/lib/typeorm/decorator/options/ColumnNumericOptions.mjs +0 -4
  973. package/client/esm2022/lib/typeorm/decorator/options/ColumnOptions.mjs +0 -4
  974. package/client/esm2022/lib/typeorm/decorator/options/ColumnWithLengthOptions.mjs +0 -4
  975. package/client/esm2022/lib/typeorm/decorator/options/ColumnWithWidthOptions.mjs +0 -4
  976. package/client/esm2022/lib/typeorm/decorator/options/EntityOptions.mjs +0 -4
  977. package/client/esm2022/lib/typeorm/decorator/options/IndexOptions.mjs +0 -4
  978. package/client/esm2022/lib/typeorm/decorator/options/JoinColumnOptions.mjs +0 -4
  979. package/client/esm2022/lib/typeorm/decorator/options/JoinTableMultipleColumnsOptions.mjs +0 -4
  980. package/client/esm2022/lib/typeorm/decorator/options/JoinTableOptions.mjs +0 -4
  981. package/client/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnIdentityOptions.mjs +0 -4
  982. package/client/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnNumericOptions.mjs +0 -4
  983. package/client/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnUUIDOptions.mjs +0 -4
  984. package/client/esm2022/lib/typeorm/decorator/options/RelationOptions.mjs +0 -4
  985. package/client/esm2022/lib/typeorm/decorator/options/SpatialColumnOptions.mjs +0 -4
  986. package/client/esm2022/lib/typeorm/decorator/options/UniqueOptions.mjs +0 -4
  987. package/client/esm2022/lib/typeorm/decorator/options/ValueTransformer.mjs +0 -4
  988. package/client/esm2022/lib/typeorm/decorator/options/ViewColumnOptions.mjs +0 -4
  989. package/client/esm2022/lib/typeorm/decorator/options/ViewEntityOptions.mjs +0 -4
  990. package/client/esm2022/lib/typeorm/decorator/options/VirtualColumnOptions.mjs +0 -4
  991. package/client/esm2022/lib/typeorm/decorator/relations/JoinColumn.mjs +0 -25
  992. package/client/esm2022/lib/typeorm/decorator/relations/JoinTable.mjs +0 -31
  993. package/client/esm2022/lib/typeorm/decorator/relations/ManyToMany.mjs +0 -40
  994. package/client/esm2022/lib/typeorm/decorator/relations/ManyToOne.mjs +0 -40
  995. package/client/esm2022/lib/typeorm/decorator/relations/OneToMany.mjs +0 -32
  996. package/client/esm2022/lib/typeorm/decorator/relations/OneToOne.mjs +0 -39
  997. package/client/esm2022/lib/typeorm/decorator/relations/RelationCount.mjs +0 -20
  998. package/client/esm2022/lib/typeorm/decorator/relations/RelationId.mjs +0 -20
  999. package/client/esm2022/lib/typeorm/decorator/tree/Tree.mjs +0 -19
  1000. package/client/esm2022/lib/typeorm/decorator/tree/TreeChildren.mjs +0 -34
  1001. package/client/esm2022/lib/typeorm/decorator/tree/TreeLevelColumn.mjs +0 -17
  1002. package/client/esm2022/lib/typeorm/decorator/tree/TreeParent.mjs +0 -34
  1003. package/client/esm2022/lib/typeorm/driver/Driver.mjs +0 -4
  1004. package/client/esm2022/lib/typeorm/driver/DriverFactory.mjs +0 -99
  1005. package/client/esm2022/lib/typeorm/driver/DriverUtils.mjs +0 -213
  1006. package/client/esm2022/lib/typeorm/driver/Query.mjs +0 -13
  1007. package/client/esm2022/lib/typeorm/driver/SqlInMemory.mjs +0 -12
  1008. package/client/esm2022/lib/typeorm/driver/cordova/CordovaConnectionOptions.mjs +0 -4
  1009. package/client/esm2022/lib/typeorm/driver/cordova/CordovaDriver.mjs +0 -63
  1010. package/client/esm2022/lib/typeorm/driver/cordova/CordovaQueryRunner.mjs +0 -152
  1011. package/client/esm2022/lib/typeorm/driver/mongodb/typings.mjs +0 -6516
  1012. package/client/esm2022/lib/typeorm/driver/nativescript/NativescriptConnectionOptions.mjs +0 -4
  1013. package/client/esm2022/lib/typeorm/driver/nativescript/NativescriptDriver.mjs +0 -82
  1014. package/client/esm2022/lib/typeorm/driver/nativescript/NativescriptQueryRunner.mjs +0 -82
  1015. package/client/esm2022/lib/typeorm/driver/react-native/ReactNativeConnectionOptions.mjs +0 -4
  1016. package/client/esm2022/lib/typeorm/driver/react-native/ReactNativeDriver.mjs +0 -69
  1017. package/client/esm2022/lib/typeorm/driver/react-native/ReactNativeQueryRunner.mjs +0 -81
  1018. package/client/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteDriver.mjs +0 -582
  1019. package/client/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteQueryRunner.mjs +0 -1421
  1020. package/client/esm2022/lib/typeorm/driver/sqljs/SqljsConnectionOptions.mjs +0 -4
  1021. package/client/esm2022/lib/typeorm/driver/sqljs/SqljsDriver.mjs +0 -249
  1022. package/client/esm2022/lib/typeorm/driver/sqljs/SqljsQueryRunner.mjs +0 -107
  1023. package/client/esm2022/lib/typeorm/driver/types/ColumnTypes.mjs +0 -3
  1024. package/client/esm2022/lib/typeorm/driver/types/CteCapabilities.mjs +0 -4
  1025. package/client/esm2022/lib/typeorm/driver/types/DataTypeDefaults.mjs +0 -4
  1026. package/client/esm2022/lib/typeorm/driver/types/DatabaseType.mjs +0 -3
  1027. package/client/esm2022/lib/typeorm/driver/types/IsolationLevel.mjs +0 -3
  1028. package/client/esm2022/lib/typeorm/driver/types/MappedColumnTypes.mjs +0 -4
  1029. package/client/esm2022/lib/typeorm/driver/types/MetadataTableType.mjs +0 -9
  1030. package/client/esm2022/lib/typeorm/driver/types/ReplicationMode.mjs +0 -3
  1031. package/client/esm2022/lib/typeorm/driver/types/UpsertType.mjs +0 -3
  1032. package/client/esm2022/lib/typeorm/entity-manager/EntityManager.mjs +0 -743
  1033. package/client/esm2022/lib/typeorm/entity-manager/EntityManagerFactory.mjs +0 -23
  1034. package/client/esm2022/lib/typeorm/entity-manager/SqljsEntityManager.mjs +0 -35
  1035. package/client/esm2022/lib/typeorm/entity-schema/EntitySchema.mjs +0 -12
  1036. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaCheckOptions.mjs +0 -4
  1037. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaColumnOptions.mjs +0 -4
  1038. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedColumnOptions.mjs +0 -5
  1039. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedError.mjs +0 -15
  1040. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaExclusionOptions.mjs +0 -4
  1041. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaIndexOptions.mjs +0 -4
  1042. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaOptions.mjs +0 -8
  1043. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationIdOptions.mjs +0 -4
  1044. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationOptions.mjs +0 -4
  1045. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaTransformer.mjs +0 -268
  1046. package/client/esm2022/lib/typeorm/entity-schema/EntitySchemaUniqueOptions.mjs +0 -4
  1047. package/client/esm2022/lib/typeorm/error/AlreadyHasActiveConnectionError.mjs +0 -13
  1048. package/client/esm2022/lib/typeorm/error/CannotAttachTreeChildrenEntityError.mjs +0 -13
  1049. package/client/esm2022/lib/typeorm/error/CannotConnectAlreadyConnectedError.mjs +0 -12
  1050. package/client/esm2022/lib/typeorm/error/CannotCreateEntityIdMapError.mjs +0 -18
  1051. package/client/esm2022/lib/typeorm/error/CannotDetermineEntityError.mjs +0 -13
  1052. package/client/esm2022/lib/typeorm/error/CannotExecuteNotConnectedError.mjs +0 -12
  1053. package/client/esm2022/lib/typeorm/error/CannotGetEntityManagerNotConnectedError.mjs +0 -12
  1054. package/client/esm2022/lib/typeorm/error/CannotReflectMethodParameterTypeError.mjs +0 -15
  1055. package/client/esm2022/lib/typeorm/error/CircularRelationsError.mjs +0 -13
  1056. package/client/esm2022/lib/typeorm/error/ColumnTypeUndefinedError.mjs +0 -16
  1057. package/client/esm2022/lib/typeorm/error/ConnectionIsNotSetError.mjs +0 -12
  1058. package/client/esm2022/lib/typeorm/error/ConnectionNotFoundError.mjs +0 -12
  1059. package/client/esm2022/lib/typeorm/error/CustomRepositoryCannotInheritRepositoryError.mjs +0 -15
  1060. package/client/esm2022/lib/typeorm/error/CustomRepositoryDoesNotHaveEntityError.mjs +0 -15
  1061. package/client/esm2022/lib/typeorm/error/CustomRepositoryNotFoundError.mjs +0 -15
  1062. package/client/esm2022/lib/typeorm/error/DataTypeNotSupportedError.mjs +0 -11
  1063. package/client/esm2022/lib/typeorm/error/DriverOptionNotSetError.mjs +0 -13
  1064. package/client/esm2022/lib/typeorm/error/DriverPackageNotInstalledError.mjs +0 -13
  1065. package/client/esm2022/lib/typeorm/error/EntityMetadataNotFoundError.mjs +0 -26
  1066. package/client/esm2022/lib/typeorm/error/EntityNotFoundError.mjs +0 -37
  1067. package/client/esm2022/lib/typeorm/error/EntityPropertyNotFoundError.mjs +0 -14
  1068. package/client/esm2022/lib/typeorm/error/FindRelationsNotFoundError.mjs +0 -20
  1069. package/client/esm2022/lib/typeorm/error/InitializedRelationError.mjs +0 -17
  1070. package/client/esm2022/lib/typeorm/error/InsertValuesMissingError.mjs +0 -13
  1071. package/client/esm2022/lib/typeorm/error/LimitOnUpdateNotSupportedError.mjs +0 -12
  1072. package/client/esm2022/lib/typeorm/error/LockNotSupportedOnGivenDriverError.mjs +0 -12
  1073. package/client/esm2022/lib/typeorm/error/MetadataAlreadyExistsError.mjs +0 -15
  1074. package/client/esm2022/lib/typeorm/error/MetadataWithSuchNameAlreadyExistsError.mjs +0 -13
  1075. package/client/esm2022/lib/typeorm/error/MissingDeleteDateColumnError.mjs +0 -9
  1076. package/client/esm2022/lib/typeorm/error/MissingDriverError.mjs +0 -13
  1077. package/client/esm2022/lib/typeorm/error/MissingJoinColumnError.mjs +0 -20
  1078. package/client/esm2022/lib/typeorm/error/MissingJoinTableError.mjs +0 -20
  1079. package/client/esm2022/lib/typeorm/error/MissingPrimaryColumnError.mjs +0 -10
  1080. package/client/esm2022/lib/typeorm/error/MustBeEntityError.mjs +0 -12
  1081. package/client/esm2022/lib/typeorm/error/NamingStrategyNotFoundError.mjs +0 -18
  1082. package/client/esm2022/lib/typeorm/error/NestedSetMultipleRootError.mjs +0 -9
  1083. package/client/esm2022/lib/typeorm/error/NoConnectionForRepositoryError.mjs +0 -13
  1084. package/client/esm2022/lib/typeorm/error/NoConnectionOptionError.mjs +0 -13
  1085. package/client/esm2022/lib/typeorm/error/NoNeedToReleaseEntityManagerError.mjs +0 -14
  1086. package/client/esm2022/lib/typeorm/error/NoVersionOrUpdateDateColumnError.mjs +0 -12
  1087. package/client/esm2022/lib/typeorm/error/OffsetWithoutLimitNotSupportedError.mjs +0 -14
  1088. package/client/esm2022/lib/typeorm/error/OptimisticLockCanNotBeUsedError.mjs +0 -12
  1089. package/client/esm2022/lib/typeorm/error/OptimisticLockVersionMismatchError.mjs +0 -12
  1090. package/client/esm2022/lib/typeorm/error/PersistedEntityNotFoundError.mjs +0 -12
  1091. package/client/esm2022/lib/typeorm/error/PessimisticLockTransactionRequiredError.mjs +0 -12
  1092. package/client/esm2022/lib/typeorm/error/PrimaryColumnCannotBeNullableError.mjs +0 -10
  1093. package/client/esm2022/lib/typeorm/error/QueryFailedError.mjs +0 -27
  1094. package/client/esm2022/lib/typeorm/error/QueryRunnerAlreadyReleasedError.mjs +0 -9
  1095. package/client/esm2022/lib/typeorm/error/QueryRunnerProviderAlreadyReleasedError.mjs +0 -13
  1096. package/client/esm2022/lib/typeorm/error/RepositoryNotTreeError.mjs +0 -29
  1097. package/client/esm2022/lib/typeorm/error/ReturningStatementNotSupportedError.mjs +0 -13
  1098. package/client/esm2022/lib/typeorm/error/SubjectRemovedAndUpdatedError.mjs +0 -13
  1099. package/client/esm2022/lib/typeorm/error/SubjectWithoutIdentifierError.mjs +0 -14
  1100. package/client/esm2022/lib/typeorm/error/TransactionAlreadyStartedError.mjs +0 -12
  1101. package/client/esm2022/lib/typeorm/error/TransactionNotStartedError.mjs +0 -12
  1102. package/client/esm2022/lib/typeorm/error/TreeRepositoryNotSupportedError.mjs +0 -9
  1103. package/client/esm2022/lib/typeorm/error/TypeORMError.mjs +0 -18
  1104. package/client/esm2022/lib/typeorm/error/UpdateValuesMissingError.mjs +0 -9
  1105. package/client/esm2022/lib/typeorm/error/UsingJoinColumnIsNotAllowedError.mjs +0 -10
  1106. package/client/esm2022/lib/typeorm/error/UsingJoinColumnOnlyOnOneSideAllowedError.mjs +0 -11
  1107. package/client/esm2022/lib/typeorm/error/UsingJoinTableIsNotAllowedError.mjs +0 -11
  1108. package/client/esm2022/lib/typeorm/error/UsingJoinTableOnlyOnOneSideAllowedError.mjs +0 -11
  1109. package/client/esm2022/lib/typeorm/error/index.mjs +0 -63
  1110. package/client/esm2022/lib/typeorm/find-options/EqualOperator.mjs +0 -10
  1111. package/client/esm2022/lib/typeorm/find-options/FindManyOptions.mjs +0 -4
  1112. package/client/esm2022/lib/typeorm/find-options/FindOneOptions.mjs +0 -4
  1113. package/client/esm2022/lib/typeorm/find-options/FindOperator.mjs +0 -74
  1114. package/client/esm2022/lib/typeorm/find-options/FindOperatorType.mjs +0 -3
  1115. package/client/esm2022/lib/typeorm/find-options/FindOptionsOrder.mjs +0 -3
  1116. package/client/esm2022/lib/typeorm/find-options/FindOptionsRelations.mjs +0 -3
  1117. package/client/esm2022/lib/typeorm/find-options/FindOptionsSelect.mjs +0 -5
  1118. package/client/esm2022/lib/typeorm/find-options/FindOptionsUtils.mjs +0 -293
  1119. package/client/esm2022/lib/typeorm/find-options/FindOptionsWhere.mjs +0 -3
  1120. package/client/esm2022/lib/typeorm/find-options/FindTreeOptions.mjs +0 -4
  1121. package/client/esm2022/lib/typeorm/find-options/JoinOptions.mjs +0 -4
  1122. package/client/esm2022/lib/typeorm/find-options/OrderByCondition.mjs +0 -3
  1123. package/client/esm2022/lib/typeorm/find-options/operator/Any.mjs +0 -11
  1124. package/client/esm2022/lib/typeorm/find-options/operator/ArrayContainedBy.mjs +0 -11
  1125. package/client/esm2022/lib/typeorm/find-options/operator/ArrayContains.mjs +0 -11
  1126. package/client/esm2022/lib/typeorm/find-options/operator/ArrayOverlap.mjs +0 -11
  1127. package/client/esm2022/lib/typeorm/find-options/operator/Between.mjs +0 -11
  1128. package/client/esm2022/lib/typeorm/find-options/operator/Equal.mjs +0 -15
  1129. package/client/esm2022/lib/typeorm/find-options/operator/ILike.mjs +0 -11
  1130. package/client/esm2022/lib/typeorm/find-options/operator/In.mjs +0 -11
  1131. package/client/esm2022/lib/typeorm/find-options/operator/IsNull.mjs +0 -11
  1132. package/client/esm2022/lib/typeorm/find-options/operator/LessThan.mjs +0 -11
  1133. package/client/esm2022/lib/typeorm/find-options/operator/LessThanOrEqual.mjs +0 -11
  1134. package/client/esm2022/lib/typeorm/find-options/operator/Like.mjs +0 -11
  1135. package/client/esm2022/lib/typeorm/find-options/operator/MoreThan.mjs +0 -11
  1136. package/client/esm2022/lib/typeorm/find-options/operator/MoreThanOrEqual.mjs +0 -11
  1137. package/client/esm2022/lib/typeorm/find-options/operator/Not.mjs +0 -12
  1138. package/client/esm2022/lib/typeorm/find-options/operator/Raw.mjs +0 -10
  1139. package/client/esm2022/lib/typeorm/globals.mjs +0 -165
  1140. package/client/esm2022/lib/typeorm/index.mjs +0 -157
  1141. package/client/esm2022/lib/typeorm/logger/AdvancedConsoleLogger.mjs +0 -109
  1142. package/client/esm2022/lib/typeorm/logger/DebugLogger.mjs +0 -94
  1143. package/client/esm2022/lib/typeorm/logger/Logger.mjs +0 -4
  1144. package/client/esm2022/lib/typeorm/logger/LoggerFactory.mjs +0 -36
  1145. package/client/esm2022/lib/typeorm/logger/LoggerOptions.mjs +0 -3
  1146. package/client/esm2022/lib/typeorm/logger/SimpleConsoleLogger.mjs +0 -108
  1147. package/client/esm2022/lib/typeorm/metadata/CheckMetadata.mjs +0 -26
  1148. package/client/esm2022/lib/typeorm/metadata/ColumnMetadata.mjs +0 -553
  1149. package/client/esm2022/lib/typeorm/metadata/EmbeddedMetadata.mjs +0 -206
  1150. package/client/esm2022/lib/typeorm/metadata/EntityListenerMetadata.mjs +0 -52
  1151. package/client/esm2022/lib/typeorm/metadata/EntityMetadata.mjs +0 -636
  1152. package/client/esm2022/lib/typeorm/metadata/ExclusionMetadata.mjs +0 -26
  1153. package/client/esm2022/lib/typeorm/metadata/ForeignKeyMetadata.mjs +0 -48
  1154. package/client/esm2022/lib/typeorm/metadata/IndexMetadata.mjs +0 -131
  1155. package/client/esm2022/lib/typeorm/metadata/RelationCountMetadata.mjs +0 -30
  1156. package/client/esm2022/lib/typeorm/metadata/RelationIdMetadata.mjs +0 -50
  1157. package/client/esm2022/lib/typeorm/metadata/RelationMetadata.mjs +0 -398
  1158. package/client/esm2022/lib/typeorm/metadata/UniqueMetadata.mjs +0 -90
  1159. package/client/esm2022/lib/typeorm/metadata/types/ClosureTreeOptions.mjs +0 -4
  1160. package/client/esm2022/lib/typeorm/metadata/types/DeferrableType.mjs +0 -3
  1161. package/client/esm2022/lib/typeorm/metadata/types/EventListenerTypes.mjs +0 -19
  1162. package/client/esm2022/lib/typeorm/metadata/types/OnDeleteType.mjs +0 -3
  1163. package/client/esm2022/lib/typeorm/metadata/types/OnUpdateType.mjs +0 -3
  1164. package/client/esm2022/lib/typeorm/metadata/types/PropertyTypeInFunction.mjs +0 -3
  1165. package/client/esm2022/lib/typeorm/metadata/types/RelationTypeInFunction.mjs +0 -3
  1166. package/client/esm2022/lib/typeorm/metadata/types/RelationTypes.mjs +0 -3
  1167. package/client/esm2022/lib/typeorm/metadata/types/TableTypes.mjs +0 -3
  1168. package/client/esm2022/lib/typeorm/metadata/types/TreeTypes.mjs +0 -3
  1169. package/client/esm2022/lib/typeorm/metadata-args/CheckMetadataArgs.mjs +0 -4
  1170. package/client/esm2022/lib/typeorm/metadata-args/ColumnMetadataArgs.mjs +0 -4
  1171. package/client/esm2022/lib/typeorm/metadata-args/DiscriminatorValueMetadataArgs.mjs +0 -4
  1172. package/client/esm2022/lib/typeorm/metadata-args/EmbeddedMetadataArgs.mjs +0 -4
  1173. package/client/esm2022/lib/typeorm/metadata-args/EntityListenerMetadataArgs.mjs +0 -4
  1174. package/client/esm2022/lib/typeorm/metadata-args/EntityRepositoryMetadataArgs.mjs +0 -4
  1175. package/client/esm2022/lib/typeorm/metadata-args/EntitySubscriberMetadataArgs.mjs +0 -4
  1176. package/client/esm2022/lib/typeorm/metadata-args/ExclusionMetadataArgs.mjs +0 -4
  1177. package/client/esm2022/lib/typeorm/metadata-args/GeneratedMetadataArgs.mjs +0 -4
  1178. package/client/esm2022/lib/typeorm/metadata-args/IndexMetadataArgs.mjs +0 -4
  1179. package/client/esm2022/lib/typeorm/metadata-args/InheritanceMetadataArgs.mjs +0 -4
  1180. package/client/esm2022/lib/typeorm/metadata-args/JoinColumnMetadataArgs.mjs +0 -4
  1181. package/client/esm2022/lib/typeorm/metadata-args/JoinTableMetadataArgs.mjs +0 -4
  1182. package/client/esm2022/lib/typeorm/metadata-args/MetadataArgsStorage.mjs +0 -217
  1183. package/client/esm2022/lib/typeorm/metadata-args/NamingStrategyMetadataArgs.mjs +0 -4
  1184. package/client/esm2022/lib/typeorm/metadata-args/RelationCountMetadataArgs.mjs +0 -4
  1185. package/client/esm2022/lib/typeorm/metadata-args/RelationIdMetadataArgs.mjs +0 -4
  1186. package/client/esm2022/lib/typeorm/metadata-args/RelationMetadataArgs.mjs +0 -4
  1187. package/client/esm2022/lib/typeorm/metadata-args/TableMetadataArgs.mjs +0 -4
  1188. package/client/esm2022/lib/typeorm/metadata-args/TransactionEntityMetadataArgs.mjs +0 -4
  1189. package/client/esm2022/lib/typeorm/metadata-args/TransactionRepositoryMetadataArgs.mjs +0 -4
  1190. package/client/esm2022/lib/typeorm/metadata-args/TreeMetadataArgs.mjs +0 -4
  1191. package/client/esm2022/lib/typeorm/metadata-args/UniqueMetadataArgs.mjs +0 -4
  1192. package/client/esm2022/lib/typeorm/metadata-args/types/ColumnMode.mjs +0 -3
  1193. package/client/esm2022/lib/typeorm/metadata-builder/ClosureJunctionEntityMetadataBuilder.mjs +0 -131
  1194. package/client/esm2022/lib/typeorm/metadata-builder/EntityMetadataBuilder.mjs +0 -678
  1195. package/client/esm2022/lib/typeorm/metadata-builder/EntityMetadataValidator.mjs +0 -183
  1196. package/client/esm2022/lib/typeorm/metadata-builder/JunctionEntityMetadataBuilder.mjs +0 -262
  1197. package/client/esm2022/lib/typeorm/metadata-builder/MetadataUtils.mjs +0 -41
  1198. package/client/esm2022/lib/typeorm/metadata-builder/RelationJoinColumnBuilder.mjs +0 -167
  1199. package/client/esm2022/lib/typeorm/migration/Migration.mjs +0 -14
  1200. package/client/esm2022/lib/typeorm/migration/MigrationExecutor.mjs +0 -454
  1201. package/client/esm2022/lib/typeorm/migration/MigrationInterface.mjs +0 -4
  1202. package/client/esm2022/lib/typeorm/naming-strategy/DefaultNamingStrategy.mjs +0 -140
  1203. package/client/esm2022/lib/typeorm/naming-strategy/NamingStrategyInterface.mjs +0 -4
  1204. package/client/esm2022/lib/typeorm/persistence/EntityPersistExecutor.mjs +0 -125
  1205. package/client/esm2022/lib/typeorm/persistence/Subject.mjs +0 -212
  1206. package/client/esm2022/lib/typeorm/persistence/SubjectChangeMap.mjs +0 -4
  1207. package/client/esm2022/lib/typeorm/persistence/SubjectChangedColumnsComputer.mjs +0 -164
  1208. package/client/esm2022/lib/typeorm/persistence/SubjectDatabaseEntityLoader.mjs +0 -125
  1209. package/client/esm2022/lib/typeorm/persistence/SubjectExecutor.mjs +0 -721
  1210. package/client/esm2022/lib/typeorm/persistence/SubjectTopoligicalSorter.mjs +0 -151
  1211. package/client/esm2022/lib/typeorm/persistence/subject-builder/CascadesSubjectBuilder.mjs +0 -84
  1212. package/client/esm2022/lib/typeorm/persistence/subject-builder/ManyToManySubjectBuilder.mjs +0 -153
  1213. package/client/esm2022/lib/typeorm/persistence/subject-builder/OneToManySubjectBuilder.mjs +0 -117
  1214. package/client/esm2022/lib/typeorm/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.mjs +0 -95
  1215. package/client/esm2022/lib/typeorm/persistence/tree/ClosureSubjectExecutor.mjs +0 -220
  1216. package/client/esm2022/lib/typeorm/persistence/tree/MaterializedPathSubjectExecutor.mjs +0 -97
  1217. package/client/esm2022/lib/typeorm/persistence/tree/NestedSetSubjectExecutor.mjs +0 -250
  1218. package/client/esm2022/lib/typeorm/platform/PlatformTools.mjs +0 -346
  1219. package/client/esm2022/lib/typeorm/query-builder/Alias.mjs +0 -26
  1220. package/client/esm2022/lib/typeorm/query-builder/Brackets.mjs +0 -16
  1221. package/client/esm2022/lib/typeorm/query-builder/DeleteQueryBuilder.mjs +0 -181
  1222. package/client/esm2022/lib/typeorm/query-builder/InsertOrUpdateOptions.mjs +0 -3
  1223. package/client/esm2022/lib/typeorm/query-builder/InsertQueryBuilder.mjs +0 -651
  1224. package/client/esm2022/lib/typeorm/query-builder/JoinAttribute.mjs +0 -153
  1225. package/client/esm2022/lib/typeorm/query-builder/NotBrackets.mjs +0 -14
  1226. package/client/esm2022/lib/typeorm/query-builder/QueryBuilder.mjs +0 -967
  1227. package/client/esm2022/lib/typeorm/query-builder/QueryBuilderCte.mjs +0 -4
  1228. package/client/esm2022/lib/typeorm/query-builder/QueryBuilderUtils.mjs +0 -22
  1229. package/client/esm2022/lib/typeorm/query-builder/QueryExpressionMap.mjs +0 -309
  1230. package/client/esm2022/lib/typeorm/query-builder/QueryPartialEntity.mjs +0 -3
  1231. package/client/esm2022/lib/typeorm/query-builder/RelationIdLoader.mjs +0 -452
  1232. package/client/esm2022/lib/typeorm/query-builder/RelationLoader.mjs +0 -262
  1233. package/client/esm2022/lib/typeorm/query-builder/RelationQueryBuilder.mjs +0 -147
  1234. package/client/esm2022/lib/typeorm/query-builder/RelationRemover.mjs +0 -130
  1235. package/client/esm2022/lib/typeorm/query-builder/RelationUpdater.mjs +0 -141
  1236. package/client/esm2022/lib/typeorm/query-builder/ReturningResultsEntityUpdator.mjs +0 -141
  1237. package/client/esm2022/lib/typeorm/query-builder/SelectQuery.mjs +0 -4
  1238. package/client/esm2022/lib/typeorm/query-builder/SelectQueryBuilder.mjs +0 -2278
  1239. package/client/esm2022/lib/typeorm/query-builder/SelectQueryBuilderOption.mjs +0 -3
  1240. package/client/esm2022/lib/typeorm/query-builder/SoftDeleteQueryBuilder.mjs +0 -348
  1241. package/client/esm2022/lib/typeorm/query-builder/UpdateQueryBuilder.mjs +0 -510
  1242. package/client/esm2022/lib/typeorm/query-builder/WhereClause.mjs +0 -3
  1243. package/client/esm2022/lib/typeorm/query-builder/WhereExpressionBuilder.mjs +0 -4
  1244. package/client/esm2022/lib/typeorm/query-builder/relation-count/RelationCountAttribute.mjs +0 -71
  1245. package/client/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoadResult.mjs +0 -4
  1246. package/client/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoader.mjs +0 -142
  1247. package/client/esm2022/lib/typeorm/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.mjs +0 -33
  1248. package/client/esm2022/lib/typeorm/query-builder/relation-id/RelationIdAttribute.mjs +0 -79
  1249. package/client/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoadResult.mjs +0 -4
  1250. package/client/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoader.mjs +0 -247
  1251. package/client/esm2022/lib/typeorm/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.mjs +0 -33
  1252. package/client/esm2022/lib/typeorm/query-builder/result/DeleteResult.mjs +0 -14
  1253. package/client/esm2022/lib/typeorm/query-builder/result/InsertResult.mjs +0 -25
  1254. package/client/esm2022/lib/typeorm/query-builder/result/UpdateResult.mjs +0 -25
  1255. package/client/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.mjs +0 -101
  1256. package/client/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToNewEntityTransformer.mjs +0 -67
  1257. package/client/esm2022/lib/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.mjs +0 -366
  1258. package/client/esm2022/lib/typeorm/query-runner/BaseQueryRunner.mjs +0 -392
  1259. package/client/esm2022/lib/typeorm/query-runner/QueryResult.mjs +0 -14
  1260. package/client/esm2022/lib/typeorm/query-runner/QueryRunner.mjs +0 -4
  1261. package/client/esm2022/lib/typeorm/repository/AbstractRepository.mjs +0 -80
  1262. package/client/esm2022/lib/typeorm/repository/BaseEntity.mjs +0 -283
  1263. package/client/esm2022/lib/typeorm/repository/FindTreesOptions.mjs +0 -4
  1264. package/client/esm2022/lib/typeorm/repository/RemoveOptions.mjs +0 -4
  1265. package/client/esm2022/lib/typeorm/repository/Repository.mjs +0 -275
  1266. package/client/esm2022/lib/typeorm/repository/SaveOptions.mjs +0 -4
  1267. package/client/esm2022/lib/typeorm/repository/TreeRepository.mjs +0 -254
  1268. package/client/esm2022/lib/typeorm/repository/UpsertOptions.mjs +0 -7
  1269. package/client/esm2022/lib/typeorm/schema-builder/RdbmsSchemaBuilder.mjs +0 -770
  1270. package/client/esm2022/lib/typeorm/schema-builder/SchemaBuilder.mjs +0 -4
  1271. package/client/esm2022/lib/typeorm/schema-builder/options/TableCheckOptions.mjs +0 -4
  1272. package/client/esm2022/lib/typeorm/schema-builder/options/TableColumnOptions.mjs +0 -4
  1273. package/client/esm2022/lib/typeorm/schema-builder/options/TableExclusionOptions.mjs +0 -4
  1274. package/client/esm2022/lib/typeorm/schema-builder/options/TableForeignKeyOptions.mjs +0 -4
  1275. package/client/esm2022/lib/typeorm/schema-builder/options/TableIndexOptions.mjs +0 -4
  1276. package/client/esm2022/lib/typeorm/schema-builder/options/TableOptions.mjs +0 -4
  1277. package/client/esm2022/lib/typeorm/schema-builder/options/TableUniqueOptions.mjs +0 -4
  1278. package/client/esm2022/lib/typeorm/schema-builder/options/ViewOptions.mjs +0 -4
  1279. package/client/esm2022/lib/typeorm/schema-builder/table/Table.mjs +0 -274
  1280. package/client/esm2022/lib/typeorm/schema-builder/table/TableCheck.mjs +0 -37
  1281. package/client/esm2022/lib/typeorm/schema-builder/table/TableColumn.mjs +0 -108
  1282. package/client/esm2022/lib/typeorm/schema-builder/table/TableExclusion.mjs +0 -31
  1283. package/client/esm2022/lib/typeorm/schema-builder/table/TableForeignKey.mjs +0 -60
  1284. package/client/esm2022/lib/typeorm/schema-builder/table/TableIndex.mjs +0 -53
  1285. package/client/esm2022/lib/typeorm/schema-builder/table/TableUnique.mjs +0 -38
  1286. package/client/esm2022/lib/typeorm/schema-builder/util/TableUtils.mjs +0 -38
  1287. package/client/esm2022/lib/typeorm/schema-builder/util/ViewUtils.mjs +0 -24
  1288. package/client/esm2022/lib/typeorm/schema-builder/view/View.mjs +0 -43
  1289. package/client/esm2022/lib/typeorm/subscriber/Broadcaster.mjs +0 -596
  1290. package/client/esm2022/lib/typeorm/subscriber/BroadcasterResult.mjs +0 -27
  1291. package/client/esm2022/lib/typeorm/subscriber/EntitySubscriberInterface.mjs +0 -4
  1292. package/client/esm2022/lib/typeorm/subscriber/event/InsertEvent.mjs +0 -4
  1293. package/client/esm2022/lib/typeorm/subscriber/event/LoadEvent.mjs +0 -4
  1294. package/client/esm2022/lib/typeorm/subscriber/event/RecoverEvent.mjs +0 -4
  1295. package/client/esm2022/lib/typeorm/subscriber/event/RemoveEvent.mjs +0 -4
  1296. package/client/esm2022/lib/typeorm/subscriber/event/SoftRemoveEvent.mjs +0 -4
  1297. package/client/esm2022/lib/typeorm/subscriber/event/TransactionCommitEvent.mjs +0 -4
  1298. package/client/esm2022/lib/typeorm/subscriber/event/TransactionRollbackEvent.mjs +0 -4
  1299. package/client/esm2022/lib/typeorm/subscriber/event/TransactionStartEvent.mjs +0 -4
  1300. package/client/esm2022/lib/typeorm/subscriber/event/UpdateEvent.mjs +0 -4
  1301. package/client/esm2022/lib/typeorm/util/ApplyValueTransformers.mjs +0 -22
  1302. package/client/esm2022/lib/typeorm/util/DateUtils.mjs +0 -216
  1303. package/client/esm2022/lib/typeorm/util/DepGraph.mjs +0 -222
  1304. package/client/esm2022/lib/typeorm/util/DirectoryExportedClassesLoader.mjs +0 -76
  1305. package/client/esm2022/lib/typeorm/util/ImportUtils.mjs +0 -86
  1306. package/client/esm2022/lib/typeorm/util/InstanceChecker.mjs +0 -114
  1307. package/client/esm2022/lib/typeorm/util/ObjectUtils.mjs +0 -38
  1308. package/client/esm2022/lib/typeorm/util/OrmUtils.mjs +0 -310
  1309. package/client/esm2022/lib/typeorm/util/PathUtils.mjs +0 -38
  1310. package/client/esm2022/lib/typeorm/util/RandomGenerator.mjs +0 -150
  1311. package/client/esm2022/lib/typeorm/util/StringUtils.mjs +0 -108
  1312. package/client/esm2022/lib/typeorm/util/TreeRepositoryUtils.mjs +0 -53
  1313. package/client/esm2022/lib/typeorm/util/VersionUtils.mjs +0 -17
  1314. package/client/esm2022/lib/typeorm/util/escapeRegExp.mjs +0 -4
  1315. package/client/esm2022/public-api.mjs +0 -2
  1316. package/client/esm2022/taon-typeorm.mjs +0 -5
  1317. package/taon.jsonc +0 -10
  1318. package/websql/esm2022/lib/index.mjs +0 -4
  1319. package/websql/esm2022/lib/typeorm/cache/DbQueryResultCache.mjs +0 -251
  1320. package/websql/esm2022/lib/typeorm/cache/QueryResultCache.mjs +0 -4
  1321. package/websql/esm2022/lib/typeorm/cache/QueryResultCacheFactory.mjs +0 -33
  1322. package/websql/esm2022/lib/typeorm/cache/QueryResultCacheOptions.mjs +0 -4
  1323. package/websql/esm2022/lib/typeorm/cache/RedisQueryResultCache.mjs +0 -185
  1324. package/websql/esm2022/lib/typeorm/common/DeepPartial.mjs +0 -3
  1325. package/websql/esm2022/lib/typeorm/common/EntityTarget.mjs +0 -3
  1326. package/websql/esm2022/lib/typeorm/common/MixedList.mjs +0 -3
  1327. package/websql/esm2022/lib/typeorm/common/ObjectLiteral.mjs +0 -4
  1328. package/websql/esm2022/lib/typeorm/common/ObjectType.mjs +0 -3
  1329. package/websql/esm2022/lib/typeorm/common/RelationType.mjs +0 -3
  1330. package/websql/esm2022/lib/typeorm/connection/Connection.mjs +0 -13
  1331. package/websql/esm2022/lib/typeorm/connection/ConnectionManager.mjs +0 -57
  1332. package/websql/esm2022/lib/typeorm/connection/ConnectionMetadataBuilder.mjs +0 -63
  1333. package/websql/esm2022/lib/typeorm/connection/ConnectionOptions.mjs +0 -3
  1334. package/websql/esm2022/lib/typeorm/connection/ConnectionOptionsReader.mjs +0 -237
  1335. package/websql/esm2022/lib/typeorm/constants.mjs +0 -4
  1336. package/websql/esm2022/lib/typeorm/container.mjs +0 -57
  1337. package/websql/esm2022/lib/typeorm/data-source/BaseDataSourceOptions.mjs +0 -4
  1338. package/websql/esm2022/lib/typeorm/data-source/DataSource.mjs +0 -458
  1339. package/websql/esm2022/lib/typeorm/data-source/DataSourceOptions.mjs +0 -11
  1340. package/websql/esm2022/lib/typeorm/data-source/index.mjs +0 -4
  1341. package/websql/esm2022/lib/typeorm/decorator/Check.mjs +0 -25
  1342. package/websql/esm2022/lib/typeorm/decorator/EntityRepository.mjs +0 -19
  1343. package/websql/esm2022/lib/typeorm/decorator/Exclusion.mjs +0 -25
  1344. package/websql/esm2022/lib/typeorm/decorator/Generated.mjs +0 -22
  1345. package/websql/esm2022/lib/typeorm/decorator/Index.mjs +0 -52
  1346. package/websql/esm2022/lib/typeorm/decorator/Unique.mjs +0 -48
  1347. package/websql/esm2022/lib/typeorm/decorator/columns/Column.mjs +0 -67
  1348. package/websql/esm2022/lib/typeorm/decorator/columns/CreateDateColumn.mjs +0 -19
  1349. package/websql/esm2022/lib/typeorm/decorator/columns/DeleteDateColumn.mjs +0 -18
  1350. package/websql/esm2022/lib/typeorm/decorator/columns/ObjectIdColumn.mjs +0 -23
  1351. package/websql/esm2022/lib/typeorm/decorator/columns/PrimaryColumn.mjs +0 -54
  1352. package/websql/esm2022/lib/typeorm/decorator/columns/PrimaryGeneratedColumn.mjs +0 -52
  1353. package/websql/esm2022/lib/typeorm/decorator/columns/UpdateDateColumn.mjs +0 -18
  1354. package/websql/esm2022/lib/typeorm/decorator/columns/VersionColumn.mjs +0 -19
  1355. package/websql/esm2022/lib/typeorm/decorator/columns/ViewColumn.mjs +0 -17
  1356. package/websql/esm2022/lib/typeorm/decorator/columns/VirtualColumn.mjs +0 -41
  1357. package/websql/esm2022/lib/typeorm/decorator/entity/ChildEntity.mjs +0 -21
  1358. package/websql/esm2022/lib/typeorm/decorator/entity/Entity.mjs +0 -28
  1359. package/websql/esm2022/lib/typeorm/decorator/entity/TableInheritance.mjs +0 -20
  1360. package/websql/esm2022/lib/typeorm/decorator/entity-view/ViewEntity.mjs +0 -30
  1361. package/websql/esm2022/lib/typeorm/decorator/listeners/AfterInsert.mjs +0 -17
  1362. package/websql/esm2022/lib/typeorm/decorator/listeners/AfterLoad.mjs +0 -17
  1363. package/websql/esm2022/lib/typeorm/decorator/listeners/AfterRecover.mjs +0 -17
  1364. package/websql/esm2022/lib/typeorm/decorator/listeners/AfterRemove.mjs +0 -17
  1365. package/websql/esm2022/lib/typeorm/decorator/listeners/AfterSoftRemove.mjs +0 -17
  1366. package/websql/esm2022/lib/typeorm/decorator/listeners/AfterUpdate.mjs +0 -17
  1367. package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeInsert.mjs +0 -17
  1368. package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeRecover.mjs +0 -17
  1369. package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeRemove.mjs +0 -17
  1370. package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeSoftRemove.mjs +0 -17
  1371. package/websql/esm2022/lib/typeorm/decorator/listeners/BeforeUpdate.mjs +0 -17
  1372. package/websql/esm2022/lib/typeorm/decorator/listeners/EventSubscriber.mjs +0 -15
  1373. package/websql/esm2022/lib/typeorm/decorator/options/ColumnCommonOptions.mjs +0 -4
  1374. package/websql/esm2022/lib/typeorm/decorator/options/ColumnEmbeddedOptions.mjs +0 -4
  1375. package/websql/esm2022/lib/typeorm/decorator/options/ColumnEnumOptions.mjs +0 -4
  1376. package/websql/esm2022/lib/typeorm/decorator/options/ColumnHstoreOptions.mjs +0 -4
  1377. package/websql/esm2022/lib/typeorm/decorator/options/ColumnNumericOptions.mjs +0 -4
  1378. package/websql/esm2022/lib/typeorm/decorator/options/ColumnOptions.mjs +0 -4
  1379. package/websql/esm2022/lib/typeorm/decorator/options/ColumnWithLengthOptions.mjs +0 -4
  1380. package/websql/esm2022/lib/typeorm/decorator/options/ColumnWithWidthOptions.mjs +0 -4
  1381. package/websql/esm2022/lib/typeorm/decorator/options/EntityOptions.mjs +0 -4
  1382. package/websql/esm2022/lib/typeorm/decorator/options/IndexOptions.mjs +0 -4
  1383. package/websql/esm2022/lib/typeorm/decorator/options/JoinColumnOptions.mjs +0 -4
  1384. package/websql/esm2022/lib/typeorm/decorator/options/JoinTableMultipleColumnsOptions.mjs +0 -4
  1385. package/websql/esm2022/lib/typeorm/decorator/options/JoinTableOptions.mjs +0 -4
  1386. package/websql/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnIdentityOptions.mjs +0 -4
  1387. package/websql/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnNumericOptions.mjs +0 -4
  1388. package/websql/esm2022/lib/typeorm/decorator/options/PrimaryGeneratedColumnUUIDOptions.mjs +0 -4
  1389. package/websql/esm2022/lib/typeorm/decorator/options/RelationOptions.mjs +0 -4
  1390. package/websql/esm2022/lib/typeorm/decorator/options/SpatialColumnOptions.mjs +0 -4
  1391. package/websql/esm2022/lib/typeorm/decorator/options/UniqueOptions.mjs +0 -4
  1392. package/websql/esm2022/lib/typeorm/decorator/options/ValueTransformer.mjs +0 -4
  1393. package/websql/esm2022/lib/typeorm/decorator/options/ViewColumnOptions.mjs +0 -4
  1394. package/websql/esm2022/lib/typeorm/decorator/options/ViewEntityOptions.mjs +0 -4
  1395. package/websql/esm2022/lib/typeorm/decorator/options/VirtualColumnOptions.mjs +0 -4
  1396. package/websql/esm2022/lib/typeorm/decorator/relations/JoinColumn.mjs +0 -25
  1397. package/websql/esm2022/lib/typeorm/decorator/relations/JoinTable.mjs +0 -31
  1398. package/websql/esm2022/lib/typeorm/decorator/relations/ManyToMany.mjs +0 -40
  1399. package/websql/esm2022/lib/typeorm/decorator/relations/ManyToOne.mjs +0 -40
  1400. package/websql/esm2022/lib/typeorm/decorator/relations/OneToMany.mjs +0 -32
  1401. package/websql/esm2022/lib/typeorm/decorator/relations/OneToOne.mjs +0 -39
  1402. package/websql/esm2022/lib/typeorm/decorator/relations/RelationCount.mjs +0 -20
  1403. package/websql/esm2022/lib/typeorm/decorator/relations/RelationId.mjs +0 -20
  1404. package/websql/esm2022/lib/typeorm/decorator/tree/Tree.mjs +0 -19
  1405. package/websql/esm2022/lib/typeorm/decorator/tree/TreeChildren.mjs +0 -34
  1406. package/websql/esm2022/lib/typeorm/decorator/tree/TreeLevelColumn.mjs +0 -17
  1407. package/websql/esm2022/lib/typeorm/decorator/tree/TreeParent.mjs +0 -34
  1408. package/websql/esm2022/lib/typeorm/driver/Driver.mjs +0 -4
  1409. package/websql/esm2022/lib/typeorm/driver/DriverFactory.mjs +0 -99
  1410. package/websql/esm2022/lib/typeorm/driver/DriverUtils.mjs +0 -213
  1411. package/websql/esm2022/lib/typeorm/driver/Query.mjs +0 -13
  1412. package/websql/esm2022/lib/typeorm/driver/SqlInMemory.mjs +0 -12
  1413. package/websql/esm2022/lib/typeorm/driver/cordova/CordovaConnectionOptions.mjs +0 -4
  1414. package/websql/esm2022/lib/typeorm/driver/cordova/CordovaDriver.mjs +0 -63
  1415. package/websql/esm2022/lib/typeorm/driver/cordova/CordovaQueryRunner.mjs +0 -152
  1416. package/websql/esm2022/lib/typeorm/driver/mongodb/typings.mjs +0 -6516
  1417. package/websql/esm2022/lib/typeorm/driver/nativescript/NativescriptConnectionOptions.mjs +0 -4
  1418. package/websql/esm2022/lib/typeorm/driver/nativescript/NativescriptDriver.mjs +0 -82
  1419. package/websql/esm2022/lib/typeorm/driver/nativescript/NativescriptQueryRunner.mjs +0 -82
  1420. package/websql/esm2022/lib/typeorm/driver/react-native/ReactNativeConnectionOptions.mjs +0 -4
  1421. package/websql/esm2022/lib/typeorm/driver/react-native/ReactNativeDriver.mjs +0 -69
  1422. package/websql/esm2022/lib/typeorm/driver/react-native/ReactNativeQueryRunner.mjs +0 -81
  1423. package/websql/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteDriver.mjs +0 -582
  1424. package/websql/esm2022/lib/typeorm/driver/sqlite-abstract/AbstractSqliteQueryRunner.mjs +0 -1421
  1425. package/websql/esm2022/lib/typeorm/driver/sqljs/SqljsConnectionOptions.mjs +0 -4
  1426. package/websql/esm2022/lib/typeorm/driver/sqljs/SqljsDriver.mjs +0 -249
  1427. package/websql/esm2022/lib/typeorm/driver/sqljs/SqljsQueryRunner.mjs +0 -107
  1428. package/websql/esm2022/lib/typeorm/driver/types/ColumnTypes.mjs +0 -3
  1429. package/websql/esm2022/lib/typeorm/driver/types/CteCapabilities.mjs +0 -4
  1430. package/websql/esm2022/lib/typeorm/driver/types/DataTypeDefaults.mjs +0 -4
  1431. package/websql/esm2022/lib/typeorm/driver/types/DatabaseType.mjs +0 -3
  1432. package/websql/esm2022/lib/typeorm/driver/types/IsolationLevel.mjs +0 -3
  1433. package/websql/esm2022/lib/typeorm/driver/types/MappedColumnTypes.mjs +0 -4
  1434. package/websql/esm2022/lib/typeorm/driver/types/MetadataTableType.mjs +0 -9
  1435. package/websql/esm2022/lib/typeorm/driver/types/ReplicationMode.mjs +0 -3
  1436. package/websql/esm2022/lib/typeorm/driver/types/UpsertType.mjs +0 -3
  1437. package/websql/esm2022/lib/typeorm/entity-manager/EntityManager.mjs +0 -743
  1438. package/websql/esm2022/lib/typeorm/entity-manager/EntityManagerFactory.mjs +0 -23
  1439. package/websql/esm2022/lib/typeorm/entity-manager/SqljsEntityManager.mjs +0 -35
  1440. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchema.mjs +0 -12
  1441. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaCheckOptions.mjs +0 -4
  1442. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaColumnOptions.mjs +0 -4
  1443. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedColumnOptions.mjs +0 -5
  1444. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaEmbeddedError.mjs +0 -15
  1445. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaExclusionOptions.mjs +0 -4
  1446. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaIndexOptions.mjs +0 -4
  1447. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaOptions.mjs +0 -8
  1448. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationIdOptions.mjs +0 -4
  1449. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaRelationOptions.mjs +0 -4
  1450. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaTransformer.mjs +0 -268
  1451. package/websql/esm2022/lib/typeorm/entity-schema/EntitySchemaUniqueOptions.mjs +0 -4
  1452. package/websql/esm2022/lib/typeorm/error/AlreadyHasActiveConnectionError.mjs +0 -13
  1453. package/websql/esm2022/lib/typeorm/error/CannotAttachTreeChildrenEntityError.mjs +0 -13
  1454. package/websql/esm2022/lib/typeorm/error/CannotConnectAlreadyConnectedError.mjs +0 -12
  1455. package/websql/esm2022/lib/typeorm/error/CannotCreateEntityIdMapError.mjs +0 -18
  1456. package/websql/esm2022/lib/typeorm/error/CannotDetermineEntityError.mjs +0 -13
  1457. package/websql/esm2022/lib/typeorm/error/CannotExecuteNotConnectedError.mjs +0 -12
  1458. package/websql/esm2022/lib/typeorm/error/CannotGetEntityManagerNotConnectedError.mjs +0 -12
  1459. package/websql/esm2022/lib/typeorm/error/CannotReflectMethodParameterTypeError.mjs +0 -15
  1460. package/websql/esm2022/lib/typeorm/error/CircularRelationsError.mjs +0 -13
  1461. package/websql/esm2022/lib/typeorm/error/ColumnTypeUndefinedError.mjs +0 -16
  1462. package/websql/esm2022/lib/typeorm/error/ConnectionIsNotSetError.mjs +0 -12
  1463. package/websql/esm2022/lib/typeorm/error/ConnectionNotFoundError.mjs +0 -12
  1464. package/websql/esm2022/lib/typeorm/error/CustomRepositoryCannotInheritRepositoryError.mjs +0 -15
  1465. package/websql/esm2022/lib/typeorm/error/CustomRepositoryDoesNotHaveEntityError.mjs +0 -15
  1466. package/websql/esm2022/lib/typeorm/error/CustomRepositoryNotFoundError.mjs +0 -15
  1467. package/websql/esm2022/lib/typeorm/error/DataTypeNotSupportedError.mjs +0 -11
  1468. package/websql/esm2022/lib/typeorm/error/DriverOptionNotSetError.mjs +0 -13
  1469. package/websql/esm2022/lib/typeorm/error/DriverPackageNotInstalledError.mjs +0 -13
  1470. package/websql/esm2022/lib/typeorm/error/EntityMetadataNotFoundError.mjs +0 -26
  1471. package/websql/esm2022/lib/typeorm/error/EntityNotFoundError.mjs +0 -37
  1472. package/websql/esm2022/lib/typeorm/error/EntityPropertyNotFoundError.mjs +0 -14
  1473. package/websql/esm2022/lib/typeorm/error/FindRelationsNotFoundError.mjs +0 -20
  1474. package/websql/esm2022/lib/typeorm/error/InitializedRelationError.mjs +0 -17
  1475. package/websql/esm2022/lib/typeorm/error/InsertValuesMissingError.mjs +0 -13
  1476. package/websql/esm2022/lib/typeorm/error/LimitOnUpdateNotSupportedError.mjs +0 -12
  1477. package/websql/esm2022/lib/typeorm/error/LockNotSupportedOnGivenDriverError.mjs +0 -12
  1478. package/websql/esm2022/lib/typeorm/error/MetadataAlreadyExistsError.mjs +0 -15
  1479. package/websql/esm2022/lib/typeorm/error/MetadataWithSuchNameAlreadyExistsError.mjs +0 -13
  1480. package/websql/esm2022/lib/typeorm/error/MissingDeleteDateColumnError.mjs +0 -9
  1481. package/websql/esm2022/lib/typeorm/error/MissingDriverError.mjs +0 -13
  1482. package/websql/esm2022/lib/typeorm/error/MissingJoinColumnError.mjs +0 -20
  1483. package/websql/esm2022/lib/typeorm/error/MissingJoinTableError.mjs +0 -20
  1484. package/websql/esm2022/lib/typeorm/error/MissingPrimaryColumnError.mjs +0 -10
  1485. package/websql/esm2022/lib/typeorm/error/MustBeEntityError.mjs +0 -12
  1486. package/websql/esm2022/lib/typeorm/error/NamingStrategyNotFoundError.mjs +0 -18
  1487. package/websql/esm2022/lib/typeorm/error/NestedSetMultipleRootError.mjs +0 -9
  1488. package/websql/esm2022/lib/typeorm/error/NoConnectionForRepositoryError.mjs +0 -13
  1489. package/websql/esm2022/lib/typeorm/error/NoConnectionOptionError.mjs +0 -13
  1490. package/websql/esm2022/lib/typeorm/error/NoNeedToReleaseEntityManagerError.mjs +0 -14
  1491. package/websql/esm2022/lib/typeorm/error/NoVersionOrUpdateDateColumnError.mjs +0 -12
  1492. package/websql/esm2022/lib/typeorm/error/OffsetWithoutLimitNotSupportedError.mjs +0 -14
  1493. package/websql/esm2022/lib/typeorm/error/OptimisticLockCanNotBeUsedError.mjs +0 -12
  1494. package/websql/esm2022/lib/typeorm/error/OptimisticLockVersionMismatchError.mjs +0 -12
  1495. package/websql/esm2022/lib/typeorm/error/PersistedEntityNotFoundError.mjs +0 -12
  1496. package/websql/esm2022/lib/typeorm/error/PessimisticLockTransactionRequiredError.mjs +0 -12
  1497. package/websql/esm2022/lib/typeorm/error/PrimaryColumnCannotBeNullableError.mjs +0 -10
  1498. package/websql/esm2022/lib/typeorm/error/QueryFailedError.mjs +0 -27
  1499. package/websql/esm2022/lib/typeorm/error/QueryRunnerAlreadyReleasedError.mjs +0 -9
  1500. package/websql/esm2022/lib/typeorm/error/QueryRunnerProviderAlreadyReleasedError.mjs +0 -13
  1501. package/websql/esm2022/lib/typeorm/error/RepositoryNotTreeError.mjs +0 -29
  1502. package/websql/esm2022/lib/typeorm/error/ReturningStatementNotSupportedError.mjs +0 -13
  1503. package/websql/esm2022/lib/typeorm/error/SubjectRemovedAndUpdatedError.mjs +0 -13
  1504. package/websql/esm2022/lib/typeorm/error/SubjectWithoutIdentifierError.mjs +0 -14
  1505. package/websql/esm2022/lib/typeorm/error/TransactionAlreadyStartedError.mjs +0 -12
  1506. package/websql/esm2022/lib/typeorm/error/TransactionNotStartedError.mjs +0 -12
  1507. package/websql/esm2022/lib/typeorm/error/TreeRepositoryNotSupportedError.mjs +0 -9
  1508. package/websql/esm2022/lib/typeorm/error/TypeORMError.mjs +0 -18
  1509. package/websql/esm2022/lib/typeorm/error/UpdateValuesMissingError.mjs +0 -9
  1510. package/websql/esm2022/lib/typeorm/error/UsingJoinColumnIsNotAllowedError.mjs +0 -10
  1511. package/websql/esm2022/lib/typeorm/error/UsingJoinColumnOnlyOnOneSideAllowedError.mjs +0 -11
  1512. package/websql/esm2022/lib/typeorm/error/UsingJoinTableIsNotAllowedError.mjs +0 -11
  1513. package/websql/esm2022/lib/typeorm/error/UsingJoinTableOnlyOnOneSideAllowedError.mjs +0 -11
  1514. package/websql/esm2022/lib/typeorm/error/index.mjs +0 -63
  1515. package/websql/esm2022/lib/typeorm/find-options/EqualOperator.mjs +0 -10
  1516. package/websql/esm2022/lib/typeorm/find-options/FindManyOptions.mjs +0 -4
  1517. package/websql/esm2022/lib/typeorm/find-options/FindOneOptions.mjs +0 -4
  1518. package/websql/esm2022/lib/typeorm/find-options/FindOperator.mjs +0 -74
  1519. package/websql/esm2022/lib/typeorm/find-options/FindOperatorType.mjs +0 -3
  1520. package/websql/esm2022/lib/typeorm/find-options/FindOptionsOrder.mjs +0 -3
  1521. package/websql/esm2022/lib/typeorm/find-options/FindOptionsRelations.mjs +0 -3
  1522. package/websql/esm2022/lib/typeorm/find-options/FindOptionsSelect.mjs +0 -5
  1523. package/websql/esm2022/lib/typeorm/find-options/FindOptionsUtils.mjs +0 -293
  1524. package/websql/esm2022/lib/typeorm/find-options/FindOptionsWhere.mjs +0 -3
  1525. package/websql/esm2022/lib/typeorm/find-options/FindTreeOptions.mjs +0 -4
  1526. package/websql/esm2022/lib/typeorm/find-options/JoinOptions.mjs +0 -4
  1527. package/websql/esm2022/lib/typeorm/find-options/OrderByCondition.mjs +0 -3
  1528. package/websql/esm2022/lib/typeorm/find-options/operator/Any.mjs +0 -11
  1529. package/websql/esm2022/lib/typeorm/find-options/operator/ArrayContainedBy.mjs +0 -11
  1530. package/websql/esm2022/lib/typeorm/find-options/operator/ArrayContains.mjs +0 -11
  1531. package/websql/esm2022/lib/typeorm/find-options/operator/ArrayOverlap.mjs +0 -11
  1532. package/websql/esm2022/lib/typeorm/find-options/operator/Between.mjs +0 -11
  1533. package/websql/esm2022/lib/typeorm/find-options/operator/Equal.mjs +0 -15
  1534. package/websql/esm2022/lib/typeorm/find-options/operator/ILike.mjs +0 -11
  1535. package/websql/esm2022/lib/typeorm/find-options/operator/In.mjs +0 -11
  1536. package/websql/esm2022/lib/typeorm/find-options/operator/IsNull.mjs +0 -11
  1537. package/websql/esm2022/lib/typeorm/find-options/operator/LessThan.mjs +0 -11
  1538. package/websql/esm2022/lib/typeorm/find-options/operator/LessThanOrEqual.mjs +0 -11
  1539. package/websql/esm2022/lib/typeorm/find-options/operator/Like.mjs +0 -11
  1540. package/websql/esm2022/lib/typeorm/find-options/operator/MoreThan.mjs +0 -11
  1541. package/websql/esm2022/lib/typeorm/find-options/operator/MoreThanOrEqual.mjs +0 -11
  1542. package/websql/esm2022/lib/typeorm/find-options/operator/Not.mjs +0 -12
  1543. package/websql/esm2022/lib/typeorm/find-options/operator/Raw.mjs +0 -10
  1544. package/websql/esm2022/lib/typeorm/globals.mjs +0 -165
  1545. package/websql/esm2022/lib/typeorm/index.mjs +0 -157
  1546. package/websql/esm2022/lib/typeorm/logger/AdvancedConsoleLogger.mjs +0 -109
  1547. package/websql/esm2022/lib/typeorm/logger/DebugLogger.mjs +0 -94
  1548. package/websql/esm2022/lib/typeorm/logger/Logger.mjs +0 -4
  1549. package/websql/esm2022/lib/typeorm/logger/LoggerFactory.mjs +0 -36
  1550. package/websql/esm2022/lib/typeorm/logger/LoggerOptions.mjs +0 -3
  1551. package/websql/esm2022/lib/typeorm/logger/SimpleConsoleLogger.mjs +0 -108
  1552. package/websql/esm2022/lib/typeorm/metadata/CheckMetadata.mjs +0 -26
  1553. package/websql/esm2022/lib/typeorm/metadata/ColumnMetadata.mjs +0 -553
  1554. package/websql/esm2022/lib/typeorm/metadata/EmbeddedMetadata.mjs +0 -206
  1555. package/websql/esm2022/lib/typeorm/metadata/EntityListenerMetadata.mjs +0 -52
  1556. package/websql/esm2022/lib/typeorm/metadata/EntityMetadata.mjs +0 -636
  1557. package/websql/esm2022/lib/typeorm/metadata/ExclusionMetadata.mjs +0 -26
  1558. package/websql/esm2022/lib/typeorm/metadata/ForeignKeyMetadata.mjs +0 -48
  1559. package/websql/esm2022/lib/typeorm/metadata/IndexMetadata.mjs +0 -131
  1560. package/websql/esm2022/lib/typeorm/metadata/RelationCountMetadata.mjs +0 -30
  1561. package/websql/esm2022/lib/typeorm/metadata/RelationIdMetadata.mjs +0 -50
  1562. package/websql/esm2022/lib/typeorm/metadata/RelationMetadata.mjs +0 -398
  1563. package/websql/esm2022/lib/typeorm/metadata/UniqueMetadata.mjs +0 -90
  1564. package/websql/esm2022/lib/typeorm/metadata/types/ClosureTreeOptions.mjs +0 -4
  1565. package/websql/esm2022/lib/typeorm/metadata/types/DeferrableType.mjs +0 -3
  1566. package/websql/esm2022/lib/typeorm/metadata/types/EventListenerTypes.mjs +0 -19
  1567. package/websql/esm2022/lib/typeorm/metadata/types/OnDeleteType.mjs +0 -3
  1568. package/websql/esm2022/lib/typeorm/metadata/types/OnUpdateType.mjs +0 -3
  1569. package/websql/esm2022/lib/typeorm/metadata/types/PropertyTypeInFunction.mjs +0 -3
  1570. package/websql/esm2022/lib/typeorm/metadata/types/RelationTypeInFunction.mjs +0 -3
  1571. package/websql/esm2022/lib/typeorm/metadata/types/RelationTypes.mjs +0 -3
  1572. package/websql/esm2022/lib/typeorm/metadata/types/TableTypes.mjs +0 -3
  1573. package/websql/esm2022/lib/typeorm/metadata/types/TreeTypes.mjs +0 -3
  1574. package/websql/esm2022/lib/typeorm/metadata-args/CheckMetadataArgs.mjs +0 -4
  1575. package/websql/esm2022/lib/typeorm/metadata-args/ColumnMetadataArgs.mjs +0 -4
  1576. package/websql/esm2022/lib/typeorm/metadata-args/DiscriminatorValueMetadataArgs.mjs +0 -4
  1577. package/websql/esm2022/lib/typeorm/metadata-args/EmbeddedMetadataArgs.mjs +0 -4
  1578. package/websql/esm2022/lib/typeorm/metadata-args/EntityListenerMetadataArgs.mjs +0 -4
  1579. package/websql/esm2022/lib/typeorm/metadata-args/EntityRepositoryMetadataArgs.mjs +0 -4
  1580. package/websql/esm2022/lib/typeorm/metadata-args/EntitySubscriberMetadataArgs.mjs +0 -4
  1581. package/websql/esm2022/lib/typeorm/metadata-args/ExclusionMetadataArgs.mjs +0 -4
  1582. package/websql/esm2022/lib/typeorm/metadata-args/GeneratedMetadataArgs.mjs +0 -4
  1583. package/websql/esm2022/lib/typeorm/metadata-args/IndexMetadataArgs.mjs +0 -4
  1584. package/websql/esm2022/lib/typeorm/metadata-args/InheritanceMetadataArgs.mjs +0 -4
  1585. package/websql/esm2022/lib/typeorm/metadata-args/JoinColumnMetadataArgs.mjs +0 -4
  1586. package/websql/esm2022/lib/typeorm/metadata-args/JoinTableMetadataArgs.mjs +0 -4
  1587. package/websql/esm2022/lib/typeorm/metadata-args/MetadataArgsStorage.mjs +0 -217
  1588. package/websql/esm2022/lib/typeorm/metadata-args/NamingStrategyMetadataArgs.mjs +0 -4
  1589. package/websql/esm2022/lib/typeorm/metadata-args/RelationCountMetadataArgs.mjs +0 -4
  1590. package/websql/esm2022/lib/typeorm/metadata-args/RelationIdMetadataArgs.mjs +0 -4
  1591. package/websql/esm2022/lib/typeorm/metadata-args/RelationMetadataArgs.mjs +0 -4
  1592. package/websql/esm2022/lib/typeorm/metadata-args/TableMetadataArgs.mjs +0 -4
  1593. package/websql/esm2022/lib/typeorm/metadata-args/TransactionEntityMetadataArgs.mjs +0 -4
  1594. package/websql/esm2022/lib/typeorm/metadata-args/TransactionRepositoryMetadataArgs.mjs +0 -4
  1595. package/websql/esm2022/lib/typeorm/metadata-args/TreeMetadataArgs.mjs +0 -4
  1596. package/websql/esm2022/lib/typeorm/metadata-args/UniqueMetadataArgs.mjs +0 -4
  1597. package/websql/esm2022/lib/typeorm/metadata-args/types/ColumnMode.mjs +0 -3
  1598. package/websql/esm2022/lib/typeorm/metadata-builder/ClosureJunctionEntityMetadataBuilder.mjs +0 -131
  1599. package/websql/esm2022/lib/typeorm/metadata-builder/EntityMetadataBuilder.mjs +0 -678
  1600. package/websql/esm2022/lib/typeorm/metadata-builder/EntityMetadataValidator.mjs +0 -183
  1601. package/websql/esm2022/lib/typeorm/metadata-builder/JunctionEntityMetadataBuilder.mjs +0 -262
  1602. package/websql/esm2022/lib/typeorm/metadata-builder/MetadataUtils.mjs +0 -41
  1603. package/websql/esm2022/lib/typeorm/metadata-builder/RelationJoinColumnBuilder.mjs +0 -167
  1604. package/websql/esm2022/lib/typeorm/migration/Migration.mjs +0 -14
  1605. package/websql/esm2022/lib/typeorm/migration/MigrationExecutor.mjs +0 -454
  1606. package/websql/esm2022/lib/typeorm/migration/MigrationInterface.mjs +0 -4
  1607. package/websql/esm2022/lib/typeorm/naming-strategy/DefaultNamingStrategy.mjs +0 -140
  1608. package/websql/esm2022/lib/typeorm/naming-strategy/NamingStrategyInterface.mjs +0 -4
  1609. package/websql/esm2022/lib/typeorm/persistence/EntityPersistExecutor.mjs +0 -125
  1610. package/websql/esm2022/lib/typeorm/persistence/Subject.mjs +0 -212
  1611. package/websql/esm2022/lib/typeorm/persistence/SubjectChangeMap.mjs +0 -4
  1612. package/websql/esm2022/lib/typeorm/persistence/SubjectChangedColumnsComputer.mjs +0 -164
  1613. package/websql/esm2022/lib/typeorm/persistence/SubjectDatabaseEntityLoader.mjs +0 -125
  1614. package/websql/esm2022/lib/typeorm/persistence/SubjectExecutor.mjs +0 -721
  1615. package/websql/esm2022/lib/typeorm/persistence/SubjectTopoligicalSorter.mjs +0 -151
  1616. package/websql/esm2022/lib/typeorm/persistence/subject-builder/CascadesSubjectBuilder.mjs +0 -84
  1617. package/websql/esm2022/lib/typeorm/persistence/subject-builder/ManyToManySubjectBuilder.mjs +0 -153
  1618. package/websql/esm2022/lib/typeorm/persistence/subject-builder/OneToManySubjectBuilder.mjs +0 -117
  1619. package/websql/esm2022/lib/typeorm/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.mjs +0 -95
  1620. package/websql/esm2022/lib/typeorm/persistence/tree/ClosureSubjectExecutor.mjs +0 -220
  1621. package/websql/esm2022/lib/typeorm/persistence/tree/MaterializedPathSubjectExecutor.mjs +0 -97
  1622. package/websql/esm2022/lib/typeorm/persistence/tree/NestedSetSubjectExecutor.mjs +0 -250
  1623. package/websql/esm2022/lib/typeorm/platform/PlatformTools.mjs +0 -331
  1624. package/websql/esm2022/lib/typeorm/query-builder/Alias.mjs +0 -26
  1625. package/websql/esm2022/lib/typeorm/query-builder/Brackets.mjs +0 -16
  1626. package/websql/esm2022/lib/typeorm/query-builder/DeleteQueryBuilder.mjs +0 -181
  1627. package/websql/esm2022/lib/typeorm/query-builder/InsertOrUpdateOptions.mjs +0 -3
  1628. package/websql/esm2022/lib/typeorm/query-builder/InsertQueryBuilder.mjs +0 -651
  1629. package/websql/esm2022/lib/typeorm/query-builder/JoinAttribute.mjs +0 -153
  1630. package/websql/esm2022/lib/typeorm/query-builder/NotBrackets.mjs +0 -14
  1631. package/websql/esm2022/lib/typeorm/query-builder/QueryBuilder.mjs +0 -967
  1632. package/websql/esm2022/lib/typeorm/query-builder/QueryBuilderCte.mjs +0 -4
  1633. package/websql/esm2022/lib/typeorm/query-builder/QueryBuilderUtils.mjs +0 -22
  1634. package/websql/esm2022/lib/typeorm/query-builder/QueryExpressionMap.mjs +0 -309
  1635. package/websql/esm2022/lib/typeorm/query-builder/QueryPartialEntity.mjs +0 -3
  1636. package/websql/esm2022/lib/typeorm/query-builder/RelationIdLoader.mjs +0 -452
  1637. package/websql/esm2022/lib/typeorm/query-builder/RelationLoader.mjs +0 -262
  1638. package/websql/esm2022/lib/typeorm/query-builder/RelationQueryBuilder.mjs +0 -147
  1639. package/websql/esm2022/lib/typeorm/query-builder/RelationRemover.mjs +0 -130
  1640. package/websql/esm2022/lib/typeorm/query-builder/RelationUpdater.mjs +0 -141
  1641. package/websql/esm2022/lib/typeorm/query-builder/ReturningResultsEntityUpdator.mjs +0 -141
  1642. package/websql/esm2022/lib/typeorm/query-builder/SelectQuery.mjs +0 -4
  1643. package/websql/esm2022/lib/typeorm/query-builder/SelectQueryBuilder.mjs +0 -2278
  1644. package/websql/esm2022/lib/typeorm/query-builder/SelectQueryBuilderOption.mjs +0 -3
  1645. package/websql/esm2022/lib/typeorm/query-builder/SoftDeleteQueryBuilder.mjs +0 -348
  1646. package/websql/esm2022/lib/typeorm/query-builder/UpdateQueryBuilder.mjs +0 -510
  1647. package/websql/esm2022/lib/typeorm/query-builder/WhereClause.mjs +0 -3
  1648. package/websql/esm2022/lib/typeorm/query-builder/WhereExpressionBuilder.mjs +0 -4
  1649. package/websql/esm2022/lib/typeorm/query-builder/relation-count/RelationCountAttribute.mjs +0 -71
  1650. package/websql/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoadResult.mjs +0 -4
  1651. package/websql/esm2022/lib/typeorm/query-builder/relation-count/RelationCountLoader.mjs +0 -142
  1652. package/websql/esm2022/lib/typeorm/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.mjs +0 -33
  1653. package/websql/esm2022/lib/typeorm/query-builder/relation-id/RelationIdAttribute.mjs +0 -79
  1654. package/websql/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoadResult.mjs +0 -4
  1655. package/websql/esm2022/lib/typeorm/query-builder/relation-id/RelationIdLoader.mjs +0 -247
  1656. package/websql/esm2022/lib/typeorm/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.mjs +0 -33
  1657. package/websql/esm2022/lib/typeorm/query-builder/result/DeleteResult.mjs +0 -14
  1658. package/websql/esm2022/lib/typeorm/query-builder/result/InsertResult.mjs +0 -25
  1659. package/websql/esm2022/lib/typeorm/query-builder/result/UpdateResult.mjs +0 -25
  1660. package/websql/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.mjs +0 -101
  1661. package/websql/esm2022/lib/typeorm/query-builder/transformer/PlainObjectToNewEntityTransformer.mjs +0 -67
  1662. package/websql/esm2022/lib/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.mjs +0 -366
  1663. package/websql/esm2022/lib/typeorm/query-runner/BaseQueryRunner.mjs +0 -392
  1664. package/websql/esm2022/lib/typeorm/query-runner/QueryResult.mjs +0 -14
  1665. package/websql/esm2022/lib/typeorm/query-runner/QueryRunner.mjs +0 -4
  1666. package/websql/esm2022/lib/typeorm/repository/AbstractRepository.mjs +0 -80
  1667. package/websql/esm2022/lib/typeorm/repository/BaseEntity.mjs +0 -283
  1668. package/websql/esm2022/lib/typeorm/repository/FindTreesOptions.mjs +0 -4
  1669. package/websql/esm2022/lib/typeorm/repository/RemoveOptions.mjs +0 -4
  1670. package/websql/esm2022/lib/typeorm/repository/Repository.mjs +0 -275
  1671. package/websql/esm2022/lib/typeorm/repository/SaveOptions.mjs +0 -4
  1672. package/websql/esm2022/lib/typeorm/repository/TreeRepository.mjs +0 -254
  1673. package/websql/esm2022/lib/typeorm/repository/UpsertOptions.mjs +0 -7
  1674. package/websql/esm2022/lib/typeorm/schema-builder/RdbmsSchemaBuilder.mjs +0 -770
  1675. package/websql/esm2022/lib/typeorm/schema-builder/SchemaBuilder.mjs +0 -4
  1676. package/websql/esm2022/lib/typeorm/schema-builder/options/TableCheckOptions.mjs +0 -4
  1677. package/websql/esm2022/lib/typeorm/schema-builder/options/TableColumnOptions.mjs +0 -4
  1678. package/websql/esm2022/lib/typeorm/schema-builder/options/TableExclusionOptions.mjs +0 -4
  1679. package/websql/esm2022/lib/typeorm/schema-builder/options/TableForeignKeyOptions.mjs +0 -4
  1680. package/websql/esm2022/lib/typeorm/schema-builder/options/TableIndexOptions.mjs +0 -4
  1681. package/websql/esm2022/lib/typeorm/schema-builder/options/TableOptions.mjs +0 -4
  1682. package/websql/esm2022/lib/typeorm/schema-builder/options/TableUniqueOptions.mjs +0 -4
  1683. package/websql/esm2022/lib/typeorm/schema-builder/options/ViewOptions.mjs +0 -4
  1684. package/websql/esm2022/lib/typeorm/schema-builder/table/Table.mjs +0 -274
  1685. package/websql/esm2022/lib/typeorm/schema-builder/table/TableCheck.mjs +0 -37
  1686. package/websql/esm2022/lib/typeorm/schema-builder/table/TableColumn.mjs +0 -108
  1687. package/websql/esm2022/lib/typeorm/schema-builder/table/TableExclusion.mjs +0 -31
  1688. package/websql/esm2022/lib/typeorm/schema-builder/table/TableForeignKey.mjs +0 -60
  1689. package/websql/esm2022/lib/typeorm/schema-builder/table/TableIndex.mjs +0 -53
  1690. package/websql/esm2022/lib/typeorm/schema-builder/table/TableUnique.mjs +0 -38
  1691. package/websql/esm2022/lib/typeorm/schema-builder/util/TableUtils.mjs +0 -38
  1692. package/websql/esm2022/lib/typeorm/schema-builder/util/ViewUtils.mjs +0 -24
  1693. package/websql/esm2022/lib/typeorm/schema-builder/view/View.mjs +0 -43
  1694. package/websql/esm2022/lib/typeorm/subscriber/Broadcaster.mjs +0 -596
  1695. package/websql/esm2022/lib/typeorm/subscriber/BroadcasterResult.mjs +0 -27
  1696. package/websql/esm2022/lib/typeorm/subscriber/EntitySubscriberInterface.mjs +0 -4
  1697. package/websql/esm2022/lib/typeorm/subscriber/event/InsertEvent.mjs +0 -4
  1698. package/websql/esm2022/lib/typeorm/subscriber/event/LoadEvent.mjs +0 -4
  1699. package/websql/esm2022/lib/typeorm/subscriber/event/RecoverEvent.mjs +0 -4
  1700. package/websql/esm2022/lib/typeorm/subscriber/event/RemoveEvent.mjs +0 -4
  1701. package/websql/esm2022/lib/typeorm/subscriber/event/SoftRemoveEvent.mjs +0 -4
  1702. package/websql/esm2022/lib/typeorm/subscriber/event/TransactionCommitEvent.mjs +0 -4
  1703. package/websql/esm2022/lib/typeorm/subscriber/event/TransactionRollbackEvent.mjs +0 -4
  1704. package/websql/esm2022/lib/typeorm/subscriber/event/TransactionStartEvent.mjs +0 -4
  1705. package/websql/esm2022/lib/typeorm/subscriber/event/UpdateEvent.mjs +0 -4
  1706. package/websql/esm2022/lib/typeorm/util/ApplyValueTransformers.mjs +0 -22
  1707. package/websql/esm2022/lib/typeorm/util/DateUtils.mjs +0 -216
  1708. package/websql/esm2022/lib/typeorm/util/DepGraph.mjs +0 -222
  1709. package/websql/esm2022/lib/typeorm/util/DirectoryExportedClassesLoader.mjs +0 -76
  1710. package/websql/esm2022/lib/typeorm/util/ImportUtils.mjs +0 -86
  1711. package/websql/esm2022/lib/typeorm/util/InstanceChecker.mjs +0 -114
  1712. package/websql/esm2022/lib/typeorm/util/ObjectUtils.mjs +0 -38
  1713. package/websql/esm2022/lib/typeorm/util/OrmUtils.mjs +0 -310
  1714. package/websql/esm2022/lib/typeorm/util/PathUtils.mjs +0 -38
  1715. package/websql/esm2022/lib/typeorm/util/RandomGenerator.mjs +0 -150
  1716. package/websql/esm2022/lib/typeorm/util/StringUtils.mjs +0 -108
  1717. package/websql/esm2022/lib/typeorm/util/TreeRepositoryUtils.mjs +0 -53
  1718. package/websql/esm2022/lib/typeorm/util/VersionUtils.mjs +0 -17
  1719. package/websql/esm2022/lib/typeorm/util/escapeRegExp.mjs +0 -4
  1720. package/websql/esm2022/public-api.mjs +0 -2
  1721. 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=