typeorm 0.3.22-dev.de8eb04 → 0.3.22-dev.ecae9f5

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 (215) hide show
  1. package/browser/cache/DbQueryResultCache.js +1 -1
  2. package/browser/cache/DbQueryResultCache.js.map +1 -1
  3. package/browser/data-source/DataSource.js +2 -2
  4. package/browser/data-source/DataSource.js.map +1 -1
  5. package/browser/driver/DriverUtils.js +3 -3
  6. package/browser/driver/DriverUtils.js.map +1 -1
  7. package/browser/driver/aurora-mysql/AuroraMysqlDriver.js +2 -2
  8. package/browser/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  9. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js +1 -1
  10. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  11. package/browser/driver/cockroachdb/CockroachDriver.js +2 -2
  12. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  13. package/browser/driver/cordova/CordovaQueryRunner.js +1 -1
  14. package/browser/driver/cordova/CordovaQueryRunner.js.map +1 -1
  15. package/browser/driver/expo/ExpoQueryRunner.js +1 -1
  16. package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
  17. package/browser/driver/mysql/MysqlDriver.js +2 -2
  18. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  19. package/browser/driver/mysql/MysqlQueryRunner.js +1 -1
  20. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  21. package/browser/driver/oracle/OracleDriver.js +2 -2
  22. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  23. package/browser/driver/oracle/OracleQueryRunner.js +2 -2
  24. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  25. package/browser/driver/postgres/PostgresDriver.js +2 -2
  26. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  27. package/browser/driver/postgres/PostgresQueryRunner.js +1 -1
  28. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  29. package/browser/driver/react-native/ReactNativeDriver.js +1 -1
  30. package/browser/driver/react-native/ReactNativeDriver.js.map +1 -1
  31. package/browser/driver/react-native/ReactNativeQueryRunner.js +1 -1
  32. package/browser/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  33. package/browser/driver/sap/SapDriver.js +2 -2
  34. package/browser/driver/sap/SapDriver.js.map +1 -1
  35. package/browser/driver/sap/SapQueryRunner.js +1 -1
  36. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  37. package/browser/driver/spanner/SpannerDriver.js +3 -3
  38. package/browser/driver/spanner/SpannerDriver.js.map +1 -1
  39. package/browser/driver/spanner/SpannerQueryRunner.js +7 -7
  40. package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -1
  41. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +1 -1
  42. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  43. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +7 -7
  44. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  45. package/browser/driver/sqljs/SqljsDriver.js +1 -1
  46. package/browser/driver/sqljs/SqljsDriver.js.map +1 -1
  47. package/browser/driver/sqlserver/SqlServerDriver.js +2 -2
  48. package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
  49. package/browser/driver/sqlserver/SqlServerQueryRunner.js +4 -4
  50. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  51. package/browser/entity-manager/MongoEntityManager.js +1 -1
  52. package/browser/entity-manager/MongoEntityManager.js.map +1 -1
  53. package/browser/find-options/FindOptionsUtils.js +1 -1
  54. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  55. package/browser/logger/AdvancedConsoleLogger.js +1 -1
  56. package/browser/logger/AdvancedConsoleLogger.js.map +1 -1
  57. package/browser/logger/DebugLogger.js +1 -1
  58. package/browser/logger/DebugLogger.js.map +1 -1
  59. package/browser/logger/FileLogger.js +1 -1
  60. package/browser/logger/FileLogger.js.map +1 -1
  61. package/browser/logger/SimpleConsoleLogger.js +1 -1
  62. package/browser/logger/SimpleConsoleLogger.js.map +1 -1
  63. package/browser/metadata/ColumnMetadata.js +1 -1
  64. package/browser/metadata/ColumnMetadata.js.map +1 -1
  65. package/browser/metadata/EmbeddedMetadata.js +1 -1
  66. package/browser/metadata/EmbeddedMetadata.js.map +1 -1
  67. package/browser/migration/MigrationExecutor.js +2 -2
  68. package/browser/migration/MigrationExecutor.js.map +1 -1
  69. package/browser/persistence/EntityPersistExecutor.js +2 -2
  70. package/browser/persistence/EntityPersistExecutor.js.map +1 -1
  71. package/browser/persistence/SubjectDatabaseEntityLoader.js +1 -1
  72. package/browser/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  73. package/browser/persistence/SubjectExecutor.js +1 -1
  74. package/browser/persistence/SubjectExecutor.js.map +1 -1
  75. package/browser/persistence/SubjectTopologicalSorter.js +5 -5
  76. package/browser/persistence/SubjectTopologicalSorter.js.map +1 -1
  77. package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +1 -1
  78. package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
  79. package/browser/persistence/tree/NestedSetSubjectExecutor.js +2 -2
  80. package/browser/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
  81. package/browser/query-builder/JoinAttribute.js +2 -2
  82. package/browser/query-builder/JoinAttribute.js.map +1 -1
  83. package/browser/query-builder/QueryBuilder.js +1 -1
  84. package/browser/query-builder/QueryBuilder.js.map +1 -1
  85. package/browser/query-builder/RelationIdLoader.js +2 -2
  86. package/browser/query-builder/RelationIdLoader.js.map +1 -1
  87. package/browser/query-builder/SelectQueryBuilder.js +18 -3
  88. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  89. package/browser/query-builder/SoftDeleteQueryBuilder.js +1 -1
  90. package/browser/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  91. package/browser/query-builder/UpdateQueryBuilder.js +3 -3
  92. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  93. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +1 -1
  94. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  95. package/browser/util/DepGraph.js +13 -13
  96. package/browser/util/DepGraph.js.map +1 -1
  97. package/browser/util/DirectoryExportedClassesLoader.js +2 -2
  98. package/browser/util/DirectoryExportedClassesLoader.js.map +1 -1
  99. package/browser/util/InstanceChecker.js.map +1 -1
  100. package/browser/util/ObjectUtils.d.ts +2 -2
  101. package/browser/util/ObjectUtils.js.map +1 -1
  102. package/browser/util/OrmUtils.js +4 -4
  103. package/browser/util/OrmUtils.js.map +1 -1
  104. package/browser/util/RandomGenerator.js +6 -6
  105. package/browser/util/RandomGenerator.js.map +1 -1
  106. package/browser/util/escapeRegExp.d.ts +1 -1
  107. package/browser/util/escapeRegExp.js.map +1 -1
  108. package/cache/DbQueryResultCache.js +1 -1
  109. package/cache/DbQueryResultCache.js.map +1 -1
  110. package/data-source/DataSource.js +2 -2
  111. package/data-source/DataSource.js.map +1 -1
  112. package/driver/DriverUtils.js +3 -3
  113. package/driver/DriverUtils.js.map +1 -1
  114. package/driver/aurora-mysql/AuroraMysqlDriver.js +2 -2
  115. package/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  116. package/driver/aurora-mysql/AuroraMysqlQueryRunner.js +1 -1
  117. package/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  118. package/driver/cockroachdb/CockroachDriver.js +2 -2
  119. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  120. package/driver/cordova/CordovaQueryRunner.js +1 -1
  121. package/driver/cordova/CordovaQueryRunner.js.map +1 -1
  122. package/driver/expo/ExpoQueryRunner.js +1 -1
  123. package/driver/expo/ExpoQueryRunner.js.map +1 -1
  124. package/driver/mysql/MysqlDriver.js +2 -2
  125. package/driver/mysql/MysqlDriver.js.map +1 -1
  126. package/driver/mysql/MysqlQueryRunner.js +1 -1
  127. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  128. package/driver/oracle/OracleDriver.js +2 -2
  129. package/driver/oracle/OracleDriver.js.map +1 -1
  130. package/driver/oracle/OracleQueryRunner.js +2 -2
  131. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  132. package/driver/postgres/PostgresDriver.js +2 -2
  133. package/driver/postgres/PostgresDriver.js.map +1 -1
  134. package/driver/postgres/PostgresQueryRunner.js +1 -1
  135. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  136. package/driver/react-native/ReactNativeDriver.js +1 -1
  137. package/driver/react-native/ReactNativeDriver.js.map +1 -1
  138. package/driver/react-native/ReactNativeQueryRunner.js +1 -1
  139. package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  140. package/driver/sap/SapDriver.js +2 -2
  141. package/driver/sap/SapDriver.js.map +1 -1
  142. package/driver/sap/SapQueryRunner.js +1 -1
  143. package/driver/sap/SapQueryRunner.js.map +1 -1
  144. package/driver/spanner/SpannerDriver.js +3 -3
  145. package/driver/spanner/SpannerDriver.js.map +1 -1
  146. package/driver/spanner/SpannerQueryRunner.js +7 -7
  147. package/driver/spanner/SpannerQueryRunner.js.map +1 -1
  148. package/driver/sqlite-abstract/AbstractSqliteDriver.js +1 -1
  149. package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  150. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +7 -7
  151. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  152. package/driver/sqljs/SqljsDriver.js +1 -1
  153. package/driver/sqljs/SqljsDriver.js.map +1 -1
  154. package/driver/sqlserver/SqlServerDriver.js +2 -2
  155. package/driver/sqlserver/SqlServerDriver.js.map +1 -1
  156. package/driver/sqlserver/SqlServerQueryRunner.js +4 -4
  157. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  158. package/entity-manager/MongoEntityManager.js +1 -1
  159. package/entity-manager/MongoEntityManager.js.map +1 -1
  160. package/find-options/FindOptionsUtils.js +1 -1
  161. package/find-options/FindOptionsUtils.js.map +1 -1
  162. package/logger/AdvancedConsoleLogger.js +1 -1
  163. package/logger/AdvancedConsoleLogger.js.map +1 -1
  164. package/logger/DebugLogger.js +1 -1
  165. package/logger/DebugLogger.js.map +1 -1
  166. package/logger/FileLogger.js +1 -1
  167. package/logger/FileLogger.js.map +1 -1
  168. package/logger/SimpleConsoleLogger.js +1 -1
  169. package/logger/SimpleConsoleLogger.js.map +1 -1
  170. package/metadata/ColumnMetadata.js +1 -1
  171. package/metadata/ColumnMetadata.js.map +1 -1
  172. package/metadata/EmbeddedMetadata.js +1 -1
  173. package/metadata/EmbeddedMetadata.js.map +1 -1
  174. package/migration/MigrationExecutor.js +2 -2
  175. package/migration/MigrationExecutor.js.map +1 -1
  176. package/package.json +1 -1
  177. package/persistence/EntityPersistExecutor.js +2 -2
  178. package/persistence/EntityPersistExecutor.js.map +1 -1
  179. package/persistence/SubjectDatabaseEntityLoader.js +1 -1
  180. package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  181. package/persistence/SubjectExecutor.js +1 -1
  182. package/persistence/SubjectExecutor.js.map +1 -1
  183. package/persistence/SubjectTopologicalSorter.js +5 -5
  184. package/persistence/SubjectTopologicalSorter.js.map +1 -1
  185. package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +1 -1
  186. package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
  187. package/persistence/tree/NestedSetSubjectExecutor.js +2 -2
  188. package/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
  189. package/query-builder/JoinAttribute.js +2 -2
  190. package/query-builder/JoinAttribute.js.map +1 -1
  191. package/query-builder/QueryBuilder.js +1 -1
  192. package/query-builder/QueryBuilder.js.map +1 -1
  193. package/query-builder/RelationIdLoader.js +2 -2
  194. package/query-builder/RelationIdLoader.js.map +1 -1
  195. package/query-builder/SelectQueryBuilder.js +18 -3
  196. package/query-builder/SelectQueryBuilder.js.map +1 -1
  197. package/query-builder/SoftDeleteQueryBuilder.js +1 -1
  198. package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  199. package/query-builder/UpdateQueryBuilder.js +3 -3
  200. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  201. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +1 -1
  202. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  203. package/util/DepGraph.js +13 -13
  204. package/util/DepGraph.js.map +1 -1
  205. package/util/DirectoryExportedClassesLoader.js +2 -2
  206. package/util/DirectoryExportedClassesLoader.js.map +1 -1
  207. package/util/InstanceChecker.js.map +1 -1
  208. package/util/ObjectUtils.d.ts +2 -2
  209. package/util/ObjectUtils.js.map +1 -1
  210. package/util/OrmUtils.js +4 -4
  211. package/util/OrmUtils.js.map +1 -1
  212. package/util/RandomGenerator.js +6 -6
  213. package/util/RandomGenerator.js.map +1 -1
  214. package/util/escapeRegExp.d.ts +1 -1
  215. package/util/escapeRegExp.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/query-builder/transformer/RawSqlResultsToEntityTransformer.ts"],"names":[],"mappings":"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","file":"RawSqlResultsToEntityTransformer.js","sourcesContent":["import { Driver } from \"../../driver/Driver\"\nimport { RelationIdLoadResult } from \"../relation-id/RelationIdLoadResult\"\nimport { ObjectLiteral } from \"../../common/ObjectLiteral\"\nimport { ColumnMetadata } from \"../../metadata/ColumnMetadata\"\nimport { Alias } from \"../Alias\"\nimport { RelationCountLoadResult } from \"../relation-count/RelationCountLoadResult\"\nimport { RelationMetadata } from \"../../metadata/RelationMetadata\"\nimport { OrmUtils } from \"../../util/OrmUtils\"\nimport { QueryExpressionMap } from \"../QueryExpressionMap\"\nimport { EntityMetadata } from \"../../metadata/EntityMetadata\"\nimport { QueryRunner } from \"../..\"\nimport { DriverUtils } from \"../../driver/DriverUtils\"\nimport { ObjectUtils } from \"../../util/ObjectUtils\"\n\n/**\n * Transforms raw sql results returned from the database into entity object.\n * Entity is constructed based on its entity metadata.\n */\nexport class RawSqlResultsToEntityTransformer {\n /**\n * Contains a hashmap for every rawRelationIdResults given.\n * In the hashmap you will find the idMaps of a result under the hash of this.hashEntityIds for the result.\n */\n private relationIdMaps: Array<{ [idHash: string]: any[] }>\n\n private pojo: boolean\n private selections: Set<string>\n private aliasCache: Map<string, Map<string, string>>\n private columnsCache: Map<\n string,\n Map<EntityMetadata, [string, ColumnMetadata][]>\n >\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n protected expressionMap: QueryExpressionMap,\n protected driver: Driver,\n protected rawRelationIdResults: RelationIdLoadResult[],\n protected rawRelationCountResults: RelationCountLoadResult[],\n protected queryRunner?: QueryRunner,\n ) {\n this.pojo = this.expressionMap.options.includes(\"create-pojo\")\n this.selections = new Set(\n this.expressionMap.selects.map((s) => s.selection),\n )\n this.aliasCache = new Map()\n this.columnsCache = new Map()\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Since db returns a duplicated rows of the data where accuracies of the same object can be duplicated\n * we need to group our result and we must have some unique id (primary key in our case)\n */\n transform(rawResults: any[], alias: Alias): any[] {\n const group = this.group(rawResults, alias)\n const entities: any[] = []\n for (const results of group.values()) {\n const entity = this.transformRawResultsGroup(results, alias)\n if (entity !== undefined) entities.push(entity)\n }\n return entities\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Build an alias from a name and column name.\n */\n protected buildAlias(aliasName: string, columnName: string) {\n let aliases = this.aliasCache.get(aliasName)\n if (!aliases) {\n aliases = new Map()\n this.aliasCache.set(aliasName, aliases)\n }\n let columnAlias = aliases.get(columnName)\n if (!columnAlias) {\n columnAlias = DriverUtils.buildAlias(\n this.driver,\n undefined,\n aliasName,\n columnName,\n )\n aliases.set(columnName, columnAlias)\n }\n return columnAlias\n }\n\n /**\n * Groups given raw results by ids of given alias.\n */\n protected group(rawResults: any[], alias: Alias): Map<string, any[]> {\n const map = new Map()\n const keys: string[] = []\n if (alias.metadata.tableType === \"view\") {\n keys.push(\n ...alias.metadata.columns.map((column) =>\n this.buildAlias(alias.name, column.databaseName),\n ),\n )\n } else {\n keys.push(\n ...alias.metadata.primaryColumns.map((column) =>\n this.buildAlias(alias.name, column.databaseName),\n ),\n )\n }\n for (const rawResult of rawResults) {\n const id = keys\n .map((key) => {\n const keyValue = rawResult[key]\n\n if (Buffer.isBuffer(keyValue)) {\n return keyValue.toString(\"hex\")\n }\n\n if (ObjectUtils.isObject(keyValue)) {\n return JSON.stringify(keyValue)\n }\n\n return keyValue\n })\n .join(\"_\") // todo: check partial\n\n const items = map.get(id)\n if (!items) {\n map.set(id, [rawResult])\n } else {\n items.push(rawResult)\n }\n }\n return map\n }\n\n /**\n * Transforms set of data results into single entity.\n */\n protected transformRawResultsGroup(\n rawResults: any[],\n alias: Alias,\n ): ObjectLiteral | undefined {\n // let hasColumns = false; // , hasEmbeddedColumns = false, hasParentColumns = false, hasParentEmbeddedColumns = false;\n let metadata = alias.metadata\n\n if (metadata.discriminatorColumn) {\n const discriminatorValues = rawResults.map(\n (result) =>\n result[\n this.buildAlias(\n alias.name,\n alias.metadata.discriminatorColumn!.databaseName,\n )\n ],\n )\n const discriminatorMetadata = metadata.childEntityMetadatas.find(\n (childEntityMetadata) => {\n return (\n typeof discriminatorValues.find(\n (value) =>\n value ===\n childEntityMetadata.discriminatorValue,\n ) !== \"undefined\"\n )\n },\n )\n if (discriminatorMetadata) metadata = discriminatorMetadata\n }\n let entity: any = metadata.create(this.queryRunner, {\n fromDeserializer: true,\n pojo: this.pojo,\n })\n\n // get value from columns selections and put them into newly created entity\n const hasColumns = this.transformColumns(\n rawResults,\n alias,\n entity,\n metadata,\n )\n const hasRelations = this.transformJoins(\n rawResults,\n entity,\n alias,\n metadata,\n )\n const hasRelationIds = this.transformRelationIds(\n rawResults,\n alias,\n entity,\n metadata,\n )\n const hasRelationCounts = this.transformRelationCounts(\n rawResults,\n alias,\n entity,\n )\n\n // if we have at least one selected column then return this entity\n // since entity must have at least primary columns to be really selected and transformed into entity\n if (hasColumns) return entity\n\n // if we don't have any selected column we should not return entity,\n // except for the case when entity only contain a primary column as a relation to another entity\n // in this case its absolutely possible our entity to not have any columns except a single relation\n const hasOnlyVirtualPrimaryColumns = metadata.primaryColumns.every(\n (column) => column.isVirtual === true,\n ) // todo: create metadata.hasOnlyVirtualPrimaryColumns\n if (\n hasOnlyVirtualPrimaryColumns &&\n (hasRelations || hasRelationIds || hasRelationCounts)\n )\n return entity\n\n return undefined\n }\n\n // get value from columns selections and put them into object\n protected transformColumns(\n rawResults: any[],\n alias: Alias,\n entity: ObjectLiteral,\n metadata: EntityMetadata,\n ): boolean {\n let hasData = false\n const result = rawResults[0]\n for (const [key, column] of this.getColumnsToProcess(\n alias.name,\n metadata,\n )) {\n const value = result[key]\n\n if (value === undefined) continue\n // we don't mark it as has data because if we will have all nulls in our object - we don't need such object\n else if (value !== null && !column.isVirtualProperty) hasData = true\n\n column.setEntityValue(\n entity,\n this.driver.prepareHydratedValue(value, column),\n )\n }\n return hasData\n }\n\n /**\n * Transforms joined entities in the given raw results by a given alias and stores to the given (parent) entity\n */\n protected transformJoins(\n rawResults: any[],\n entity: ObjectLiteral,\n alias: Alias,\n metadata: EntityMetadata,\n ) {\n let hasData = false\n\n // let discriminatorValue: string = \"\";\n // if (metadata.discriminatorColumn)\n // discriminatorValue = rawResults[0][this.buildAlias(alias.name, alias.metadata.discriminatorColumn!.databaseName)];\n\n for (const join of this.expressionMap.joinAttributes) {\n // todo: we have problem here - when inner joins are used without selects it still create empty array\n\n // skip joins without metadata\n if (!join.metadata) continue\n\n // if simple left or inner join was performed without selection then we don't need to do anything\n if (!join.isSelected) continue\n\n // this check need to avoid setting properties than not belong to entity when single table inheritance used. (todo: check if we still need it)\n // const metadata = metadata.childEntityMetadatas.find(childEntityMetadata => discriminatorValue === childEntityMetadata.discriminatorValue);\n if (\n join.relation &&\n !metadata.relations.find(\n (relation) => relation === join.relation,\n )\n )\n continue\n\n // some checks to make sure this join is for current alias\n if (join.mapToProperty) {\n if (join.mapToPropertyParentAlias !== alias.name) continue\n } else {\n if (\n !join.relation ||\n join.parentAlias !== alias.name ||\n join.relationPropertyPath !== join.relation!.propertyPath\n )\n continue\n }\n\n // transform joined data into entities\n let result: any = this.transform(rawResults, join.alias)\n result = !join.isMany ? result[0] : result\n result = !join.isMany && result === undefined ? null : result // this is needed to make relations to return null when its joined but nothing was found in the database\n // if nothing was joined then simply continue\n if (result === undefined) continue\n\n // if join was mapped to some property then save result to that property\n if (join.mapToPropertyPropertyName) {\n entity[join.mapToPropertyPropertyName] = result // todo: fix embeds\n } else {\n // otherwise set to relation\n join.relation!.setEntityValue(entity, result)\n }\n\n hasData = true\n }\n return hasData\n }\n\n protected transformRelationIds(\n rawSqlResults: any[],\n alias: Alias,\n entity: ObjectLiteral,\n metadata: EntityMetadata,\n ): boolean {\n let hasData = false\n for (const [\n index,\n rawRelationIdResult,\n ] of this.rawRelationIdResults.entries()) {\n if (\n rawRelationIdResult.relationIdAttribute.parentAlias !==\n alias.name\n )\n continue\n\n const relation = rawRelationIdResult.relationIdAttribute.relation\n const valueMap = this.createValueMapFromJoinColumns(\n relation,\n rawRelationIdResult.relationIdAttribute.parentAlias,\n rawSqlResults,\n )\n if (valueMap === undefined || valueMap === null) {\n continue\n }\n\n // prepare common data for this call\n this.prepareDataForTransformRelationIds()\n\n // Extract idMaps from prepared data by hash\n const hash = this.hashEntityIds(relation, valueMap)\n const idMaps = this.relationIdMaps[index][hash] || []\n\n // Map data to properties\n const properties =\n rawRelationIdResult.relationIdAttribute.mapToPropertyPropertyPath.split(\n \".\",\n )\n const mapToProperty = (\n properties: string[],\n map: ObjectLiteral,\n value: any,\n ): any => {\n const property = properties.shift()\n if (property && properties.length === 0) {\n map[property] = value\n return map\n }\n if (property && properties.length > 0) {\n mapToProperty(properties, map[property], value)\n } else {\n return map\n }\n }\n if (relation.isOneToOne || relation.isManyToOne) {\n if (idMaps[0] !== undefined) {\n mapToProperty(properties, entity, idMaps[0])\n hasData = true\n }\n } else {\n mapToProperty(properties, entity, idMaps)\n hasData = hasData || idMaps.length > 0\n }\n }\n\n return hasData\n }\n\n protected transformRelationCounts(\n rawSqlResults: any[],\n alias: Alias,\n entity: ObjectLiteral,\n ): boolean {\n let hasData = false\n for (const rawRelationCountResult of this.rawRelationCountResults) {\n if (\n rawRelationCountResult.relationCountAttribute.parentAlias !==\n alias.name\n )\n continue\n const relation =\n rawRelationCountResult.relationCountAttribute.relation\n let referenceColumnName: string\n\n if (relation.isOneToMany) {\n referenceColumnName =\n relation.inverseRelation!.joinColumns[0].referencedColumn!\n .databaseName // todo: fix joinColumns[0]\n } else {\n referenceColumnName = relation.isOwning\n ? relation.joinColumns[0].referencedColumn!.databaseName\n : relation.inverseRelation!.joinColumns[0].referencedColumn!\n .databaseName\n }\n\n const referenceColumnValue =\n rawSqlResults[0][\n this.buildAlias(alias.name, referenceColumnName)\n ] // we use zero index since its grouped data // todo: selection with alias for entity columns wont work\n if (\n referenceColumnValue !== undefined &&\n referenceColumnValue !== null\n ) {\n entity[\n rawRelationCountResult.relationCountAttribute.mapToPropertyPropertyName\n ] = 0\n for (const result of rawRelationCountResult.results) {\n if (result[\"parentId\"] !== referenceColumnValue) continue\n entity[\n rawRelationCountResult.relationCountAttribute.mapToPropertyPropertyName\n ] = parseInt(result[\"cnt\"])\n hasData = true\n }\n }\n }\n\n return hasData\n }\n\n private getColumnsToProcess(aliasName: string, metadata: EntityMetadata) {\n let metadatas = this.columnsCache.get(aliasName)\n if (!metadatas) {\n metadatas = new Map()\n this.columnsCache.set(aliasName, metadatas)\n }\n let columns = metadatas.get(metadata)\n if (!columns) {\n columns = metadata.columns\n .filter(\n (column) =>\n !column.isVirtual &&\n // if user does not selected the whole entity or he used partial selection and does not select this particular column\n // then we don't add this column and its value into the entity\n (this.selections.has(aliasName) ||\n this.selections.has(\n `${aliasName}.${column.propertyPath}`,\n )) &&\n // if table inheritance is used make sure this column is not child's column\n !metadata.childEntityMetadatas.some(\n (childMetadata) =>\n childMetadata.target === column.target,\n ),\n )\n .map((column) => [\n this.buildAlias(aliasName, column.databaseName),\n column,\n ])\n metadatas.set(metadata, columns)\n }\n return columns\n }\n\n private createValueMapFromJoinColumns(\n relation: RelationMetadata,\n parentAlias: string,\n rawSqlResults: any[],\n ): ObjectLiteral {\n let columns: ColumnMetadata[]\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n columns = relation.entityMetadata.primaryColumns.map(\n (joinColumn) => joinColumn,\n )\n } else if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n columns = relation.inverseRelation!.joinColumns.map(\n (joinColumn) => joinColumn,\n )\n } else {\n if (relation.isOwning) {\n columns = relation.joinColumns.map((joinColumn) => joinColumn)\n } else {\n columns = relation.inverseRelation!.inverseJoinColumns.map(\n (joinColumn) => joinColumn,\n )\n }\n }\n return columns.reduce((valueMap, column) => {\n for (const rawSqlResult of rawSqlResults) {\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n valueMap[column.databaseName] =\n this.driver.prepareHydratedValue(\n rawSqlResult[\n this.buildAlias(\n parentAlias,\n column.databaseName,\n )\n ],\n column,\n )\n } else {\n valueMap[column.databaseName] =\n this.driver.prepareHydratedValue(\n rawSqlResult[\n this.buildAlias(\n parentAlias,\n column.referencedColumn!.databaseName,\n )\n ],\n column.referencedColumn!,\n )\n }\n }\n return valueMap\n }, {} as ObjectLiteral)\n }\n\n private extractEntityPrimaryIds(\n relation: RelationMetadata,\n relationIdRawResult: any,\n ) {\n let columns: ColumnMetadata[]\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n columns = relation.entityMetadata.primaryColumns.map(\n (joinColumn) => joinColumn,\n )\n } else if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n columns = relation.inverseRelation!.joinColumns.map(\n (joinColumn) => joinColumn,\n )\n } else {\n if (relation.isOwning) {\n columns = relation.joinColumns.map((joinColumn) => joinColumn)\n } else {\n columns = relation.inverseRelation!.inverseJoinColumns.map(\n (joinColumn) => joinColumn,\n )\n }\n }\n return columns.reduce((data, column) => {\n data[column.databaseName] = relationIdRawResult[column.databaseName]\n return data\n }, {} as ObjectLiteral)\n }\n\n /*private removeVirtualColumns(entity: ObjectLiteral, alias: Alias) {\n const virtualColumns = this.expressionMap.selects\n .filter(select => select.virtual)\n .map(select => select.selection.replace(alias.name + \".\", \"\"));\n\n virtualColumns.forEach(virtualColumn => delete entity[virtualColumn]);\n }*/\n\n /** Prepare data to run #transformRelationIds, as a lot of result independent data is needed in every call */\n private prepareDataForTransformRelationIds() {\n // Return early if the relationIdMaps were already calculated\n if (this.relationIdMaps) {\n return\n }\n\n // Ensure this prepare function is only called once\n this.relationIdMaps = this.rawRelationIdResults.map(\n (rawRelationIdResult) => {\n const relation =\n rawRelationIdResult.relationIdAttribute.relation\n\n // Calculate column metadata\n let columns: ColumnMetadata[]\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n columns = relation.joinColumns\n } else if (\n relation.isOneToMany ||\n relation.isOneToOneNotOwner\n ) {\n columns = relation.inverseEntityMetadata.primaryColumns\n } else {\n // ManyToMany\n if (relation.isOwning) {\n columns = relation.inverseJoinColumns\n } else {\n columns = relation.inverseRelation!.joinColumns\n }\n }\n\n // Calculate the idMaps for the rawRelationIdResult\n return rawRelationIdResult.results.reduce((agg, result) => {\n let idMap = columns.reduce((idMap, column) => {\n let value = result[column.databaseName]\n if (\n relation.isOneToMany ||\n relation.isOneToOneNotOwner\n ) {\n if (\n column.isVirtual &&\n column.referencedColumn &&\n column.referencedColumn.propertyName !==\n column.propertyName\n ) {\n // if column is a relation\n value =\n column.referencedColumn.createValueMap(\n value,\n )\n }\n\n return OrmUtils.mergeDeep(\n idMap,\n column.createValueMap(value),\n )\n }\n if (\n !column.isPrimary &&\n column.referencedColumn!.referencedColumn\n ) {\n // if column is a relation\n value =\n column.referencedColumn!.referencedColumn!.createValueMap(\n value,\n )\n }\n\n return OrmUtils.mergeDeep(\n idMap,\n column.referencedColumn!.createValueMap(value),\n )\n }, {} as ObjectLiteral)\n\n if (\n columns.length === 1 &&\n !rawRelationIdResult.relationIdAttribute.disableMixedMap\n ) {\n if (\n relation.isOneToMany ||\n relation.isOneToOneNotOwner\n ) {\n idMap = columns[0].getEntityValue(idMap)\n } else {\n idMap =\n columns[0].referencedColumn!.getEntityValue(\n idMap,\n )\n }\n }\n\n // If an idMap is found, set it in the aggregator under the correct hash\n if (idMap !== undefined) {\n const hash = this.hashEntityIds(relation, result)\n\n if (agg[hash]) {\n agg[hash].push(idMap)\n } else {\n agg[hash] = [idMap]\n }\n }\n\n return agg\n }, {})\n },\n )\n }\n\n /**\n * Use a simple JSON.stringify to create a simple hash of the primary ids of an entity.\n * As this.extractEntityPrimaryIds always creates the primary id object in the same order, if the same relation is\n * given, a simple JSON.stringify should be enough to get a unique hash per entity!\n */\n private hashEntityIds(relation: RelationMetadata, data: ObjectLiteral) {\n const entityPrimaryIds = this.extractEntityPrimaryIds(relation, data)\n return JSON.stringify(entityPrimaryIds)\n }\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../browser/src/query-builder/transformer/RawSqlResultsToEntityTransformer.ts"],"names":[],"mappings":"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","file":"RawSqlResultsToEntityTransformer.js","sourcesContent":["import { Driver } from \"../../driver/Driver\"\nimport { RelationIdLoadResult } from \"../relation-id/RelationIdLoadResult\"\nimport { ObjectLiteral } from \"../../common/ObjectLiteral\"\nimport { ColumnMetadata } from \"../../metadata/ColumnMetadata\"\nimport { Alias } from \"../Alias\"\nimport { RelationCountLoadResult } from \"../relation-count/RelationCountLoadResult\"\nimport { RelationMetadata } from \"../../metadata/RelationMetadata\"\nimport { OrmUtils } from \"../../util/OrmUtils\"\nimport { QueryExpressionMap } from \"../QueryExpressionMap\"\nimport { EntityMetadata } from \"../../metadata/EntityMetadata\"\nimport { QueryRunner } from \"../..\"\nimport { DriverUtils } from \"../../driver/DriverUtils\"\nimport { ObjectUtils } from \"../../util/ObjectUtils\"\n\n/**\n * Transforms raw sql results returned from the database into entity object.\n * Entity is constructed based on its entity metadata.\n */\nexport class RawSqlResultsToEntityTransformer {\n /**\n * Contains a hashmap for every rawRelationIdResults given.\n * In the hashmap you will find the idMaps of a result under the hash of this.hashEntityIds for the result.\n */\n private relationIdMaps: Array<{ [idHash: string]: any[] }>\n\n private pojo: boolean\n private selections: Set<string>\n private aliasCache: Map<string, Map<string, string>>\n private columnsCache: Map<\n string,\n Map<EntityMetadata, [string, ColumnMetadata][]>\n >\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n protected expressionMap: QueryExpressionMap,\n protected driver: Driver,\n protected rawRelationIdResults: RelationIdLoadResult[],\n protected rawRelationCountResults: RelationCountLoadResult[],\n protected queryRunner?: QueryRunner,\n ) {\n this.pojo = this.expressionMap.options.includes(\"create-pojo\")\n this.selections = new Set(\n this.expressionMap.selects.map((s) => s.selection),\n )\n this.aliasCache = new Map()\n this.columnsCache = new Map()\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Since db returns a duplicated rows of the data where accuracies of the same object can be duplicated\n * we need to group our result and we must have some unique id (primary key in our case)\n */\n transform(rawResults: any[], alias: Alias): any[] {\n const group = this.group(rawResults, alias)\n const entities: any[] = []\n for (const results of group.values()) {\n const entity = this.transformRawResultsGroup(results, alias)\n if (entity !== undefined) entities.push(entity)\n }\n return entities\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Build an alias from a name and column name.\n */\n protected buildAlias(aliasName: string, columnName: string) {\n let aliases = this.aliasCache.get(aliasName)\n if (!aliases) {\n aliases = new Map()\n this.aliasCache.set(aliasName, aliases)\n }\n let columnAlias = aliases.get(columnName)\n if (!columnAlias) {\n columnAlias = DriverUtils.buildAlias(\n this.driver,\n undefined,\n aliasName,\n columnName,\n )\n aliases.set(columnName, columnAlias)\n }\n return columnAlias\n }\n\n /**\n * Groups given raw results by ids of given alias.\n */\n protected group(rawResults: any[], alias: Alias): Map<string, any[]> {\n const map = new Map()\n const keys: string[] = []\n if (alias.metadata.tableType === \"view\") {\n keys.push(\n ...alias.metadata.columns.map((column) =>\n this.buildAlias(alias.name, column.databaseName),\n ),\n )\n } else {\n keys.push(\n ...alias.metadata.primaryColumns.map((column) =>\n this.buildAlias(alias.name, column.databaseName),\n ),\n )\n }\n for (const rawResult of rawResults) {\n const id = keys\n .map((key) => {\n const keyValue = rawResult[key]\n\n if (Buffer.isBuffer(keyValue)) {\n return keyValue.toString(\"hex\")\n }\n\n if (ObjectUtils.isObject(keyValue)) {\n return JSON.stringify(keyValue)\n }\n\n return keyValue\n })\n .join(\"_\") // todo: check partial\n\n const items = map.get(id)\n if (!items) {\n map.set(id, [rawResult])\n } else {\n items.push(rawResult)\n }\n }\n return map\n }\n\n /**\n * Transforms set of data results into single entity.\n */\n protected transformRawResultsGroup(\n rawResults: any[],\n alias: Alias,\n ): ObjectLiteral | undefined {\n // let hasColumns = false; // , hasEmbeddedColumns = false, hasParentColumns = false, hasParentEmbeddedColumns = false;\n let metadata = alias.metadata\n\n if (metadata.discriminatorColumn) {\n const discriminatorValues = rawResults.map(\n (result) =>\n result[\n this.buildAlias(\n alias.name,\n alias.metadata.discriminatorColumn!.databaseName,\n )\n ],\n )\n const discriminatorMetadata = metadata.childEntityMetadatas.find(\n (childEntityMetadata) => {\n return (\n typeof discriminatorValues.find(\n (value) =>\n value ===\n childEntityMetadata.discriminatorValue,\n ) !== \"undefined\"\n )\n },\n )\n if (discriminatorMetadata) metadata = discriminatorMetadata\n }\n const entity: any = metadata.create(this.queryRunner, {\n fromDeserializer: true,\n pojo: this.pojo,\n })\n\n // get value from columns selections and put them into newly created entity\n const hasColumns = this.transformColumns(\n rawResults,\n alias,\n entity,\n metadata,\n )\n const hasRelations = this.transformJoins(\n rawResults,\n entity,\n alias,\n metadata,\n )\n const hasRelationIds = this.transformRelationIds(\n rawResults,\n alias,\n entity,\n metadata,\n )\n const hasRelationCounts = this.transformRelationCounts(\n rawResults,\n alias,\n entity,\n )\n\n // if we have at least one selected column then return this entity\n // since entity must have at least primary columns to be really selected and transformed into entity\n if (hasColumns) return entity\n\n // if we don't have any selected column we should not return entity,\n // except for the case when entity only contain a primary column as a relation to another entity\n // in this case its absolutely possible our entity to not have any columns except a single relation\n const hasOnlyVirtualPrimaryColumns = metadata.primaryColumns.every(\n (column) => column.isVirtual === true,\n ) // todo: create metadata.hasOnlyVirtualPrimaryColumns\n if (\n hasOnlyVirtualPrimaryColumns &&\n (hasRelations || hasRelationIds || hasRelationCounts)\n )\n return entity\n\n return undefined\n }\n\n // get value from columns selections and put them into object\n protected transformColumns(\n rawResults: any[],\n alias: Alias,\n entity: ObjectLiteral,\n metadata: EntityMetadata,\n ): boolean {\n let hasData = false\n const result = rawResults[0]\n for (const [key, column] of this.getColumnsToProcess(\n alias.name,\n metadata,\n )) {\n const value = result[key]\n\n if (value === undefined) continue\n // we don't mark it as has data because if we will have all nulls in our object - we don't need such object\n else if (value !== null && !column.isVirtualProperty) hasData = true\n\n column.setEntityValue(\n entity,\n this.driver.prepareHydratedValue(value, column),\n )\n }\n return hasData\n }\n\n /**\n * Transforms joined entities in the given raw results by a given alias and stores to the given (parent) entity\n */\n protected transformJoins(\n rawResults: any[],\n entity: ObjectLiteral,\n alias: Alias,\n metadata: EntityMetadata,\n ) {\n let hasData = false\n\n // let discriminatorValue: string = \"\";\n // if (metadata.discriminatorColumn)\n // discriminatorValue = rawResults[0][this.buildAlias(alias.name, alias.metadata.discriminatorColumn!.databaseName)];\n\n for (const join of this.expressionMap.joinAttributes) {\n // todo: we have problem here - when inner joins are used without selects it still create empty array\n\n // skip joins without metadata\n if (!join.metadata) continue\n\n // if simple left or inner join was performed without selection then we don't need to do anything\n if (!join.isSelected) continue\n\n // this check need to avoid setting properties than not belong to entity when single table inheritance used. (todo: check if we still need it)\n // const metadata = metadata.childEntityMetadatas.find(childEntityMetadata => discriminatorValue === childEntityMetadata.discriminatorValue);\n if (\n join.relation &&\n !metadata.relations.find(\n (relation) => relation === join.relation,\n )\n )\n continue\n\n // some checks to make sure this join is for current alias\n if (join.mapToProperty) {\n if (join.mapToPropertyParentAlias !== alias.name) continue\n } else {\n if (\n !join.relation ||\n join.parentAlias !== alias.name ||\n join.relationPropertyPath !== join.relation!.propertyPath\n )\n continue\n }\n\n // transform joined data into entities\n let result: any = this.transform(rawResults, join.alias)\n result = !join.isMany ? result[0] : result\n result = !join.isMany && result === undefined ? null : result // this is needed to make relations to return null when its joined but nothing was found in the database\n // if nothing was joined then simply continue\n if (result === undefined) continue\n\n // if join was mapped to some property then save result to that property\n if (join.mapToPropertyPropertyName) {\n entity[join.mapToPropertyPropertyName] = result // todo: fix embeds\n } else {\n // otherwise set to relation\n join.relation!.setEntityValue(entity, result)\n }\n\n hasData = true\n }\n return hasData\n }\n\n protected transformRelationIds(\n rawSqlResults: any[],\n alias: Alias,\n entity: ObjectLiteral,\n metadata: EntityMetadata,\n ): boolean {\n let hasData = false\n for (const [\n index,\n rawRelationIdResult,\n ] of this.rawRelationIdResults.entries()) {\n if (\n rawRelationIdResult.relationIdAttribute.parentAlias !==\n alias.name\n )\n continue\n\n const relation = rawRelationIdResult.relationIdAttribute.relation\n const valueMap = this.createValueMapFromJoinColumns(\n relation,\n rawRelationIdResult.relationIdAttribute.parentAlias,\n rawSqlResults,\n )\n if (valueMap === undefined || valueMap === null) {\n continue\n }\n\n // prepare common data for this call\n this.prepareDataForTransformRelationIds()\n\n // Extract idMaps from prepared data by hash\n const hash = this.hashEntityIds(relation, valueMap)\n const idMaps = this.relationIdMaps[index][hash] || []\n\n // Map data to properties\n const properties =\n rawRelationIdResult.relationIdAttribute.mapToPropertyPropertyPath.split(\n \".\",\n )\n const mapToProperty = (\n properties: string[],\n map: ObjectLiteral,\n value: any,\n ): any => {\n const property = properties.shift()\n if (property && properties.length === 0) {\n map[property] = value\n return map\n }\n if (property && properties.length > 0) {\n mapToProperty(properties, map[property], value)\n } else {\n return map\n }\n }\n if (relation.isOneToOne || relation.isManyToOne) {\n if (idMaps[0] !== undefined) {\n mapToProperty(properties, entity, idMaps[0])\n hasData = true\n }\n } else {\n mapToProperty(properties, entity, idMaps)\n hasData = hasData || idMaps.length > 0\n }\n }\n\n return hasData\n }\n\n protected transformRelationCounts(\n rawSqlResults: any[],\n alias: Alias,\n entity: ObjectLiteral,\n ): boolean {\n let hasData = false\n for (const rawRelationCountResult of this.rawRelationCountResults) {\n if (\n rawRelationCountResult.relationCountAttribute.parentAlias !==\n alias.name\n )\n continue\n const relation =\n rawRelationCountResult.relationCountAttribute.relation\n let referenceColumnName: string\n\n if (relation.isOneToMany) {\n referenceColumnName =\n relation.inverseRelation!.joinColumns[0].referencedColumn!\n .databaseName // todo: fix joinColumns[0]\n } else {\n referenceColumnName = relation.isOwning\n ? relation.joinColumns[0].referencedColumn!.databaseName\n : relation.inverseRelation!.joinColumns[0].referencedColumn!\n .databaseName\n }\n\n const referenceColumnValue =\n rawSqlResults[0][\n this.buildAlias(alias.name, referenceColumnName)\n ] // we use zero index since its grouped data // todo: selection with alias for entity columns wont work\n if (\n referenceColumnValue !== undefined &&\n referenceColumnValue !== null\n ) {\n entity[\n rawRelationCountResult.relationCountAttribute.mapToPropertyPropertyName\n ] = 0\n for (const result of rawRelationCountResult.results) {\n if (result[\"parentId\"] !== referenceColumnValue) continue\n entity[\n rawRelationCountResult.relationCountAttribute.mapToPropertyPropertyName\n ] = parseInt(result[\"cnt\"])\n hasData = true\n }\n }\n }\n\n return hasData\n }\n\n private getColumnsToProcess(aliasName: string, metadata: EntityMetadata) {\n let metadatas = this.columnsCache.get(aliasName)\n if (!metadatas) {\n metadatas = new Map()\n this.columnsCache.set(aliasName, metadatas)\n }\n let columns = metadatas.get(metadata)\n if (!columns) {\n columns = metadata.columns\n .filter(\n (column) =>\n !column.isVirtual &&\n // if user does not selected the whole entity or he used partial selection and does not select this particular column\n // then we don't add this column and its value into the entity\n (this.selections.has(aliasName) ||\n this.selections.has(\n `${aliasName}.${column.propertyPath}`,\n )) &&\n // if table inheritance is used make sure this column is not child's column\n !metadata.childEntityMetadatas.some(\n (childMetadata) =>\n childMetadata.target === column.target,\n ),\n )\n .map((column) => [\n this.buildAlias(aliasName, column.databaseName),\n column,\n ])\n metadatas.set(metadata, columns)\n }\n return columns\n }\n\n private createValueMapFromJoinColumns(\n relation: RelationMetadata,\n parentAlias: string,\n rawSqlResults: any[],\n ): ObjectLiteral {\n let columns: ColumnMetadata[]\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n columns = relation.entityMetadata.primaryColumns.map(\n (joinColumn) => joinColumn,\n )\n } else if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n columns = relation.inverseRelation!.joinColumns.map(\n (joinColumn) => joinColumn,\n )\n } else {\n if (relation.isOwning) {\n columns = relation.joinColumns.map((joinColumn) => joinColumn)\n } else {\n columns = relation.inverseRelation!.inverseJoinColumns.map(\n (joinColumn) => joinColumn,\n )\n }\n }\n return columns.reduce((valueMap, column) => {\n for (const rawSqlResult of rawSqlResults) {\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n valueMap[column.databaseName] =\n this.driver.prepareHydratedValue(\n rawSqlResult[\n this.buildAlias(\n parentAlias,\n column.databaseName,\n )\n ],\n column,\n )\n } else {\n valueMap[column.databaseName] =\n this.driver.prepareHydratedValue(\n rawSqlResult[\n this.buildAlias(\n parentAlias,\n column.referencedColumn!.databaseName,\n )\n ],\n column.referencedColumn!,\n )\n }\n }\n return valueMap\n }, {} as ObjectLiteral)\n }\n\n private extractEntityPrimaryIds(\n relation: RelationMetadata,\n relationIdRawResult: any,\n ) {\n let columns: ColumnMetadata[]\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n columns = relation.entityMetadata.primaryColumns.map(\n (joinColumn) => joinColumn,\n )\n } else if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n columns = relation.inverseRelation!.joinColumns.map(\n (joinColumn) => joinColumn,\n )\n } else {\n if (relation.isOwning) {\n columns = relation.joinColumns.map((joinColumn) => joinColumn)\n } else {\n columns = relation.inverseRelation!.inverseJoinColumns.map(\n (joinColumn) => joinColumn,\n )\n }\n }\n return columns.reduce((data, column) => {\n data[column.databaseName] = relationIdRawResult[column.databaseName]\n return data\n }, {} as ObjectLiteral)\n }\n\n /*private removeVirtualColumns(entity: ObjectLiteral, alias: Alias) {\n const virtualColumns = this.expressionMap.selects\n .filter(select => select.virtual)\n .map(select => select.selection.replace(alias.name + \".\", \"\"));\n\n virtualColumns.forEach(virtualColumn => delete entity[virtualColumn]);\n }*/\n\n /** Prepare data to run #transformRelationIds, as a lot of result independent data is needed in every call */\n private prepareDataForTransformRelationIds() {\n // Return early if the relationIdMaps were already calculated\n if (this.relationIdMaps) {\n return\n }\n\n // Ensure this prepare function is only called once\n this.relationIdMaps = this.rawRelationIdResults.map(\n (rawRelationIdResult) => {\n const relation =\n rawRelationIdResult.relationIdAttribute.relation\n\n // Calculate column metadata\n let columns: ColumnMetadata[]\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n columns = relation.joinColumns\n } else if (\n relation.isOneToMany ||\n relation.isOneToOneNotOwner\n ) {\n columns = relation.inverseEntityMetadata.primaryColumns\n } else {\n // ManyToMany\n if (relation.isOwning) {\n columns = relation.inverseJoinColumns\n } else {\n columns = relation.inverseRelation!.joinColumns\n }\n }\n\n // Calculate the idMaps for the rawRelationIdResult\n return rawRelationIdResult.results.reduce((agg, result) => {\n let idMap = columns.reduce((idMap, column) => {\n let value = result[column.databaseName]\n if (\n relation.isOneToMany ||\n relation.isOneToOneNotOwner\n ) {\n if (\n column.isVirtual &&\n column.referencedColumn &&\n column.referencedColumn.propertyName !==\n column.propertyName\n ) {\n // if column is a relation\n value =\n column.referencedColumn.createValueMap(\n value,\n )\n }\n\n return OrmUtils.mergeDeep(\n idMap,\n column.createValueMap(value),\n )\n }\n if (\n !column.isPrimary &&\n column.referencedColumn!.referencedColumn\n ) {\n // if column is a relation\n value =\n column.referencedColumn!.referencedColumn!.createValueMap(\n value,\n )\n }\n\n return OrmUtils.mergeDeep(\n idMap,\n column.referencedColumn!.createValueMap(value),\n )\n }, {} as ObjectLiteral)\n\n if (\n columns.length === 1 &&\n !rawRelationIdResult.relationIdAttribute.disableMixedMap\n ) {\n if (\n relation.isOneToMany ||\n relation.isOneToOneNotOwner\n ) {\n idMap = columns[0].getEntityValue(idMap)\n } else {\n idMap =\n columns[0].referencedColumn!.getEntityValue(\n idMap,\n )\n }\n }\n\n // If an idMap is found, set it in the aggregator under the correct hash\n if (idMap !== undefined) {\n const hash = this.hashEntityIds(relation, result)\n\n if (agg[hash]) {\n agg[hash].push(idMap)\n } else {\n agg[hash] = [idMap]\n }\n }\n\n return agg\n }, {})\n },\n )\n }\n\n /**\n * Use a simple JSON.stringify to create a simple hash of the primary ids of an entity.\n * As this.extractEntityPrimaryIds always creates the primary id object in the same order, if the same relation is\n * given, a simple JSON.stringify should be enough to get a unique hash per entity!\n */\n private hashEntityIds(relation: RelationMetadata, data: ObjectLiteral) {\n const entityPrimaryIds = this.extractEntityPrimaryIds(relation, data)\n return JSON.stringify(entityPrimaryIds)\n }\n}\n"],"sourceRoot":"../.."}
@@ -18,8 +18,8 @@ import { TypeORMError } from "../error";
18
18
  * @param result An array in which the results will be populated
19
19
  */
20
20
  function createDFS(edges, leavesOnly, result) {
21
- let currentPath = [];
22
- let visited = {};
21
+ const currentPath = [];
22
+ const visited = {};
23
23
  return function DFS(currentNode) {
24
24
  visited[currentNode] = true;
25
25
  currentPath.push(currentNode);
@@ -154,10 +154,10 @@ export class DepGraph {
154
154
  */
155
155
  dependenciesOf(node, leavesOnly) {
156
156
  if (this.hasNode(node)) {
157
- let result = [];
158
- let DFS = createDFS(this.outgoingEdges, leavesOnly, result);
157
+ const result = [];
158
+ const DFS = createDFS(this.outgoingEdges, leavesOnly, result);
159
159
  DFS(node);
160
- let idx = result.indexOf(node);
160
+ const idx = result.indexOf(node);
161
161
  if (idx >= 0) {
162
162
  result.splice(idx, 1);
163
163
  }
@@ -176,10 +176,10 @@ export class DepGraph {
176
176
  */
177
177
  dependantsOf(node, leavesOnly) {
178
178
  if (this.hasNode(node)) {
179
- let result = [];
180
- let DFS = createDFS(this.incomingEdges, leavesOnly, result);
179
+ const result = [];
180
+ const DFS = createDFS(this.incomingEdges, leavesOnly, result);
181
181
  DFS(node);
182
- let idx = result.indexOf(node);
182
+ const idx = result.indexOf(node);
183
183
  if (idx >= 0) {
184
184
  result.splice(idx, 1);
185
185
  }
@@ -197,20 +197,20 @@ export class DepGraph {
197
197
  * If `leavesOnly` is true, only nodes that do not depend on any other nodes will be returned.
198
198
  */
199
199
  overallOrder(leavesOnly) {
200
- let self = this;
201
- let result = [];
202
- let keys = Object.keys(this.nodes);
200
+ const self = this;
201
+ const result = [];
202
+ const keys = Object.keys(this.nodes);
203
203
  if (keys.length === 0) {
204
204
  return result; // Empty graph
205
205
  }
206
206
  else {
207
207
  // Look for cycles - we run the DFS starting at all the nodes in case there
208
208
  // are several disconnected subgraphs inside this dependency graph.
209
- let CycleDFS = createDFS(this.outgoingEdges, false, []);
209
+ const CycleDFS = createDFS(this.outgoingEdges, false, []);
210
210
  keys.forEach(function (n) {
211
211
  CycleDFS(n);
212
212
  });
213
- let DFS = createDFS(this.outgoingEdges, leavesOnly, result);
213
+ const DFS = createDFS(this.outgoingEdges, leavesOnly, result);
214
214
  // Find all potential starting points (nodes with nothing depending on them) an
215
215
  // run a DFS starting at these points to get the order
216
216
  keys.filter(function (node) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/util/DepGraph.ts"],"names":[],"mappings":"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","file":"DepGraph.js","sourcesContent":["/**\n * This source code is from https://github.com/jriecken/dependency-graph\n * Just added \"any\" types here, wrapper everything into exported class.\n * We cant use a package itself because we want to package \"everything-in-it\" for the frontend users of TypeORM.\n */\n\n/**\n * A simple dependency graph\n */\n\nimport { TypeORMError } from \"../error\"\n\n/**\n * Helper for creating a Depth-First-Search on\n * a set of edges.\n *\n * Detects cycles and throws an Error if one is detected.\n *\n * @param edges The set of edges to DFS through\n * @param leavesOnly Whether to only return \"leaf\" nodes (ones who have no edges)\n * @param result An array in which the results will be populated\n */\nfunction createDFS(edges: any, leavesOnly: any, result: any) {\n let currentPath: any[] = []\n let visited: any = {}\n return function DFS(currentNode: any) {\n visited[currentNode] = true\n currentPath.push(currentNode)\n edges[currentNode].forEach(function (node: any) {\n if (!visited[node]) {\n DFS(node)\n } else if (currentPath.indexOf(node) >= 0) {\n currentPath.push(node)\n throw new TypeORMError(\n `Dependency Cycle Found: ${currentPath.join(\" -> \")}`,\n )\n }\n })\n currentPath.pop()\n if (\n (!leavesOnly || edges[currentNode].length === 0) &&\n result.indexOf(currentNode) === -1\n ) {\n result.push(currentNode)\n }\n }\n}\n\nexport class DepGraph {\n nodes: any = {}\n outgoingEdges: any = {} // Node -> [Dependency Node]\n incomingEdges: any = {} // Node -> [Dependant Node]\n\n /**\n * Add a node to the dependency graph. If a node already exists, this method will do nothing.\n */\n addNode(node: any, data?: any) {\n if (!this.hasNode(node)) {\n // Checking the arguments length allows the user to add a node with undefined data\n if (arguments.length === 2) {\n this.nodes[node] = data\n } else {\n this.nodes[node] = node\n }\n this.outgoingEdges[node] = []\n this.incomingEdges[node] = []\n }\n }\n\n /**\n * Remove a node from the dependency graph. If a node does not exist, this method will do nothing.\n */\n removeNode(node: any) {\n if (this.hasNode(node)) {\n delete this.nodes[node]\n delete this.outgoingEdges[node]\n delete this.incomingEdges[node]\n ;[this.incomingEdges, this.outgoingEdges].forEach(function (\n edgeList,\n ) {\n Object.keys(edgeList).forEach(function (key: any) {\n const idx = edgeList[key].indexOf(node)\n if (idx >= 0) {\n edgeList[key].splice(idx, 1)\n }\n })\n })\n }\n }\n\n /**\n * Check if a node exists in the graph\n */\n hasNode(node: any) {\n return this.nodes.hasOwnProperty(node)\n }\n\n /**\n * Get the data associated with a node name\n */\n getNodeData(node: any) {\n if (this.hasNode(node)) {\n return this.nodes[node]\n } else {\n throw new TypeORMError(`Node does not exist: ${node}`)\n }\n }\n\n /**\n * Set the associated data for a given node name. If the node does not exist, this method will throw an error\n */\n setNodeData(node: any, data: any) {\n if (this.hasNode(node)) {\n this.nodes[node] = data\n } else {\n throw new TypeORMError(`Node does not exist: ${node}`)\n }\n }\n\n /**\n * Add a dependency between two nodes. If either of the nodes does not exist,\n * an Error will be thrown.\n */\n addDependency(from: any, to: any) {\n if (!this.hasNode(from)) {\n throw new TypeORMError(`Node does not exist: ${from}`)\n }\n if (!this.hasNode(to)) {\n throw new TypeORMError(`Node does not exist: ${to}`)\n }\n if (this.outgoingEdges[from].indexOf(to) === -1) {\n this.outgoingEdges[from].push(to)\n }\n if (this.incomingEdges[to].indexOf(from) === -1) {\n this.incomingEdges[to].push(from)\n }\n return true\n }\n\n /**\n * Remove a dependency between two nodes.\n */\n removeDependency(from: any, to: any) {\n let idx: any\n if (this.hasNode(from)) {\n idx = this.outgoingEdges[from].indexOf(to)\n if (idx >= 0) {\n this.outgoingEdges[from].splice(idx, 1)\n }\n }\n\n if (this.hasNode(to)) {\n idx = this.incomingEdges[to].indexOf(from)\n if (idx >= 0) {\n this.incomingEdges[to].splice(idx, 1)\n }\n }\n }\n\n /**\n * Get an array containing the nodes that the specified node depends on (transitively).\n *\n * Throws an Error if the graph has a cycle, or the specified node does not exist.\n *\n * If `leavesOnly` is true, only nodes that do not depend on any other nodes will be returned\n * in the array.\n */\n dependenciesOf(node: any, leavesOnly: any) {\n if (this.hasNode(node)) {\n let result: any[] = []\n let DFS = createDFS(this.outgoingEdges, leavesOnly, result)\n DFS(node)\n let idx = result.indexOf(node)\n if (idx >= 0) {\n result.splice(idx, 1)\n }\n return result\n } else {\n throw new TypeORMError(`Node does not exist: ${node}`)\n }\n }\n\n /**\n * get an array containing the nodes that depend on the specified node (transitively).\n *\n * Throws an Error if the graph has a cycle, or the specified node does not exist.\n *\n * If `leavesOnly` is true, only nodes that do not have any dependants will be returned in the array.\n */\n dependantsOf(node: any, leavesOnly: any) {\n if (this.hasNode(node)) {\n let result: any[] = []\n let DFS = createDFS(this.incomingEdges, leavesOnly, result)\n DFS(node)\n let idx = result.indexOf(node)\n if (idx >= 0) {\n result.splice(idx, 1)\n }\n return result\n } else {\n throw new TypeORMError(`Node does not exist: ${node}`)\n }\n }\n\n /**\n * Construct the overall processing order for the dependency graph.\n *\n * Throws an Error if the graph has a cycle.\n *\n * If `leavesOnly` is true, only nodes that do not depend on any other nodes will be returned.\n */\n overallOrder(leavesOnly?: any) {\n let self = this\n let result: any[] = []\n let keys = Object.keys(this.nodes)\n if (keys.length === 0) {\n return result // Empty graph\n } else {\n // Look for cycles - we run the DFS starting at all the nodes in case there\n // are several disconnected subgraphs inside this dependency graph.\n let CycleDFS = createDFS(this.outgoingEdges, false, [])\n keys.forEach(function (n: any) {\n CycleDFS(n)\n })\n\n let DFS = createDFS(this.outgoingEdges, leavesOnly, result)\n // Find all potential starting points (nodes with nothing depending on them) an\n // run a DFS starting at these points to get the order\n keys.filter(function (node) {\n return self.incomingEdges[node].length === 0\n }).forEach(function (n) {\n DFS(n)\n })\n\n return result\n }\n }\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/util/DepGraph.ts"],"names":[],"mappings":"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","file":"DepGraph.js","sourcesContent":["/**\n * This source code is from https://github.com/jriecken/dependency-graph\n * Just added \"any\" types here, wrapper everything into exported class.\n * We cant use a package itself because we want to package \"everything-in-it\" for the frontend users of TypeORM.\n */\n\n/**\n * A simple dependency graph\n */\n\nimport { TypeORMError } from \"../error\"\n\n/**\n * Helper for creating a Depth-First-Search on\n * a set of edges.\n *\n * Detects cycles and throws an Error if one is detected.\n *\n * @param edges The set of edges to DFS through\n * @param leavesOnly Whether to only return \"leaf\" nodes (ones who have no edges)\n * @param result An array in which the results will be populated\n */\nfunction createDFS(edges: any, leavesOnly: any, result: any) {\n const currentPath: any[] = []\n const visited: any = {}\n return function DFS(currentNode: any) {\n visited[currentNode] = true\n currentPath.push(currentNode)\n edges[currentNode].forEach(function (node: any) {\n if (!visited[node]) {\n DFS(node)\n } else if (currentPath.indexOf(node) >= 0) {\n currentPath.push(node)\n throw new TypeORMError(\n `Dependency Cycle Found: ${currentPath.join(\" -> \")}`,\n )\n }\n })\n currentPath.pop()\n if (\n (!leavesOnly || edges[currentNode].length === 0) &&\n result.indexOf(currentNode) === -1\n ) {\n result.push(currentNode)\n }\n }\n}\n\nexport class DepGraph {\n nodes: any = {}\n outgoingEdges: any = {} // Node -> [Dependency Node]\n incomingEdges: any = {} // Node -> [Dependant Node]\n\n /**\n * Add a node to the dependency graph. If a node already exists, this method will do nothing.\n */\n addNode(node: any, data?: any) {\n if (!this.hasNode(node)) {\n // Checking the arguments length allows the user to add a node with undefined data\n if (arguments.length === 2) {\n this.nodes[node] = data\n } else {\n this.nodes[node] = node\n }\n this.outgoingEdges[node] = []\n this.incomingEdges[node] = []\n }\n }\n\n /**\n * Remove a node from the dependency graph. If a node does not exist, this method will do nothing.\n */\n removeNode(node: any) {\n if (this.hasNode(node)) {\n delete this.nodes[node]\n delete this.outgoingEdges[node]\n delete this.incomingEdges[node]\n ;[this.incomingEdges, this.outgoingEdges].forEach(function (\n edgeList,\n ) {\n Object.keys(edgeList).forEach(function (key: any) {\n const idx = edgeList[key].indexOf(node)\n if (idx >= 0) {\n edgeList[key].splice(idx, 1)\n }\n })\n })\n }\n }\n\n /**\n * Check if a node exists in the graph\n */\n hasNode(node: any) {\n return this.nodes.hasOwnProperty(node)\n }\n\n /**\n * Get the data associated with a node name\n */\n getNodeData(node: any) {\n if (this.hasNode(node)) {\n return this.nodes[node]\n } else {\n throw new TypeORMError(`Node does not exist: ${node}`)\n }\n }\n\n /**\n * Set the associated data for a given node name. If the node does not exist, this method will throw an error\n */\n setNodeData(node: any, data: any) {\n if (this.hasNode(node)) {\n this.nodes[node] = data\n } else {\n throw new TypeORMError(`Node does not exist: ${node}`)\n }\n }\n\n /**\n * Add a dependency between two nodes. If either of the nodes does not exist,\n * an Error will be thrown.\n */\n addDependency(from: any, to: any) {\n if (!this.hasNode(from)) {\n throw new TypeORMError(`Node does not exist: ${from}`)\n }\n if (!this.hasNode(to)) {\n throw new TypeORMError(`Node does not exist: ${to}`)\n }\n if (this.outgoingEdges[from].indexOf(to) === -1) {\n this.outgoingEdges[from].push(to)\n }\n if (this.incomingEdges[to].indexOf(from) === -1) {\n this.incomingEdges[to].push(from)\n }\n return true\n }\n\n /**\n * Remove a dependency between two nodes.\n */\n removeDependency(from: any, to: any) {\n let idx: any\n if (this.hasNode(from)) {\n idx = this.outgoingEdges[from].indexOf(to)\n if (idx >= 0) {\n this.outgoingEdges[from].splice(idx, 1)\n }\n }\n\n if (this.hasNode(to)) {\n idx = this.incomingEdges[to].indexOf(from)\n if (idx >= 0) {\n this.incomingEdges[to].splice(idx, 1)\n }\n }\n }\n\n /**\n * Get an array containing the nodes that the specified node depends on (transitively).\n *\n * Throws an Error if the graph has a cycle, or the specified node does not exist.\n *\n * If `leavesOnly` is true, only nodes that do not depend on any other nodes will be returned\n * in the array.\n */\n dependenciesOf(node: any, leavesOnly: any) {\n if (this.hasNode(node)) {\n const result: any[] = []\n const DFS = createDFS(this.outgoingEdges, leavesOnly, result)\n DFS(node)\n const idx = result.indexOf(node)\n if (idx >= 0) {\n result.splice(idx, 1)\n }\n return result\n } else {\n throw new TypeORMError(`Node does not exist: ${node}`)\n }\n }\n\n /**\n * get an array containing the nodes that depend on the specified node (transitively).\n *\n * Throws an Error if the graph has a cycle, or the specified node does not exist.\n *\n * If `leavesOnly` is true, only nodes that do not have any dependants will be returned in the array.\n */\n dependantsOf(node: any, leavesOnly: any) {\n if (this.hasNode(node)) {\n const result: any[] = []\n const DFS = createDFS(this.incomingEdges, leavesOnly, result)\n DFS(node)\n const idx = result.indexOf(node)\n if (idx >= 0) {\n result.splice(idx, 1)\n }\n return result\n } else {\n throw new TypeORMError(`Node does not exist: ${node}`)\n }\n }\n\n /**\n * Construct the overall processing order for the dependency graph.\n *\n * Throws an Error if the graph has a cycle.\n *\n * If `leavesOnly` is true, only nodes that do not depend on any other nodes will be returned.\n */\n overallOrder(leavesOnly?: any) {\n const self = this\n const result: any[] = []\n const keys = Object.keys(this.nodes)\n if (keys.length === 0) {\n return result // Empty graph\n } else {\n // Look for cycles - we run the DFS starting at all the nodes in case there\n // are several disconnected subgraphs inside this dependency graph.\n const CycleDFS = createDFS(this.outgoingEdges, false, [])\n keys.forEach(function (n: any) {\n CycleDFS(n)\n })\n\n const DFS = createDFS(this.outgoingEdges, leavesOnly, result)\n // Find all potential starting points (nodes with nothing depending on them) an\n // run a DFS starting at these points to get the order\n keys.filter(function (node) {\n return self.incomingEdges[node].length === 0\n }).forEach(function (n) {\n DFS(n)\n })\n\n return result\n }\n }\n}\n"],"sourceRoot":".."}
@@ -16,10 +16,10 @@ export async function importClassesFromDirectories(logger, directories, formats
16
16
  allLoaded.push(exported);
17
17
  }
18
18
  else if (Array.isArray(exported)) {
19
- exported.forEach((i) => loadFileClasses(i, allLoaded));
19
+ exported.forEach((value) => loadFileClasses(value, allLoaded));
20
20
  }
21
21
  else if (ObjectUtils.isObject(exported)) {
22
- Object.keys(exported).forEach((key) => loadFileClasses(exported[key], allLoaded));
22
+ Object.values(exported).forEach((value) => loadFileClasses(value, allLoaded));
23
23
  }
24
24
  return allLoaded;
25
25
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/util/DirectoryExportedClassesLoader.ts"],"names":[],"mappings":"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","file":"DirectoryExportedClassesLoader.js","sourcesContent":["import * as glob from \"glob\"\nimport { PlatformTools } from \"../platform/PlatformTools\"\nimport { Logger } from \"../logger/Logger\"\nimport { importOrRequireFile } from \"./ImportUtils\"\nimport { ObjectUtils } from \"./ObjectUtils\"\nimport { InstanceChecker } from \"./InstanceChecker\"\n\n/**\n * Loads all exported classes from the given directory.\n */\nexport async function importClassesFromDirectories(\n logger: Logger,\n directories: string[],\n formats = [\".js\", \".mjs\", \".cjs\", \".ts\", \".mts\", \".cts\"],\n): Promise<Function[]> {\n const logLevel = \"info\"\n const classesNotFoundMessage =\n \"No classes were found using the provided glob pattern: \"\n const classesFoundMessage = \"All classes found using provided glob pattern\"\n function loadFileClasses(exported: any, allLoaded: Function[]) {\n if (\n typeof exported === \"function\" ||\n InstanceChecker.isEntitySchema(exported)\n ) {\n allLoaded.push(exported)\n } else if (Array.isArray(exported)) {\n exported.forEach((i: any) => loadFileClasses(i, allLoaded))\n } else if (ObjectUtils.isObject(exported)) {\n Object.keys(exported).forEach((key) =>\n loadFileClasses(exported[key], allLoaded),\n )\n }\n return allLoaded\n }\n\n const allFiles = directories.reduce((allDirs, dir) => {\n return allDirs.concat(glob.sync(PlatformTools.pathNormalize(dir)))\n }, [] as string[])\n\n if (directories.length > 0 && allFiles.length === 0) {\n logger.log(logLevel, `${classesNotFoundMessage} \"${directories}\"`)\n } else if (allFiles.length > 0) {\n logger.log(\n logLevel,\n `${classesFoundMessage} \"${directories}\" : \"${allFiles}\"`,\n )\n }\n const dirPromises = allFiles\n .filter((file) => {\n const dtsExtension = file.substring(file.length - 5, file.length)\n return (\n formats.indexOf(PlatformTools.pathExtname(file)) !== -1 &&\n dtsExtension !== \".d.ts\"\n )\n })\n .map(async (file) => {\n const [importOrRequireResult] = await importOrRequireFile(\n PlatformTools.pathResolve(file),\n )\n return importOrRequireResult\n })\n\n const dirs = await Promise.all(dirPromises)\n\n return loadFileClasses(dirs, [])\n}\n\n/**\n * Loads all json files from the given directory.\n */\nexport function importJsonsFromDirectories(\n directories: string[],\n format = \".json\",\n): any[] {\n const allFiles = directories.reduce((allDirs, dir) => {\n return allDirs.concat(glob.sync(PlatformTools.pathNormalize(dir)))\n }, [] as string[])\n\n return allFiles\n .filter((file) => PlatformTools.pathExtname(file) === format)\n .map((file) => require(PlatformTools.pathResolve(file)))\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/util/DirectoryExportedClassesLoader.ts"],"names":[],"mappings":"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","file":"DirectoryExportedClassesLoader.js","sourcesContent":["import * as glob from \"glob\"\nimport { PlatformTools } from \"../platform/PlatformTools\"\nimport { Logger } from \"../logger/Logger\"\nimport { importOrRequireFile } from \"./ImportUtils\"\nimport { ObjectUtils } from \"./ObjectUtils\"\nimport { InstanceChecker } from \"./InstanceChecker\"\n\n/**\n * Loads all exported classes from the given directory.\n */\nexport async function importClassesFromDirectories(\n logger: Logger,\n directories: string[],\n formats = [\".js\", \".mjs\", \".cjs\", \".ts\", \".mts\", \".cts\"],\n): Promise<Function[]> {\n const logLevel = \"info\"\n const classesNotFoundMessage =\n \"No classes were found using the provided glob pattern: \"\n const classesFoundMessage = \"All classes found using provided glob pattern\"\n function loadFileClasses(exported: any, allLoaded: Function[]) {\n if (\n typeof exported === \"function\" ||\n InstanceChecker.isEntitySchema(exported)\n ) {\n allLoaded.push(exported)\n } else if (Array.isArray(exported)) {\n exported.forEach((value) => loadFileClasses(value, allLoaded))\n } else if (ObjectUtils.isObject(exported)) {\n Object.values(exported).forEach((value) =>\n loadFileClasses(value, allLoaded),\n )\n }\n return allLoaded\n }\n\n const allFiles = directories.reduce((allDirs, dir) => {\n return allDirs.concat(glob.sync(PlatformTools.pathNormalize(dir)))\n }, [] as string[])\n\n if (directories.length > 0 && allFiles.length === 0) {\n logger.log(logLevel, `${classesNotFoundMessage} \"${directories}\"`)\n } else if (allFiles.length > 0) {\n logger.log(\n logLevel,\n `${classesFoundMessage} \"${directories}\" : \"${allFiles}\"`,\n )\n }\n const dirPromises = allFiles\n .filter((file) => {\n const dtsExtension = file.substring(file.length - 5, file.length)\n return (\n formats.indexOf(PlatformTools.pathExtname(file)) !== -1 &&\n dtsExtension !== \".d.ts\"\n )\n })\n .map(async (file) => {\n const [importOrRequireResult] = await importOrRequireFile(\n PlatformTools.pathResolve(file),\n )\n return importOrRequireResult\n })\n\n const dirs = await Promise.all(dirPromises)\n\n return loadFileClasses(dirs, [])\n}\n\n/**\n * Loads all json files from the given directory.\n */\nexport function importJsonsFromDirectories(\n directories: string[],\n format = \".json\",\n): any[] {\n const allFiles = directories.reduce((allDirs, dir) => {\n return allDirs.concat(glob.sync(PlatformTools.pathNormalize(dir)))\n }, [] as string[])\n\n return allFiles\n .filter((file) => PlatformTools.pathExtname(file) === format)\n .map((file) => require(PlatformTools.pathResolve(file)))\n}\n"],"sourceRoot":".."}
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/util/InstanceChecker.ts"],"names":[],"mappings":"AA8BA,MAAM,OAAO,eAAe;IACxB,MAAM,CAAC,gBAAgB,CAAC,GAAY;QAChC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAA;IAC5C,CAAC;IACD,MAAM,CAAC,gBAAgB,CAAC,GAAY;QAChC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAA;IAC5C,CAAC;IACD,MAAM,CAAC,gBAAgB,CAAC,GAAY;QAChC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAA;IAC5C,CAAC;IACD,MAAM,CAAC,oBAAoB,CAAC,GAAY;QACpC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAA;IAChD,CAAC;IACD,MAAM,CAAC,oBAAoB,CAAC,GAAY;QACpC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAA;IAChD,CAAC;IACD,MAAM,CAAC,oBAAoB,CAAC,GAAY;QACpC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAA;IAChD,CAAC;IACD,MAAM,CAAC,oBAAoB,CAAC,GAAY;QACpC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAA;IAChD,CAAC;IACD,MAAM,CAAC,wBAAwB,CAC3B,GAAY;QAEZ,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAA;IACpD,CAAC;IACD,MAAM,CAAC,sBAAsB,CACzB,GAAY;QAEZ,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAA;IAClD,CAAC;IACD,MAAM,CAAC,UAAU,CAAC,GAAY;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;IACxE,CAAC;IACD,MAAM,CAAC,aAAa,CAAC,GAAY;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;IACzC,CAAC;IACD,MAAM,CAAC,SAAS,CAAC,GAAY;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;IACrC,CAAC;IACD,MAAM,CAAC,oBAAoB,CAAC,GAAY;QACpC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAA;IAChD,CAAC;IACD,MAAM,CAAC,oBAAoB,CAAC,GAAY;QACpC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAA;IAChD,CAAC;IACD,MAAM,CAAC,oBAAoB,CAAC,GAAY;QACpC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAA;IAChD,CAAC;IACD,MAAM,CAAC,cAAc,CAAC,GAAY;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC,CAAA;IAC1C,CAAC;IACD,MAAM,CAAC,uBAAuB,CAAC,GAAY;QACvC,OAAO,CACH,OAAO,GAAG,KAAK,UAAU;YACzB,OAAQ,GAAyB,CAAC,KAAK,KAAK,UAAU;YACtD,OAAQ,GAAyB,CAAC,IAAI,KAAK,UAAU;YACrD,OAAQ,GAAyB,CAAC,aAAa,KAAK,UAAU,CACjE,CAAA;IACL,CAAC;IACD,MAAM,CAAC,cAAc,CAAC,GAAY;QAC9B,OAAO,CACH,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,eAAe,CAAC,CACtE,CAAA;IACL,CAAC;IACD,MAAM,CAAC,eAAe,CAAC,GAAY;QAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,eAAe,CAAC,CAAA;IAC3C,CAAC;IACD,MAAM,CAAC,OAAO,CAAC,GAAY;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IACnC,CAAC;IACD,MAAM,CAAC,OAAO,CAAC,GAAY;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IACnC,CAAC;IACD,MAAM,CAAC,YAAY,CAAC,GAAY;QAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;IACxC,CAAC;IACD,MAAM,CAAC,aAAa,CAAC,GAAY;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;IACzC,CAAC;IACD,MAAM,CAAC,gBAAgB,CAAC,GAAY;QAChC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAA;IAC5C,CAAC;IACD,MAAM,CAAC,iBAAiB,CAAC,GAAY;QACjC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAA;IAC7C,CAAC;IACD,MAAM,CAAC,YAAY,CAAC,GAAY;QAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;IACxC,CAAC;IACD,MAAM,CAAC,aAAa,CAAC,GAAY;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;IACzC,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,GAAY;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAClC,CAAC;IACD,MAAM,CAAC,YAAY,CAAC,GAAY;QAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;IACxC,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,GAAY,EAAE,IAAY;QAC3C,OAAO,CACH,OAAO,GAAG,KAAK,QAAQ;YACvB,GAAG,KAAK,IAAI;YACX,GAAiC,CAAC,aAAa,CAAC;gBAC7C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CACvB,CAAA;IACL,CAAC;CACJ","file":"InstanceChecker.js","sourcesContent":["import type { MongoEntityManager } from \"../entity-manager/MongoEntityManager\"\nimport type { SqljsEntityManager } from \"../entity-manager/SqljsEntityManager\"\nimport type { EntitySchema } from \"../entity-schema/EntitySchema\"\nimport type { FindOperator } from \"../find-options/FindOperator\"\nimport type { EqualOperator } from \"../find-options/EqualOperator\"\nimport type { Query } from \"../driver/Query\"\nimport type { RdbmsSchemaBuilder } from \"../schema-builder/RdbmsSchemaBuilder\"\nimport type { Subject } from \"../persistence/Subject\"\nimport type { SelectQueryBuilder } from \"../query-builder/SelectQueryBuilder\"\nimport type { UpdateQueryBuilder } from \"../query-builder/UpdateQueryBuilder\"\nimport type { DeleteQueryBuilder } from \"../query-builder/DeleteQueryBuilder\"\nimport type { SoftDeleteQueryBuilder } from \"../query-builder/SoftDeleteQueryBuilder\"\nimport type { InsertQueryBuilder } from \"../query-builder/InsertQueryBuilder\"\nimport type { RelationQueryBuilder } from \"../query-builder/RelationQueryBuilder\"\nimport type { Brackets } from \"../query-builder/Brackets\"\nimport type { Table } from \"../schema-builder/table/Table\"\nimport type { TableCheck } from \"../schema-builder/table/TableCheck\"\nimport type { TableColumn } from \"../schema-builder/table/TableColumn\"\nimport type { TableExclusion } from \"../schema-builder/table/TableExclusion\"\nimport type { TableForeignKey } from \"../schema-builder/table/TableForeignKey\"\nimport type { TableIndex } from \"../schema-builder/table/TableIndex\"\nimport type { TableUnique } from \"../schema-builder/table/TableUnique\"\nimport type { View } from \"../schema-builder/view/View\"\nimport type { NotBrackets } from \"../query-builder/NotBrackets\"\nimport type { EntityMetadata } from \"../metadata/EntityMetadata\"\nimport type { ColumnMetadata } from \"../metadata/ColumnMetadata\"\nimport type { MssqlParameter } from \"../driver/sqlserver/MssqlParameter\"\nimport { DataSource } from \"../data-source\"\nimport { BaseEntity } from \"../repository/BaseEntity\"\n\nexport class InstanceChecker {\n static isMssqlParameter(obj: unknown): obj is MssqlParameter {\n return this.check(obj, \"MssqlParameter\")\n }\n static isEntityMetadata(obj: unknown): obj is EntityMetadata {\n return this.check(obj, \"EntityMetadata\")\n }\n static isColumnMetadata(obj: unknown): obj is ColumnMetadata {\n return this.check(obj, \"ColumnMetadata\")\n }\n static isSelectQueryBuilder(obj: unknown): obj is SelectQueryBuilder<any> {\n return this.check(obj, \"SelectQueryBuilder\")\n }\n static isInsertQueryBuilder(obj: unknown): obj is InsertQueryBuilder<any> {\n return this.check(obj, \"InsertQueryBuilder\")\n }\n static isDeleteQueryBuilder(obj: unknown): obj is DeleteQueryBuilder<any> {\n return this.check(obj, \"DeleteQueryBuilder\")\n }\n static isUpdateQueryBuilder(obj: unknown): obj is UpdateQueryBuilder<any> {\n return this.check(obj, \"UpdateQueryBuilder\")\n }\n static isSoftDeleteQueryBuilder(\n obj: unknown,\n ): obj is SoftDeleteQueryBuilder<any> {\n return this.check(obj, \"SoftDeleteQueryBuilder\")\n }\n static isRelationQueryBuilder(\n obj: unknown,\n ): obj is RelationQueryBuilder<any> {\n return this.check(obj, \"RelationQueryBuilder\")\n }\n static isBrackets(obj: unknown): obj is Brackets {\n return this.check(obj, \"Brackets\") || this.check(obj, \"NotBrackets\")\n }\n static isNotBrackets(obj: unknown): obj is NotBrackets {\n return this.check(obj, \"NotBrackets\")\n }\n static isSubject(obj: unknown): obj is Subject {\n return this.check(obj, \"Subject\")\n }\n static isRdbmsSchemaBuilder(obj: unknown): obj is RdbmsSchemaBuilder {\n return this.check(obj, \"RdbmsSchemaBuilder\")\n }\n static isMongoEntityManager(obj: unknown): obj is MongoEntityManager {\n return this.check(obj, \"MongoEntityManager\")\n }\n static isSqljsEntityManager(obj: unknown): obj is SqljsEntityManager {\n return this.check(obj, \"SqljsEntityManager\")\n }\n static isEntitySchema(obj: unknown): obj is EntitySchema {\n return this.check(obj, \"EntitySchema\")\n }\n static isBaseEntityConstructor(obj: unknown): obj is typeof BaseEntity {\n return (\n typeof obj === \"function\" &&\n typeof (obj as typeof BaseEntity).hasId === \"function\" &&\n typeof (obj as typeof BaseEntity).save === \"function\" &&\n typeof (obj as typeof BaseEntity).useDataSource === \"function\"\n )\n }\n static isFindOperator(obj: unknown): obj is FindOperator<any> {\n return (\n this.check(obj, \"FindOperator\") || this.check(obj, \"EqualOperator\")\n )\n }\n static isEqualOperator(obj: unknown): obj is EqualOperator<any> {\n return this.check(obj, \"EqualOperator\")\n }\n static isQuery(obj: unknown): obj is Query {\n return this.check(obj, \"Query\")\n }\n static isTable(obj: unknown): obj is Table {\n return this.check(obj, \"Table\")\n }\n static isTableCheck(obj: unknown): obj is TableCheck {\n return this.check(obj, \"TableCheck\")\n }\n static isTableColumn(obj: unknown): obj is TableColumn {\n return this.check(obj, \"TableColumn\")\n }\n static isTableExclusion(obj: unknown): obj is TableExclusion {\n return this.check(obj, \"TableExclusion\")\n }\n static isTableForeignKey(obj: unknown): obj is TableForeignKey {\n return this.check(obj, \"TableForeignKey\")\n }\n static isTableIndex(obj: unknown): obj is TableIndex {\n return this.check(obj, \"TableIndex\")\n }\n static isTableUnique(obj: unknown): obj is TableUnique {\n return this.check(obj, \"TableUnique\")\n }\n static isView(obj: unknown): obj is View {\n return this.check(obj, \"View\")\n }\n static isDataSource(obj: unknown): obj is DataSource {\n return this.check(obj, \"DataSource\")\n }\n\n private static check(obj: unknown, name: string) {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n (obj as { \"@instanceof\": Symbol })[\"@instanceof\"] ===\n Symbol.for(name)\n )\n }\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/util/InstanceChecker.ts"],"names":[],"mappings":"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","file":"InstanceChecker.js","sourcesContent":["import type { MongoEntityManager } from \"../entity-manager/MongoEntityManager\"\nimport type { SqljsEntityManager } from \"../entity-manager/SqljsEntityManager\"\nimport type { EntitySchema } from \"../entity-schema/EntitySchema\"\nimport type { FindOperator } from \"../find-options/FindOperator\"\nimport type { EqualOperator } from \"../find-options/EqualOperator\"\nimport type { Query } from \"../driver/Query\"\nimport type { RdbmsSchemaBuilder } from \"../schema-builder/RdbmsSchemaBuilder\"\nimport type { Subject } from \"../persistence/Subject\"\nimport type { SelectQueryBuilder } from \"../query-builder/SelectQueryBuilder\"\nimport type { UpdateQueryBuilder } from \"../query-builder/UpdateQueryBuilder\"\nimport type { DeleteQueryBuilder } from \"../query-builder/DeleteQueryBuilder\"\nimport type { SoftDeleteQueryBuilder } from \"../query-builder/SoftDeleteQueryBuilder\"\nimport type { InsertQueryBuilder } from \"../query-builder/InsertQueryBuilder\"\nimport type { RelationQueryBuilder } from \"../query-builder/RelationQueryBuilder\"\nimport type { Brackets } from \"../query-builder/Brackets\"\nimport type { Table } from \"../schema-builder/table/Table\"\nimport type { TableCheck } from \"../schema-builder/table/TableCheck\"\nimport type { TableColumn } from \"../schema-builder/table/TableColumn\"\nimport type { TableExclusion } from \"../schema-builder/table/TableExclusion\"\nimport type { TableForeignKey } from \"../schema-builder/table/TableForeignKey\"\nimport type { TableIndex } from \"../schema-builder/table/TableIndex\"\nimport type { TableUnique } from \"../schema-builder/table/TableUnique\"\nimport type { View } from \"../schema-builder/view/View\"\nimport type { NotBrackets } from \"../query-builder/NotBrackets\"\nimport type { EntityMetadata } from \"../metadata/EntityMetadata\"\nimport type { ColumnMetadata } from \"../metadata/ColumnMetadata\"\nimport type { MssqlParameter } from \"../driver/sqlserver/MssqlParameter\"\nimport { DataSource } from \"../data-source\"\nimport { BaseEntity } from \"../repository/BaseEntity\"\n\nexport class InstanceChecker {\n static isMssqlParameter(obj: unknown): obj is MssqlParameter {\n return this.check(obj, \"MssqlParameter\")\n }\n static isEntityMetadata(obj: unknown): obj is EntityMetadata {\n return this.check(obj, \"EntityMetadata\")\n }\n static isColumnMetadata(obj: unknown): obj is ColumnMetadata {\n return this.check(obj, \"ColumnMetadata\")\n }\n static isSelectQueryBuilder(obj: unknown): obj is SelectQueryBuilder<any> {\n return this.check(obj, \"SelectQueryBuilder\")\n }\n static isInsertQueryBuilder(obj: unknown): obj is InsertQueryBuilder<any> {\n return this.check(obj, \"InsertQueryBuilder\")\n }\n static isDeleteQueryBuilder(obj: unknown): obj is DeleteQueryBuilder<any> {\n return this.check(obj, \"DeleteQueryBuilder\")\n }\n static isUpdateQueryBuilder(obj: unknown): obj is UpdateQueryBuilder<any> {\n return this.check(obj, \"UpdateQueryBuilder\")\n }\n static isSoftDeleteQueryBuilder(\n obj: unknown,\n ): obj is SoftDeleteQueryBuilder<any> {\n return this.check(obj, \"SoftDeleteQueryBuilder\")\n }\n static isRelationQueryBuilder(\n obj: unknown,\n ): obj is RelationQueryBuilder<any> {\n return this.check(obj, \"RelationQueryBuilder\")\n }\n static isBrackets(obj: unknown): obj is Brackets {\n return this.check(obj, \"Brackets\") || this.check(obj, \"NotBrackets\")\n }\n static isNotBrackets(obj: unknown): obj is NotBrackets {\n return this.check(obj, \"NotBrackets\")\n }\n static isSubject(obj: unknown): obj is Subject {\n return this.check(obj, \"Subject\")\n }\n static isRdbmsSchemaBuilder(obj: unknown): obj is RdbmsSchemaBuilder {\n return this.check(obj, \"RdbmsSchemaBuilder\")\n }\n static isMongoEntityManager(obj: unknown): obj is MongoEntityManager {\n return this.check(obj, \"MongoEntityManager\")\n }\n static isSqljsEntityManager(obj: unknown): obj is SqljsEntityManager {\n return this.check(obj, \"SqljsEntityManager\")\n }\n static isEntitySchema(obj: unknown): obj is EntitySchema {\n return this.check(obj, \"EntitySchema\")\n }\n static isBaseEntityConstructor(obj: unknown): obj is typeof BaseEntity {\n return (\n typeof obj === \"function\" &&\n typeof (obj as typeof BaseEntity).hasId === \"function\" &&\n typeof (obj as typeof BaseEntity).save === \"function\" &&\n typeof (obj as typeof BaseEntity).useDataSource === \"function\"\n )\n }\n static isFindOperator(obj: unknown): obj is FindOperator<any> {\n return (\n this.check(obj, \"FindOperator\") || this.check(obj, \"EqualOperator\")\n )\n }\n static isEqualOperator(obj: unknown): obj is EqualOperator<any> {\n return this.check(obj, \"EqualOperator\")\n }\n static isQuery(obj: unknown): obj is Query {\n return this.check(obj, \"Query\")\n }\n static isTable(obj: unknown): obj is Table {\n return this.check(obj, \"Table\")\n }\n static isTableCheck(obj: unknown): obj is TableCheck {\n return this.check(obj, \"TableCheck\")\n }\n static isTableColumn(obj: unknown): obj is TableColumn {\n return this.check(obj, \"TableColumn\")\n }\n static isTableExclusion(obj: unknown): obj is TableExclusion {\n return this.check(obj, \"TableExclusion\")\n }\n static isTableForeignKey(obj: unknown): obj is TableForeignKey {\n return this.check(obj, \"TableForeignKey\")\n }\n static isTableIndex(obj: unknown): obj is TableIndex {\n return this.check(obj, \"TableIndex\")\n }\n static isTableUnique(obj: unknown): obj is TableUnique {\n return this.check(obj, \"TableUnique\")\n }\n static isView(obj: unknown): obj is View {\n return this.check(obj, \"View\")\n }\n static isDataSource(obj: unknown): obj is DataSource {\n return this.check(obj, \"DataSource\")\n }\n\n private static check(obj: unknown, name: string) {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n (obj as { \"@instanceof\": symbol })[\"@instanceof\"] ===\n Symbol.for(name)\n )\n }\n}\n"],"sourceRoot":".."}
@@ -5,13 +5,13 @@ export declare class ObjectUtils {
5
5
  * We cannot use instanceof because it has problems when running on different contexts.
6
6
  * And we don't simply use typeof because typeof null === "object".
7
7
  */
8
- static isObject(val: any): val is Object;
8
+ static isObject(val: any): val is object;
9
9
  /**
10
10
  * Checks if given value is an object.
11
11
  * We cannot use instanceof because it has problems when running on different contexts.
12
12
  * And we don't simply use typeof because typeof null === "object".
13
13
  */
14
- static isObjectWithName(val: any): val is Object & {
14
+ static isObjectWithName(val: any): val is object & {
15
15
  name: string;
16
16
  };
17
17
  /**
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/util/ObjectUtils.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,WAAW;IACpB;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,GAAQ;QACpB,OAAO,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAA;IAClD,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,gBAAgB,CAAC,GAAQ;QAC5B,OAAO,CACH,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,SAAS,CACvE,CAAA;IACL,CAAC;IAkCD;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,MAAc,EAAE,GAAG,OAAc;QAC3C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC3B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpD,CAAC;gBAAC,MAAc,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;YACzC,CAAC;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAI,IAAkB;QACzC,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5C,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CACxB,CAAC,GAAG,EAAE,EAAE,CAAE,IAA6B,CAAC,GAAG,CAAC,CAC/C,CAAA;QACL,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAA;QACf,CAAC;IACL,CAAC;CACJ","file":"ObjectUtils.js","sourcesContent":["import { MixedList } from \"../common/MixedList\"\n\nexport class ObjectUtils {\n /**\n * Checks if given value is an object.\n * We cannot use instanceof because it has problems when running on different contexts.\n * And we don't simply use typeof because typeof null === \"object\".\n */\n static isObject(val: any): val is Object {\n return val !== null && typeof val === \"object\"\n }\n\n /**\n * Checks if given value is an object.\n * We cannot use instanceof because it has problems when running on different contexts.\n * And we don't simply use typeof because typeof null === \"object\".\n */\n static isObjectWithName(val: any): val is Object & { name: string } {\n return (\n val !== null && typeof val === \"object\" && val[\"name\"] !== undefined\n )\n }\n\n /**\n * Copy the values of all of the enumerable own properties from one or more source objects to a\n * target object.\n * @param target The target object to copy to.\n * @param source The source object from which to copy properties.\n */\n static assign<T, U>(target: T, source: U): void\n\n /**\n * Copy the values of all of the enumerable own properties from one or more source objects to a\n * target object.\n * @param target The target object to copy to.\n * @param source1 The first source object from which to copy properties.\n * @param source2 The second source object from which to copy properties.\n */\n static assign<T, U, V>(target: T, source1: U, source2: V): void\n\n /**\n * Copy the values of all of the enumerable own properties from one or more source objects to a\n * target object.\n * @param target The target object to copy to.\n * @param source1 The first source object from which to copy properties.\n * @param source2 The second source object from which to copy properties.\n * @param source3 The third source object from which to copy properties.\n */\n static assign<T, U, V, W>(\n target: T,\n source1: U,\n source2: V,\n source3: W,\n ): void\n\n /**\n * Copy the values of all of the enumerable own properties from one or more source objects to a\n * target object.\n * @param target The target object to copy to.\n * @param sources One or more source objects from which to copy properties\n */\n static assign(target: object, ...sources: any[]): void {\n for (const source of sources) {\n for (const prop of Object.getOwnPropertyNames(source)) {\n ;(target as any)[prop] = source[prop]\n }\n }\n }\n\n /**\n * Converts MixedList<T> to strictly an array of its T items.\n */\n static mixedListToArray<T>(list: MixedList<T>): T[] {\n if (list !== null && typeof list === \"object\") {\n return Object.keys(list).map(\n (key) => (list as { [key: string]: T })[key],\n )\n } else {\n return list\n }\n }\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/util/ObjectUtils.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,WAAW;IACpB;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,GAAQ;QACpB,OAAO,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAA;IAClD,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,gBAAgB,CAAC,GAAQ;QAC5B,OAAO,CACH,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,SAAS,CACvE,CAAA;IACL,CAAC;IAkCD;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,MAAc,EAAE,GAAG,OAAc;QAC3C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC3B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpD,CAAC;gBAAC,MAAc,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;YACzC,CAAC;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAI,IAAkB;QACzC,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5C,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CACxB,CAAC,GAAG,EAAE,EAAE,CAAE,IAA6B,CAAC,GAAG,CAAC,CAC/C,CAAA;QACL,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAA;QACf,CAAC;IACL,CAAC;CACJ","file":"ObjectUtils.js","sourcesContent":["import { MixedList } from \"../common/MixedList\"\n\nexport class ObjectUtils {\n /**\n * Checks if given value is an object.\n * We cannot use instanceof because it has problems when running on different contexts.\n * And we don't simply use typeof because typeof null === \"object\".\n */\n static isObject(val: any): val is object {\n return val !== null && typeof val === \"object\"\n }\n\n /**\n * Checks if given value is an object.\n * We cannot use instanceof because it has problems when running on different contexts.\n * And we don't simply use typeof because typeof null === \"object\".\n */\n static isObjectWithName(val: any): val is object & { name: string } {\n return (\n val !== null && typeof val === \"object\" && val[\"name\"] !== undefined\n )\n }\n\n /**\n * Copy the values of all of the enumerable own properties from one or more source objects to a\n * target object.\n * @param target The target object to copy to.\n * @param source The source object from which to copy properties.\n */\n static assign<T, U>(target: T, source: U): void\n\n /**\n * Copy the values of all of the enumerable own properties from one or more source objects to a\n * target object.\n * @param target The target object to copy to.\n * @param source1 The first source object from which to copy properties.\n * @param source2 The second source object from which to copy properties.\n */\n static assign<T, U, V>(target: T, source1: U, source2: V): void\n\n /**\n * Copy the values of all of the enumerable own properties from one or more source objects to a\n * target object.\n * @param target The target object to copy to.\n * @param source1 The first source object from which to copy properties.\n * @param source2 The second source object from which to copy properties.\n * @param source3 The third source object from which to copy properties.\n */\n static assign<T, U, V, W>(\n target: T,\n source1: U,\n source2: V,\n source3: W,\n ): void\n\n /**\n * Copy the values of all of the enumerable own properties from one or more source objects to a\n * target object.\n * @param target The target object to copy to.\n * @param sources One or more source objects from which to copy properties\n */\n static assign(target: object, ...sources: any[]): void {\n for (const source of sources) {\n for (const prop of Object.getOwnPropertyNames(source)) {\n ;(target as any)[prop] = source[prop]\n }\n }\n }\n\n /**\n * Converts MixedList<T> to strictly an array of its T items.\n */\n static mixedListToArray<T>(list: MixedList<T>): T[] {\n if (list !== null && typeof list === \"object\") {\n return Object.keys(list).map(\n (key) => (list as { [key: string]: T })[key],\n )\n } else {\n return list\n }\n }\n}\n"],"sourceRoot":".."}
@@ -159,7 +159,7 @@ export class OrmUtils {
159
159
  return obj;
160
160
  }
161
161
  static replaceEmptyObjectsWithBooleans(obj) {
162
- for (let key in obj) {
162
+ for (const key in obj) {
163
163
  if (obj[key] && typeof obj[key] === "object") {
164
164
  if (Object.keys(obj[key]).length === 0) {
165
165
  obj[key] = true;
@@ -171,8 +171,8 @@ export class OrmUtils {
171
171
  }
172
172
  }
173
173
  static propertyPathsToTruthyObject(paths) {
174
- let obj = {};
175
- for (let path of paths) {
174
+ const obj = {};
175
+ for (const path of paths) {
176
176
  const props = path.split(".");
177
177
  if (!props.length)
178
178
  continue;
@@ -180,7 +180,7 @@ export class OrmUtils {
180
180
  obj[props[0]] = {};
181
181
  }
182
182
  let recursiveChild = obj[props[0]];
183
- for (let [key, prop] of props.entries()) {
183
+ for (const [key, prop] of props.entries()) {
184
184
  if (key === 0)
185
185
  continue;
186
186
  if (recursiveChild[prop]) {