@uql/core 1.0.12 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (464) hide show
  1. package/CHANGELOG.md +254 -0
  2. package/LICENSE.md +2 -2
  3. package/dist/browser/http/bus.d.ts +3 -0
  4. package/dist/browser/http/bus.js +14 -0
  5. package/dist/browser/http/http.d.ts +6 -0
  6. package/dist/browser/http/http.js +45 -0
  7. package/dist/browser/http/index.d.ts +2 -0
  8. package/dist/browser/http/index.js +3 -0
  9. package/dist/browser/index.d.ts +4 -0
  10. package/dist/browser/index.js +5 -0
  11. package/dist/browser/options.d.ts +4 -0
  12. package/dist/browser/options.js +14 -0
  13. package/dist/browser/querier/genericClientRepository.d.ts +17 -0
  14. package/dist/browser/querier/genericClientRepository.js +39 -0
  15. package/dist/browser/querier/httpQuerier.d.ts +20 -0
  16. package/dist/browser/querier/httpQuerier.js +71 -0
  17. package/dist/browser/querier/index.d.ts +3 -0
  18. package/dist/browser/querier/index.js +4 -0
  19. package/dist/browser/querier/querier.util.d.ts +2 -0
  20. package/dist/browser/querier/querier.util.js +17 -0
  21. package/dist/browser/type/clientQuerier.d.ts +16 -0
  22. package/dist/browser/type/clientQuerier.js +2 -0
  23. package/dist/browser/type/clientQuerierPool.d.ts +4 -0
  24. package/dist/browser/type/clientQuerierPool.js +2 -0
  25. package/dist/browser/type/clientRepository.d.ts +13 -0
  26. package/dist/browser/type/clientRepository.js +2 -0
  27. package/dist/browser/type/index.d.ts +4 -0
  28. package/dist/browser/type/index.js +5 -0
  29. package/dist/browser/type/request.d.ts +28 -0
  30. package/dist/browser/type/request.js +2 -0
  31. package/dist/browser/uql-browser.min.js +2150 -0
  32. package/dist/browser/uql-browser.min.js.map +1 -0
  33. package/dist/dialect/abstractDialect.d.ts +16 -0
  34. package/dist/dialect/abstractDialect.js +28 -0
  35. package/dist/dialect/abstractSqlDialect.d.ts +47 -0
  36. package/dist/dialect/abstractSqlDialect.js +650 -0
  37. package/dist/dialect/index.d.ts +3 -0
  38. package/dist/dialect/index.js +4 -0
  39. package/dist/dialect/queryContext.d.ts +48 -0
  40. package/dist/dialect/queryContext.js +65 -0
  41. package/{entity → dist/entity}/decorator/definition.d.ts +3 -3
  42. package/dist/entity/decorator/definition.js +214 -0
  43. package/{entity → dist/entity}/decorator/entity.d.ts +1 -1
  44. package/dist/entity/decorator/entity.js +7 -0
  45. package/{entity → dist/entity}/decorator/field.d.ts +1 -1
  46. package/dist/entity/decorator/field.js +8 -0
  47. package/{entity → dist/entity}/decorator/id.d.ts +1 -1
  48. package/dist/entity/decorator/id.js +8 -0
  49. package/dist/entity/decorator/index.d.ts +5 -0
  50. package/dist/entity/decorator/index.js +6 -0
  51. package/{entity → dist/entity}/decorator/relation.d.ts +1 -1
  52. package/dist/entity/decorator/relation.js +20 -0
  53. package/dist/entity/index.d.ts +1 -0
  54. package/dist/entity/index.js +2 -0
  55. package/dist/express/index.d.ts +2 -0
  56. package/dist/express/index.js +3 -0
  57. package/dist/express/querierMiddleware.d.ts +26 -0
  58. package/dist/express/querierMiddleware.js +190 -0
  59. package/dist/express/query.util.d.ts +2 -0
  60. package/dist/express/query.util.js +19 -0
  61. package/dist/index.d.ts +9 -0
  62. package/dist/index.js +10 -0
  63. package/dist/maria/index.d.ts +3 -0
  64. package/dist/maria/index.js +4 -0
  65. package/dist/maria/mariaDialect.d.ts +8 -0
  66. package/dist/maria/mariaDialect.js +38 -0
  67. package/dist/maria/mariaQuerierPool.test.d.ts +5 -0
  68. package/dist/maria/mariaQuerierPool.test.js +19 -0
  69. package/dist/maria/mariadbQuerier.d.ts +17 -0
  70. package/dist/maria/mariadbQuerier.js +39 -0
  71. package/dist/maria/mariadbQuerier.test.d.ts +4 -0
  72. package/dist/maria/mariadbQuerier.test.js +19 -0
  73. package/dist/maria/mariadbQuerierPool.d.ts +10 -0
  74. package/dist/maria/mariadbQuerierPool.js +17 -0
  75. package/dist/migrate/cli.d.ts +2 -0
  76. package/dist/migrate/cli.js +254 -0
  77. package/dist/migrate/generator/index.d.ts +4 -0
  78. package/dist/migrate/generator/index.js +5 -0
  79. package/dist/migrate/generator/mongoSchemaGenerator.d.ts +12 -0
  80. package/dist/migrate/generator/mongoSchemaGenerator.js +100 -0
  81. package/dist/migrate/generator/mysqlSchemaGenerator.d.ts +14 -0
  82. package/dist/migrate/generator/mysqlSchemaGenerator.js +81 -0
  83. package/dist/migrate/generator/postgresSchemaGenerator.d.ts +18 -0
  84. package/dist/migrate/generator/postgresSchemaGenerator.js +111 -0
  85. package/dist/migrate/generator/sqliteSchemaGenerator.d.ts +14 -0
  86. package/dist/migrate/generator/sqliteSchemaGenerator.js +68 -0
  87. package/dist/migrate/index.d.ts +12 -0
  88. package/dist/migrate/index.js +17 -0
  89. package/dist/migrate/introspection/index.d.ts +4 -0
  90. package/dist/migrate/introspection/index.js +5 -0
  91. package/dist/migrate/introspection/mongoIntrospector.d.ts +8 -0
  92. package/dist/migrate/introspection/mongoIntrospector.js +46 -0
  93. package/dist/migrate/introspection/mysqlIntrospector.d.ts +25 -0
  94. package/dist/migrate/introspection/mysqlIntrospector.js +220 -0
  95. package/dist/migrate/introspection/postgresIntrospector.d.ts +21 -0
  96. package/dist/migrate/introspection/postgresIntrospector.js +269 -0
  97. package/dist/migrate/introspection/sqliteIntrospector.d.ts +23 -0
  98. package/dist/migrate/introspection/sqliteIntrospector.js +212 -0
  99. package/dist/migrate/migrator-mongo.test.d.ts +1 -0
  100. package/dist/migrate/migrator-mongo.test.js +54 -0
  101. package/dist/migrate/migrator.d.ts +133 -0
  102. package/dist/migrate/migrator.js +600 -0
  103. package/dist/migrate/migrator.test.d.ts +1 -0
  104. package/dist/migrate/migrator.test.js +106 -0
  105. package/dist/migrate/schemaGenerator.d.ts +78 -0
  106. package/dist/migrate/schemaGenerator.js +363 -0
  107. package/dist/migrate/storage/databaseStorage.d.ts +24 -0
  108. package/dist/migrate/storage/databaseStorage.js +77 -0
  109. package/dist/migrate/storage/index.d.ts +2 -0
  110. package/dist/migrate/storage/index.js +3 -0
  111. package/dist/migrate/storage/jsonStorage.d.ts +15 -0
  112. package/dist/migrate/storage/jsonStorage.js +51 -0
  113. package/dist/migrate/type.d.ts +1 -0
  114. package/dist/migrate/type.js +2 -0
  115. package/dist/mongo/index.d.ts +3 -0
  116. package/dist/mongo/index.js +4 -0
  117. package/dist/mongo/mongoDialect.d.ts +34 -0
  118. package/dist/mongo/mongoDialect.js +163 -0
  119. package/dist/mongo/mongodbQuerier.d.ts +28 -0
  120. package/dist/mongo/mongodbQuerier.js +204 -0
  121. package/dist/mongo/mongodbQuerier.test.d.ts +1 -0
  122. package/dist/mongo/mongodbQuerier.test.js +36 -0
  123. package/dist/mongo/mongodbQuerierPool.d.ts +10 -0
  124. package/dist/mongo/mongodbQuerierPool.js +20 -0
  125. package/dist/mongo/mongodbQuerierPool.test.d.ts +1 -0
  126. package/dist/mongo/mongodbQuerierPool.test.js +21 -0
  127. package/dist/mysql/index.d.ts +3 -0
  128. package/dist/mysql/index.js +4 -0
  129. package/dist/mysql/mysql2Querier.d.ts +17 -0
  130. package/dist/mysql/mysql2Querier.js +43 -0
  131. package/dist/mysql/mysql2Querier.test.d.ts +4 -0
  132. package/dist/mysql/mysql2Querier.test.js +16 -0
  133. package/dist/mysql/mysql2QuerierPool.d.ts +10 -0
  134. package/dist/mysql/mysql2QuerierPool.js +17 -0
  135. package/dist/mysql/mysql2QuerierPool.test.d.ts +5 -0
  136. package/dist/mysql/mysql2QuerierPool.test.js +16 -0
  137. package/dist/mysql/mysqlDialect.d.ts +5 -0
  138. package/dist/mysql/mysqlDialect.js +15 -0
  139. package/dist/namingStrategy/defaultNamingStrategy.d.ts +9 -0
  140. package/dist/namingStrategy/defaultNamingStrategy.js +15 -0
  141. package/dist/namingStrategy/index.d.ts +2 -0
  142. package/dist/namingStrategy/index.js +3 -0
  143. package/dist/namingStrategy/snakeCaseNamingStrategy.d.ts +8 -0
  144. package/dist/namingStrategy/snakeCaseNamingStrategy.js +14 -0
  145. package/{options.d.ts → dist/options.d.ts} +1 -1
  146. package/dist/options.js +14 -0
  147. package/dist/package.json +131 -0
  148. package/dist/postgres/index.d.ts +3 -0
  149. package/dist/postgres/index.js +4 -0
  150. package/dist/postgres/pgQuerier.d.ts +17 -0
  151. package/dist/postgres/pgQuerier.js +39 -0
  152. package/dist/postgres/pgQuerier.test.d.ts +4 -0
  153. package/dist/postgres/pgQuerier.test.js +20 -0
  154. package/dist/postgres/pgQuerierPool.d.ts +10 -0
  155. package/dist/postgres/pgQuerierPool.js +17 -0
  156. package/dist/postgres/pgQuerierPool.test.d.ts +5 -0
  157. package/dist/postgres/pgQuerierPool.test.js +23 -0
  158. package/dist/postgres/postgresDialect.d.ts +13 -0
  159. package/dist/postgres/postgresDialect.js +110 -0
  160. package/dist/querier/abstractQuerier-test.d.ts +45 -0
  161. package/dist/querier/abstractQuerier-test.js +461 -0
  162. package/dist/querier/abstractQuerier.d.ts +50 -0
  163. package/dist/querier/abstractQuerier.js +278 -0
  164. package/dist/querier/abstractQuerierPool-test.d.ts +9 -0
  165. package/dist/querier/abstractQuerierPool-test.js +18 -0
  166. package/dist/querier/abstractQuerierPool.d.ts +14 -0
  167. package/dist/querier/abstractQuerierPool.js +9 -0
  168. package/dist/querier/abstractSqlQuerier-test.d.ts +9 -0
  169. package/dist/querier/abstractSqlQuerier-test.js +16 -0
  170. package/dist/querier/abstractSqlQuerier.d.ts +28 -0
  171. package/dist/querier/abstractSqlQuerier.js +133 -0
  172. package/dist/querier/decorator/index.d.ts +3 -0
  173. package/dist/querier/decorator/index.js +4 -0
  174. package/dist/querier/decorator/injectQuerier.d.ts +3 -0
  175. package/dist/querier/decorator/injectQuerier.js +33 -0
  176. package/dist/querier/decorator/serialized.d.ts +6 -0
  177. package/dist/querier/decorator/serialized.js +14 -0
  178. package/{querier → dist/querier}/decorator/transactional.d.ts +1 -1
  179. package/dist/querier/decorator/transactional.js +48 -0
  180. package/dist/querier/index.d.ts +4 -0
  181. package/dist/querier/index.js +5 -0
  182. package/dist/repository/genericRepository.d.ts +20 -0
  183. package/dist/repository/genericRepository.js +51 -0
  184. package/dist/repository/index.d.ts +1 -0
  185. package/dist/repository/index.js +2 -0
  186. package/dist/sqlite/index.d.ts +3 -0
  187. package/dist/sqlite/index.js +4 -0
  188. package/dist/sqlite/sqliteDialect.d.ts +10 -0
  189. package/dist/sqlite/sqliteDialect.js +48 -0
  190. package/dist/sqlite/sqliteQuerier.d.ts +15 -0
  191. package/dist/sqlite/sqliteQuerier.js +33 -0
  192. package/dist/sqlite/sqliteQuerier.test.d.ts +5 -0
  193. package/dist/sqlite/sqliteQuerier.test.js +19 -0
  194. package/dist/sqlite/sqliteQuerierPool.d.ts +14 -0
  195. package/dist/sqlite/sqliteQuerierPool.js +34 -0
  196. package/dist/sqlite/sqliteQuerierPool.test.d.ts +5 -0
  197. package/dist/sqlite/sqliteQuerierPool.test.js +10 -0
  198. package/dist/test/entityMock.d.ts +164 -0
  199. package/dist/test/entityMock.js +554 -0
  200. package/dist/test/index.d.ts +3 -0
  201. package/dist/test/index.js +4 -0
  202. package/dist/test/it.util.d.ts +4 -0
  203. package/dist/test/it.util.js +55 -0
  204. package/dist/test/spec.util.d.ts +14 -0
  205. package/dist/test/spec.util.js +50 -0
  206. package/{type → dist/type}/entity.d.ts +97 -4
  207. package/dist/type/entity.js +5 -0
  208. package/dist/type/index.d.ts +9 -0
  209. package/dist/type/index.js +10 -0
  210. package/dist/type/migration.d.ts +213 -0
  211. package/dist/type/migration.js +2 -0
  212. package/dist/type/namingStrategy.d.ts +17 -0
  213. package/dist/type/namingStrategy.js +2 -0
  214. package/dist/type/querier.d.ts +96 -0
  215. package/dist/type/querier.js +11 -0
  216. package/{type → dist/type}/querierPool.d.ts +7 -3
  217. package/dist/type/querierPool.js +2 -0
  218. package/{type → dist/type}/query.d.ts +170 -108
  219. package/dist/type/query.js +9 -0
  220. package/{type → dist/type}/repository.d.ts +42 -35
  221. package/dist/type/repository.js +2 -0
  222. package/{type → dist/type}/universalQuerier.d.ts +50 -28
  223. package/dist/type/universalQuerier.js +2 -0
  224. package/dist/type/utility.d.ts +13 -0
  225. package/dist/type/utility.js +2 -0
  226. package/dist/util/dialect.util.d.ts +12 -0
  227. package/dist/util/dialect.util.js +93 -0
  228. package/dist/util/index.d.ts +5 -0
  229. package/dist/util/index.js +6 -0
  230. package/dist/util/object.util.d.ts +7 -0
  231. package/dist/util/object.util.js +19 -0
  232. package/dist/util/raw.d.ts +8 -0
  233. package/dist/util/raw.js +11 -0
  234. package/dist/util/sql.util.d.ts +13 -0
  235. package/dist/util/sql.util.js +78 -0
  236. package/{util → dist/util}/string.util.d.ts +1 -0
  237. package/dist/util/string.util.js +34 -0
  238. package/package.json +85 -17
  239. package/src/@types/index.d.ts +1 -0
  240. package/src/@types/jest.d.ts +6 -0
  241. package/src/browser/http/bus.spec.ts +22 -0
  242. package/src/browser/http/bus.ts +17 -0
  243. package/src/browser/http/http.spec.ts +70 -0
  244. package/src/browser/http/http.ts +55 -0
  245. package/src/browser/http/index.ts +2 -0
  246. package/src/browser/index.ts +4 -0
  247. package/src/browser/options.spec.ts +37 -0
  248. package/src/browser/options.ts +18 -0
  249. package/src/browser/querier/genericClientRepository.spec.ts +105 -0
  250. package/src/browser/querier/genericClientRepository.ts +49 -0
  251. package/src/browser/querier/httpQuerier.ts +82 -0
  252. package/src/browser/querier/index.ts +3 -0
  253. package/src/browser/querier/querier.util.spec.ts +35 -0
  254. package/src/browser/querier/querier.util.ts +18 -0
  255. package/src/browser/type/clientQuerier.ts +45 -0
  256. package/src/browser/type/clientQuerierPool.ts +5 -0
  257. package/src/browser/type/clientRepository.ts +22 -0
  258. package/src/browser/type/index.ts +4 -0
  259. package/src/browser/type/request.ts +25 -0
  260. package/src/dialect/abstractDialect.ts +28 -0
  261. package/src/dialect/abstractSqlDialect-spec.ts +1309 -0
  262. package/src/dialect/abstractSqlDialect.ts +805 -0
  263. package/src/dialect/index.ts +3 -0
  264. package/src/dialect/namingStrategy.spec.ts +52 -0
  265. package/src/dialect/queryContext.ts +69 -0
  266. package/src/entity/decorator/definition.spec.ts +736 -0
  267. package/src/entity/decorator/definition.ts +265 -0
  268. package/src/entity/decorator/entity.ts +8 -0
  269. package/src/entity/decorator/field.ts +9 -0
  270. package/src/entity/decorator/id.ts +9 -0
  271. package/src/entity/decorator/index.ts +5 -0
  272. package/src/entity/decorator/relation.spec.ts +41 -0
  273. package/src/entity/decorator/relation.ts +34 -0
  274. package/src/entity/index.ts +1 -0
  275. package/src/express/@types/express.d.ts +8 -0
  276. package/src/express/@types/index.d.ts +1 -0
  277. package/src/express/index.ts +2 -0
  278. package/src/express/querierMiddleware.ts +217 -0
  279. package/src/express/query.util.spec.ts +40 -0
  280. package/src/express/query.util.ts +21 -0
  281. package/src/index.ts +9 -0
  282. package/src/maria/index.ts +3 -0
  283. package/src/maria/mariaDialect.spec.ts +207 -0
  284. package/src/maria/mariaDialect.ts +42 -0
  285. package/src/maria/mariaQuerierPool.test.ts +23 -0
  286. package/src/maria/mariadbQuerier.test.ts +23 -0
  287. package/src/maria/mariadbQuerier.ts +45 -0
  288. package/src/maria/mariadbQuerierPool.ts +21 -0
  289. package/src/migrate/cli.ts +301 -0
  290. package/src/migrate/generator/index.ts +4 -0
  291. package/src/migrate/generator/mongoSchemaGenerator.spec.ts +112 -0
  292. package/src/migrate/generator/mongoSchemaGenerator.ts +115 -0
  293. package/src/migrate/generator/mysqlSchemaGenerator.spec.ts +34 -0
  294. package/src/migrate/generator/mysqlSchemaGenerator.ts +92 -0
  295. package/src/migrate/generator/postgresSchemaGenerator.spec.ts +44 -0
  296. package/src/migrate/generator/postgresSchemaGenerator.ts +127 -0
  297. package/src/migrate/generator/sqliteSchemaGenerator.spec.ts +33 -0
  298. package/src/migrate/generator/sqliteSchemaGenerator.ts +81 -0
  299. package/src/migrate/index.ts +41 -0
  300. package/src/migrate/introspection/index.ts +4 -0
  301. package/src/migrate/introspection/mongoIntrospector.spec.ts +75 -0
  302. package/src/migrate/introspection/mongoIntrospector.ts +47 -0
  303. package/src/migrate/introspection/mysqlIntrospector.spec.ts +113 -0
  304. package/src/migrate/introspection/mysqlIntrospector.ts +278 -0
  305. package/src/migrate/introspection/postgresIntrospector.spec.ts +112 -0
  306. package/src/migrate/introspection/postgresIntrospector.ts +329 -0
  307. package/src/migrate/introspection/sqliteIntrospector.spec.ts +112 -0
  308. package/src/migrate/introspection/sqliteIntrospector.ts +296 -0
  309. package/src/migrate/migrator-mongo.test.ts +54 -0
  310. package/src/migrate/migrator.spec.ts +255 -0
  311. package/src/migrate/migrator.test.ts +94 -0
  312. package/src/migrate/migrator.ts +719 -0
  313. package/src/migrate/namingStrategy.spec.ts +22 -0
  314. package/src/migrate/schemaGenerator-advanced.spec.ts +138 -0
  315. package/src/migrate/schemaGenerator.spec.ts +190 -0
  316. package/src/migrate/schemaGenerator.ts +478 -0
  317. package/src/migrate/storage/databaseStorage.spec.ts +69 -0
  318. package/src/migrate/storage/databaseStorage.ts +100 -0
  319. package/src/migrate/storage/index.ts +2 -0
  320. package/src/migrate/storage/jsonStorage.ts +58 -0
  321. package/src/migrate/type.ts +1 -0
  322. package/src/mongo/index.ts +3 -0
  323. package/src/mongo/mongoDialect.spec.ts +251 -0
  324. package/src/mongo/mongoDialect.ts +238 -0
  325. package/src/mongo/mongodbQuerier.test.ts +45 -0
  326. package/src/mongo/mongodbQuerier.ts +256 -0
  327. package/src/mongo/mongodbQuerierPool.test.ts +25 -0
  328. package/src/mongo/mongodbQuerierPool.ts +24 -0
  329. package/src/mysql/index.ts +3 -0
  330. package/src/mysql/mysql2Querier.test.ts +20 -0
  331. package/src/mysql/mysql2Querier.ts +49 -0
  332. package/src/mysql/mysql2QuerierPool.test.ts +20 -0
  333. package/src/mysql/mysql2QuerierPool.ts +21 -0
  334. package/src/mysql/mysqlDialect.spec.ts +20 -0
  335. package/src/mysql/mysqlDialect.ts +16 -0
  336. package/src/namingStrategy/defaultNamingStrategy.ts +18 -0
  337. package/src/namingStrategy/index.spec.ts +36 -0
  338. package/src/namingStrategy/index.ts +2 -0
  339. package/src/namingStrategy/snakeCaseNamingStrategy.ts +15 -0
  340. package/src/options.spec.ts +41 -0
  341. package/src/options.ts +18 -0
  342. package/src/postgres/index.ts +3 -0
  343. package/src/postgres/manual-types.d.ts +4 -0
  344. package/src/postgres/pgQuerier.test.ts +25 -0
  345. package/src/postgres/pgQuerier.ts +45 -0
  346. package/src/postgres/pgQuerierPool.test.ts +28 -0
  347. package/src/postgres/pgQuerierPool.ts +21 -0
  348. package/src/postgres/postgresDialect.spec.ts +428 -0
  349. package/src/postgres/postgresDialect.ts +144 -0
  350. package/src/querier/abstractQuerier-test.ts +584 -0
  351. package/src/querier/abstractQuerier.ts +353 -0
  352. package/src/querier/abstractQuerierPool-test.ts +20 -0
  353. package/src/querier/abstractQuerierPool.ts +18 -0
  354. package/src/querier/abstractSqlQuerier-spec.ts +979 -0
  355. package/src/querier/abstractSqlQuerier-test.ts +21 -0
  356. package/src/querier/abstractSqlQuerier.ts +138 -0
  357. package/src/querier/decorator/index.ts +3 -0
  358. package/src/querier/decorator/injectQuerier.spec.ts +74 -0
  359. package/src/querier/decorator/injectQuerier.ts +45 -0
  360. package/src/querier/decorator/serialized.spec.ts +98 -0
  361. package/src/querier/decorator/serialized.ts +13 -0
  362. package/src/querier/decorator/transactional.spec.ts +240 -0
  363. package/src/querier/decorator/transactional.ts +56 -0
  364. package/src/querier/index.ts +4 -0
  365. package/src/repository/genericRepository.spec.ts +111 -0
  366. package/src/repository/genericRepository.ts +74 -0
  367. package/src/repository/index.ts +1 -0
  368. package/src/sqlite/index.ts +3 -0
  369. package/src/sqlite/manual-types.d.ts +4 -0
  370. package/src/sqlite/sqliteDialect.spec.ts +155 -0
  371. package/src/sqlite/sqliteDialect.ts +76 -0
  372. package/src/sqlite/sqliteQuerier.spec.ts +36 -0
  373. package/src/sqlite/sqliteQuerier.test.ts +21 -0
  374. package/src/sqlite/sqliteQuerier.ts +37 -0
  375. package/src/sqlite/sqliteQuerierPool.test.ts +12 -0
  376. package/src/sqlite/sqliteQuerierPool.ts +38 -0
  377. package/src/test/entityMock.ts +375 -0
  378. package/src/test/index.ts +3 -0
  379. package/src/test/it.util.ts +69 -0
  380. package/src/test/spec.util.ts +57 -0
  381. package/src/type/entity.ts +218 -0
  382. package/src/type/index.ts +9 -0
  383. package/src/type/migration.ts +241 -0
  384. package/src/type/namingStrategy.ts +17 -0
  385. package/src/type/querier.ts +143 -0
  386. package/src/type/querierPool.ts +26 -0
  387. package/src/type/query.ts +506 -0
  388. package/src/type/repository.ts +142 -0
  389. package/src/type/universalQuerier.ts +133 -0
  390. package/src/type/utility.ts +21 -0
  391. package/src/util/dialect.util-extra.spec.ts +96 -0
  392. package/src/util/dialect.util.spec.ts +23 -0
  393. package/src/util/dialect.util.ts +134 -0
  394. package/src/util/index.ts +5 -0
  395. package/src/util/object.util.spec.ts +29 -0
  396. package/src/util/object.util.ts +27 -0
  397. package/src/util/raw.ts +11 -0
  398. package/src/util/sql.util-extra.spec.ts +17 -0
  399. package/src/util/sql.util.spec.ts +208 -0
  400. package/src/util/sql.util.ts +104 -0
  401. package/src/util/string.util.spec.ts +46 -0
  402. package/src/util/string.util.ts +35 -0
  403. package/tsconfig.build.json +5 -0
  404. package/tsconfig.json +8 -0
  405. package/README.md +0 -177
  406. package/dialect/abstractSqlDialect.d.ts +0 -30
  407. package/dialect/abstractSqlDialect.js +0 -365
  408. package/dialect/index.d.ts +0 -4
  409. package/dialect/index.js +0 -8
  410. package/dialect/mysqlDialect.d.ts +0 -6
  411. package/dialect/mysqlDialect.js +0 -21
  412. package/dialect/postgresDialect.d.ts +0 -8
  413. package/dialect/postgresDialect.js +0 -44
  414. package/dialect/sqliteDialect.d.ts +0 -4
  415. package/dialect/sqliteDialect.js +0 -11
  416. package/entity/decorator/definition.js +0 -223
  417. package/entity/decorator/entity.js +0 -11
  418. package/entity/decorator/field.js +0 -12
  419. package/entity/decorator/id.js +0 -12
  420. package/entity/decorator/index.d.ts +0 -5
  421. package/entity/decorator/index.js +0 -12
  422. package/entity/decorator/relation.js +0 -27
  423. package/entity/index.d.ts +0 -1
  424. package/entity/index.js +0 -5
  425. package/index.d.ts +0 -1
  426. package/index.js +0 -5
  427. package/options.js +0 -20
  428. package/querier/abstractQuerier.d.ts +0 -30
  429. package/querier/abstractQuerier.js +0 -230
  430. package/querier/abstractSqlQuerier.d.ts +0 -27
  431. package/querier/abstractSqlQuerier.js +0 -88
  432. package/querier/decorator/index.d.ts +0 -2
  433. package/querier/decorator/index.js +0 -6
  434. package/querier/decorator/injectQuerier.d.ts +0 -3
  435. package/querier/decorator/injectQuerier.js +0 -39
  436. package/querier/decorator/transactional.js +0 -52
  437. package/querier/index.d.ts +0 -3
  438. package/querier/index.js +0 -7
  439. package/repository/genericRepository.d.ts +0 -19
  440. package/repository/genericRepository.js +0 -52
  441. package/repository/index.d.ts +0 -1
  442. package/repository/index.js +0 -5
  443. package/type/entity.js +0 -5
  444. package/type/index.d.ts +0 -7
  445. package/type/index.js +0 -11
  446. package/type/querier.d.ts +0 -53
  447. package/type/querier.js +0 -3
  448. package/type/querierPool.js +0 -3
  449. package/type/query.js +0 -13
  450. package/type/repository.js +0 -3
  451. package/type/universalQuerier.js +0 -3
  452. package/type/utility.d.ts +0 -12
  453. package/type/utility.js +0 -3
  454. package/util/dialect.util.d.ts +0 -17
  455. package/util/dialect.util.js +0 -114
  456. package/util/index.d.ts +0 -5
  457. package/util/index.js +0 -9
  458. package/util/object.util.d.ts +0 -3
  459. package/util/object.util.js +0 -22
  460. package/util/raw.d.ts +0 -2
  461. package/util/raw.js +0 -9
  462. package/util/sql.util.d.ts +0 -2
  463. package/util/sql.util.js +0 -55
  464. package/util/string.util.js +0 -20
@@ -1,223 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isValidEntityType = exports.getMeta = exports.getEntities = exports.defineEntity = exports.defineRelation = exports.defineId = exports.defineField = void 0;
4
- require("reflect-metadata");
5
- const util_1 = require("../../util");
6
- const holder = globalThis;
7
- const metaKey = '@uql/core/entity/decorator';
8
- const metas = holder[metaKey] ?? new Map();
9
- holder[metaKey] = metas;
10
- function defineField(entity, key, opts = {}) {
11
- const meta = ensureMeta(entity);
12
- if (!opts.type) {
13
- const type = inferType(entity, key);
14
- opts = { ...opts, type };
15
- }
16
- meta.fields[key] = { ...meta.fields[key], ...{ name: key, ...opts } };
17
- return meta;
18
- }
19
- exports.defineField = defineField;
20
- function defineId(entity, key, opts) {
21
- const meta = ensureMeta(entity);
22
- const id = getIdKey(meta);
23
- if (id) {
24
- throw TypeError(`'${entity.name}' must have a single field decorated with @Id`);
25
- }
26
- return defineField(entity, key, { ...opts, isId: true });
27
- }
28
- exports.defineId = defineId;
29
- function defineRelation(entity, key, opts) {
30
- if (!opts.entity) {
31
- const inferredType = inferEntityType(entity, key);
32
- opts.entity = () => inferredType;
33
- }
34
- const meta = ensureMeta(entity);
35
- meta.relations[key] = { ...meta.relations[key], ...opts };
36
- return meta;
37
- }
38
- exports.defineRelation = defineRelation;
39
- function defineEntity(entity, opts = {}) {
40
- const meta = ensureMeta(entity);
41
- if (!(0, util_1.hasKeys)(meta.fields)) {
42
- throw TypeError(`'${entity.name}' must have fields`);
43
- }
44
- const onDeleteKeys = (0, util_1.getKeys)(meta.fields).filter((key) => meta.fields[key].onDelete);
45
- if (onDeleteKeys.length > 1) {
46
- throw TypeError(`'${entity.name}' must have one field with 'onDelete' as maximum`);
47
- }
48
- if (opts.softDelete) {
49
- if (!onDeleteKeys.length) {
50
- throw TypeError(`'${entity.name}' must have one field with 'onDelete' to enable 'softDelete'`);
51
- }
52
- meta.softDelete = onDeleteKeys[0];
53
- }
54
- meta.name = opts.name ?? entity.name;
55
- let proto = Object.getPrototypeOf(entity.prototype);
56
- while (proto.constructor !== Object) {
57
- const parentMeta = ensureMeta(proto.constructor);
58
- extendMeta(meta, parentMeta);
59
- proto = Object.getPrototypeOf(proto);
60
- }
61
- const id = getIdKey(meta);
62
- if (!id) {
63
- throw TypeError(`'${entity.name}' must have one field decorated with @Id`);
64
- }
65
- meta.id = id;
66
- return meta;
67
- }
68
- exports.defineEntity = defineEntity;
69
- function getEntities() {
70
- return [...metas.entries()].reduce((acc, [key, val]) => {
71
- if (val.id) {
72
- acc.push(key);
73
- }
74
- return acc;
75
- }, []);
76
- }
77
- exports.getEntities = getEntities;
78
- function ensureMeta(entity) {
79
- let meta = metas.get(entity);
80
- if (meta) {
81
- return meta;
82
- }
83
- meta = { entity, fields: {}, relations: {} };
84
- metas.set(entity, meta);
85
- return meta;
86
- }
87
- function getMeta(entity) {
88
- const meta = metas.get(entity);
89
- if (!meta) {
90
- throw TypeError(`'${entity.name}' is not an entity`);
91
- }
92
- if (meta.processed) {
93
- return meta;
94
- }
95
- meta.processed = true;
96
- return fillRelations(meta);
97
- }
98
- exports.getMeta = getMeta;
99
- function fillRelations(meta) {
100
- for (const relKey in meta.relations) {
101
- const relOpts = meta.relations[relKey];
102
- if (relOpts.references) {
103
- // references were manually specified
104
- continue;
105
- }
106
- if (relOpts.mappedBy) {
107
- fillInverseSideRelations(relOpts);
108
- continue;
109
- }
110
- const relEntity = relOpts.entity();
111
- const relMeta = ensureMeta(relEntity);
112
- if (relOpts.cardinality === 'mm') {
113
- const idName = meta.fields[meta.id].name;
114
- const relIdName = relMeta.fields[relMeta.id].name;
115
- const source = (0, util_1.lowerFirst)(meta.name) + (0, util_1.upperFirst)(idName);
116
- const target = (0, util_1.lowerFirst)(relMeta.name) + (0, util_1.upperFirst)(relIdName);
117
- relOpts.references = [
118
- { local: source, foreign: meta.id },
119
- { local: target, foreign: relMeta.id },
120
- ];
121
- }
122
- else {
123
- relOpts.references = [{ local: `${relKey}Id`, foreign: relMeta.id }];
124
- }
125
- if (relOpts.through) {
126
- fillThroughRelations(relOpts.through());
127
- }
128
- }
129
- return meta;
130
- }
131
- function fillInverseSideRelations(relOpts) {
132
- const relEntity = relOpts.entity();
133
- const relMeta = getMeta(relEntity);
134
- relOpts.mappedBy = getMappedByRelationKey(relOpts);
135
- if (relMeta.fields[relOpts.mappedBy]) {
136
- relOpts.references = [{ local: relMeta.id, foreign: relOpts.mappedBy }];
137
- return;
138
- }
139
- const mappedByRelation = relMeta.relations[relOpts.mappedBy];
140
- if (relOpts.cardinality === 'm1' || relOpts.cardinality === 'mm') {
141
- relOpts.references = mappedByRelation.references.slice().reverse();
142
- relOpts.through = mappedByRelation.through;
143
- return;
144
- }
145
- relOpts.references = mappedByRelation.references.map(({ local, foreign }) => ({
146
- local: foreign,
147
- foreign: local,
148
- }));
149
- }
150
- function fillThroughRelations(entity) {
151
- const meta = ensureMeta(entity);
152
- meta.relations = (0, util_1.getKeys)(meta.fields).reduce((relations, key) => {
153
- const { reference } = meta.fields[key];
154
- if (reference) {
155
- const relEntity = reference();
156
- const relMeta = ensureMeta(relEntity);
157
- const relKey = key.slice(0, -relMeta.id.length);
158
- const relOpts = {
159
- entity: reference,
160
- cardinality: 'm1',
161
- references: [{ local: key, foreign: relMeta.id }],
162
- };
163
- relations[relKey] = relOpts;
164
- }
165
- return relations;
166
- }, {});
167
- }
168
- function getMappedByRelationKey(relOpts) {
169
- if (typeof relOpts.mappedBy === 'function') {
170
- const relEntity = relOpts.entity();
171
- const relMeta = ensureMeta(relEntity);
172
- const keyMap = getRelationKeyMap(relMeta);
173
- return relOpts.mappedBy(keyMap);
174
- }
175
- return relOpts.mappedBy;
176
- }
177
- function getRelationKeyMap(meta) {
178
- return (0, util_1.getKeys)(meta.fields)
179
- .concat((0, util_1.getKeys)(meta.relations))
180
- .reduce((acc, key) => {
181
- acc[key] = key;
182
- return acc;
183
- }, {});
184
- }
185
- function getIdKey(meta) {
186
- const id = (0, util_1.getKeys)(meta.fields).find((key) => meta.fields[key]?.isId);
187
- return id;
188
- }
189
- function extendMeta(target, source) {
190
- const sourceFields = { ...source.fields };
191
- const targetId = getIdKey(target);
192
- if (targetId) {
193
- const sourceId = getIdKey(source);
194
- if (sourceId) {
195
- delete sourceFields[sourceId];
196
- }
197
- }
198
- target.fields = { ...sourceFields, ...target.fields };
199
- target.relations = { ...source.relations, ...target.relations };
200
- }
201
- function inferType(entity, key) {
202
- return Reflect.getMetadata('design:type', entity.prototype, key);
203
- }
204
- function inferEntityType(entity, key) {
205
- const inferredType = inferType(entity, key);
206
- const isValidType = isValidEntityType(inferredType);
207
- if (!isValidType) {
208
- throw TypeError(`'${entity.name}.${key}' type was auto-inferred with invalid type '${inferredType?.name}'`);
209
- }
210
- return inferredType;
211
- }
212
- function isValidEntityType(type) {
213
- return (typeof type === 'function' &&
214
- type !== Boolean &&
215
- type !== String &&
216
- type !== Number &&
217
- type !== BigInt &&
218
- type !== Date &&
219
- type !== Symbol &&
220
- type !== Object);
221
- }
222
- exports.isValidEntityType = isValidEntityType;
223
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5pdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbnRpdHkvZGVjb3JhdG9yL2RlZmluaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNEJBQTBCO0FBRTFCLHFDQUFzRTtBQUV0RSxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUM7QUFDMUIsTUFBTSxPQUFPLEdBQUcsNEJBQTRCLENBQUM7QUFDN0MsTUFBTSxLQUFLLEdBQW9DLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQzVFLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUM7QUFFeEIsU0FBZ0IsV0FBVyxDQUFJLE1BQWUsRUFBRSxHQUFXLEVBQUUsT0FBcUIsRUFBRTtJQUNsRixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7UUFDZCxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO0tBQzFCO0lBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLENBQUM7SUFDdEUsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBUkQsa0NBUUM7QUFFRCxTQUFnQixRQUFRLENBQUksTUFBZSxFQUFFLEdBQVcsRUFBRSxJQUFrQjtJQUMxRSxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEMsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFD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dGVudCI6WyJpbXBvcnQgJ3JlZmxlY3QtbWV0YWRhdGEnO1xuaW1wb3J0IHsgUmVsYXRpb25PcHRpb25zLCBGaWVsZE9wdGlvbnMsIEVudGl0eU9wdGlvbnMsIEVudGl0eU1ldGEsIFR5cGUsIFJlbGF0aW9uS2V5TWFwLCBSZWxhdGlvbktleSwgS2V5LCBGaWVsZEtleSwgSWRLZXkgfSBmcm9tICcuLi8uLi90eXBlJztcbmltcG9ydCB7IGhhc0tleXMsIGxvd2VyRmlyc3QsIGdldEtleXMsIHVwcGVyRmlyc3QgfSBmcm9tICcuLi8uLi91dGlsJztcblxuY29uc3QgaG9sZGVyID0gZ2xvYmFsVGhpcztcbmNvbnN0IG1ldGFLZXkgPSAnQHVxbC9jb3JlL2VudGl0eS9kZWNvcmF0b3InO1xuY29uc3QgbWV0YXM6IE1hcDxUeXBlPGFueT4sIEVudGl0eU1ldGE8YW55Pj4gPSBob2xkZXJbbWV0YUtleV0gPz8gbmV3IE1hcCgpO1xuaG9sZGVyW21ldGFLZXldID0gbWV0YXM7XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVGaWVsZDxFPihlbnRpdHk6IFR5cGU8RT4sIGtleTogc3RyaW5nLCBvcHRzOiBGaWVsZE9wdGlvbnMgPSB7fSk6IEVudGl0eU1ldGE8RT4ge1xuICBjb25zdCBtZXRhID0gZW5zdXJlTWV0YShlbnRpdHkpO1xuICBpZiAoIW9wdHMudHlwZSkge1xuICAgIGNvbnN0IHR5cGUgPSBpbmZlclR5cGUoZW50aXR5LCBrZXkpO1xuICAgIG9wdHMgPSB7IC4uLm9wdHMsIHR5cGUgfTtcbiAgfVxuICBtZXRhLmZpZWxkc1trZXldID0geyAuLi5tZXRhLmZpZWxkc1trZXldLCAuLi57IG5hbWU6IGtleSwgLi4ub3B0cyB9IH07XG4gIHJldHVybiBtZXRhO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lSWQ8RT4oZW50aXR5OiBUeXBlPEU+LCBrZXk6IHN0cmluZywgb3B0czogRmllbGRPcHRpb25zKTogRW50aXR5TWV0YTxFPiB7XG4gIGNvbnN0IG1ldGEgPSBlbnN1cmVNZXRhKGVudGl0eSk7XG4gIGNvbnN0IGlkID0gZ2V0SWRLZXkobWV0YSk7XG4gIGlmIChpZCkge1xuICAgIHRocm93IFR5cGVFcnJvcihgJyR7ZW50aXR5Lm5hbWV9JyBtdXN0IGhhdmUgYSBzaW5nbGUgZmllbGQgZGVjb3JhdGVkIHdpdGggQElkYCk7XG4gIH1cbiAgcmV0dXJuIGRlZmluZUZpZWxkKGVudGl0eSwga2V5LCB7IC4uLm9wdHMsIGlzSWQ6IHRydWUgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVSZWxhdGlvbjxFPihlbnRpdHk6IFR5cGU8RT4sIGtleTogc3RyaW5nLCBvcHRzOiBSZWxhdGlvbk9wdGlvbnM8RT4pOiBFbnRpdHlNZXRhPEU+IHtcbiAgaWYgKCFvcHRzLmVudGl0eSkge1xuICAgIGNvbnN0IGluZmVycmVkVHlwZSA9IGluZmVyRW50aXR5VHlwZShlbnRpdHksIGtleSk7XG4gICAgb3B0cy5lbnRpdHkgPSAoKSA9PiBpbmZlcnJlZFR5cGU7XG4gIH1cbiAgY29uc3QgbWV0YSA9IGVuc3VyZU1ldGEoZW50aXR5KTtcbiAgbWV0YS5yZWxhdGlvbnNba2V5XSA9IHsgLi4ubWV0YS5yZWxhdGlvbnNba2V5XSwgLi4ub3B0cyB9O1xuICByZXR1cm4gbWV0YTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZUVudGl0eTxFPihlbnRpdHk6IFR5cGU8RT4sIG9wdHM6IEVudGl0eU9wdGlvbnMgPSB7fSk6IEVudGl0eU1ldGE8RT4ge1xuICBjb25zdCBtZXRhID0gZW5zdXJlTWV0YShlbnRpdHkpO1xuXG4gIGlmICghaGFzS2V5cyhtZXRhLmZpZWxkcykpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoYCcke2VudGl0eS5uYW1lfScgbXVzdCBoYXZlIGZpZWxkc2ApO1xuICB9XG5cbiAgY29uc3Qgb25EZWxldGVLZXlzID0gZ2V0S2V5cyhtZXRhLmZpZWxkcykuZmlsdGVyKChrZXkpID0+IG1ldGEuZmllbGRzW2tleV0ub25EZWxldGUpIGFzIEZpZWxkS2V5PEU+W107XG5cbiAgaWYgKG9uRGVsZXRlS2V5cy5sZW5ndGggPiAxKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKGAnJHtlbnRpdHkubmFtZX0nIG11c3QgaGF2ZSBvbmUgZmllbGQgd2l0aCAnb25EZWxldGUnIGFzIG1heGltdW1gKTtcbiAgfVxuXG4gIGlmIChvcHRzLnNvZnREZWxldGUpIHtcbiAgICBpZiAoIW9uRGVsZXRlS2V5cy5sZW5ndGgpIHtcbiAgICAgIHRocm93IFR5cGVFcnJvcihgJyR7ZW50aXR5Lm5hbWV9JyBtdXN0IGhhdmUgb25lIGZpZWxkIHdpdGggJ29uRGVsZXRlJyB0byBlbmFibGUgJ3NvZnREZWxldGUnYCk7XG4gICAgfVxuICAgIG1ldGEuc29mdERlbGV0ZSA9IG9uRGVsZXRlS2V5c1swXTtcbiAgfVxuXG4gIG1ldGEubmFtZSA9IG9wdHMubmFtZSA/PyBlbnRpdHkubmFtZTtcbiAgbGV0IHByb3RvOiBGdW5jdGlvbkNvbnN0cnVjdG9yID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGVudGl0eS5wcm90b3R5cGUpO1xuXG4gIHdoaWxlIChwcm90by5jb25zdHJ1Y3RvciAhPT0gT2JqZWN0KSB7XG4gICAgY29uc3QgcGFyZW50TWV0YSA9IGVuc3VyZU1ldGEocHJvdG8uY29uc3RydWN0b3IgYXMgVHlwZTxFPik7XG4gICAgZXh0ZW5kTWV0YShtZXRhLCBwYXJlbnRNZXRhKTtcbiAgICBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm90byk7XG4gIH1cblxuICBjb25zdCBpZCA9IGdldElkS2V5KG1ldGEpO1xuICBpZiAoIWlkKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKGAnJHtlbnRpdHkubmFtZX0nIG11c3QgaGF2ZSBvbmUgZmllbGQgZGVjb3JhdGVkIHdpdGggQElkYCk7XG4gIH1cbiAgbWV0YS5pZCA9IGlkO1xuXG4gIHJldHVybiBtZXRhO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW50aXRpZXMoKTogVHlwZTxhbnk+W10ge1xuICByZXR1cm4gWy4uLm1ldGFzLmVudHJpZXMoKV0ucmVkdWNlKChhY2MsIFtrZXksIHZhbF0pID0+IHtcbiAgICBpZiAodmFsLmlkKSB7XG4gICAgICBhY2MucHVzaChrZXkpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG59XG5cbmZ1bmN0aW9uIGVuc3VyZU1ldGE8RT4oZW50aXR5OiBUeXBlPEU+KTogRW50aXR5TWV0YTxFPiB7XG4gIGxldCBtZXRhID0gbWV0YXMuZ2V0KGVudGl0eSk7XG4gIGlmIChtZXRhKSB7XG4gICAgcmV0dXJuIG1ldGE7XG4gIH1cbiAgbWV0YSA9IHsgZW50aXR5LCBmaWVsZHM6IHt9LCByZWxhdGlvbnM6IHt9IH07XG4gIG1ldGFzLnNldChlbnRpdHksIG1ldGEpO1xuICByZXR1cm4gbWV0YTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1ldGE8RT4oZW50aXR5OiBUeXBlPEU+KTogRW50aXR5TWV0YTxFPiB7XG4gIGNvbnN0IG1ldGEgPSBtZXRhcy5nZXQoZW50aXR5KTtcbiAgaWYgKCFtZXRhKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKGAnJHtlbnRpdHkubmFtZX0nIGlzIG5vdCBhbiBlbnRpdHlgKTtcbiAgfVxuICBpZiAobWV0YS5wcm9jZXNzZWQpIHtcbiAgICByZXR1cm4gbWV0YTtcbiAgfVxuICBtZXRhLnByb2Nlc3NlZCA9IHRydWU7XG4gIHJldHVybiBmaWxsUmVsYXRpb25zKG1ldGEpO1xufVxuXG5mdW5jdGlvbiBmaWxsUmVsYXRpb25zPEU+KG1ldGE6IEVudGl0eU1ldGE8RT4pOiBFbnRpdHlNZXRhPEU+IHtcbiAgZm9yIChjb25zdCByZWxLZXkgaW4gbWV0YS5yZWxhdGlvbnMpIHtcbiAgICBjb25zdCByZWxPcHRzID0gbWV0YS5yZWxhdGlvbnNbcmVsS2V5IGFzIFJlbGF0aW9uS2V5PEU+XTtcblxuICAgIGlmIChyZWxPcHRzLnJlZmVyZW5jZXMpIHtcbiAgICAgIC8vIHJlZmVyZW5jZXMgd2VyZSBtYW51YWxseSBzcGVjaWZpZWRcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChyZWxPcHRzLm1hcHBlZEJ5KSB7XG4gICAgICBmaWxsSW52ZXJzZVNpZGVSZWxhdGlvbnMocmVsT3B0cyk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCByZWxFbnRpdHkgPSByZWxPcHRzLmVudGl0eSgpO1xuICAgIGNvbnN0IHJlbE1ldGEgPSBlbnN1cmVNZXRhKHJlbEVudGl0eSk7XG5cbiAgICBpZiAocmVsT3B0cy5jYXJkaW5hbGl0eSA9PT0gJ21tJykge1xuICAgICAgY29uc3QgaWROYW1lID0gbWV0YS5maWVsZHNbbWV0YS5pZF0ubmFtZTtcbiAgICAgIGNvbnN0IHJlbElkTmFtZSA9IHJlbE1ldGEuZmllbGRzW3JlbE1ldGEuaWRdLm5hbWU7XG4gICAgICBjb25zdCBzb3VyY2UgPSBsb3dlckZpcnN0KG1ldGEubmFtZSkgKyB1cHBlckZpcnN0KGlkTmFtZSk7XG4gICAgICBjb25zdCB0YXJnZXQgPSBsb3dlckZpcnN0KHJlbE1ldGEubmFtZSkgKyB1cHBlckZpcnN0KHJlbElkTmFtZSk7XG4gICAgICByZWxPcHRzLnJlZmVyZW5jZXMgPSBbXG4gICAgICAgIHsgbG9jYWw6IHNvdXJjZSwgZm9yZWlnbjogbWV0YS5pZCB9LFxuICAgICAgICB7IGxvY2FsOiB0YXJnZXQsIGZvcmVpZ246IHJlbE1ldGEuaWQgfSxcbiAgICAgIF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbE9wdHMucmVmZXJlbmNlcyA9IFt7IGxvY2FsOiBgJHtyZWxLZXl9SWRgLCBmb3JlaWduOiByZWxNZXRhLmlkIH1dO1xuICAgIH1cblxuICAgIGlmIChyZWxPcHRzLnRocm91Z2gpIHtcbiAgICAgIGZpbGxUaHJvdWdoUmVsYXRpb25zKHJlbE9wdHMudGhyb3VnaCgpKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWV0YTtcbn1cblxuZnVuY3Rpb24gZmlsbEludmVyc2VTaWRlUmVsYXRpb25zPEU+KHJlbE9wdHM6IFJlbGF0aW9uT3B0aW9uczxFPik6IHZvaWQge1xuICBjb25zdCByZWxFbnRpdHkgPSByZWxPcHRzLmVudGl0eSgpO1xuICBjb25zdCByZWxNZXRhID0gZ2V0TWV0YShyZWxFbnRpdHkpO1xuICByZWxPcHRzLm1hcHBlZEJ5ID0gZ2V0TWFwcGVkQnlSZWxhdGlvbktleShyZWxPcHRzKTtcblxuICBpZiAocmVsTWV0YS5maWVsZHNbcmVsT3B0cy5tYXBwZWRCeSBhcyBGaWVsZEtleTxFPl0pIHtcbiAgICByZWxPcHRzLnJlZmVyZW5jZXMgPSBbeyBsb2NhbDogcmVsTWV0YS5pZCwgZm9yZWlnbjogcmVsT3B0cy5tYXBwZWRCeSB9XTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBtYXBwZWRCeVJlbGF0aW9uID0gcmVsTWV0YS5yZWxhdGlvbnNbcmVsT3B0cy5tYXBwZWRCeSBhcyBSZWxhdGlvbktleTxFPl07XG5cbiAgaWYgKHJlbE9wdHMuY2FyZGluYWxpdHkgPT09ICdtMScgfHwgcmVsT3B0cy5jYXJkaW5hbGl0eSA9PT0gJ21tJykge1xuICAgIHJlbE9wdHMucmVmZXJlbmNlcyA9IG1hcHBlZEJ5UmVsYXRpb24ucmVmZXJlbmNlcy5zbGljZSgpLnJldmVyc2UoKTtcbiAgICByZWxPcHRzLnRocm91Z2ggPSBtYXBwZWRCeVJlbGF0aW9uLnRocm91Z2g7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcmVsT3B0cy5yZWZlcmVuY2VzID0gbWFwcGVkQnlSZWxhdGlvbi5yZWZlcmVuY2VzLm1hcCgoeyBsb2NhbCwgZm9yZWlnbiB9KSA9PiAoe1xuICAgIGxvY2FsOiBmb3JlaWduLFxuICAgIGZvcmVpZ246IGxvY2FsLFxuICB9KSk7XG59XG5cbmZ1bmN0aW9uIGZpbGxUaHJvdWdoUmVsYXRpb25zPEU+KGVudGl0eTogVHlwZTxFPik6IHZvaWQge1xuICBjb25zdCBtZXRhID0gZW5zdXJlTWV0YShlbnRpdHkpO1xuICBtZXRhLnJlbGF0aW9ucyA9IGdldEtleXMobWV0YS5maWVsZHMpLnJlZHVjZSgocmVsYXRpb25zLCBrZXkpID0+IHtcbiAgICBjb25zdCB7IHJlZmVyZW5jZSB9ID0gbWV0YS5maWVsZHNba2V5IGFzIEZpZWxkS2V5PEU+XTtcbiAgICBpZiAocmVmZXJlbmNlKSB7XG4gICAgICBjb25zdCByZWxFbnRpdHkgPSByZWZlcmVuY2UoKTtcbiAgICAgIGNvbnN0IHJlbE1ldGEgPSBlbnN1cmVNZXRhKHJlbEVudGl0eSk7XG4gICAgICBjb25zdCByZWxLZXkgPSBrZXkuc2xpY2UoMCwgLXJlbE1ldGEuaWQubGVuZ3RoKTtcbiAgICAgIGNvbnN0IHJlbE9wdHM6IFJlbGF0aW9uT3B0aW9ucyA9IHtcbiAgICAgICAgZW50aXR5OiByZWZlcmVuY2UsXG4gICAgICAgIGNhcmRpbmFsaXR5OiAnbTEnLFxuICAgICAgICByZWZlcmVuY2VzOiBbeyBsb2NhbDoga2V5LCBmb3JlaWduOiByZWxNZXRhLmlkIH1dLFxuICAgICAgfTtcbiAgICAgIHJlbGF0aW9uc1tyZWxLZXldID0gcmVsT3B0cztcbiAgICB9XG4gICAgcmV0dXJuIHJlbGF0aW9ucztcbiAgfSwge30pO1xufVxuXG5mdW5jdGlvbiBnZXRNYXBwZWRCeVJlbGF0aW9uS2V5PEU+KHJlbE9wdHM6IFJlbGF0aW9uT3B0aW9uczxFPik6IEtleTxFPiB7XG4gIGlmICh0eXBlb2YgcmVsT3B0cy5tYXBwZWRCeSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNvbnN0IHJlbEVudGl0eSA9IHJlbE9wdHMuZW50aXR5KCk7XG4gICAgY29uc3QgcmVsTWV0YSA9IGVuc3VyZU1ldGEocmVsRW50aXR5KTtcbiAgICBjb25zdCBrZXlNYXAgPSBnZXRSZWxhdGlvbktleU1hcChyZWxNZXRhKTtcbiAgICByZXR1cm4gcmVsT3B0cy5tYXBwZWRCeShrZXlNYXApO1xuICB9XG4gIHJldHVybiByZWxPcHRzLm1hcHBlZEJ5O1xufVxuXG5mdW5jdGlvbiBnZXRSZWxhdGlvbktleU1hcDxFPihtZXRhOiBFbnRpdHlNZXRhPEU+KTogUmVsYXRpb25LZXlNYXA8RT4ge1xuICByZXR1cm4gZ2V0S2V5cyhtZXRhLmZpZWxkcylcbiAgICAuY29uY2F0KGdldEtleXMobWV0YS5yZWxhdGlvbnMpKVxuICAgIC5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICBhY2Nba2V5XSA9IGtleTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30gYXMgUmVsYXRpb25LZXlNYXA8RT4pO1xufVxuXG5mdW5jdGlvbiBnZXRJZEtleTxFPihtZXRhOiBFbnRpdHlNZXRhPEU+KTogSWRLZXk8RT4ge1xuICBjb25zdCBpZCA9IGdldEtleXMobWV0YS5maWVsZHMpLmZpbmQoKGtleSkgPT4gbWV0YS5maWVsZHNba2V5XT8uaXNJZCk7XG4gIHJldHVybiBpZCBhcyBJZEtleTxFPjtcbn1cblxuZnVuY3Rpb24gZXh0ZW5kTWV0YTxFPih0YXJnZXQ6IEVudGl0eU1ldGE8RT4sIHNvdXJjZTogRW50aXR5TWV0YTxFPik6IHZvaWQge1xuICBjb25zdCBzb3VyY2VGaWVsZHMgPSB7IC4uLnNvdXJjZS5maWVsZHMgfTtcbiAgY29uc3QgdGFyZ2V0SWQgPSBnZXRJZEtleSh0YXJnZXQpO1xuICBpZiAodGFyZ2V0SWQpIHtcbiAgICBjb25zdCBzb3VyY2VJZCA9IGdldElkS2V5KHNvdXJjZSk7XG4gICAgaWYgKHNvdXJjZUlkKSB7XG4gICAgICBkZWxldGUgc291cmNlRmllbGRzW3NvdXJjZUlkXTtcbiAgICB9XG4gIH1cbiAgdGFyZ2V0LmZpZWxkcyA9IHsgLi4uc291cmNlRmllbGRzLCAuLi50YXJnZXQuZmllbGRzIH07XG4gIHRhcmdldC5yZWxhdGlvbnMgPSB7IC4uLnNvdXJjZS5yZWxhdGlvbnMsIC4uLnRhcmdldC5yZWxhdGlvbnMgfTtcbn1cblxuZnVuY3Rpb24gaW5mZXJUeXBlPEU+KGVudGl0eTogVHlwZTxFPiwga2V5OiBzdHJpbmcpOiBhbnkge1xuICByZXR1cm4gUmVmbGVjdC5nZXRNZXRhZGF0YSgnZGVzaWduOnR5cGUnLCBlbnRpdHkucHJvdG90eXBlLCBrZXkpO1xufVxuXG5mdW5jdGlvbiBpbmZlckVudGl0eVR5cGU8RT4oZW50aXR5OiBUeXBlPEU+LCBrZXk6IHN0cmluZyk6IFR5cGU8YW55PiB7XG4gIGNvbnN0IGluZmVycmVkVHlwZSA9IGluZmVyVHlwZShlbnRpdHksIGtleSk7XG4gIGNvbnN0IGlzVmFsaWRUeXBlID0gaXNWYWxpZEVudGl0eVR5cGUoaW5mZXJyZWRUeXBlKTtcbiAgaWYgKCFpc1ZhbGlkVHlwZSkge1xuICAgIHRocm93IFR5cGVFcnJvcihgJyR7ZW50aXR5Lm5hbWV9LiR7a2V5fScgdHlwZSB3YXMgYXV0by1pbmZlcnJlZCB3aXRoIGludmFsaWQgdHlwZSAnJHtpbmZlcnJlZFR5cGU/Lm5hbWV9J2ApO1xuICB9XG4gIHJldHVybiBpbmZlcnJlZFR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkRW50aXR5VHlwZSh0eXBlOiBhbnkpOiB0eXBlIGlzIFR5cGU8YW55PiB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicgJiZcbiAgICB0eXBlICE9PSBCb29sZWFuICYmXG4gICAgdHlwZSAhPT0gU3RyaW5nICYmXG4gICAgdHlwZSAhPT0gTnVtYmVyICYmXG4gICAgdHlwZSAhPT0gQmlnSW50ICYmXG4gICAgdHlwZSAhPT0gRGF0ZSAmJlxuICAgIHR5cGUgIT09IFN5bWJvbCAmJlxuICAgIHR5cGUgIT09IE9iamVjdFxuICApO1xufVxuIl19
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Entity = void 0;
4
- const definition_1 = require("./definition");
5
- function Entity(opts) {
6
- return (entity) => {
7
- (0, definition_1.defineEntity)(entity, opts);
8
- };
9
- }
10
- exports.Entity = Entity;
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VudGl0eS9kZWNvcmF0b3IvZW50aXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDZDQUE0QztBQUU1QyxTQUFnQixNQUFNLENBQUksSUFBb0I7SUFDNUMsT0FBTyxDQUFDLE1BQWUsRUFBUSxFQUFFO1FBQy9CLElBQUEseUJBQVksRUFBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUpELHdCQUlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5T3B0aW9ucywgVHlwZSB9IGZyb20gJy4uLy4uL3R5cGUnO1xuaW1wb3J0IHsgZGVmaW5lRW50aXR5IH0gZnJvbSAnLi9kZWZpbml0aW9uJztcblxuZXhwb3J0IGZ1bmN0aW9uIEVudGl0eTxFPihvcHRzPzogRW50aXR5T3B0aW9ucykge1xuICByZXR1cm4gKGVudGl0eTogVHlwZTxFPik6IHZvaWQgPT4ge1xuICAgIGRlZmluZUVudGl0eShlbnRpdHksIG9wdHMpO1xuICB9O1xufVxuIl19
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Field = void 0;
4
- const definition_1 = require("./definition");
5
- function Field(opts) {
6
- return (target, key) => {
7
- const entity = target.constructor;
8
- (0, definition_1.defineField)(entity, key, opts);
9
- };
10
- }
11
- exports.Field = Field;
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZW50aXR5L2RlY29yYXRvci9maWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSw2Q0FBMkM7QUFFM0MsU0FBZ0IsS0FBSyxDQUFJLElBQW1CO0lBQzFDLE9BQU8sQ0FBQyxNQUFjLEVBQUUsR0FBVyxFQUFRLEVBQUU7UUFDM0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFdBQXNCLENBQUM7UUFDN0MsSUFBQSx3QkFBVyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUxELHNCQUtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmllbGRPcHRpb25zLCBUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZSc7XG5pbXBvcnQgeyBkZWZpbmVGaWVsZCB9IGZyb20gJy4vZGVmaW5pdGlvbic7XG5cbmV4cG9ydCBmdW5jdGlvbiBGaWVsZDxFPihvcHRzPzogRmllbGRPcHRpb25zKSB7XG4gIHJldHVybiAodGFyZ2V0OiBvYmplY3QsIGtleTogc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgY29uc3QgZW50aXR5ID0gdGFyZ2V0LmNvbnN0cnVjdG9yIGFzIFR5cGU8RT47XG4gICAgZGVmaW5lRmllbGQoZW50aXR5LCBrZXksIG9wdHMpO1xuICB9O1xufVxuIl19
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Id = void 0;
4
- const definition_1 = require("./definition");
5
- function Id(opts) {
6
- return (target, key) => {
7
- const entity = target.constructor;
8
- (0, definition_1.defineId)(entity, key, opts);
9
- };
10
- }
11
- exports.Id = Id;
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZW50aXR5L2RlY29yYXRvci9pZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSw2Q0FBd0M7QUFFeEMsU0FBZ0IsRUFBRSxDQUFJLElBQWlDO0lBQ3JELE9BQU8sQ0FBQyxNQUFjLEVBQUUsR0FBVyxFQUFRLEVBQUU7UUFDM0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFdBQXNCLENBQUM7UUFDN0MsSUFBQSxxQkFBUSxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUxELGdCQUtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmllbGRPcHRpb25zLCBUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZSc7XG5pbXBvcnQgeyBkZWZpbmVJZCB9IGZyb20gJy4vZGVmaW5pdGlvbic7XG5cbmV4cG9ydCBmdW5jdGlvbiBJZDxFPihvcHRzPzogT21pdDxGaWVsZE9wdGlvbnMsICdpc0lkJz4pIHtcbiAgcmV0dXJuICh0YXJnZXQ6IG9iamVjdCwga2V5OiBzdHJpbmcpOiB2b2lkID0+IHtcbiAgICBjb25zdCBlbnRpdHkgPSB0YXJnZXQuY29uc3RydWN0b3IgYXMgVHlwZTxFPjtcbiAgICBkZWZpbmVJZChlbnRpdHksIGtleSwgb3B0cyk7XG4gIH07XG59XG4iXX0=
@@ -1,5 +0,0 @@
1
- export * from './entity';
2
- export * from './id';
3
- export * from './field';
4
- export * from './relation';
5
- export { getMeta, getEntities } from './definition';
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getEntities = exports.getMeta = void 0;
4
- const tslib_1 = require("tslib");
5
- tslib_1.__exportStar(require("./entity"), exports);
6
- tslib_1.__exportStar(require("./id"), exports);
7
- tslib_1.__exportStar(require("./field"), exports);
8
- tslib_1.__exportStar(require("./relation"), exports);
9
- var definition_1 = require("./definition");
10
- Object.defineProperty(exports, "getMeta", { enumerable: true, get: function () { return definition_1.getMeta; } });
11
- Object.defineProperty(exports, "getEntities", { enumerable: true, get: function () { return definition_1.getEntities; } });
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZW50aXR5L2RlY29yYXRvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsbURBQXlCO0FBQ3pCLCtDQUFxQjtBQUNyQixrREFBd0I7QUFDeEIscURBQTJCO0FBQzNCLDJDQUFvRDtBQUEzQyxxR0FBQSxPQUFPLE9BQUE7QUFBRSx5R0FBQSxXQUFXLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2VudGl0eSc7XG5leHBvcnQgKiBmcm9tICcuL2lkJztcbmV4cG9ydCAqIGZyb20gJy4vZmllbGQnO1xuZXhwb3J0ICogZnJvbSAnLi9yZWxhdGlvbic7XG5leHBvcnQgeyBnZXRNZXRhLCBnZXRFbnRpdGllcyB9IGZyb20gJy4vZGVmaW5pdGlvbic7XG4iXX0=
@@ -1,27 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ManyToMany = exports.OneToMany = exports.ManyToOne = exports.OneToOne = void 0;
4
- const definition_1 = require("./definition");
5
- function Relation(opts) {
6
- return (target, key) => {
7
- const entity = target.constructor;
8
- (0, definition_1.defineRelation)(entity, key, opts);
9
- };
10
- }
11
- function OneToOne(opts) {
12
- return Relation({ cardinality: '11', ...opts });
13
- }
14
- exports.OneToOne = OneToOne;
15
- function ManyToOne(opts) {
16
- return Relation({ cardinality: 'm1', ...opts });
17
- }
18
- exports.ManyToOne = ManyToOne;
19
- function OneToMany(opts) {
20
- return Relation({ cardinality: '1m', ...opts });
21
- }
22
- exports.OneToMany = OneToMany;
23
- function ManyToMany(opts) {
24
- return Relation({ cardinality: 'mm', ...opts });
25
- }
26
- exports.ManyToMany = ManyToMany;
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZW50aXR5L2RlY29yYXRvci9yZWxhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFRQSw2Q0FBOEM7QUFFOUMsU0FBUyxRQUFRLENBQUksSUFBd0I7SUFDM0MsT0FBTyxDQUFDLE1BQWMsRUFBRSxHQUFXLEVBQUUsRUFBRTtRQUNyQyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsV0FBc0IsQ0FBQztRQUM3QyxJQUFBLDJCQUFjLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDLENBQUM7QUFDSixDQUFDO0FBSUQsU0FBZ0IsUUFBUSxDQUFJLElBQWlDO0lBQzNELE9BQU8sUUFBUSxDQUFDLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUM7QUFDbEQsQ0FBQztBQUZELDRCQUVDO0FBRUQsU0FBZ0IsU0FBUyxDQUFJLElBQWtDO0lBQzdELE9BQU8sUUFBUSxDQUFDLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUM7QUFDbEQsQ0FBQztBQUZELDhCQUVDO0FBRUQsU0FBZ0IsU0FBUyxDQUFJLElBQWlDO0lBQzVELE9BQU8sUUFBUSxDQUFDLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUM7QUFDbEQsQ0FBQztBQUZELDhCQUVDO0FBRUQsU0FBZ0IsVUFBVSxDQUFJLElBQWtDO0lBQzlELE9BQU8sUUFBUSxDQUFDLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUM7QUFDbEQsQ0FBQztBQUZELGdDQUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgUmVsYXRpb25PcHRpb25zLFxuICBSZWxhdGlvbk9uZVRvT25lT3B0aW9ucyxcbiAgUmVsYXRpb25PbmVUb01hbnlPcHRpb25zLFxuICBSZWxhdGlvbk1hbnlUb09uZU9wdGlvbnMsXG4gIFJlbGF0aW9uTWFueVRvTWFueU9wdGlvbnMsXG4gIFR5cGUsXG59IGZyb20gJy4uLy4uL3R5cGUnO1xuaW1wb3J0IHsgZGVmaW5lUmVsYXRpb24gfSBmcm9tICcuL2RlZmluaXRpb24nO1xuXG5mdW5jdGlvbiBSZWxhdGlvbjxFPihvcHRzOiBSZWxhdGlvbk9wdGlvbnM8RT4pIHtcbiAgcmV0dXJuICh0YXJnZXQ6IG9iamVjdCwga2V5OiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBlbnRpdHkgPSB0YXJnZXQuY29uc3RydWN0b3IgYXMgVHlwZTxFPjtcbiAgICBkZWZpbmVSZWxhdGlvbihlbnRpdHksIGtleSwgb3B0cyk7XG4gIH07XG59XG5cbnR5cGUgUmVsYXRpb25SZXR1cm4gPSBSZXR1cm5UeXBlPHR5cGVvZiBSZWxhdGlvbj47XG5cbmV4cG9ydCBmdW5jdGlvbiBPbmVUb09uZTxFPihvcHRzPzogUmVsYXRpb25PbmVUb09uZU9wdGlvbnM8RT4pOiBSZWxhdGlvblJldHVybiB7XG4gIHJldHVybiBSZWxhdGlvbih7IGNhcmRpbmFsaXR5OiAnMTEnLCAuLi5vcHRzIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gTWFueVRvT25lPEU+KG9wdHM/OiBSZWxhdGlvbk1hbnlUb09uZU9wdGlvbnM8RT4pOiBSZWxhdGlvblJldHVybiB7XG4gIHJldHVybiBSZWxhdGlvbih7IGNhcmRpbmFsaXR5OiAnbTEnLCAuLi5vcHRzIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gT25lVG9NYW55PEU+KG9wdHM6IFJlbGF0aW9uT25lVG9NYW55T3B0aW9uczxFPik6IFJlbGF0aW9uUmV0dXJuIHtcbiAgcmV0dXJuIFJlbGF0aW9uKHsgY2FyZGluYWxpdHk6ICcxbScsIC4uLm9wdHMgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBNYW55VG9NYW55PEU+KG9wdHM6IFJlbGF0aW9uTWFueVRvTWFueU9wdGlvbnM8RT4pOiBSZWxhdGlvblJldHVybiB7XG4gIHJldHVybiBSZWxhdGlvbih7IGNhcmRpbmFsaXR5OiAnbW0nLCAuLi5vcHRzIH0pO1xufVxuIl19
package/entity/index.d.ts DELETED
@@ -1 +0,0 @@
1
- export * from './decorator';
package/entity/index.js DELETED
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./decorator"), exports);
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZW50aXR5L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHNEQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGVjb3JhdG9yJztcbiJdfQ==
package/index.d.ts DELETED
@@ -1 +0,0 @@
1
- export * from './options';
package/index.js DELETED
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./options"), exports);
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsb0RBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9vcHRpb25zJztcbiJdfQ==
package/options.js DELETED
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getQuerier = exports.getQuerierPool = exports.setQuerierPool = void 0;
4
- let defaultPool;
5
- function setQuerierPool(pool) {
6
- defaultPool = pool;
7
- }
8
- exports.setQuerierPool = setQuerierPool;
9
- function getQuerierPool() {
10
- if (!defaultPool) {
11
- throw new TypeError('A default querier-pool has to be set first');
12
- }
13
- return defaultPool;
14
- }
15
- exports.getQuerierPool = getQuerierPool;
16
- function getQuerier() {
17
- return defaultPool.getQuerier();
18
- }
19
- exports.getQuerier = getQuerier;
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLElBQUksV0FBd0IsQ0FBQztBQUU3QixTQUFnQixjQUFjLENBQXNDLElBQU87SUFDekUsV0FBVyxHQUFHLElBQUksQ0FBQztBQUNyQixDQUFDO0FBRkQsd0NBRUM7QUFFRCxTQUFnQixjQUFjO0lBQzVCLElBQUksQ0FBQyxXQUFXLEVBQUU7UUFDaEIsTUFBTSxJQUFJLFNBQVMsQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO0tBQ25FO0lBQ0QsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQztBQUxELHdDQUtDO0FBRUQsU0FBZ0IsVUFBVTtJQUN4QixPQUFPLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUNsQyxDQUFDO0FBRkQsZ0NBRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBRdWVyaWVyLCBRdWVyaWVyUG9vbCB9IGZyb20gJy4vdHlwZSc7XG5cbmxldCBkZWZhdWx0UG9vbDogUXVlcmllclBvb2w7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRRdWVyaWVyUG9vbDxUIGV4dGVuZHMgUXVlcmllclBvb2wgPSBRdWVyaWVyUG9vbD4ocG9vbDogVCk6IHZvaWQge1xuICBkZWZhdWx0UG9vbCA9IHBvb2w7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRRdWVyaWVyUG9vbCgpOiBRdWVyaWVyUG9vbCB7XG4gIGlmICghZGVmYXVsdFBvb2wpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBIGRlZmF1bHQgcXVlcmllci1wb29sIGhhcyB0byBiZSBzZXQgZmlyc3QnKTtcbiAgfVxuICByZXR1cm4gZGVmYXVsdFBvb2w7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRRdWVyaWVyKCk6IFByb21pc2U8UXVlcmllcj4ge1xuICByZXR1cm4gZGVmYXVsdFBvb2wuZ2V0UXVlcmllcigpO1xufVxuIl19
@@ -1,30 +0,0 @@
1
- import { IdValue, Querier, Query, QueryCriteria, QueryOne, QueryOptions, QueryProject, QuerySearch, QueryUnique, RelationKey, Repository, Type } from '../type';
2
- export declare abstract class AbstractQuerier implements Querier {
3
- abstract count<E>(entity: Type<E>, qm?: QuerySearch<E>): Promise<number>;
4
- findOneById<E>(entity: Type<E>, id: IdValue<E>, qm?: QueryUnique<E>): Promise<E>;
5
- findOne<E>(entity: Type<E>, qm: QueryOne<E>): Promise<E>;
6
- abstract findMany<E>(entity: Type<E>, qm: Query<E>): Promise<E[]>;
7
- findManyAndCount<E>(entity: Type<E>, qm: Query<E>): Promise<[E[], number]>;
8
- insertOne<E>(entity: Type<E>, payload: E): Promise<IdValue<E>>;
9
- abstract insertMany<E>(entity: Type<E>, payload: E[]): Promise<IdValue<E>[]>;
10
- updateOneById<E>(entity: Type<E>, id: IdValue<E>, payload: E): Promise<number>;
11
- abstract updateMany<E>(entity: Type<E>, qm: QueryCriteria<E>, payload: E): Promise<number>;
12
- deleteOneById<E>(entity: Type<E>, id: IdValue<E>, opts?: QueryOptions): Promise<number>;
13
- abstract deleteMany<E>(entity: Type<E>, qm: QueryCriteria<E>, opts?: QueryOptions): Promise<number>;
14
- saveOne<E>(entity: Type<E>, payload: E): Promise<IdValue<E> | E[import("../type").IdKey<E>]>;
15
- saveMany<E>(entity: Type<E>, payload: E[]): Promise<(Awaited<IdValue<E>> | Awaited<E[import("../type").IdKey<E>]>)[]>;
16
- protected findToManyRelations<E>(entity: Type<E>, payload: E[], project: QueryProject<E>): Promise<void>;
17
- protected putChildrenInParents<E>(parents: E[], children: E[], parentIdKey: string, referenceKey: string, relKey: string): void;
18
- protected insertRelations<E>(entity: Type<E>, payload: E[]): Promise<void>;
19
- protected updateRelations<E>(entity: Type<E>, criteria: QueryCriteria<E>, payload: E): Promise<void>;
20
- protected deleteRelations<E>(entity: Type<E>, ids: IdValue<E>[], opts?: QueryOptions): Promise<void>;
21
- protected saveRelation<E>(entity: Type<E>, payload: E, relKey: RelationKey<E>, isUpdate?: boolean): Promise<void>;
22
- getRepository<E>(entity: Type<E>): Repository<E>;
23
- abstract readonly hasOpenTransaction: boolean;
24
- transaction<T>(callback: (querier?: ThisType<Querier>) => Promise<T>): Promise<T>;
25
- abstract beginTransaction(): Promise<void>;
26
- abstract commitTransaction(): Promise<void>;
27
- abstract rollbackTransaction(): Promise<void>;
28
- abstract release(): Promise<void>;
29
- abstract end(): Promise<void>;
30
- }