typeorm 1.0.0-beta.2 → 1.0.0-beta.3

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 (330) hide show
  1. package/README.md +1 -3
  2. package/browser/connection/ConnectionOptionsReader.js +1 -1
  3. package/browser/connection/ConnectionOptionsReader.js.map +1 -1
  4. package/browser/data-source/DataSource.d.ts +1 -1
  5. package/browser/data-source/DataSource.js.map +1 -1
  6. package/browser/decorator/options/JoinColumnOptions.js.map +1 -1
  7. package/browser/driver/DriverUtils.d.ts +1 -0
  8. package/browser/driver/DriverUtils.js +27 -29
  9. package/browser/driver/DriverUtils.js.map +1 -1
  10. package/browser/driver/aurora-mysql/AuroraMysqlDriver.js +4 -4
  11. package/browser/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  12. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +2 -1
  13. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js +9 -6
  14. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  15. package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.d.ts +2 -1
  16. package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.js +3 -0
  17. package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
  18. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.d.ts +2 -1
  19. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js +3 -0
  20. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  21. package/browser/driver/capacitor/CapacitorQueryRunner.d.ts +1 -1
  22. package/browser/driver/capacitor/CapacitorQueryRunner.js +5 -1
  23. package/browser/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
  24. package/browser/driver/cockroachdb/CockroachDriver.js +3 -3
  25. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  26. package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +2 -1
  27. package/browser/driver/cockroachdb/CockroachQueryRunner.js +55 -50
  28. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  29. package/browser/driver/cordova/CordovaQueryRunner.d.ts +1 -1
  30. package/browser/driver/cordova/CordovaQueryRunner.js +2 -0
  31. package/browser/driver/cordova/CordovaQueryRunner.js.map +1 -1
  32. package/browser/driver/expo/ExpoDataSourceOptions.d.ts +5 -3
  33. package/browser/driver/expo/ExpoDataSourceOptions.js.map +1 -1
  34. package/browser/driver/expo/ExpoDriver.d.ts +16 -1
  35. package/browser/driver/expo/ExpoDriver.js +68 -6
  36. package/browser/driver/expo/ExpoDriver.js.map +1 -1
  37. package/browser/driver/expo/ExpoQueryRunner.d.ts +2 -1
  38. package/browser/driver/expo/ExpoQueryRunner.js +3 -0
  39. package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
  40. package/browser/driver/mysql/MysqlDriver.js +4 -4
  41. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  42. package/browser/driver/mysql/MysqlQueryRunner.d.ts +2 -1
  43. package/browser/driver/mysql/MysqlQueryRunner.js +78 -82
  44. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  45. package/browser/driver/nativescript/NativescriptQueryRunner.d.ts +1 -1
  46. package/browser/driver/nativescript/NativescriptQueryRunner.js +3 -0
  47. package/browser/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  48. package/browser/driver/oracle/OracleDriver.js +2 -2
  49. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  50. package/browser/driver/postgres/PostgresDriver.js +8 -8
  51. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  52. package/browser/driver/postgres/PostgresQueryRunner.d.ts +2 -1
  53. package/browser/driver/postgres/PostgresQueryRunner.js +12 -8
  54. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  55. package/browser/driver/react-native/ReactNativeDriver.js +1 -1
  56. package/browser/driver/react-native/ReactNativeDriver.js.map +1 -1
  57. package/browser/driver/react-native/ReactNativeQueryRunner.d.ts +1 -1
  58. package/browser/driver/react-native/ReactNativeQueryRunner.js +3 -0
  59. package/browser/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  60. package/browser/driver/sap/SapDriver.js +5 -3
  61. package/browser/driver/sap/SapDriver.js.map +1 -1
  62. package/browser/driver/sap/SapQueryRunner.d.ts +2 -1
  63. package/browser/driver/sap/SapQueryRunner.js +171 -16
  64. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  65. package/browser/driver/spanner/SpannerDriver.d.ts +1 -1
  66. package/browser/driver/spanner/SpannerDriver.js +6 -8
  67. package/browser/driver/spanner/SpannerDriver.js.map +1 -1
  68. package/browser/driver/spanner/SpannerQueryRunner.d.ts +16 -1
  69. package/browser/driver/spanner/SpannerQueryRunner.js +75 -7
  70. package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -1
  71. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +1 -1
  72. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  73. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +10 -14
  74. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  75. package/browser/driver/sqljs/SqljsQueryRunner.d.ts +2 -1
  76. package/browser/driver/sqljs/SqljsQueryRunner.js +3 -0
  77. package/browser/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  78. package/browser/driver/sqlserver/SqlServerDriver.js +1 -1
  79. package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
  80. package/browser/driver/sqlserver/SqlServerQueryRunner.d.ts +2 -1
  81. package/browser/driver/sqlserver/SqlServerQueryRunner.js +65 -60
  82. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  83. package/browser/entity-manager/EntityManager.d.ts +1 -1
  84. package/browser/entity-manager/EntityManager.js.map +1 -1
  85. package/browser/error/NamedPlaceholdersNotSupportedError.d.ts +7 -0
  86. package/browser/error/NamedPlaceholdersNotSupportedError.js +14 -0
  87. package/browser/error/NamedPlaceholdersNotSupportedError.js.map +1 -0
  88. package/browser/error/QueryFailedError.d.ts +3 -2
  89. package/browser/error/QueryFailedError.js.map +1 -1
  90. package/browser/error/index.d.ts +1 -0
  91. package/browser/error/index.js +1 -0
  92. package/browser/error/index.js.map +1 -1
  93. package/browser/index.d.ts +0 -1
  94. package/browser/index.js +1 -3
  95. package/browser/index.js.map +1 -1
  96. package/browser/logger/AbstractLogger.d.ts +5 -4
  97. package/browser/logger/AbstractLogger.js +3 -1
  98. package/browser/logger/AbstractLogger.js.map +1 -1
  99. package/browser/logger/DebugLogger.js +3 -1
  100. package/browser/logger/DebugLogger.js.map +1 -1
  101. package/browser/logger/Logger.d.ts +5 -4
  102. package/browser/logger/Logger.js.map +1 -1
  103. package/browser/naming-strategy/DefaultNamingStrategy.d.ts +7 -26
  104. package/browser/naming-strategy/DefaultNamingStrategy.js +19 -37
  105. package/browser/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  106. package/browser/naming-strategy/NamingStrategyInterface.d.ts +9 -13
  107. package/browser/naming-strategy/NamingStrategyInterface.js.map +1 -1
  108. package/browser/persistence/EntityPersistExecutor.js +20 -8
  109. package/browser/persistence/EntityPersistExecutor.js.map +1 -1
  110. package/browser/persistence/SubjectDatabaseEntityLoader.js +15 -5
  111. package/browser/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  112. package/browser/persistence/SubjectExecutor.js +50 -30
  113. package/browser/persistence/SubjectExecutor.js.map +1 -1
  114. package/browser/platform/PlatformTools.js +1 -1
  115. package/browser/platform/PlatformTools.js.map +1 -1
  116. package/browser/query-builder/JoinAttribute.js +3 -3
  117. package/browser/query-builder/JoinAttribute.js.map +1 -1
  118. package/browser/query-builder/QueryBuilder.d.ts +0 -1
  119. package/browser/query-builder/QueryBuilder.js +3 -13
  120. package/browser/query-builder/QueryBuilder.js.map +1 -1
  121. package/browser/query-builder/SelectQueryBuilder.js +33 -27
  122. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  123. package/browser/query-builder/SoftDeleteQueryBuilder.js +0 -2
  124. package/browser/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  125. package/browser/query-builder/UpdateQueryBuilder.js +0 -2
  126. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  127. package/browser/query-builder/relation-id/RelationIdAttribute.js +4 -4
  128. package/browser/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
  129. package/browser/query-builder/relation-id/RelationIdLoader.js +16 -9
  130. package/browser/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  131. package/browser/query-runner/BaseQueryRunner.d.ts +44 -21
  132. package/browser/query-runner/BaseQueryRunner.js +61 -21
  133. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  134. package/browser/query-runner/QueryRunner.d.ts +11 -2
  135. package/browser/query-runner/QueryRunner.js.map +1 -1
  136. package/browser/repository/BaseEntity.d.ts +2 -1
  137. package/browser/repository/BaseEntity.js.map +1 -1
  138. package/browser/repository/Repository.d.ts +1 -1
  139. package/browser/repository/Repository.js.map +1 -1
  140. package/browser/subscriber/Broadcaster.d.ts +4 -4
  141. package/browser/subscriber/Broadcaster.js.map +1 -1
  142. package/browser/subscriber/event/QueryEvent.d.ts +2 -1
  143. package/browser/subscriber/event/QueryEvent.js.map +1 -1
  144. package/browser/util/DirectoryExportedClassesLoader.js +1 -1
  145. package/browser/util/DirectoryExportedClassesLoader.js.map +1 -1
  146. package/browser/util/ImportUtils.js +1 -1
  147. package/browser/util/ImportUtils.js.map +1 -1
  148. package/browser/util/OrmUtils.js +1 -1
  149. package/browser/util/OrmUtils.js.map +1 -1
  150. package/browser/util/PathUtils.js +1 -1
  151. package/browser/util/PathUtils.js.map +1 -1
  152. package/browser/util/RandomGenerator.d.ts +1 -10
  153. package/browser/util/RandomGenerator.js +1 -10
  154. package/browser/util/RandomGenerator.js.map +1 -1
  155. package/browser/util/StringUtils.js +9 -9
  156. package/browser/util/StringUtils.js.map +1 -1
  157. package/browser/util/escapeRegExp.js +1 -1
  158. package/browser/util/escapeRegExp.js.map +1 -1
  159. package/commands/InitCommand.d.ts +0 -3
  160. package/commands/InitCommand.js +4 -31
  161. package/commands/InitCommand.js.map +1 -1
  162. package/commands/MigrationGenerateCommand.js +3 -1
  163. package/commands/MigrationGenerateCommand.js.map +1 -1
  164. package/commands/VersionCommand.js +2 -2
  165. package/commands/VersionCommand.js.map +1 -1
  166. package/connection/ConnectionOptionsReader.js +1 -1
  167. package/connection/ConnectionOptionsReader.js.map +1 -1
  168. package/data-source/DataSource.d.ts +1 -1
  169. package/data-source/DataSource.js.map +1 -1
  170. package/decorator/options/JoinColumnOptions.js.map +1 -1
  171. package/driver/DriverUtils.d.ts +1 -0
  172. package/driver/DriverUtils.js +27 -29
  173. package/driver/DriverUtils.js.map +1 -1
  174. package/driver/aurora-mysql/AuroraMysqlDriver.js +4 -4
  175. package/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  176. package/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +2 -1
  177. package/driver/aurora-mysql/AuroraMysqlQueryRunner.js +9 -6
  178. package/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  179. package/driver/aurora-postgres/AuroraPostgresQueryRunner.d.ts +2 -1
  180. package/driver/aurora-postgres/AuroraPostgresQueryRunner.js +3 -0
  181. package/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
  182. package/driver/better-sqlite3/BetterSqlite3QueryRunner.d.ts +2 -1
  183. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js +3 -0
  184. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  185. package/driver/capacitor/CapacitorQueryRunner.d.ts +1 -1
  186. package/driver/capacitor/CapacitorQueryRunner.js +5 -1
  187. package/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
  188. package/driver/cockroachdb/CockroachDriver.js +3 -3
  189. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  190. package/driver/cockroachdb/CockroachQueryRunner.d.ts +2 -1
  191. package/driver/cockroachdb/CockroachQueryRunner.js +55 -50
  192. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  193. package/driver/cordova/CordovaQueryRunner.d.ts +1 -1
  194. package/driver/cordova/CordovaQueryRunner.js +2 -0
  195. package/driver/cordova/CordovaQueryRunner.js.map +1 -1
  196. package/driver/expo/ExpoDataSourceOptions.d.ts +5 -3
  197. package/driver/expo/ExpoDataSourceOptions.js.map +1 -1
  198. package/driver/expo/ExpoDriver.d.ts +16 -1
  199. package/driver/expo/ExpoDriver.js +68 -6
  200. package/driver/expo/ExpoDriver.js.map +1 -1
  201. package/driver/expo/ExpoQueryRunner.d.ts +2 -1
  202. package/driver/expo/ExpoQueryRunner.js +3 -0
  203. package/driver/expo/ExpoQueryRunner.js.map +1 -1
  204. package/driver/mysql/MysqlDriver.js +4 -4
  205. package/driver/mysql/MysqlDriver.js.map +1 -1
  206. package/driver/mysql/MysqlQueryRunner.d.ts +2 -1
  207. package/driver/mysql/MysqlQueryRunner.js +78 -82
  208. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  209. package/driver/nativescript/NativescriptQueryRunner.d.ts +1 -1
  210. package/driver/nativescript/NativescriptQueryRunner.js +3 -0
  211. package/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  212. package/driver/oracle/OracleDriver.js +2 -2
  213. package/driver/oracle/OracleDriver.js.map +1 -1
  214. package/driver/postgres/PostgresDriver.js +8 -8
  215. package/driver/postgres/PostgresDriver.js.map +1 -1
  216. package/driver/postgres/PostgresQueryRunner.d.ts +2 -1
  217. package/driver/postgres/PostgresQueryRunner.js +12 -8
  218. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  219. package/driver/react-native/ReactNativeDriver.js +1 -1
  220. package/driver/react-native/ReactNativeDriver.js.map +1 -1
  221. package/driver/react-native/ReactNativeQueryRunner.d.ts +1 -1
  222. package/driver/react-native/ReactNativeQueryRunner.js +3 -0
  223. package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  224. package/driver/sap/SapDriver.js +5 -3
  225. package/driver/sap/SapDriver.js.map +1 -1
  226. package/driver/sap/SapQueryRunner.d.ts +2 -1
  227. package/driver/sap/SapQueryRunner.js +171 -16
  228. package/driver/sap/SapQueryRunner.js.map +1 -1
  229. package/driver/spanner/SpannerDriver.d.ts +1 -1
  230. package/driver/spanner/SpannerDriver.js +6 -8
  231. package/driver/spanner/SpannerDriver.js.map +1 -1
  232. package/driver/spanner/SpannerQueryRunner.d.ts +16 -1
  233. package/driver/spanner/SpannerQueryRunner.js +75 -7
  234. package/driver/spanner/SpannerQueryRunner.js.map +1 -1
  235. package/driver/sqlite-abstract/AbstractSqliteDriver.js +1 -1
  236. package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  237. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +10 -14
  238. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  239. package/driver/sqljs/SqljsQueryRunner.d.ts +2 -1
  240. package/driver/sqljs/SqljsQueryRunner.js +3 -0
  241. package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  242. package/driver/sqlserver/SqlServerDriver.js +1 -1
  243. package/driver/sqlserver/SqlServerDriver.js.map +1 -1
  244. package/driver/sqlserver/SqlServerQueryRunner.d.ts +2 -1
  245. package/driver/sqlserver/SqlServerQueryRunner.js +65 -60
  246. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  247. package/entity-manager/EntityManager.d.ts +1 -1
  248. package/entity-manager/EntityManager.js.map +1 -1
  249. package/error/NamedPlaceholdersNotSupportedError.d.ts +7 -0
  250. package/error/NamedPlaceholdersNotSupportedError.js +14 -0
  251. package/error/NamedPlaceholdersNotSupportedError.js.map +1 -0
  252. package/error/QueryFailedError.d.ts +3 -2
  253. package/error/QueryFailedError.js.map +1 -1
  254. package/error/index.d.ts +1 -0
  255. package/error/index.js +1 -0
  256. package/error/index.js.map +1 -1
  257. package/index.d.ts +0 -1
  258. package/index.js +1 -3
  259. package/index.js.map +1 -1
  260. package/index.mjs +2 -2
  261. package/logger/AbstractLogger.d.ts +5 -4
  262. package/logger/AbstractLogger.js +3 -1
  263. package/logger/AbstractLogger.js.map +1 -1
  264. package/logger/DebugLogger.js +3 -1
  265. package/logger/DebugLogger.js.map +1 -1
  266. package/logger/Logger.d.ts +5 -4
  267. package/logger/Logger.js.map +1 -1
  268. package/naming-strategy/DefaultNamingStrategy.d.ts +7 -26
  269. package/naming-strategy/DefaultNamingStrategy.js +19 -37
  270. package/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  271. package/naming-strategy/NamingStrategyInterface.d.ts +9 -13
  272. package/naming-strategy/NamingStrategyInterface.js.map +1 -1
  273. package/package.json +6 -6
  274. package/persistence/EntityPersistExecutor.js +20 -8
  275. package/persistence/EntityPersistExecutor.js.map +1 -1
  276. package/persistence/SubjectDatabaseEntityLoader.js +15 -5
  277. package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  278. package/persistence/SubjectExecutor.js +50 -30
  279. package/persistence/SubjectExecutor.js.map +1 -1
  280. package/platform/PlatformTools.js +1 -1
  281. package/platform/PlatformTools.js.map +1 -1
  282. package/query-builder/JoinAttribute.js +3 -3
  283. package/query-builder/JoinAttribute.js.map +1 -1
  284. package/query-builder/QueryBuilder.d.ts +0 -1
  285. package/query-builder/QueryBuilder.js +3 -13
  286. package/query-builder/QueryBuilder.js.map +1 -1
  287. package/query-builder/SelectQueryBuilder.js +33 -27
  288. package/query-builder/SelectQueryBuilder.js.map +1 -1
  289. package/query-builder/SoftDeleteQueryBuilder.js +0 -2
  290. package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  291. package/query-builder/UpdateQueryBuilder.js +0 -2
  292. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  293. package/query-builder/relation-id/RelationIdAttribute.js +4 -4
  294. package/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
  295. package/query-builder/relation-id/RelationIdLoader.js +16 -9
  296. package/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  297. package/query-runner/BaseQueryRunner.d.ts +44 -21
  298. package/query-runner/BaseQueryRunner.js +61 -21
  299. package/query-runner/BaseQueryRunner.js.map +1 -1
  300. package/query-runner/QueryRunner.d.ts +11 -2
  301. package/query-runner/QueryRunner.js.map +1 -1
  302. package/repository/BaseEntity.d.ts +2 -1
  303. package/repository/BaseEntity.js.map +1 -1
  304. package/repository/Repository.d.ts +1 -1
  305. package/repository/Repository.js.map +1 -1
  306. package/subscriber/Broadcaster.d.ts +4 -4
  307. package/subscriber/Broadcaster.js.map +1 -1
  308. package/subscriber/event/QueryEvent.d.ts +2 -1
  309. package/subscriber/event/QueryEvent.js.map +1 -1
  310. package/util/DirectoryExportedClassesLoader.js +1 -1
  311. package/util/DirectoryExportedClassesLoader.js.map +1 -1
  312. package/util/ImportUtils.js +1 -1
  313. package/util/ImportUtils.js.map +1 -1
  314. package/util/OrmUtils.js +1 -1
  315. package/util/OrmUtils.js.map +1 -1
  316. package/util/PathUtils.js +1 -1
  317. package/util/PathUtils.js.map +1 -1
  318. package/util/RandomGenerator.d.ts +1 -10
  319. package/util/RandomGenerator.js +1 -10
  320. package/util/RandomGenerator.js.map +1 -1
  321. package/util/StringUtils.js +9 -9
  322. package/util/StringUtils.js.map +1 -1
  323. package/util/escapeRegExp.js +1 -1
  324. package/util/escapeRegExp.js.map +1 -1
  325. package/browser/naming-strategy/LegacyOracleNamingStrategy.d.ts +0 -21
  326. package/browser/naming-strategy/LegacyOracleNamingStrategy.js +0 -49
  327. package/browser/naming-strategy/LegacyOracleNamingStrategy.js.map +0 -1
  328. package/naming-strategy/LegacyOracleNamingStrategy.d.ts +0 -21
  329. package/naming-strategy/LegacyOracleNamingStrategy.js +0 -49
  330. package/naming-strategy/LegacyOracleNamingStrategy.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"OrmUtils.js","sourceRoot":"","sources":["../../../src/util/OrmUtils.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DeepPartial } from \"../common/DeepPartial\"\nimport type { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport type {\n PrimitiveCriteria,\n SinglePrimitiveCriteria,\n} from \"../common/PrimitiveCriteria\"\nimport { areUint8ArraysEqual, isUint8Array } from \"./Uint8ArrayUtils\"\nimport { InstanceChecker } from \"./InstanceChecker\"\nimport { TypeORMError } from \"../error\"\nimport { IsNull } from \"../find-options/operator/IsNull\"\n\nexport class OrmUtils {\n // -------------------------------------------------------------------------\n // Public methods\n // -------------------------------------------------------------------------\n\n /**\n * Chunks array into pieces.\n *\n * @param array\n * @param size\n */\n public static chunk<T>(array: T[], size: number): T[][] {\n return Array.from(Array(Math.ceil(array.length / size)), (_, i) => {\n return array.slice(i * size, i * size + size)\n })\n }\n\n public static splitClassesAndStrings<T>(\n classesAndStrings: (string | T)[],\n ): [T[], string[]] {\n return [\n classesAndStrings.filter(\n (cls): cls is T => typeof cls !== \"string\",\n ),\n classesAndStrings.filter(\n (str): str is string => typeof str === \"string\",\n ),\n ]\n }\n\n public static groupBy<T, R>(\n array: T[],\n propertyCallback: (item: T) => R,\n ): { id: R; items: T[] }[] {\n return array.reduce(\n (groupedArray, value) => {\n const key = propertyCallback(value)\n let grouped = groupedArray.find((i) => i.id === key)\n if (!grouped) {\n grouped = { id: key, items: [] }\n groupedArray.push(grouped)\n }\n grouped.items.push(value)\n return groupedArray\n },\n [] as Array<{ id: R; items: T[] }>,\n )\n }\n\n public static uniq<T>(array: T[], criteria?: (item: T) => unknown): T[]\n public static uniq<T, K extends keyof T>(array: T[], property: K): T[]\n public static uniq<T, K extends keyof T>(\n array: T[],\n criteriaOrProperty?: ((item: T) => unknown) | K,\n ): T[] {\n return array.reduce((uniqueArray, item) => {\n let found: boolean\n if (typeof criteriaOrProperty === \"function\") {\n const itemValue = criteriaOrProperty(item)\n found = !!uniqueArray.find(\n (uniqueItem) =>\n criteriaOrProperty(uniqueItem) === itemValue,\n )\n } else if (typeof criteriaOrProperty === \"string\") {\n found = !!uniqueArray.find(\n (uniqueItem) =>\n uniqueItem[criteriaOrProperty] ===\n item[criteriaOrProperty],\n )\n } else {\n found = uniqueArray.indexOf(item) !== -1\n }\n\n if (!found) uniqueArray.push(item)\n\n return uniqueArray\n }, [] as T[])\n }\n\n /**\n * Deep Object.assign.\n *\n * @param target\n * @param sources\n */\n public static mergeDeep<T>(\n target: T,\n ...sources: (DeepPartial<T> | undefined)[]\n ): T {\n if (!sources.length) {\n return target\n }\n\n for (const source of sources) {\n OrmUtils.merge(target, source)\n }\n\n return target\n }\n\n /**\n * Creates a shallow copy of the object, without invoking the constructor\n *\n * @param object\n */\n public static cloneObject<T extends object>(object: T): T {\n if (object === null || object === undefined) {\n return object\n }\n\n return Object.assign(\n Object.create(Object.getPrototypeOf(object)) as T,\n object,\n )\n }\n\n /**\n * Deep compare objects.\n *\n * @param args\n * @see http://stackoverflow.com/a/1144249\n */\n public static deepCompare<T>(...args: T[]): boolean {\n let i: any, l: any, leftChain: any, rightChain: any\n\n if (args.length < 1) {\n return true // Die silently? Don't know how to handle such case, please help...\n // throw \"Need two or more arguments to compare\";\n }\n\n for (i = 1, l = args.length; i < l; i++) {\n leftChain = [] // Todo: this can be cached\n rightChain = []\n\n if (\n !OrmUtils.compare2Objects(\n leftChain,\n rightChain,\n args[0],\n args[i],\n )\n ) {\n return false\n }\n }\n\n return true\n }\n\n /**\n * Gets deeper value of object.\n *\n * @param obj\n * @param path\n */\n public static deepValue(obj: ObjectLiteral, path: string): any {\n const segments = path.split(\".\")\n for (let i = 0, len = segments.length; i < len; i++) {\n obj = obj[segments[i]]\n }\n return obj\n }\n\n public static replaceEmptyObjectsWithBooleans(obj: any) {\n for (const key in obj) {\n if (obj[key] && typeof obj[key] === \"object\") {\n if (Object.keys(obj[key]).length === 0) {\n obj[key] = true\n } else {\n OrmUtils.replaceEmptyObjectsWithBooleans(obj[key])\n }\n }\n }\n }\n\n public static propertyPathsToTruthyObject(paths: string[]) {\n const obj: any = {}\n for (const path of paths) {\n const props = path.split(\".\")\n if (!props.length) continue\n\n if (!obj[props[0]] || obj[props[0]] === true) {\n obj[props[0]] = {}\n }\n let recursiveChild = obj[props[0]]\n for (const [key, prop] of props.entries()) {\n if (key === 0) continue\n\n if (recursiveChild[prop]) {\n recursiveChild = recursiveChild[prop]\n } else if (key === props.length - 1) {\n recursiveChild[prop] = {}\n recursiveChild = null\n } else {\n recursiveChild[prop] = {}\n recursiveChild = recursiveChild[prop]\n }\n }\n }\n OrmUtils.replaceEmptyObjectsWithBooleans(obj)\n return obj\n }\n\n /**\n * Check if two entity-id-maps are the same\n *\n * @param firstId\n * @param secondId\n */\n public static compareIds(\n firstId: ObjectLiteral | undefined,\n secondId: ObjectLiteral | undefined,\n ): boolean {\n if (\n firstId === undefined ||\n firstId === null ||\n secondId === undefined ||\n secondId === null\n )\n return false\n\n // Optimized version for the common case\n if (\n ((typeof firstId.id === \"string\" &&\n typeof secondId.id === \"string\") ||\n (typeof firstId.id === \"number\" &&\n typeof secondId.id === \"number\")) &&\n Object.keys(firstId).length === 1 &&\n Object.keys(secondId).length === 1\n ) {\n return firstId.id === secondId.id\n }\n\n return OrmUtils.deepCompare(firstId, secondId)\n }\n\n /**\n * Transforms given value into boolean value.\n *\n * @param value\n */\n public static toBoolean(value: any): boolean {\n if (typeof value === \"boolean\") return value\n\n if (typeof value === \"string\") return value === \"true\" || value === \"1\"\n\n if (typeof value === \"number\") return value > 0\n\n return false\n }\n\n /**\n * Checks if two arrays of unique values contain the same values\n *\n * @param arr1\n * @param arr2\n */\n public static isArraysEqual<T>(arr1: T[], arr2: T[]): boolean {\n if (arr1.length !== arr2.length) {\n return false\n }\n\n return arr1.every((element) => arr2.includes(element))\n }\n\n /**\n * Returns items that are missing/extraneous in the second array\n *\n * @param arr1\n * @param arr2\n */\n public static getArraysDiff<T>(\n arr1: T[],\n arr2: T[],\n ): { extraItems: T[]; missingItems: T[] } {\n const extraItems = arr1.filter((item) => !arr2.includes(item))\n const missingItems = arr2.filter((item) => !arr1.includes(item))\n\n return {\n extraItems,\n missingItems,\n }\n }\n\n public static areMutuallyExclusive<T>(...lists: T[][]): boolean {\n const haveSharedObjects = lists.some((list) => {\n const otherLists = lists.filter((otherList) => otherList !== list)\n return list.some((item) =>\n otherLists.some((otherList) => otherList.includes(item)),\n )\n })\n return !haveSharedObjects\n }\n\n /**\n * Parses the CHECK constraint on the specified column and returns\n * all values allowed by the constraint or undefined if the constraint\n * is not present.\n *\n * @param sql\n * @param columnName\n */\n public static parseSqlCheckExpression(\n sql: string,\n columnName: string,\n ): string[] | undefined {\n const enumMatch = sql.match(\n new RegExp(\n `\"${columnName}\" varchar CHECK\\\\s*\\\\(\\\\s*\"${columnName}\"\\\\s+IN\\\\s*`,\n ),\n )\n\n if (enumMatch?.index != null) {\n const afterMatch = sql.substring(\n enumMatch.index + enumMatch[0].length,\n )\n\n // This is an enum\n // all enum values stored as a comma separated list\n const chars = afterMatch\n\n /**\n * When outside quotes: empty string\n * When inside single quotes: `'`\n */\n let currentQuotes = \"\"\n let nextValue = \"\"\n const enumValues: string[] = []\n for (let idx = 0; idx < chars.length; idx++) {\n const char = chars[idx]\n switch (char) {\n case \",\":\n if (currentQuotes == \"\") {\n enumValues.push(nextValue)\n nextValue = \"\"\n } else {\n nextValue += char\n }\n break\n case \"'\":\n if (currentQuotes == char) {\n const isNextCharQuote = chars[idx + 1] === char\n if (isNextCharQuote) {\n // double quote in sql should be treated as a\n // single quote that's part of the quoted string\n nextValue += char\n idx += 1 // skip that next quote\n } else {\n currentQuotes = \"\"\n }\n } else {\n currentQuotes = char\n }\n break\n case \")\":\n if (currentQuotes == \"\") {\n enumValues.push(nextValue)\n return enumValues\n } else {\n nextValue += char\n }\n break\n default:\n if (currentQuotes != \"\") {\n nextValue += char\n }\n }\n }\n }\n return undefined\n }\n\n /**\n * Checks if given criteria is null or empty.\n *\n * @param criteria\n */\n public static isCriteriaNullOrEmpty(criteria: unknown): boolean {\n return (\n criteria === undefined ||\n criteria === null ||\n criteria === \"\" ||\n (Array.isArray(criteria) && criteria.length === 0) ||\n (OrmUtils.isPlainObject(criteria) &&\n Object.keys(criteria).length === 0)\n )\n }\n\n /**\n * Checks if given criteria is a primitive value.\n * Primitive values are strings, numbers and dates.\n *\n * @param criteria\n */\n public static isSinglePrimitiveCriteria(\n criteria: unknown,\n ): criteria is SinglePrimitiveCriteria {\n return (\n typeof criteria === \"string\" ||\n typeof criteria === \"number\" ||\n criteria instanceof Date\n )\n }\n\n /**\n * Checks if given criteria is a primitive value or an array of primitive values.\n *\n * @param criteria\n */\n public static isPrimitiveCriteria(\n criteria: unknown,\n ): criteria is PrimitiveCriteria {\n if (Array.isArray(criteria)) {\n return criteria.every((value) =>\n OrmUtils.isSinglePrimitiveCriteria(value),\n )\n }\n\n return OrmUtils.isSinglePrimitiveCriteria(criteria)\n }\n\n // -------------------------------------------------------------------------\n // Private methods\n // -------------------------------------------------------------------------\n\n private static compare2Objects(\n leftChain: any,\n rightChain: any,\n x: any,\n y: any,\n ) {\n let p\n\n // remember that NaN === NaN returns false\n // and isNaN(undefined) returns true\n if (Number.isNaN(x) && Number.isNaN(y)) return true\n\n // Compare primitives and functions.\n // Check if both arguments link to the same object.\n // Especially useful on the step where we compare prototypes\n if (x === y) return true\n\n // Unequal, but either is null or undefined (use case: jsonb comparison)\n // PR #3776, todo: add tests\n if (x === null || y === null || x === undefined || y === undefined)\n return false\n\n // Fix the buffer compare bug.\n // See: https://github.com/typeorm/typeorm/issues/3654\n if (typeof x.equals === \"function\" && typeof y.equals === \"function\") {\n return x.equals(y)\n }\n\n if (isUint8Array(x) && isUint8Array(y)) {\n return areUint8ArraysEqual(x, y)\n }\n\n // Works in case when functions are created in constructor.\n // Comparing dates is a common scenario. Another built-ins?\n // We can even handle functions passed across iframes\n if (\n (typeof x === \"function\" && typeof y === \"function\") ||\n (x instanceof Date && y instanceof Date) ||\n (x instanceof RegExp && y instanceof RegExp) ||\n (typeof x === \"string\" && typeof y === \"string\") ||\n (typeof x === \"number\" && typeof y === \"number\")\n )\n return x.toString() === y.toString()\n\n // At last checking prototypes as good as we can\n if (!(typeof x === \"object\" && typeof y === \"object\")) return false\n\n if (\n Object.prototype.isPrototypeOf.call(x, y) ||\n Object.prototype.isPrototypeOf.call(y, x)\n )\n return false\n\n if (x.constructor !== y.constructor) return false\n\n if (x.prototype !== y.prototype) return false\n\n // Check for infinitive linking loops\n if (leftChain.indexOf(x) > -1 || rightChain.indexOf(y) > -1)\n return false\n\n let iterableX = x\n let iterableY = y\n\n if (x instanceof Map) {\n iterableX = Object.fromEntries(x)\n iterableY = Object.fromEntries(y)\n } else if (x instanceof Set) {\n iterableX = Array.from(x)\n iterableY = Array.from(y)\n }\n\n // Quick checking of one object being a subset of another.\n // todo: cache the structure of arguments[0] for performance\n for (p in iterableY) {\n if (iterableY.hasOwnProperty(p) !== iterableX.hasOwnProperty(p)) {\n return false\n } else if (typeof iterableY[p] !== typeof iterableX[p]) {\n return false\n }\n }\n\n for (p in iterableX) {\n if (iterableY.hasOwnProperty(p) !== iterableX.hasOwnProperty(p)) {\n return false\n } else if (typeof iterableY[p] !== typeof iterableX[p]) {\n return false\n }\n\n switch (typeof iterableX[p]) {\n case \"object\":\n case \"function\":\n leftChain.push(x)\n rightChain.push(y)\n\n if (\n !OrmUtils.compare2Objects(\n leftChain,\n rightChain,\n iterableX[p],\n iterableY[p],\n )\n ) {\n return false\n }\n\n leftChain.pop()\n rightChain.pop()\n break\n\n default:\n if (iterableX[p] !== iterableY[p]) {\n return false\n }\n break\n }\n }\n\n return true\n }\n\n // Checks if it's an object made by Object.create(null), {} or new Object()\n private static isPlainObject(item: any) {\n if (item === null || item === undefined) {\n return false\n }\n\n return !item.constructor || item.constructor === Object\n }\n\n private static mergeArrayKey(\n target: any,\n key: number,\n value: any,\n memo: Map<any, any>,\n ) {\n // Have we seen this before? Prevent infinite recursion.\n if (memo.has(value)) {\n target[key] = memo.get(value)\n return\n }\n\n if (value instanceof Promise) {\n // Skip promises entirely.\n // This is a hold-over from the old code & is because we don't want to pull in\n // the lazy fields. Ideally we'd remove these promises via another function first\n // but for now we have to do it here.\n return\n }\n\n if (!OrmUtils.isPlainObject(value) && !Array.isArray(value)) {\n target[key] = value\n return\n }\n\n target[key] ??= Array.isArray(value) ? [] : {}\n\n memo.set(value, target[key])\n OrmUtils.merge(target[key], value, memo)\n memo.delete(value)\n }\n\n private static mergeObjectKey(\n target: any,\n key: string,\n value: any,\n memo: Map<any, any>,\n ) {\n // Have we seen this before? Prevent infinite recursion.\n if (memo.has(value)) {\n Object.assign(target, { [key]: memo.get(value) })\n return\n }\n\n if (value instanceof Promise) {\n // Skip promises entirely.\n // This is a hold-over from the old code & is because we don't want to pull in\n // the lazy fields. Ideally we'd remove these promises via another function first\n // but for now we have to do it here.\n return\n }\n\n if (!OrmUtils.isPlainObject(value) && !Array.isArray(value)) {\n Object.assign(target, { [key]: value })\n return\n }\n\n if (!target[key]) {\n Object.assign(target, { [key]: Array.isArray(value) ? [] : {} })\n }\n\n memo.set(value, target[key])\n OrmUtils.merge(target[key], value, memo)\n memo.delete(value)\n }\n\n private static merge<T>(\n target: T,\n source: DeepPartial<T> | undefined,\n memo: Map<any, any> = new Map(),\n ): void {\n if (OrmUtils.isPlainObject(target) && OrmUtils.isPlainObject(source)) {\n for (const [key, value] of Object.entries(\n source as ObjectLiteral,\n )) {\n if (key === \"__proto__\") continue\n OrmUtils.mergeObjectKey(target, key, value, memo)\n }\n }\n\n if (Array.isArray(target) && Array.isArray(source)) {\n for (let key = 0; key < source.length; key++) {\n OrmUtils.mergeArrayKey(target, key, source[key], memo)\n }\n }\n }\n\n /**\n * Recursively validates an object where clause, throwing for null/undefined\n * based on the provided invalidWhereValuesBehavior config.\n *\n * @param criteria\n * @param options\n * @param options.null\n * @param options.undefined\n * @param path\n */\n static normalizeWhereCriteria(\n criteria: ObjectLiteral,\n options?: {\n null?: \"ignore\" | \"sql-null\" | \"throw\"\n undefined?: \"ignore\" | \"throw\"\n },\n path?: string,\n ): ObjectLiteral {\n if (!options) return criteria\n\n const result: ObjectLiteral = {}\n\n for (const [key, value] of Object.entries(criteria)) {\n const propertyPath = path ? `${path}.${key}` : key\n\n if (value === undefined) {\n const behavior = options?.undefined ?? \"throw\"\n if (behavior === \"throw\") {\n throw new TypeORMError(\n `Undefined value encountered in property '${propertyPath}' of a where condition. ` +\n `Set 'invalidWhereValuesBehavior.undefined' to 'ignore' in connection options to skip properties with undefined values.`,\n )\n }\n // \"ignore\" — skip this key\n } else if (value === null) {\n const behavior = options?.null ?? \"throw\"\n if (behavior === \"throw\") {\n throw new TypeORMError(\n `Null value encountered in property '${propertyPath}' of a where condition. ` +\n `To match with SQL NULL, the IsNull() operator must be used. ` +\n `Set 'invalidWhereValuesBehavior.null' to 'ignore' or 'sql-null' in connection options to skip or handle null values.`,\n )\n } else if (behavior === \"sql-null\") {\n result[key] = IsNull()\n }\n // \"ignore\" — skip this key\n } else if (\n typeof value === \"object\" &&\n !Array.isArray(value) &&\n !(value instanceof Date) &&\n !InstanceChecker.isFindOperator(value)\n ) {\n const nested = OrmUtils.normalizeWhereCriteria(\n value,\n options,\n propertyPath,\n )\n if (Object.keys(nested).length > 0) {\n result[key] = nested\n }\n } else {\n result[key] = value\n }\n }\n\n return result\n }\n}\n"]}
1
+ {"version":3,"file":"OrmUtils.js","sourceRoot":"","sources":["../../../src/util/OrmUtils.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DeepPartial } from \"../common/DeepPartial\"\nimport type { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport type {\n PrimitiveCriteria,\n SinglePrimitiveCriteria,\n} from \"../common/PrimitiveCriteria\"\nimport { areUint8ArraysEqual, isUint8Array } from \"./Uint8ArrayUtils\"\nimport { InstanceChecker } from \"./InstanceChecker\"\nimport { TypeORMError } from \"../error\"\nimport { IsNull } from \"../find-options/operator/IsNull\"\n\nexport class OrmUtils {\n // -------------------------------------------------------------------------\n // Public methods\n // -------------------------------------------------------------------------\n\n /**\n * Chunks array into pieces.\n *\n * @param array\n * @param size\n */\n public static chunk<T>(array: T[], size: number): T[][] {\n return Array.from(Array(Math.ceil(array.length / size)), (_, i) => {\n return array.slice(i * size, i * size + size)\n })\n }\n\n public static splitClassesAndStrings<T>(\n classesAndStrings: (string | T)[],\n ): [T[], string[]] {\n return [\n classesAndStrings.filter(\n (cls): cls is T => typeof cls !== \"string\",\n ),\n classesAndStrings.filter(\n (str): str is string => typeof str === \"string\",\n ),\n ]\n }\n\n public static groupBy<T, R>(\n array: T[],\n propertyCallback: (item: T) => R,\n ): { id: R; items: T[] }[] {\n return array.reduce(\n (groupedArray, value) => {\n const key = propertyCallback(value)\n let grouped = groupedArray.find((i) => i.id === key)\n if (!grouped) {\n grouped = { id: key, items: [] }\n groupedArray.push(grouped)\n }\n grouped.items.push(value)\n return groupedArray\n },\n [] as Array<{ id: R; items: T[] }>,\n )\n }\n\n public static uniq<T>(array: T[], criteria?: (item: T) => unknown): T[]\n public static uniq<T, K extends keyof T>(array: T[], property: K): T[]\n public static uniq<T, K extends keyof T>(\n array: T[],\n criteriaOrProperty?: ((item: T) => unknown) | K,\n ): T[] {\n return array.reduce((uniqueArray, item) => {\n let found: boolean\n if (typeof criteriaOrProperty === \"function\") {\n const itemValue = criteriaOrProperty(item)\n found = !!uniqueArray.find(\n (uniqueItem) =>\n criteriaOrProperty(uniqueItem) === itemValue,\n )\n } else if (typeof criteriaOrProperty === \"string\") {\n found = !!uniqueArray.find(\n (uniqueItem) =>\n uniqueItem[criteriaOrProperty] ===\n item[criteriaOrProperty],\n )\n } else {\n found = uniqueArray.indexOf(item) !== -1\n }\n\n if (!found) uniqueArray.push(item)\n\n return uniqueArray\n }, [] as T[])\n }\n\n /**\n * Deep Object.assign.\n *\n * @param target\n * @param sources\n */\n public static mergeDeep<T>(\n target: T,\n ...sources: (DeepPartial<T> | undefined)[]\n ): T {\n if (!sources.length) {\n return target\n }\n\n for (const source of sources) {\n OrmUtils.merge(target, source)\n }\n\n return target\n }\n\n /**\n * Creates a shallow copy of the object, without invoking the constructor\n *\n * @param object\n */\n public static cloneObject<T extends object>(object: T): T {\n if (object === null || object === undefined) {\n return object\n }\n\n return Object.assign(\n Object.create(Object.getPrototypeOf(object)) as T,\n object,\n )\n }\n\n /**\n * Deep compare objects.\n *\n * @param args\n * @see http://stackoverflow.com/a/1144249\n */\n public static deepCompare<T>(...args: T[]): boolean {\n let i: any, l: any, leftChain: any, rightChain: any\n\n if (args.length < 1) {\n return true // Die silently? Don't know how to handle such case, please help...\n // throw \"Need two or more arguments to compare\";\n }\n\n for (i = 1, l = args.length; i < l; i++) {\n leftChain = [] // Todo: this can be cached\n rightChain = []\n\n if (\n !OrmUtils.compare2Objects(\n leftChain,\n rightChain,\n args[0],\n args[i],\n )\n ) {\n return false\n }\n }\n\n return true\n }\n\n /**\n * Gets deeper value of object.\n *\n * @param obj\n * @param path\n */\n public static deepValue(obj: ObjectLiteral, path: string): any {\n const segments = path.split(\".\")\n for (let i = 0, len = segments.length; i < len; i++) {\n obj = obj[segments[i]]\n }\n return obj\n }\n\n public static replaceEmptyObjectsWithBooleans(obj: any) {\n for (const key in obj) {\n if (obj[key] && typeof obj[key] === \"object\") {\n if (Object.keys(obj[key]).length === 0) {\n obj[key] = true\n } else {\n OrmUtils.replaceEmptyObjectsWithBooleans(obj[key])\n }\n }\n }\n }\n\n public static propertyPathsToTruthyObject(paths: string[]) {\n const obj: any = {}\n for (const path of paths) {\n const props = path.split(\".\")\n if (!props.length) continue\n\n if (!obj[props[0]] || obj[props[0]] === true) {\n obj[props[0]] = {}\n }\n let recursiveChild = obj[props[0]]\n for (const [key, prop] of props.entries()) {\n if (key === 0) continue\n\n if (recursiveChild[prop]) {\n recursiveChild = recursiveChild[prop]\n } else if (key === props.length - 1) {\n recursiveChild[prop] = {}\n recursiveChild = null\n } else {\n recursiveChild[prop] = {}\n recursiveChild = recursiveChild[prop]\n }\n }\n }\n OrmUtils.replaceEmptyObjectsWithBooleans(obj)\n return obj\n }\n\n /**\n * Check if two entity-id-maps are the same\n *\n * @param firstId\n * @param secondId\n */\n public static compareIds(\n firstId: ObjectLiteral | undefined,\n secondId: ObjectLiteral | undefined,\n ): boolean {\n if (\n firstId === undefined ||\n firstId === null ||\n secondId === undefined ||\n secondId === null\n )\n return false\n\n // Optimized version for the common case\n if (\n ((typeof firstId.id === \"string\" &&\n typeof secondId.id === \"string\") ||\n (typeof firstId.id === \"number\" &&\n typeof secondId.id === \"number\")) &&\n Object.keys(firstId).length === 1 &&\n Object.keys(secondId).length === 1\n ) {\n return firstId.id === secondId.id\n }\n\n return OrmUtils.deepCompare(firstId, secondId)\n }\n\n /**\n * Transforms given value into boolean value.\n *\n * @param value\n */\n public static toBoolean(value: any): boolean {\n if (typeof value === \"boolean\") return value\n\n if (typeof value === \"string\") return value === \"true\" || value === \"1\"\n\n if (typeof value === \"number\") return value > 0\n\n return false\n }\n\n /**\n * Checks if two arrays of unique values contain the same values\n *\n * @param arr1\n * @param arr2\n */\n public static isArraysEqual<T>(arr1: T[], arr2: T[]): boolean {\n if (arr1.length !== arr2.length) {\n return false\n }\n\n return arr1.every((element) => arr2.includes(element))\n }\n\n /**\n * Returns items that are missing/extraneous in the second array\n *\n * @param arr1\n * @param arr2\n */\n public static getArraysDiff<T>(\n arr1: T[],\n arr2: T[],\n ): { extraItems: T[]; missingItems: T[] } {\n const extraItems = arr1.filter((item) => !arr2.includes(item))\n const missingItems = arr2.filter((item) => !arr1.includes(item))\n\n return {\n extraItems,\n missingItems,\n }\n }\n\n public static areMutuallyExclusive<T>(...lists: T[][]): boolean {\n const haveSharedObjects = lists.some((list) => {\n const otherLists = lists.filter((otherList) => otherList !== list)\n return list.some((item) =>\n otherLists.some((otherList) => otherList.includes(item)),\n )\n })\n return !haveSharedObjects\n }\n\n /**\n * Parses the CHECK constraint on the specified column and returns\n * all values allowed by the constraint or undefined if the constraint\n * is not present.\n *\n * @param sql\n * @param columnName\n */\n public static parseSqlCheckExpression(\n sql: string,\n columnName: string,\n ): string[] | undefined {\n const enumMatch = sql.match(\n new RegExp(\n `\"${columnName}\" varchar CHECK\\\\s*\\\\(\\\\s*\"${columnName}\"\\\\s+IN\\\\s*`,\n ),\n )\n\n if (enumMatch?.index != null) {\n const afterMatch = sql.slice(enumMatch.index + enumMatch[0].length)\n\n // This is an enum\n // all enum values stored as a comma separated list\n const chars = afterMatch\n\n /**\n * When outside quotes: empty string\n * When inside single quotes: `'`\n */\n let currentQuotes = \"\"\n let nextValue = \"\"\n const enumValues: string[] = []\n for (let idx = 0; idx < chars.length; idx++) {\n const char = chars[idx]\n switch (char) {\n case \",\":\n if (currentQuotes == \"\") {\n enumValues.push(nextValue)\n nextValue = \"\"\n } else {\n nextValue += char\n }\n break\n case \"'\":\n if (currentQuotes == char) {\n const isNextCharQuote = chars[idx + 1] === char\n if (isNextCharQuote) {\n // double quote in sql should be treated as a\n // single quote that's part of the quoted string\n nextValue += char\n idx += 1 // skip that next quote\n } else {\n currentQuotes = \"\"\n }\n } else {\n currentQuotes = char\n }\n break\n case \")\":\n if (currentQuotes == \"\") {\n enumValues.push(nextValue)\n return enumValues\n } else {\n nextValue += char\n }\n break\n default:\n if (currentQuotes != \"\") {\n nextValue += char\n }\n }\n }\n }\n return undefined\n }\n\n /**\n * Checks if given criteria is null or empty.\n *\n * @param criteria\n */\n public static isCriteriaNullOrEmpty(criteria: unknown): boolean {\n return (\n criteria === undefined ||\n criteria === null ||\n criteria === \"\" ||\n (Array.isArray(criteria) && criteria.length === 0) ||\n (OrmUtils.isPlainObject(criteria) &&\n Object.keys(criteria).length === 0)\n )\n }\n\n /**\n * Checks if given criteria is a primitive value.\n * Primitive values are strings, numbers and dates.\n *\n * @param criteria\n */\n public static isSinglePrimitiveCriteria(\n criteria: unknown,\n ): criteria is SinglePrimitiveCriteria {\n return (\n typeof criteria === \"string\" ||\n typeof criteria === \"number\" ||\n criteria instanceof Date\n )\n }\n\n /**\n * Checks if given criteria is a primitive value or an array of primitive values.\n *\n * @param criteria\n */\n public static isPrimitiveCriteria(\n criteria: unknown,\n ): criteria is PrimitiveCriteria {\n if (Array.isArray(criteria)) {\n return criteria.every((value) =>\n OrmUtils.isSinglePrimitiveCriteria(value),\n )\n }\n\n return OrmUtils.isSinglePrimitiveCriteria(criteria)\n }\n\n // -------------------------------------------------------------------------\n // Private methods\n // -------------------------------------------------------------------------\n\n private static compare2Objects(\n leftChain: any,\n rightChain: any,\n x: any,\n y: any,\n ) {\n let p\n\n // remember that NaN === NaN returns false\n // and isNaN(undefined) returns true\n if (Number.isNaN(x) && Number.isNaN(y)) return true\n\n // Compare primitives and functions.\n // Check if both arguments link to the same object.\n // Especially useful on the step where we compare prototypes\n if (x === y) return true\n\n // Unequal, but either is null or undefined (use case: jsonb comparison)\n // PR #3776, todo: add tests\n if (x === null || y === null || x === undefined || y === undefined)\n return false\n\n // Fix the buffer compare bug.\n // See: https://github.com/typeorm/typeorm/issues/3654\n if (typeof x.equals === \"function\" && typeof y.equals === \"function\") {\n return x.equals(y)\n }\n\n if (isUint8Array(x) && isUint8Array(y)) {\n return areUint8ArraysEqual(x, y)\n }\n\n // Works in case when functions are created in constructor.\n // Comparing dates is a common scenario. Another built-ins?\n // We can even handle functions passed across iframes\n if (\n (typeof x === \"function\" && typeof y === \"function\") ||\n (x instanceof Date && y instanceof Date) ||\n (x instanceof RegExp && y instanceof RegExp) ||\n (typeof x === \"string\" && typeof y === \"string\") ||\n (typeof x === \"number\" && typeof y === \"number\")\n )\n return x.toString() === y.toString()\n\n // At last checking prototypes as good as we can\n if (!(typeof x === \"object\" && typeof y === \"object\")) return false\n\n if (\n Object.prototype.isPrototypeOf.call(x, y) ||\n Object.prototype.isPrototypeOf.call(y, x)\n )\n return false\n\n if (x.constructor !== y.constructor) return false\n\n if (x.prototype !== y.prototype) return false\n\n // Check for infinitive linking loops\n if (leftChain.indexOf(x) > -1 || rightChain.indexOf(y) > -1)\n return false\n\n let iterableX = x\n let iterableY = y\n\n if (x instanceof Map) {\n iterableX = Object.fromEntries(x)\n iterableY = Object.fromEntries(y)\n } else if (x instanceof Set) {\n iterableX = Array.from(x)\n iterableY = Array.from(y)\n }\n\n // Quick checking of one object being a subset of another.\n // todo: cache the structure of arguments[0] for performance\n for (p in iterableY) {\n if (iterableY.hasOwnProperty(p) !== iterableX.hasOwnProperty(p)) {\n return false\n } else if (typeof iterableY[p] !== typeof iterableX[p]) {\n return false\n }\n }\n\n for (p in iterableX) {\n if (iterableY.hasOwnProperty(p) !== iterableX.hasOwnProperty(p)) {\n return false\n } else if (typeof iterableY[p] !== typeof iterableX[p]) {\n return false\n }\n\n switch (typeof iterableX[p]) {\n case \"object\":\n case \"function\":\n leftChain.push(x)\n rightChain.push(y)\n\n if (\n !OrmUtils.compare2Objects(\n leftChain,\n rightChain,\n iterableX[p],\n iterableY[p],\n )\n ) {\n return false\n }\n\n leftChain.pop()\n rightChain.pop()\n break\n\n default:\n if (iterableX[p] !== iterableY[p]) {\n return false\n }\n break\n }\n }\n\n return true\n }\n\n // Checks if it's an object made by Object.create(null), {} or new Object()\n private static isPlainObject(item: any) {\n if (item === null || item === undefined) {\n return false\n }\n\n return !item.constructor || item.constructor === Object\n }\n\n private static mergeArrayKey(\n target: any,\n key: number,\n value: any,\n memo: Map<any, any>,\n ) {\n // Have we seen this before? Prevent infinite recursion.\n if (memo.has(value)) {\n target[key] = memo.get(value)\n return\n }\n\n if (value instanceof Promise) {\n // Skip promises entirely.\n // This is a hold-over from the old code & is because we don't want to pull in\n // the lazy fields. Ideally we'd remove these promises via another function first\n // but for now we have to do it here.\n return\n }\n\n if (!OrmUtils.isPlainObject(value) && !Array.isArray(value)) {\n target[key] = value\n return\n }\n\n target[key] ??= Array.isArray(value) ? [] : {}\n\n memo.set(value, target[key])\n OrmUtils.merge(target[key], value, memo)\n memo.delete(value)\n }\n\n private static mergeObjectKey(\n target: any,\n key: string,\n value: any,\n memo: Map<any, any>,\n ) {\n // Have we seen this before? Prevent infinite recursion.\n if (memo.has(value)) {\n Object.assign(target, { [key]: memo.get(value) })\n return\n }\n\n if (value instanceof Promise) {\n // Skip promises entirely.\n // This is a hold-over from the old code & is because we don't want to pull in\n // the lazy fields. Ideally we'd remove these promises via another function first\n // but for now we have to do it here.\n return\n }\n\n if (!OrmUtils.isPlainObject(value) && !Array.isArray(value)) {\n Object.assign(target, { [key]: value })\n return\n }\n\n if (!target[key]) {\n Object.assign(target, { [key]: Array.isArray(value) ? [] : {} })\n }\n\n memo.set(value, target[key])\n OrmUtils.merge(target[key], value, memo)\n memo.delete(value)\n }\n\n private static merge<T>(\n target: T,\n source: DeepPartial<T> | undefined,\n memo: Map<any, any> = new Map(),\n ): void {\n if (OrmUtils.isPlainObject(target) && OrmUtils.isPlainObject(source)) {\n for (const [key, value] of Object.entries(\n source as ObjectLiteral,\n )) {\n if (key === \"__proto__\") continue\n OrmUtils.mergeObjectKey(target, key, value, memo)\n }\n }\n\n if (Array.isArray(target) && Array.isArray(source)) {\n for (let key = 0; key < source.length; key++) {\n OrmUtils.mergeArrayKey(target, key, source[key], memo)\n }\n }\n }\n\n /**\n * Recursively validates an object where clause, throwing for null/undefined\n * based on the provided invalidWhereValuesBehavior config.\n *\n * @param criteria\n * @param options\n * @param options.null\n * @param options.undefined\n * @param path\n */\n static normalizeWhereCriteria(\n criteria: ObjectLiteral,\n options?: {\n null?: \"ignore\" | \"sql-null\" | \"throw\"\n undefined?: \"ignore\" | \"throw\"\n },\n path?: string,\n ): ObjectLiteral {\n if (!options) return criteria\n\n const result: ObjectLiteral = {}\n\n for (const [key, value] of Object.entries(criteria)) {\n const propertyPath = path ? `${path}.${key}` : key\n\n if (value === undefined) {\n const behavior = options?.undefined ?? \"throw\"\n if (behavior === \"throw\") {\n throw new TypeORMError(\n `Undefined value encountered in property '${propertyPath}' of a where condition. ` +\n `Set 'invalidWhereValuesBehavior.undefined' to 'ignore' in connection options to skip properties with undefined values.`,\n )\n }\n // \"ignore\" — skip this key\n } else if (value === null) {\n const behavior = options?.null ?? \"throw\"\n if (behavior === \"throw\") {\n throw new TypeORMError(\n `Null value encountered in property '${propertyPath}' of a where condition. ` +\n `To match with SQL NULL, the IsNull() operator must be used. ` +\n `Set 'invalidWhereValuesBehavior.null' to 'ignore' or 'sql-null' in connection options to skip or handle null values.`,\n )\n } else if (behavior === \"sql-null\") {\n result[key] = IsNull()\n }\n // \"ignore\" — skip this key\n } else if (\n typeof value === \"object\" &&\n !Array.isArray(value) &&\n !(value instanceof Date) &&\n !InstanceChecker.isFindOperator(value)\n ) {\n const nested = OrmUtils.normalizeWhereCriteria(\n value,\n options,\n propertyPath,\n )\n if (Object.keys(nested).length > 0) {\n result[key] = nested\n }\n } else {\n result[key] = value\n }\n }\n\n return result\n }\n}\n"]}
package/util/PathUtils.js CHANGED
@@ -17,7 +17,7 @@ function toPortablePath(filepath) {
17
17
  filepath = filepath.replace(WINDOWS_PATH_REGEXP, `/$1`);
18
18
  else if (filepath.match(UNC_WINDOWS_PATH_REGEXP))
19
19
  filepath = filepath.replace(UNC_WINDOWS_PATH_REGEXP, (match, p1, p2) => `/unc/${p1 ? `.dot/` : ``}${p2}`);
20
- return filepath.replace(/\\/g, `/`);
20
+ return filepath.replaceAll("\\", `/`);
21
21
  }
22
22
  /**
23
23
  * Create deterministic valid database name (class, database) of fixed length from any filepath. Equivalent paths for windows/posix systems should
@@ -1 +1 @@
1
- {"version":3,"file":"PathUtils.js","sourceRoot":"","sources":["../../../src/util/PathUtils.ts"],"names":[],"mappings":";;AASA,wCAYC;AAQD,wCAGC;AAOD,gCAEC;AAzCD,+CAAoC;AAEpC,MAAM,mBAAmB,GAAG,iBAAiB,CAAA;AAC7C,MAAM,uBAAuB,GAAG,mBAAmB,CAAA;AAEnD;;;GAGG;AACH,SAAgB,cAAc,CAAC,QAAgB;IAC3C,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,QAAQ,CAAA;IAEjD,IAAI,QAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC;QACnC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAA;SACtD,IAAI,QAAQ,CAAC,KAAK,CAAC,uBAAuB,CAAC;QAC5C,QAAQ,GAAG,QAAQ,CAAC,OAAO,CACvB,uBAAuB,EACvB,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CACtD,CAAA;IAEL,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;AACvC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,QAAgB;IAC3C,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAA;IACnD,OAAO,IAAA,kBAAI,EAAC,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAA;AACrC,CAAC;AAED;;;;GAIG;AACH,SAAgB,UAAU,CAAC,QAAgB;IACvC,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;AACpD,CAAC","sourcesContent":["import { hash } from \"./StringUtils\"\n\nconst WINDOWS_PATH_REGEXP = /^([a-zA-Z]:.*)$/\nconst UNC_WINDOWS_PATH_REGEXP = /^\\\\\\\\(\\.\\\\)?(.*)$/\n\n/**\n *\n * @param filepath\n */\nexport function toPortablePath(filepath: string): string {\n if (process.platform !== `win32`) return filepath\n\n if (filepath.match(WINDOWS_PATH_REGEXP))\n filepath = filepath.replace(WINDOWS_PATH_REGEXP, `/$1`)\n else if (filepath.match(UNC_WINDOWS_PATH_REGEXP))\n filepath = filepath.replace(\n UNC_WINDOWS_PATH_REGEXP,\n (match, p1, p2) => `/unc/${p1 ? `.dot/` : ``}${p2}`,\n )\n\n return filepath.replace(/\\\\/g, `/`)\n}\n\n/**\n * Create deterministic valid database name (class, database) of fixed length from any filepath. Equivalent paths for windows/posix systems should\n * be equivalent to enable portability\n *\n * @param filepath\n */\nexport function filepathToName(filepath: string): string {\n const uniq = toPortablePath(filepath).toLowerCase()\n return hash(uniq, { length: 63 })\n}\n\n/**\n * Cross platform isAbsolute\n *\n * @param filepath\n */\nexport function isAbsolute(filepath: string): boolean {\n return !!filepath.match(/^(?:[a-z]:|[\\\\]|[/])/i)\n}\n"]}
1
+ {"version":3,"file":"PathUtils.js","sourceRoot":"","sources":["../../../src/util/PathUtils.ts"],"names":[],"mappings":";;AASA,wCAYC;AAQD,wCAGC;AAOD,gCAEC;AAzCD,+CAAoC;AAEpC,MAAM,mBAAmB,GAAG,iBAAiB,CAAA;AAC7C,MAAM,uBAAuB,GAAG,mBAAmB,CAAA;AAEnD;;;GAGG;AACH,SAAgB,cAAc,CAAC,QAAgB;IAC3C,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,QAAQ,CAAA;IAEjD,IAAI,QAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC;QACnC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAA;SACtD,IAAI,QAAQ,CAAC,KAAK,CAAC,uBAAuB,CAAC;QAC5C,QAAQ,GAAG,QAAQ,CAAC,OAAO,CACvB,uBAAuB,EACvB,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CACtD,CAAA;IAEL,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;AACzC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,QAAgB;IAC3C,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAA;IACnD,OAAO,IAAA,kBAAI,EAAC,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAA;AACrC,CAAC;AAED;;;;GAIG;AACH,SAAgB,UAAU,CAAC,QAAgB;IACvC,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;AACpD,CAAC","sourcesContent":["import { hash } from \"./StringUtils\"\n\nconst WINDOWS_PATH_REGEXP = /^([a-zA-Z]:.*)$/\nconst UNC_WINDOWS_PATH_REGEXP = /^\\\\\\\\(\\.\\\\)?(.*)$/\n\n/**\n *\n * @param filepath\n */\nexport function toPortablePath(filepath: string): string {\n if (process.platform !== `win32`) return filepath\n\n if (filepath.match(WINDOWS_PATH_REGEXP))\n filepath = filepath.replace(WINDOWS_PATH_REGEXP, `/$1`)\n else if (filepath.match(UNC_WINDOWS_PATH_REGEXP))\n filepath = filepath.replace(\n UNC_WINDOWS_PATH_REGEXP,\n (match, p1, p2) => `/unc/${p1 ? `.dot/` : ``}${p2}`,\n )\n\n return filepath.replaceAll(\"\\\\\", `/`)\n}\n\n/**\n * Create deterministic valid database name (class, database) of fixed length from any filepath. Equivalent paths for windows/posix systems should\n * be equivalent to enable portability\n *\n * @param filepath\n */\nexport function filepathToName(filepath: string): string {\n const uniq = toPortablePath(filepath).toLowerCase()\n return hash(uniq, { length: 63 })\n}\n\n/**\n * Cross platform isAbsolute\n *\n * @param filepath\n */\nexport function isAbsolute(filepath: string): boolean {\n return !!filepath.match(/^(?:[a-z]:|[\\\\]|[/])/i)\n}\n"]}
@@ -8,16 +8,7 @@ export declare class RandomGenerator {
8
8
  */
9
9
  static uuidv4(): string;
10
10
  /**
11
- * discuss at: http://locutus.io/php/sha1/
12
- * original by: Webtoolkit.info (http://www.webtoolkit.info/)
13
- * improved by: Michael White (http://getsprink.com)
14
- * improved by: Kevin van Zonneveld (http://kvz.io)
15
- * input by: Brett Zamir (http://brett-zamir.me)
16
- * note 1: Keep in mind that in accordance with PHP, the whole string is buffered and then
17
- * note 1: hashed. If available, we'd recommend using Node's native crypto modules directly
18
- * note 1: in a steaming fashion for faster and more efficient hashing
19
- * example 1: sha1('Kevin van Zonneveld')
20
- * returns 1: '54916d2e62f65b3afa6e192e6a601cdbe5cb5897'
11
+ * Standard-conforming SHA-1 polyfill, based on http://locutus.io/php/sha1/
21
12
  *
22
13
  * @param str String to be hashed.
23
14
  * @returns SHA-1 hex digest
@@ -48,16 +48,7 @@ class RandomGenerator {
48
48
  ].join("-");
49
49
  }
50
50
  /**
51
- * discuss at: http://locutus.io/php/sha1/
52
- * original by: Webtoolkit.info (http://www.webtoolkit.info/)
53
- * improved by: Michael White (http://getsprink.com)
54
- * improved by: Kevin van Zonneveld (http://kvz.io)
55
- * input by: Brett Zamir (http://brett-zamir.me)
56
- * note 1: Keep in mind that in accordance with PHP, the whole string is buffered and then
57
- * note 1: hashed. If available, we'd recommend using Node's native crypto modules directly
58
- * note 1: in a steaming fashion for faster and more efficient hashing
59
- * example 1: sha1('Kevin van Zonneveld')
60
- * returns 1: '54916d2e62f65b3afa6e192e6a601cdbe5cb5897'
51
+ * Standard-conforming SHA-1 polyfill, based on http://locutus.io/php/sha1/
61
52
  *
62
53
  * @param str String to be hashed.
63
54
  * @returns SHA-1 hex digest
@@ -1 +1 @@
1
- {"version":3,"file":"RandomGenerator.js","sourceRoot":"","sources":["../../../src/util/RandomGenerator.ts"],"names":[],"mappings":"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","sourcesContent":["export class RandomGenerator {\n /**\n * Generates a RFC 4122 version 4 UUID.\n * Uses native crypto.randomUUID() if available, otherwise falls back to\n * a custom implementation using crypto.getRandomValues().\n *\n * @returns A version 4 UUID string\n */\n static uuidv4(): string {\n // Try native crypto.randomUUID() (available in Node.js 19+ and modern browsers)\n const uuid = globalThis.crypto?.randomUUID?.()\n if (uuid) {\n return uuid\n }\n\n // Custom implementation using crypto.getRandomValues()\n // Based on RFC 4122 version 4 UUID specification\n const randomBytes = new Uint8Array(16)\n\n if (globalThis.crypto?.getRandomValues) {\n globalThis.crypto.getRandomValues(randomBytes)\n } else {\n // Fallback for React Native/Hermes and environments without crypto support\n // Hermes (React Native's JavaScript engine) does not provide crypto APIs\n // Math.random() is permitted by RFC 4122 for UUID v4 (\"pseudo-randomly\")\n // This approach is also used by expo-crypto and other RN libraries\n // Note: For TypeORM's use case (DB IDs, cache IDs), uniqueness is sufficient\n for (let i = 0; i < 16; i++) {\n randomBytes[i] = Math.floor(Math.random() * 256)\n }\n }\n\n // Set version (4) and variant bits according to RFC 4122\n randomBytes[6] = (randomBytes[6] & 0x0f) | 0x40 // Version 4\n randomBytes[8] = (randomBytes[8] & 0x3f) | 0x80 // Variant 10\n\n // Convert to UUID string format (xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx)\n const hexValues: string[] = []\n randomBytes.forEach((byte) => {\n hexValues.push(byte.toString(16).padStart(2, \"0\"))\n })\n\n return [\n hexValues.slice(0, 4).join(\"\"),\n hexValues.slice(4, 6).join(\"\"),\n hexValues.slice(6, 8).join(\"\"),\n hexValues.slice(8, 10).join(\"\"),\n hexValues.slice(10, 16).join(\"\"),\n ].join(\"-\")\n }\n\n /**\n * discuss at: http://locutus.io/php/sha1/\n * original by: Webtoolkit.info (http://www.webtoolkit.info/)\n * improved by: Michael White (http://getsprink.com)\n * improved by: Kevin van Zonneveld (http://kvz.io)\n * input by: Brett Zamir (http://brett-zamir.me)\n * note 1: Keep in mind that in accordance with PHP, the whole string is buffered and then\n * note 1: hashed. If available, we'd recommend using Node's native crypto modules directly\n * note 1: in a steaming fashion for faster and more efficient hashing\n * example 1: sha1('Kevin van Zonneveld')\n * returns 1: '54916d2e62f65b3afa6e192e6a601cdbe5cb5897'\n *\n * @param str String to be hashed.\n * @returns SHA-1 hex digest\n */\n static sha1(str: string) {\n const _rotLeft = function (n: number, s: number): number {\n const t4 = (n << s) | (n >>> (32 - s))\n return t4\n }\n\n const _cvtHex = function (val: number): string {\n let str = \"\"\n\n for (let i = 7; i >= 0; i--) {\n const v = (val >>> (i * 4)) & 0x0f\n str += v.toString(16)\n }\n return str\n }\n\n // utf8_encode\n const bytes = new TextEncoder().encode(str)\n const bytesLength = bytes.length\n\n const wordArray: number[] = []\n for (let i = 0; i < bytesLength - 3; i += 4) {\n const j =\n (bytes[i] << 24) |\n (bytes[i + 1] << 16) |\n (bytes[i + 2] << 8) |\n bytes[i + 3]\n wordArray.push(j)\n }\n\n let i: number = 0\n switch (bytesLength % 4) {\n case 0:\n i = 0x080000000\n break\n case 1:\n i = (bytes[bytesLength - 1] << 24) | 0x0800000\n break\n case 2:\n i =\n (bytes[bytesLength - 2] << 24) |\n (bytes[bytesLength - 1] << 16) |\n 0x08000\n break\n case 3:\n i =\n (bytes[bytesLength - 3] << 24) |\n (bytes[bytesLength - 2] << 16) |\n (bytes[bytesLength - 1] << 8) |\n 0x80\n break\n }\n\n wordArray.push(i)\n\n while (wordArray.length % 16 !== 14) {\n wordArray.push(0)\n }\n\n wordArray.push(bytesLength >>> 29)\n wordArray.push((bytesLength << 3) & 0x0ffffffff)\n\n let H0 = 0x67452301\n let H1 = 0xefcdab89\n let H2 = 0x98badcfe\n let H3 = 0x10325476\n let H4 = 0xc3d2e1f0\n\n for (\n let blockstart = 0;\n blockstart < wordArray.length;\n blockstart += 16\n ) {\n const W: number[] = new Array(80)\n for (let i = 0; i < 16; i++) {\n W[i] = wordArray[blockstart + i]\n }\n for (let i = 16; i <= 79; i++) {\n W[i] = _rotLeft(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1)\n }\n\n let A = H0\n let B = H1\n let C = H2\n let D = H3\n let E = H4\n\n for (let i = 0; i <= 19; i++) {\n const temp =\n (_rotLeft(A, 5) +\n ((B & C) | (~B & D)) +\n E +\n W[i] +\n 0x5a827999) &\n 0x0ffffffff\n E = D\n D = C\n C = _rotLeft(B, 30)\n B = A\n A = temp\n }\n\n for (let i = 20; i <= 39; i++) {\n const temp =\n (_rotLeft(A, 5) + (B ^ C ^ D) + E + W[i] + 0x6ed9eba1) &\n 0x0ffffffff\n E = D\n D = C\n C = _rotLeft(B, 30)\n B = A\n A = temp\n }\n\n for (let i = 40; i <= 59; i++) {\n const temp =\n (_rotLeft(A, 5) +\n ((B & C) | (B & D) | (C & D)) +\n E +\n W[i] +\n 0x8f1bbcdc) &\n 0x0ffffffff\n E = D\n D = C\n C = _rotLeft(B, 30)\n B = A\n A = temp\n }\n\n for (let i = 60; i <= 79; i++) {\n const temp =\n (_rotLeft(A, 5) + (B ^ C ^ D) + E + W[i] + 0xca62c1d6) &\n 0x0ffffffff\n E = D\n D = C\n C = _rotLeft(B, 30)\n B = A\n A = temp\n }\n\n H0 = (H0 + A) & 0x0ffffffff\n H1 = (H1 + B) & 0x0ffffffff\n H2 = (H2 + C) & 0x0ffffffff\n H3 = (H3 + D) & 0x0ffffffff\n H4 = (H4 + E) & 0x0ffffffff\n }\n\n const ans =\n _cvtHex(H0) + _cvtHex(H1) + _cvtHex(H2) + _cvtHex(H3) + _cvtHex(H4)\n return ans.toLowerCase()\n }\n}\n"]}
1
+ {"version":3,"file":"RandomGenerator.js","sourceRoot":"","sources":["../../../src/util/RandomGenerator.ts"],"names":[],"mappings":"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","sourcesContent":["export class RandomGenerator {\n /**\n * Generates a RFC 4122 version 4 UUID.\n * Uses native crypto.randomUUID() if available, otherwise falls back to\n * a custom implementation using crypto.getRandomValues().\n *\n * @returns A version 4 UUID string\n */\n static uuidv4(): string {\n // Try native crypto.randomUUID() (available in Node.js 19+ and modern browsers)\n const uuid = globalThis.crypto?.randomUUID?.()\n if (uuid) {\n return uuid\n }\n\n // Custom implementation using crypto.getRandomValues()\n // Based on RFC 4122 version 4 UUID specification\n const randomBytes = new Uint8Array(16)\n\n if (globalThis.crypto?.getRandomValues) {\n globalThis.crypto.getRandomValues(randomBytes)\n } else {\n // Fallback for React Native/Hermes and environments without crypto support\n // Hermes (React Native's JavaScript engine) does not provide crypto APIs\n // Math.random() is permitted by RFC 4122 for UUID v4 (\"pseudo-randomly\")\n // This approach is also used by expo-crypto and other RN libraries\n // Note: For TypeORM's use case (DB IDs, cache IDs), uniqueness is sufficient\n for (let i = 0; i < 16; i++) {\n randomBytes[i] = Math.floor(Math.random() * 256)\n }\n }\n\n // Set version (4) and variant bits according to RFC 4122\n randomBytes[6] = (randomBytes[6] & 0x0f) | 0x40 // Version 4\n randomBytes[8] = (randomBytes[8] & 0x3f) | 0x80 // Variant 10\n\n // Convert to UUID string format (xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx)\n const hexValues: string[] = []\n randomBytes.forEach((byte) => {\n hexValues.push(byte.toString(16).padStart(2, \"0\"))\n })\n\n return [\n hexValues.slice(0, 4).join(\"\"),\n hexValues.slice(4, 6).join(\"\"),\n hexValues.slice(6, 8).join(\"\"),\n hexValues.slice(8, 10).join(\"\"),\n hexValues.slice(10, 16).join(\"\"),\n ].join(\"-\")\n }\n\n /**\n * Standard-conforming SHA-1 polyfill, based on http://locutus.io/php/sha1/\n *\n * @param str String to be hashed.\n * @returns SHA-1 hex digest\n */\n static sha1(str: string) {\n const _rotLeft = function (n: number, s: number): number {\n const t4 = (n << s) | (n >>> (32 - s))\n return t4\n }\n\n const _cvtHex = function (val: number): string {\n let str = \"\"\n\n for (let i = 7; i >= 0; i--) {\n const v = (val >>> (i * 4)) & 0x0f\n str += v.toString(16)\n }\n return str\n }\n\n // utf8_encode\n const bytes = new TextEncoder().encode(str)\n const bytesLength = bytes.length\n\n const wordArray: number[] = []\n for (let i = 0; i < bytesLength - 3; i += 4) {\n const j =\n (bytes[i] << 24) |\n (bytes[i + 1] << 16) |\n (bytes[i + 2] << 8) |\n bytes[i + 3]\n wordArray.push(j)\n }\n\n let i: number = 0\n switch (bytesLength % 4) {\n case 0:\n i = 0x080000000\n break\n case 1:\n i = (bytes[bytesLength - 1] << 24) | 0x0800000\n break\n case 2:\n i =\n (bytes[bytesLength - 2] << 24) |\n (bytes[bytesLength - 1] << 16) |\n 0x08000\n break\n case 3:\n i =\n (bytes[bytesLength - 3] << 24) |\n (bytes[bytesLength - 2] << 16) |\n (bytes[bytesLength - 1] << 8) |\n 0x80\n break\n }\n\n wordArray.push(i)\n\n while (wordArray.length % 16 !== 14) {\n wordArray.push(0)\n }\n\n wordArray.push(bytesLength >>> 29)\n wordArray.push((bytesLength << 3) & 0x0ffffffff)\n\n let H0 = 0x67452301\n let H1 = 0xefcdab89\n let H2 = 0x98badcfe\n let H3 = 0x10325476\n let H4 = 0xc3d2e1f0\n\n for (\n let blockstart = 0;\n blockstart < wordArray.length;\n blockstart += 16\n ) {\n const W: number[] = new Array(80)\n for (let i = 0; i < 16; i++) {\n W[i] = wordArray[blockstart + i]\n }\n for (let i = 16; i <= 79; i++) {\n W[i] = _rotLeft(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1)\n }\n\n let A = H0\n let B = H1\n let C = H2\n let D = H3\n let E = H4\n\n for (let i = 0; i <= 19; i++) {\n const temp =\n (_rotLeft(A, 5) +\n ((B & C) | (~B & D)) +\n E +\n W[i] +\n 0x5a827999) &\n 0x0ffffffff\n E = D\n D = C\n C = _rotLeft(B, 30)\n B = A\n A = temp\n }\n\n for (let i = 20; i <= 39; i++) {\n const temp =\n (_rotLeft(A, 5) + (B ^ C ^ D) + E + W[i] + 0x6ed9eba1) &\n 0x0ffffffff\n E = D\n D = C\n C = _rotLeft(B, 30)\n B = A\n A = temp\n }\n\n for (let i = 40; i <= 59; i++) {\n const temp =\n (_rotLeft(A, 5) +\n ((B & C) | (B & D) | (C & D)) +\n E +\n W[i] +\n 0x8f1bbcdc) &\n 0x0ffffffff\n E = D\n D = C\n C = _rotLeft(B, 30)\n B = A\n A = temp\n }\n\n for (let i = 60; i <= 79; i++) {\n const temp =\n (_rotLeft(A, 5) + (B ^ C ^ D) + E + W[i] + 0xca62c1d6) &\n 0x0ffffffff\n E = D\n D = C\n C = _rotLeft(B, 30)\n B = A\n A = temp\n }\n\n H0 = (H0 + A) & 0x0ffffffff\n H1 = (H1 + B) & 0x0ffffffff\n H2 = (H2 + C) & 0x0ffffffff\n H3 = (H3 + D) & 0x0ffffffff\n H4 = (H4 + E) & 0x0ffffffff\n }\n\n const ans =\n _cvtHex(H0) + _cvtHex(H1) + _cvtHex(H2) + _cvtHex(H3) + _cvtHex(H4)\n return ans.toLowerCase()\n }\n}\n"]}
@@ -18,7 +18,7 @@ const RandomGenerator_1 = require("./RandomGenerator");
18
18
  function camelCase(str, firstCapital = false) {
19
19
  if (firstCapital)
20
20
  str = " " + str;
21
- return str.replace(/^([A-Z])|[\s-_](\w)/g, function (match, p1, p2) {
21
+ return str.replaceAll(/^([A-Z])|[\s-_](\w)/g, function (match, p1, p2) {
22
22
  if (p2)
23
23
  return p2.toUpperCase();
24
24
  return p1.toLowerCase();
@@ -33,9 +33,9 @@ function camelCase(str, firstCapital = false) {
33
33
  function snakeCase(str) {
34
34
  return (str
35
35
  // ABc -> a_bc
36
- .replace(/([A-Z])([A-Z])([a-z])/g, "$1_$2$3")
36
+ .replaceAll(/([A-Z])([A-Z])([a-z])/g, "$1_$2$3")
37
37
  // aC -> a_c
38
- .replace(/([a-z0-9])([A-Z])/g, "$1_$2")
38
+ .replaceAll(/([a-z0-9])([A-Z])/g, "$1_$2")
39
39
  .toLowerCase());
40
40
  }
41
41
  /**
@@ -46,7 +46,7 @@ function snakeCase(str) {
46
46
  * @see http://stackoverflow.com/questions/196972/convert-string-to-title-case-with-javascript
47
47
  */
48
48
  function titleCase(str) {
49
- return str.replace(/\w\S*/g, (txt) => txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase());
49
+ return str.replaceAll(/\w\S*/g, (txt) => txt.charAt(0).toUpperCase() + txt.slice(1).toLowerCase());
50
50
  }
51
51
  /**
52
52
  * Builds abbreviated string from given string;
@@ -57,10 +57,10 @@ function titleCase(str) {
57
57
  */
58
58
  function abbreviate(str, abbrLettersCount = 1) {
59
59
  const words = str
60
- .replace(/([a-z\xE0-\xFF])([A-Z\xC0\xDF])/g, "$1 $2")
60
+ .replaceAll(/([a-z\xE0-\xFF])([A-Z\xC0\xDF])/g, "$1 $2")
61
61
  .split(" ");
62
62
  return words.reduce((res, word) => {
63
- res += word.substring(0, abbrLettersCount);
63
+ res += word.slice(0, abbrLettersCount);
64
64
  return res;
65
65
  }, "");
66
66
  }
@@ -91,13 +91,13 @@ function shorten(input, options = {}) {
91
91
  const shortSegments = segments.reduce((acc, val) => {
92
92
  // split the given segment into many terms based on an eventual camel cased name
93
93
  const segmentTerms = val
94
- .replace(/([a-z\xE0-\xFF])([A-Z\xC0-\xDF])/g, "$1 $2")
95
- .replace(/(_)([a-z])/g, " $2")
94
+ .replaceAll(/([a-z\xE0-\xFF])([A-Z\xC0-\xDF])/g, "$1 $2")
95
+ .replaceAll(/(_)([a-z])/g, " $2")
96
96
  .split(" ");
97
97
  // "OrderItemList" becomes "OrItLi", while "company" becomes "comp"
98
98
  const length = segmentTerms.length > 1 ? termLength : segmentLength;
99
99
  const shortSegment = segmentTerms
100
- .map((term) => term.substring(0, length))
100
+ .map((term) => term.slice(0, length))
101
101
  .join("");
102
102
  acc.push(shortSegment);
103
103
  return acc;
@@ -1 +1 @@
1
- {"version":3,"file":"StringUtils.js","sourceRoot":"","sources":["../../../src/util/StringUtils.ts"],"names":[],"mappings":"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","sourcesContent":["import { RandomGenerator } from \"./RandomGenerator\"\n\n/**\n * Converts string into camelCase.\n *\n * @param str String to be converted.\n * @param firstCapital If true, the first character will be capitalized.\n * @returns camelCase string\n * @see http://stackoverflow.com/questions/2970525/converting-any-string-into-camel-case\n */\nexport function camelCase(str: string, firstCapital: boolean = false): string {\n if (firstCapital) str = \" \" + str\n return str.replace(/^([A-Z])|[\\s-_](\\w)/g, function (match, p1, p2) {\n if (p2) return p2.toUpperCase()\n return p1.toLowerCase()\n })\n}\n\n/**\n * Converts string into snake_case.\n *\n * @param str String to be converted.\n * @returns snake_case string\n */\nexport function snakeCase(str: string): string {\n return (\n str\n // ABc -> a_bc\n .replace(/([A-Z])([A-Z])([a-z])/g, \"$1_$2$3\")\n // aC -> a_c\n .replace(/([a-z0-9])([A-Z])/g, \"$1_$2\")\n .toLowerCase()\n )\n}\n\n/**\n * Converts string into Title Case.\n *\n * @param str String to be converted.\n * @returns Title Case string\n * @see http://stackoverflow.com/questions/196972/convert-string-to-title-case-with-javascript\n */\nexport function titleCase(str: string): string {\n return str.replace(\n /\\w\\S*/g,\n (txt) => txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase(),\n )\n}\n\n/**\n * Builds abbreviated string from given string;\n *\n * @param str String to be abbreviated.\n * @param abbrLettersCount Number of letters to be used for abbreviation.\n * @returns abbreviated string\n */\nexport function abbreviate(str: string, abbrLettersCount: number = 1): string {\n const words = str\n .replace(/([a-z\\xE0-\\xFF])([A-Z\\xC0\\xDF])/g, \"$1 $2\")\n .split(\" \")\n return words.reduce((res, word) => {\n res += word.substring(0, abbrLettersCount)\n return res\n }, \"\")\n}\n\nexport interface IShortenOptions {\n /** String used to split \"segments\" of the alias/column name */\n separator?: string\n /** Maximum length of any \"segment\" */\n segmentLength?: number\n /** Length of any \"term\" in a \"segment\"; \"OrderItem\" is a segment, \"Order\" and \"Items\" are terms */\n termLength?: number\n}\n\n/**\n * Shorten a given `input`. Useful for RDBMS imposing a limit on the\n * maximum length of aliases and column names in SQL queries.\n *\n * @example\n * // returns: \"UsShCa__orde__mark__dire\"\n * shorten('UserShoppingCart__order__market__director')\n *\n * // returns: \"cat_wit_ver_lon_nam_pos_wit_ver_lon_nam_pos_wit_ver_lon_nam\"\n * shorten(\n * 'category_with_very_long_name_posts_with_very_long_name_post_with_very_long_name',\n * { separator: '_', segmentLength: 3 }\n * )\n *\n * // equals: UsShCa__orde__mark_market_id\n * `${shorten('UserShoppingCart__order__market')}_market_id`\n *\n * @param input String to be shortened.\n * @param options Default to `4` for segments length, `2` for terms length, `'__'` as a separator.\n * @returns Shortened `input`.\n */\nexport function shorten(input: string, options: IShortenOptions = {}): string {\n const { segmentLength = 4, separator = \"__\", termLength = 2 } = options\n\n const segments = input.split(separator)\n const shortSegments = segments.reduce((acc: string[], val: string) => {\n // split the given segment into many terms based on an eventual camel cased name\n const segmentTerms = val\n .replace(/([a-z\\xE0-\\xFF])([A-Z\\xC0-\\xDF])/g, \"$1 $2\")\n .replace(/(_)([a-z])/g, \" $2\")\n .split(\" \")\n // \"OrderItemList\" becomes \"OrItLi\", while \"company\" becomes \"comp\"\n const length = segmentTerms.length > 1 ? termLength : segmentLength\n const shortSegment = segmentTerms\n .map((term) => term.substring(0, length))\n .join(\"\")\n\n acc.push(shortSegment)\n return acc\n }, [])\n\n return shortSegments.join(separator)\n}\n\n/**\n * Checks if the current environment is Node.js.\n *\n * @returns `true` if the current environment is Node.js, `false` otherwise.\n */\nfunction isNode(): boolean {\n return typeof process !== \"undefined\" && !!process.versions?.node\n}\n\ninterface IHashOptions {\n length?: number\n}\n\n/**\n * Returns a SHA-1 hex digest for internal IDs/aliases (not for cryptographic security)\n *\n * @param input String to be hashed.\n * @param options - Options object.\n * @param options.length Optionally, shorten the output to desired length.\n * @returns SHA-1 hex digest\n */\nexport function hash(input: string, options: IHashOptions = {}): string {\n let sha1: string\n if (isNode()) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-imports\n const crypto = require(\"node:crypto\") as typeof import(\"node:crypto\")\n const hashFunction = crypto.createHash(\"sha1\")\n hashFunction.update(input, \"utf8\")\n sha1 = hashFunction.digest(\"hex\")\n } else {\n sha1 = RandomGenerator.sha1(input)\n }\n\n if (options.length && options.length > 0) {\n return sha1.slice(0, options.length)\n }\n\n return sha1\n}\n"]}
1
+ {"version":3,"file":"StringUtils.js","sourceRoot":"","sources":["../../../src/util/StringUtils.ts"],"names":[],"mappings":"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","sourcesContent":["import { RandomGenerator } from \"./RandomGenerator\"\n\n/**\n * Converts string into camelCase.\n *\n * @param str String to be converted.\n * @param firstCapital If true, the first character will be capitalized.\n * @returns camelCase string\n * @see http://stackoverflow.com/questions/2970525/converting-any-string-into-camel-case\n */\nexport function camelCase(str: string, firstCapital: boolean = false): string {\n if (firstCapital) str = \" \" + str\n return str.replaceAll(/^([A-Z])|[\\s-_](\\w)/g, function (match, p1, p2) {\n if (p2) return p2.toUpperCase()\n return p1.toLowerCase()\n })\n}\n\n/**\n * Converts string into snake_case.\n *\n * @param str String to be converted.\n * @returns snake_case string\n */\nexport function snakeCase(str: string): string {\n return (\n str\n // ABc -> a_bc\n .replaceAll(/([A-Z])([A-Z])([a-z])/g, \"$1_$2$3\")\n // aC -> a_c\n .replaceAll(/([a-z0-9])([A-Z])/g, \"$1_$2\")\n .toLowerCase()\n )\n}\n\n/**\n * Converts string into Title Case.\n *\n * @param str String to be converted.\n * @returns Title Case string\n * @see http://stackoverflow.com/questions/196972/convert-string-to-title-case-with-javascript\n */\nexport function titleCase(str: string): string {\n return str.replaceAll(\n /\\w\\S*/g,\n (txt) => txt.charAt(0).toUpperCase() + txt.slice(1).toLowerCase(),\n )\n}\n\n/**\n * Builds abbreviated string from given string;\n *\n * @param str String to be abbreviated.\n * @param abbrLettersCount Number of letters to be used for abbreviation.\n * @returns abbreviated string\n */\nexport function abbreviate(str: string, abbrLettersCount: number = 1): string {\n const words = str\n .replaceAll(/([a-z\\xE0-\\xFF])([A-Z\\xC0\\xDF])/g, \"$1 $2\")\n .split(\" \")\n return words.reduce((res, word) => {\n res += word.slice(0, abbrLettersCount)\n return res\n }, \"\")\n}\n\nexport interface IShortenOptions {\n /** String used to split \"segments\" of the alias/column name */\n separator?: string\n /** Maximum length of any \"segment\" */\n segmentLength?: number\n /** Length of any \"term\" in a \"segment\"; \"OrderItem\" is a segment, \"Order\" and \"Items\" are terms */\n termLength?: number\n}\n\n/**\n * Shorten a given `input`. Useful for RDBMS imposing a limit on the\n * maximum length of aliases and column names in SQL queries.\n *\n * @example\n * // returns: \"UsShCa__orde__mark__dire\"\n * shorten('UserShoppingCart__order__market__director')\n *\n * // returns: \"cat_wit_ver_lon_nam_pos_wit_ver_lon_nam_pos_wit_ver_lon_nam\"\n * shorten(\n * 'category_with_very_long_name_posts_with_very_long_name_post_with_very_long_name',\n * { separator: '_', segmentLength: 3 }\n * )\n *\n * // equals: UsShCa__orde__mark_market_id\n * `${shorten('UserShoppingCart__order__market')}_market_id`\n *\n * @param input String to be shortened.\n * @param options Default to `4` for segments length, `2` for terms length, `'__'` as a separator.\n * @returns Shortened `input`.\n */\nexport function shorten(input: string, options: IShortenOptions = {}): string {\n const { segmentLength = 4, separator = \"__\", termLength = 2 } = options\n\n const segments = input.split(separator)\n const shortSegments = segments.reduce((acc: string[], val: string) => {\n // split the given segment into many terms based on an eventual camel cased name\n const segmentTerms = val\n .replaceAll(/([a-z\\xE0-\\xFF])([A-Z\\xC0-\\xDF])/g, \"$1 $2\")\n .replaceAll(/(_)([a-z])/g, \" $2\")\n .split(\" \")\n // \"OrderItemList\" becomes \"OrItLi\", while \"company\" becomes \"comp\"\n const length = segmentTerms.length > 1 ? termLength : segmentLength\n const shortSegment = segmentTerms\n .map((term) => term.slice(0, length))\n .join(\"\")\n\n acc.push(shortSegment)\n return acc\n }, [])\n\n return shortSegments.join(separator)\n}\n\n/**\n * Checks if the current environment is Node.js.\n *\n * @returns `true` if the current environment is Node.js, `false` otherwise.\n */\nfunction isNode(): boolean {\n return typeof process !== \"undefined\" && !!process.versions?.node\n}\n\ninterface IHashOptions {\n length?: number\n}\n\n/**\n * Returns a SHA-1 hex digest for internal IDs/aliases (not for cryptographic security)\n *\n * @param input String to be hashed.\n * @param options - Options object.\n * @param options.length Optionally, shorten the output to desired length.\n * @returns SHA-1 hex digest\n */\nexport function hash(input: string, options: IHashOptions = {}): string {\n let sha1: string\n if (isNode()) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-imports\n const crypto = require(\"node:crypto\") as typeof import(\"node:crypto\")\n const hashFunction = crypto.createHash(\"sha1\")\n hashFunction.update(input, \"utf8\")\n sha1 = hashFunction.digest(\"hex\")\n } else {\n sha1 = RandomGenerator.sha1(input)\n }\n\n if (options.length && options.length > 0) {\n return sha1.slice(0, options.length)\n }\n\n return sha1\n}\n"]}
@@ -4,6 +4,6 @@ exports.escapeRegExp = void 0;
4
4
  // Escape special characters in regular expressions
5
5
  // Per https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping
6
6
  const ESCAPE_REGEXP = /[.*+\-?^${}()|[\]\\]/g;
7
- const escapeRegExp = (s) => s.replace(ESCAPE_REGEXP, "\\$&");
7
+ const escapeRegExp = (s) => s.replaceAll(ESCAPE_REGEXP, "\\$&");
8
8
  exports.escapeRegExp = escapeRegExp;
9
9
  //# sourceMappingURL=escapeRegExp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"escapeRegExp.js","sourceRoot":"","sources":["../../../src/util/escapeRegExp.ts"],"names":[],"mappings":";;;AAAA,mDAAmD;AACnD,iGAAiG;AACjG,MAAM,aAAa,GAAG,uBAAuB,CAAA;AACtC,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;AAA9D,QAAA,YAAY,gBAAkD","sourcesContent":["// Escape special characters in regular expressions\n// Per https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping\nconst ESCAPE_REGEXP = /[.*+\\-?^${}()|[\\]\\\\]/g\nexport const escapeRegExp = (s: string) => s.replace(ESCAPE_REGEXP, \"\\\\$&\")\n"]}
1
+ {"version":3,"file":"escapeRegExp.js","sourceRoot":"","sources":["../../../src/util/escapeRegExp.ts"],"names":[],"mappings":";;;AAAA,mDAAmD;AACnD,iGAAiG;AACjG,MAAM,aAAa,GAAG,uBAAuB,CAAA;AACtC,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;AAAjE,QAAA,YAAY,gBAAqD","sourcesContent":["// Escape special characters in regular expressions\n// Per https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping\nconst ESCAPE_REGEXP = /[.*+\\-?^${}()|[\\]\\\\]/g\nexport const escapeRegExp = (s: string) => s.replaceAll(ESCAPE_REGEXP, \"\\\\$&\")\n"]}
@@ -1,21 +0,0 @@
1
- import type { NamingStrategyInterface } from "./NamingStrategyInterface";
2
- import { DefaultNamingStrategy } from "./DefaultNamingStrategy";
3
- /**
4
- * Shorten strategy
5
- */
6
- export type ShortenStrategy = "truncate" | "hash";
7
- /**
8
- * Naming strategy for legacy Oracle database with 30 bytes identifier limit.
9
- *
10
- * Currently, only column name must be shorten in order to avoid ORA-00972.
11
- * Issues with other identifiers were fixed.
12
- */
13
- export declare class LegacyOracleNamingStrategy extends DefaultNamingStrategy implements NamingStrategyInterface {
14
- readonly IDENTIFIER_MAX_SIZE = 30;
15
- readonly DEFAULT_COLUMN_PREFIX = "COL_";
16
- protected shortenStrategy: ShortenStrategy;
17
- constructor(shortenStrategy?: ShortenStrategy);
18
- columnName(propertyName: string, customName: string, embeddedPrefixes: string[]): string;
19
- protected hashIdentifier(input: string, prefix: string): string;
20
- protected truncateIdentifier(input: string): string;
21
- }
@@ -1,49 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LegacyOracleNamingStrategy = void 0;
4
- const RandomGenerator_1 = require("../util/RandomGenerator");
5
- const DefaultNamingStrategy_1 = require("./DefaultNamingStrategy");
6
- const error_1 = require("../error");
7
- /**
8
- * Naming strategy for legacy Oracle database with 30 bytes identifier limit.
9
- *
10
- * Currently, only column name must be shorten in order to avoid ORA-00972.
11
- * Issues with other identifiers were fixed.
12
- */
13
- class LegacyOracleNamingStrategy extends DefaultNamingStrategy_1.DefaultNamingStrategy {
14
- constructor(shortenStrategy = "hash") {
15
- super();
16
- this.IDENTIFIER_MAX_SIZE = 30;
17
- this.DEFAULT_COLUMN_PREFIX = "COL_";
18
- this.shortenStrategy = shortenStrategy;
19
- }
20
- columnName(propertyName, customName, embeddedPrefixes) {
21
- const longName = super.columnName(propertyName, customName, embeddedPrefixes);
22
- if (this.shortenStrategy === "truncate") {
23
- return this.truncateIdentifier(longName);
24
- }
25
- else if (this.shortenStrategy === "hash") {
26
- return this.hashIdentifier(longName, this.DEFAULT_COLUMN_PREFIX);
27
- }
28
- else {
29
- throw new error_1.TypeORMError(`Invalid shortenStrategy`);
30
- }
31
- }
32
- hashIdentifier(input, prefix) {
33
- if (prefix.length >= this.IDENTIFIER_MAX_SIZE) {
34
- throw new error_1.TypeORMError(`Prefix must be shorter than IDENTIFIER_MAX_SIZE`);
35
- }
36
- return (prefix +
37
- RandomGenerator_1.RandomGenerator.sha1(input).substring(0, this.IDENTIFIER_MAX_SIZE - prefix.length));
38
- }
39
- truncateIdentifier(input) {
40
- if (input.length > this.IDENTIFIER_MAX_SIZE) {
41
- return input.substring(0, this.IDENTIFIER_MAX_SIZE);
42
- }
43
- else {
44
- return input;
45
- }
46
- }
47
- }
48
- exports.LegacyOracleNamingStrategy = LegacyOracleNamingStrategy;
49
- //# sourceMappingURL=LegacyOracleNamingStrategy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LegacyOracleNamingStrategy.js","sourceRoot":"../build/browser/src/","sources":["naming-strategy/LegacyOracleNamingStrategy.ts"],"names":[],"mappings":";;;AACA,6DAAyD;AACzD,mEAA+D;AAC/D,oCAAuC;AAOvC;;;;;GAKG;AACH,MAAa,0BACT,SAAQ,6CAAqB;IAO7B,YAAY,kBAAmC,MAAM;QACjD,KAAK,EAAE,CAAA;QALK,wBAAmB,GAAG,EAAE,CAAA;QACxB,0BAAqB,GAAG,MAAM,CAAA;QAK1C,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;IAC1C,CAAC;IAED,UAAU,CACN,YAAoB,EACpB,UAAkB,EAClB,gBAA0B;QAE1B,MAAM,QAAQ,GAAW,KAAK,CAAC,UAAU,CACrC,YAAY,EACZ,UAAU,EACV,gBAAgB,CACnB,CAAA;QACD,IAAI,IAAI,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAA;QAC5C,CAAC;aAAM,IAAI,IAAI,CAAC,eAAe,KAAK,MAAM,EAAE,CAAC;YACzC,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAA;QACpE,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,oBAAY,CAAC,yBAAyB,CAAC,CAAA;QACrD,CAAC;IACL,CAAC;IAES,cAAc,CAAC,KAAa,EAAE,MAAc;QAClD,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC5C,MAAM,IAAI,oBAAY,CAClB,iDAAiD,CACpD,CAAA;QACL,CAAC;QACD,OAAO,CACH,MAAM;YACN,iCAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CACjC,CAAC,EACD,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAC3C,CACJ,CAAA;IACL,CAAC;IAES,kBAAkB,CAAC,KAAa;QACtC,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC1C,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAA;QACvD,CAAC;aAAM,CAAC;YACJ,OAAO,KAAK,CAAA;QAChB,CAAC;IACL,CAAC;CACJ;AAtDD,gEAsDC","sourcesContent":["import type { NamingStrategyInterface } from \"./NamingStrategyInterface\"\nimport { RandomGenerator } from \"../util/RandomGenerator\"\nimport { DefaultNamingStrategy } from \"./DefaultNamingStrategy\"\nimport { TypeORMError } from \"../error\"\n\n/**\n * Shorten strategy\n */\nexport type ShortenStrategy = \"truncate\" | \"hash\"\n\n/**\n * Naming strategy for legacy Oracle database with 30 bytes identifier limit.\n *\n * Currently, only column name must be shorten in order to avoid ORA-00972.\n * Issues with other identifiers were fixed.\n */\nexport class LegacyOracleNamingStrategy\n extends DefaultNamingStrategy\n implements NamingStrategyInterface\n{\n public readonly IDENTIFIER_MAX_SIZE = 30\n public readonly DEFAULT_COLUMN_PREFIX = \"COL_\"\n protected shortenStrategy: ShortenStrategy\n\n constructor(shortenStrategy: ShortenStrategy = \"hash\") {\n super()\n this.shortenStrategy = shortenStrategy\n }\n\n columnName(\n propertyName: string,\n customName: string,\n embeddedPrefixes: string[],\n ): string {\n const longName: string = super.columnName(\n propertyName,\n customName,\n embeddedPrefixes,\n )\n if (this.shortenStrategy === \"truncate\") {\n return this.truncateIdentifier(longName)\n } else if (this.shortenStrategy === \"hash\") {\n return this.hashIdentifier(longName, this.DEFAULT_COLUMN_PREFIX)\n } else {\n throw new TypeORMError(`Invalid shortenStrategy`)\n }\n }\n\n protected hashIdentifier(input: string, prefix: string): string {\n if (prefix.length >= this.IDENTIFIER_MAX_SIZE) {\n throw new TypeORMError(\n `Prefix must be shorter than IDENTIFIER_MAX_SIZE`,\n )\n }\n return (\n prefix +\n RandomGenerator.sha1(input).substring(\n 0,\n this.IDENTIFIER_MAX_SIZE - prefix.length,\n )\n )\n }\n\n protected truncateIdentifier(input: string): string {\n if (input.length > this.IDENTIFIER_MAX_SIZE) {\n return input.substring(0, this.IDENTIFIER_MAX_SIZE)\n } else {\n return input\n }\n }\n}\n"]}
@@ -1,21 +0,0 @@
1
- import type { NamingStrategyInterface } from "./NamingStrategyInterface";
2
- import { DefaultNamingStrategy } from "./DefaultNamingStrategy";
3
- /**
4
- * Shorten strategy
5
- */
6
- export type ShortenStrategy = "truncate" | "hash";
7
- /**
8
- * Naming strategy for legacy Oracle database with 30 bytes identifier limit.
9
- *
10
- * Currently, only column name must be shorten in order to avoid ORA-00972.
11
- * Issues with other identifiers were fixed.
12
- */
13
- export declare class LegacyOracleNamingStrategy extends DefaultNamingStrategy implements NamingStrategyInterface {
14
- readonly IDENTIFIER_MAX_SIZE = 30;
15
- readonly DEFAULT_COLUMN_PREFIX = "COL_";
16
- protected shortenStrategy: ShortenStrategy;
17
- constructor(shortenStrategy?: ShortenStrategy);
18
- columnName(propertyName: string, customName: string, embeddedPrefixes: string[]): string;
19
- protected hashIdentifier(input: string, prefix: string): string;
20
- protected truncateIdentifier(input: string): string;
21
- }
@@ -1,49 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LegacyOracleNamingStrategy = void 0;
4
- const RandomGenerator_1 = require("../util/RandomGenerator");
5
- const DefaultNamingStrategy_1 = require("./DefaultNamingStrategy");
6
- const error_1 = require("../error");
7
- /**
8
- * Naming strategy for legacy Oracle database with 30 bytes identifier limit.
9
- *
10
- * Currently, only column name must be shorten in order to avoid ORA-00972.
11
- * Issues with other identifiers were fixed.
12
- */
13
- class LegacyOracleNamingStrategy extends DefaultNamingStrategy_1.DefaultNamingStrategy {
14
- constructor(shortenStrategy = "hash") {
15
- super();
16
- this.IDENTIFIER_MAX_SIZE = 30;
17
- this.DEFAULT_COLUMN_PREFIX = "COL_";
18
- this.shortenStrategy = shortenStrategy;
19
- }
20
- columnName(propertyName, customName, embeddedPrefixes) {
21
- const longName = super.columnName(propertyName, customName, embeddedPrefixes);
22
- if (this.shortenStrategy === "truncate") {
23
- return this.truncateIdentifier(longName);
24
- }
25
- else if (this.shortenStrategy === "hash") {
26
- return this.hashIdentifier(longName, this.DEFAULT_COLUMN_PREFIX);
27
- }
28
- else {
29
- throw new error_1.TypeORMError(`Invalid shortenStrategy`);
30
- }
31
- }
32
- hashIdentifier(input, prefix) {
33
- if (prefix.length >= this.IDENTIFIER_MAX_SIZE) {
34
- throw new error_1.TypeORMError(`Prefix must be shorter than IDENTIFIER_MAX_SIZE`);
35
- }
36
- return (prefix +
37
- RandomGenerator_1.RandomGenerator.sha1(input).substring(0, this.IDENTIFIER_MAX_SIZE - prefix.length));
38
- }
39
- truncateIdentifier(input) {
40
- if (input.length > this.IDENTIFIER_MAX_SIZE) {
41
- return input.substring(0, this.IDENTIFIER_MAX_SIZE);
42
- }
43
- else {
44
- return input;
45
- }
46
- }
47
- }
48
- exports.LegacyOracleNamingStrategy = LegacyOracleNamingStrategy;
49
- //# sourceMappingURL=LegacyOracleNamingStrategy.js.map